Jump to content

Hedgehog Engine 2 - Textures: Difference between revisions

From HedgeDocs
Justin113D (talk | contribs)
Updated table links
Justin113D (talk | contribs)
No edit summary
 
Line 57: Line 57:


{{Texture Overview
{{Texture Overview
| suffix = _abd
| suffix = <code>_abd</code>
| composition = RGBA
| composition = RGBA
| encoding = * <code>BC1_UNORM</code> when opaque,
| encoding = * <code>BC1_UNORM</code> when opaque,
Line 73: Line 73:


{{Texture Overview
{{Texture Overview
| suffix = _alp
| suffix = <code>_alp</code>
| composition = Grayscale
| composition = Grayscale
| encoding = <code>BC4_UNORM</code>
| encoding = <code>BC4_UNORM</code>
Line 89: Line 89:


{{Texture Overview
{{Texture Overview
| suffix = _fal
| suffix = <code>_fal</code>
| composition = Color
| composition = Color
| encoding = <code>BC1_UNORM</code>
| encoding = <code>BC1_UNORM</code>
Line 106: Line 106:


{{Texture Overview
{{Texture Overview
| suffix = _ems
| suffix = <code>_ems</code>
| composition = HDR
| composition = HDR
| encoding = <code>BC6H_UF16</code>
| encoding = <code>BC6H_UF16</code>
Line 120: Line 120:


{{Texture Overview
{{Texture Overview
| suffix = _prm
| suffix = <code>_prm</code>
| composition = RGBA
| composition = RGBA
| encoding = * <code>BC1_UNORM</code> when no alpha channel is needed,
| encoding = * <code>BC1_UNORM</code> when no alpha channel is needed,
Line 200: Line 200:


{{Texture Overview
{{Texture Overview
| suffix = _nrm
| suffix = <code>_nrm</code>
| composition = RG
| composition = RG
| encoding = <code>BC5_UNORM</code>
| encoding = <code>BC5_UNORM</code>
Line 223: Line 223:


{{Texture Overview
{{Texture Overview
| suffix = _flw
| suffix = <code>_flw</code>
| composition = RG
| composition = RG
| encoding = <code>BC5_UNORM</code>
| encoding = <code>BC5_UNORM</code>
Line 240: Line 240:


{{Texture Overview
{{Texture Overview
| suffix = _fur
| suffix = <code>_fur</code>
| composition = RGBA
| composition = RGBA
| encoding = <code>BC3_UNORM</code>
| encoding = <code>BC3_UNORM</code>
Line 256: Line 256:


{{Texture Overview
{{Texture Overview
| suffix = _ref
| suffix = <code>_ref</code>
| composition = Color
| composition = Color
| encoding = <code>BC1_UNORM</code>
| encoding = <code>BC1_UNORM</code>
Line 274: Line 274:


{{Texture Overview
{{Texture Overview
| suffix = _off
| suffix = <code>_off</code>
| composition = RG
| composition = RG
| encoding = <code>BC5_UNORM</code>
| encoding = <code>BC5_UNORM</code>

Latest revision as of 08:58, 12 July 2025

Hedgehog Engine 2 games limit themselves to a few texture types, which can make configuring materials difficult, as many shaders use certain types differently than what their name suggests.

Here is a list of all texture types and how they are most commonly used:

Type Primarily used with Occasionally used with
diffuse Albedo, Falloff /
transparency Transparency Albedo, Mask
emission Emission /
reflection Flow map, Fur noise Iridescence reflection, Offset map
specular PRM /
normal Normal map /

File formats and encodings

Textures are always stored in DDS files.

HE2 is programmed with Direct3D 11 (or newer), which means all DDS encodings are available for use.

More info on DDS block compression can be found here.

Info
HE2 games often use BC7 encoding for its higher image quality. If the recommended encoding does not give satisfying results, you can always use BC7 encoding to increase the quality, but keep in mind that this will also increase file size!


File streaming

Many textures in Frontiers and onwards make use of file streaming to reduce texture-load-time and reuse the same texture between multiple archives.

You can pack/unpack/view info of streamed texture packages using NeedleTextureStreamingUtility.

Kinds of textures

The majority of textures used by materials are one of the following kind of textures.

Albedo

Texture overview
File Suffix _abd
Composition RGBA
Recommended encoding
  • BC1_UNORM when opaque,
  • BC7_UNORM when transparent


chr_big_fur_abd.dds from Shadow Generations

Albedo textures are color-transparency textures that are sampled directly for the base color of a material.

See albedo for reference.

Transparency

Texture overview
File Suffix _alp
Composition Grayscale
Recommended encoding

BC4_UNORM


cmnisl_blackstone501_tk1_alp.dds from Shadow Generations
cmnisl_blackstone501_tk1_alp.dds from Shadow Generations

Transparency textures determine the transparency of a material.

Usually transparency is relayed to Albedo textures, and actual opacity textures are only used when special alpha compositing happens.

Falloff

Texture overview
File Suffix _fal
Composition Color
Recommended encoding

BC1_UNORM

chr_big_fur_fal.dds from Shadow Generations
A camera rotating around Suzanne with a raw falloff factor. The albedo texture is black, and the falloff texture is white

Falloff textures change the color of the albedo texture based on the viewing angle: The greater the angle between the camera and the surface of the model, the greater the influence.

Depending on the shader, the falloff color either gets mixed with the albedo color or added to it.

Additionally, shaders with falloff colors or textures basically always come with a parameter that controls how the falloff factor gets calculated.

Emission

Texture overview
File Suffix _ems
Composition HDR
Recommended encoding

BC6H_UF16

bos_mephiles_body_ems.dds from Shadow Generations

Emission textures make parts of a model emit light. These are usually HDR textures.

See emission for reference.

PRM

Texture overview
File Suffix _prm
Composition RGBA
Recommended encoding
  • BC1_UNORM when no alpha channel is needed,
  • BC3_UNORM when alpha channel is needed
chr_big_rod_prm.dds from Shadow Generations

PRM textures, an abbreviation for “Parameter”, are the defacto PBR textures of Hedgehog Engine 2 games.

If you are unfamiliar with Physically based rendering, you should look into the Physically Based Rendering documentation before trying to edit materials.

Each channel contains one PBR map:

Channel Contents "Default" value Notes Example from chr_big_rod_prm.dds
Red Specular 0.5 The engine multiplies the sampled value by 0.5
Green Smoothness 0.8 Blender uses a roughness setup, which is just the inverse of smoothness
Blue Metallic 0
Alpha Ambient Occlusion 1 Many tutorials claim that AO is just multiplied into the albedo channel, which is not true.

AO gets mixed into the lighting, which is difficult to replicate in render engines like Cycles, but doable in Eevee.

Note
Older HE2 games, primarily Sonic Forces and Mario & Sonic at the Rio 2016 Olympic Games use a slightly different PRM setup:
Channel Contents Notes
Red Specular If the value is above 0.9, the material gets treated as completely metallic.
Green Smoothness Same as above
Blue Ambient Occlusion
Alpha Metallic Only used in select shaders like MCommon, where the specular-above-0.9 check isn't done


Normal map

Texture overview
File Suffix _nrm
Composition RG
Recommended encoding

BC5_UNORM

chr_big_rod_nrm.dds from Sonic X Shadow Generations

Normal map textures are used for faking bumps and dents on a model to affect lighting, falloff, environment maps and similar.

See normal mapping for reference.

Note
HE2 always automatically calculates the blue / Z channel for normal maps. That means, when using a three-component texture for a normal map, the blue channel gets ignored.


Other

Flow Map

Texture overview
File Suffix _flw
Composition RG
Recommended encoding

BC5_UNORM

chr_shadow_fur_flw.dds from Shadow Generations

Flow textures are two-component textures that, similar to normal maps, encode a direction. Each pixel determines the direction of “flow” to use when sampling the noise texture.

Note
Older flow texture have a blue channel, which went unused.


Fur Noise

Texture overview
File Suffix _fur
Composition RGBA
Recommended encoding

BC3_UNORM

chr_shadow_fur_fur.dds from Shadow Generations

Fur noise textures get sampled based on the direction of a flow map to create a “flowing lines” type of pattern.

The color channel gets multiplied into the albedo color, while the alpha channel determine the specularity.

This allows for characters to have fine details without needing huge textures.

Iridescence reflection

Texture overview
File Suffix _ref
Composition Color
Recommended encoding

BC1_UNORM


Iridescence shaders use these reflection textures to create their effect of the same name.

w05_ruins_biometal_ref.dds from Sonic X Shadow Generations

Offset map

Texture overview
File Suffix _off
Composition RG
Recommended encoding

BC5_UNORM

w09_btl02_poisonswamp_s3_jh1_off.dds from Shadow Generations

Offset maps are basically normal maps that are used to distore another texture by shifting the sample coordinate.

These are often used with things like water or wind.

Cookies help us deliver our services. By using our services, you agree to our use of cookies.