Jump to content

Sonic the Hedgehog (2006) Shaders: Difference between revisions

From HedgeDocs
No edit summary
mNo edit summary
 
(One intermediate revision by the same user not shown)
Line 468: Line 468:
|-
|-
| en_bullet
| en_bullet
|
|Used by <code>en_cmn_bullet00</code>.
|
|
| ✓
| ✓
Line 476: Line 476:
|-
|-
| en_lava
| en_lava
|
|Used by various Iblis enemies, and Solaris.
|✓
|✓
| ✓
| ✓
Line 539: Line 539:
|-
|-
| Fluff00
| Fluff00
|
|Used by Tropical Jungle plant grind rails.
|✓
|✓
| ✓
| ✓
Line 812: Line 812:
|-
|-
| Mefiress
| Mefiress
|
|Mephiles-specific CharacterMaterial variant.
|✓
|✓
| ✓
| ✓
|-
|-
| MefiressSpecific
| MefiressSpecific
|
|Used for Flame Core Mephiles boss floor to draw his "shadow".
|
|
| ✓
| ✓
|-
|-
| MefiressSpecific2
| MefiressSpecific2
|
|Used for goopy Dusty Desert Mephiles boss floor.
|
|
| ✓
| ✓
Line 883: Line 883:
|-
|-
| Ring
| Ring
|
|Goal rings, hint rings, regular rings, and keys.
|
|
| ✓
| ✓
Line 1,008: Line 1,008:
|-
|-
| TpjWater00
| TpjWater00
|
|Tropical Jungle specific variant similar to Water03.
|
|
| ✓
| ✓
|-
|-
| TpjWater01
| TpjWater01
|
|Tropical Jungle specific variant similar to Water04.
|
|
| ✓
| ✓
Line 1,067: Line 1,067:
|-
|-
| Water01
| Water01
|
|Used by translucent waterfalls and splash effects.
|
|
| ✓
| ✓
Line 1,075: Line 1,075:
|-
|-
| Water03
| Water03
|
|Used for planar-reflection enabled liquids, water in Kingdom Valley and mercury pools in Aquatic Base.
|
|
| ✓
| ✓
|-
|-
| Water04
| Water04
|
|Used for static environment-mapped liquids.
|
|
| ✓
| ✓

Latest revision as of 18:56, 28 October 2026

Shaders in Sonic the Hedgehog (2006) are compiled GPU programs that control the appearance of objects and effects. Most shaders have several different variants with different feature support. Multiplayer shaders may have additional optimisations, like replacing real-time planar reflections with cubemaps.

In the Xbox 360 version of the game, shaders are stored in the following archives:

Type Location
Singleplayer /game/xenon/archives/shader.arc
Multiplayer /game/xenon/archives/shader_lt.arc

Within the archives, shaders variants are stored in a number of sub-folders.

Folder Description
std Standard
np Standard without point lights
lm Replaces CSM with baked lightmaps and shadows.
lm_np Same as lm without point lights
morph, morph_np Morph targets (only affects vertex shaders)
skin, skin_np Skined meshes (only affects vertex shaders)

Many of the shaders within the sub-folders are exact duplicates of the standard variant.

Each of the shaders listed below are in the .fxo format in the 360 version of the game. Each shader can contain multiple techniques, which hold the respective vertex and fragment shaders.

The shader and specific technique used are defined per mesh set in XNO files. Some shaders are not referenced in XNO files, either because they are used internally or because they are unused altogether.

Shader Inputs

All shaders used for rendering 3D objects use a common input block format.

Registers Parameter Description
c0-c3 g_Material NinjaNext material parameters. Not always used as described.
c4 g_Misc
c5-c6 g_OffsetUV
c8-c13 g_OLS Hoffman–Preetham scattering parameters. Most shaders evaluate phase at constant cos(θ) = 0.5.
c14 g_RTDimensions
c15 g_ClipInfo
c16 g_KhronosParam Time
c28-c30 g_LightMisc
c31-c34 g_DirectionalLights[2]
c39-c44 g_PointLights[2]
c64-c66 g_MatW World matrix
c68-c70 g_MatWV World * View matrix
c72-c75 g_MatWVP World * View * Projection matrix
c76-c78 g_MatV View matrix
c80-c82 g_MatVI Inverse View matrix
c84-c87 g_MatP Projection matrix
c88-c91 g_MatVP View * Projection matrix
c92-c95 g_mtxCSMViewProj CSM View * Projection matrix
c96-c191 g_BoneMtx[32]
c192 g_Morph
c193 g_MorphFlags
c194 g_SystemLightMapWork
c210+ Shader-specific constants
b0 bReflection CharacterMaterial only
b1 bCubeReflection
s0-s3 Material textures
s8 g_smpEnvMap Static environment cube map
s9 g_smpDepth0 Packed linear depth, used by Fog00, DepthOfFieldFilter
s10 g_smpDynamicEnvMap Planar reflection, used by CscGlass02, MefiressSpecific, TpjWater00, Water03
s11 g_smpCSM CSM array
s13 g_smpFB Resolved framebuffer, used by OpticalCamouflage

Shader List

Shader Notes Morph/Skin Used in XNOs
AcrobataPrimitive Used in rendering of Acroarts particle effects.
Air00 ✓
Animal00 Used for Kingdom Valley eagle. ✓ ✓
Animal01
Animal02
AqaScene00
AqaScene01
AqaScene02
Aqua00 ✓
Artifact00
Artifact01
Artifact02
Artifact03
Artifact06
Artifact07
BackGround
balloonicon Used for rendering quest "balloons" in hub worlds.
Billboard00 No lighting, CSM sampling or point lights support. ✓ ✓
Billboard01 Vertex lighting and point lights, no CSM sampling. ✓ ✓
Billboard02 By far the most used shader. Vertex lighting with no CSM sampling or point lights support. ✓ ✓
Billboard03 Vertex lighting, CSM sampling and point lights. ✓ ✓
Billboard04 Pixel lighting, CSM sampling, no point lights. ✓
Billboard05 Pixel lighting, no CSM sampling or point lights. ✓
Billboard06 Pixel lighting and point lights, no CSM sampling. ✓
Billboard07 Unused. Pixel lighting, CSM sampling and point lights.
BillboardSp00 ✓
BillboardSp01 ✓
BillboardSp02 ✓
BloomFilter
bod_light Used by "Book of Darkness" aka Scepter of Darkness. ✓
bod_metal Used by "Book of Darkness" aka Scepter of Darkness. ✓
BurnoutBlurFilter Responsible for the radial "motion" blur seen in the final game. Likely named after the Burnout racing series.
ChaosDrive ✓
CharacterMaterial Responsible for rendering playable characters, NPCs, and many random hub world objects. By far the densest shader in the game, including many unused techniques. ✓ ✓
ColorCopyFilter
ColorCorrectionFilter
ColorOutFilter Outputs a solid colour. Used for bright areas of spotlights in White Acropolis stealth sections.
Common
conditional_rendering Used in rendering of lens flare effect.
CopyFilter
core_circle
CscGlass00 ✓
CscGlass01
CscGlass02 ✓
CscScene00 ✓
CscScene01 ✓
CscScene02
CscScene03
csd Used in rendering of CSD (UI) scenes.
csd3D Used for world-space UI like enemy health gauges.
csdBG
cyl
DepthOfFieldFilter Unused in the final game. Likely a depth of field effect similar to the one in Sonic Unleashed.
DtdSand00
DtdSand01 ✓
DtdSand02 ✓
DtdSand03
DtdSand04
DtdScene00 ✓
DtdScene01
DtdScene02 ✓
DtdScene03 ✓
DtdScene04 ✓
DtdScene05
ecb_light Used for Egg Cerberus. ✓
ecb_metal Used for Egg Cerberus. ✓
Effect00 ✓ ✓
egen_light Used for Egg Genesis. ✓
egen_metal Used for Egg Genesis. ✓
egen_slight Used for Egg Genesis. ✓
emob_light Used for Egg Mobile. ✓
emob_metal Used for Egg Mobile. ✓ ✓
en_bullet Used by en_cmn_bullet00. ✓
en_laser00
en_lava Used by various Iblis enemies, and Solaris. ✓ ✓
en_light ✓ ✓
en_lightani ✓ ✓
en_metal ✓ ✓
en_plating ✓
en_rock ✓ ✓
EndSky00 ✓
FBTex_NrmMap Used by esp_ripple and esp_Sphere ✓
Fence00 ✓
Fence01 ✓
FlcCore00 ✓ ✓
FlcScene00 ✓
FlcScene01
Fluff00 Used by Tropical Jungle plant grind rails. ✓ ✓
Fog00 ✓
font Used in font rendering for CSD.
fsol_armor ✓ ✓
fsol_eye
fsol_fluid
Gadget_Glider
Gadget ✓
gindows
Glass00 ✓
Glass01 ✓
Glass02
Glass03
iblis01_eye ✓ ✓
iblis01_lava ✓ ✓
iblis01_rock ✓
iblis02_eye Unused, iblis02.xno uses iblis01_eye. They seem more or less identical.
iblis02_lava ✓ ✓
iblis02_rock ✓ ✓
iblis03_eye ✓ ✓
iblis03_lava ✓ ✓
iblis03_rock ✓ ✓
Ice00 ✓
Ice01 ✓
Ice02 ✓
Ice03
Item_Board Crisis City snowboard. Separate from White Acropolis board. ✓ ✓
ItemGlass00 ✓ ✓
ItemMetal00 ✓ ✓
KdvAqua00
KdvAqua01 ✓
KdvMist00 ✓
KdvRope
KdvWindRoad
Kyozoress Likely referring to "巨像", the large monsters in Mephiles' final boss fight. ✓ ✓
Laser00
Laser01 ✓ ✓
Leaf00 ✓
Leaf01 ✓
lensflare
LightCore ✓
Lightmap00 ✓
Lightmap01 ✓
LightmapSp00 ✓
LightmapSp01
LightmapSp02 ✓
LightmapSp03
LightmapSp04 ✓
Luminous00 ✓ ✓
Luminous01 ✓ ✓
Luminous02 ✓ ✓
Luminous03 ✓ ✓
Luminous04 ✓ ✓
Luminous05 ✓ ✓
Luminous06 ✓
Luminous07
lzout_pt
lzout
Mantle00 ✓
Mantle01 ✓ ✓
Mantle02 ✓ ✓
MarathonSpeedTree
MaskCopyFilter
Mefiress Mephiles-specific CharacterMaterial variant. ✓ ✓
MefiressSpecific Used for Flame Core Mephiles boss floor to draw his "shadow". ✓
MefiressSpecific2 Used for goopy Dusty Desert Mephiles boss floor. ✓
Mercury
Metal00 ✓ ✓
Metal01 ✓
Metal02 ✓
MotionBlurFilter BurnoutBlurFilter is used in retail rather than this shader.
movie
movieARGB
movieYUV420
no_shader
OpticalCamouflage Used for rendering camouflaged enemies.
pe
PhaseShiftFilter
physicsviewer
player_homing
primitive
psi_effect Used for rendering Silver's psychokinesis effects. ✓ ✓
Ring Goal rings, hint rings, regular rings, and keys. ✓
rt_clear
rt_restoration
Rust00 ✓ ✓
SampleFilter
scr_metal ✓
Shield ✓
simple
Sky00 Used for Egg Wyvern fight and E0026 skybox. ✓
Sky01 Used for Egg Wyvern fight skybox. ✓
Sky02 Used for every other skybox not previously mentioned. ✓
Snow00 ✓
Snow01 ✓
Snow02 ✓
Stone00 ✓ ✓
Stone01 ✓ ✓
Stone02 ✓
Stone03 ✓ ✓
Stone04
Terrain00 Only used by kdv_obj_D_bridge01 ✓
Terrain01 Only used by tpj_obj_oldtree and tpj_obj_sphere ✓
Terrain02 Only used by csc_obj_groundA, csc_obj_groundB, and tpj_obj_sphere ✓
Terrain03
Terrain04 Only used by e0125_map02_nos_ and tpj_mapA_roadlm ✓
Terrain05 Used extensively (91 times). ✓ ✓
Terrain06
Terrain07
Tex_Phone
Tex_Spec_Phone
TpjWater00 Tropical Jungle specific variant similar to Water03. ✓
TpjWater01 Tropical Jungle specific variant similar to Water04. ✓
TwnFence00
TwnGate Used for warp gates. ✓
TwnGlass00
TwnGlideWire
TwnScene00 ✓
TwnScene01
TwnScene02 ✓
TwnScene03
vout
WapScene00 ✓
WapScene01
WapScene02 ✓
Water00
Water01 Used by translucent waterfalls and splash effects. ✓
Water02
Water03 Used for planar-reflection enabled liquids, water in Kingdom Valley and mercury pools in Aquatic Base. ✓
Water04 Used for static environment-mapped liquids. ✓
Water05
Waterrise Unused Kingdom Valley object. Some kind of rippling water/mist. ✓
Wood00 ✓ ✓
Wood01 ✓
Zakoress Referring to "雑魚" small-fry crowd of NPCs, the tiny shadow minions in Mephiles' boss fight. ✓
ZakoressBillboard Billboarded approximation for distant Zakoress.
zout_pt Used for rendering depth pre-pass for punchthrough.
zout Used for rendering depth pre-pass.
Cookies help us deliver our services. By using our services, you agree to our use of cookies.