Disable lighting for point sprites

This commit is contained in:
Anthony 2021-04-03 19:58:27 +13:00 committed by PatrickvL
parent 5ea12636ee
commit 657a8ef7c3
1 changed files with 5 additions and 2 deletions

View File

@ -6448,7 +6448,11 @@ void UpdateFixedFunctionVertexShaderState()
}
// Lighting
ffShaderState.Modes.Lighting = (float)XboxRenderStates.GetXboxRenderState(X_D3DRS_LIGHTING);
// Point sprites aren't lit - 'each point is always rendered with constant colors.'
// https://docs.microsoft.com/en-us/windows/win32/direct3d9/point-sprites
bool PointSpriteEnable = XboxRenderStates.GetXboxRenderState(X_D3DRS_POINTSPRITEENABLE);
bool LightingEnable = XboxRenderStates.GetXboxRenderState(X_D3DRS_LIGHTING);
ffShaderState.Modes.Lighting = LightingEnable && !PointSpriteEnable;
ffShaderState.Modes.TwoSidedLighting = (float)XboxRenderStates.GetXboxRenderState(X_D3DRS_TWOSIDEDLIGHTING);
ffShaderState.Modes.LocalViewer = (float)XboxRenderStates.GetXboxRenderState(X_D3DRS_LOCALVIEWER);
@ -6464,7 +6468,6 @@ void UpdateFixedFunctionVertexShaderState()
ffShaderState.Modes.BackEmissiveMaterialSource = (float)(ColorVertex ? XboxRenderStates.GetXboxRenderState(X_D3DRS_BACKEMISSIVEMATERIALSOURCE) : D3DMCS_MATERIAL);
// Point sprites; Fetch required variables
bool PointSpriteEnable = XboxRenderStates.GetXboxRenderState(X_D3DRS_POINTSPRITEENABLE);
float pointSize = XboxRenderStates.GetXboxRenderStateAsFloat(X_D3DRS_POINTSIZE);
float pointSize_Min = XboxRenderStates.GetXboxRenderStateAsFloat(X_D3DRS_POINTSIZE_MIN);
float pointSize_Max = XboxRenderStates.GetXboxRenderStateAsFloat(X_D3DRS_POINTSIZE_MAX);