mirror of
https://github.com/RetroDECK/Supermodel.git
synced 2025-04-10 19:15:14 +00:00
Update step 1.5 luminous logic with Harry's findings. Fixes various shading issues.
This commit is contained in:
parent
8e13c3bbb9
commit
df44ad458b
|
@ -124,13 +124,19 @@ vec4 GetTextureValue()
|
||||||
return tex1Data;
|
return tex1Data;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Step15Lighting(inout vec4 colour)
|
void Step15Luminous(inout vec4 colour)
|
||||||
{
|
{
|
||||||
// on step 1.5 these polys seem to be effected by vpAmbient
|
// luminous polys seem to behave very differently on step 1.5 hardware
|
||||||
// logic is not completely understood
|
// when fixed shading is enabled the colour is modulated by the vp ambient + fixed shade value
|
||||||
|
// when disabled it appears to be multiplied by 1.5, presumably to allow a higher range
|
||||||
if(hardwareStep==0x15) {
|
if(hardwareStep==0x15) {
|
||||||
if(!lightEnabled && fixedShading) {
|
if(!lightEnabled && textureEnabled) {
|
||||||
colour.rgb *= (fsFixedShade+lighting[1].x) + lighting[1].y;
|
if(fixedShading) {
|
||||||
|
colour.rgb *= 1.0 + fsFixedShade + lighting[1].y;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
colour.rgb *= vec3(1.5);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -154,7 +160,7 @@ void main()
|
||||||
}
|
}
|
||||||
|
|
||||||
colData = fsColor;
|
colData = fsColor;
|
||||||
Step15Lighting(colData); // no-op for step 2.0
|
Step15Luminous(colData); // no-op for step 2.0+
|
||||||
finalData = tex1Data * colData;
|
finalData = tex1Data * colData;
|
||||||
|
|
||||||
if (finalData.a < (1.0/16.0)) { // basically chuck out any totally transparent pixels value = 1/16 the smallest transparency level h/w supports
|
if (finalData.a < (1.0/16.0)) { // basically chuck out any totally transparent pixels value = 1/16 the smallest transparency level h/w supports
|
||||||
|
|
Loading…
Reference in a new issue