Added lightmap multiplier to allow applying basic lighting on world geometry

This commit is contained in:
parax0
2016-01-10 06:17:12 -07:00
parent 444382c1a9
commit b768473b44
7 changed files with 36 additions and 11 deletions

View File

@@ -51,6 +51,7 @@ void CModelNode::Draw(FRenderOptions Options, int ComponentIndex, const SViewInf
CGraphics::sPixelBlock.TevColor = CColor::skWhite;
CGraphics::sPixelBlock.TintColor = TintColor(ViewInfo);
CGraphics::sPixelBlock.LightmapMultiplier = 1.f;
LoadModelMatrix();
if (ComponentIndex < 0)

View File

@@ -187,8 +187,8 @@ void CSceneNode::LoadLights(const SViewInfo& ViewInfo)
switch (Mode)
{
case CGraphics::eNoLighting:
// No lighting: default ambient color, no dynamic lights
CGraphics::sVertexBlock.COLOR0_Amb = CGraphics::skDefaultAmbientColor;
// No lighting: full white ambient, no dynamic lights
CGraphics::sVertexBlock.COLOR0_Amb = CColor::skWhite;
break;
case CGraphics::eBasicLighting:
@@ -206,6 +206,7 @@ void CSceneNode::LoadLights(const SViewInfo& ViewInfo)
break;
}
CGraphics::sPixelBlock.LightmapMultiplier = (Mode == CGraphics::eWorldLighting ? 1.f : 0.f);
CGraphics::UpdateLightBlock();
}

View File

@@ -49,12 +49,25 @@ void CStaticNode::Draw(FRenderOptions Options, int ComponentIndex, const SViewIn
if (!mpModel) return;
bool IsLightingEnabled = CGraphics::sLightMode == CGraphics::eWorldLighting || ViewInfo.GameMode;
CGraphics::sVertexBlock.COLOR0_Amb = (IsLightingEnabled ? CColor::skBlack : CColor::skWhite);
if (IsLightingEnabled)
{
CGraphics::sNumLights = 0;
CGraphics::sVertexBlock.COLOR0_Amb = CColor::skBlack;
CGraphics::sPixelBlock.LightmapMultiplier = 1.0f;
CGraphics::UpdateLightBlock();
}
else
{
LoadLights(ViewInfo);
if (CGraphics::sLightMode == CGraphics::eNoLighting)
CGraphics::sVertexBlock.COLOR0_Amb = CColor::skWhite;
}
float Mul = CGraphics::sWorldLightMultiplier;
CGraphics::sPixelBlock.TevColor = CColor(Mul,Mul,Mul);
CGraphics::sPixelBlock.TintColor = TintColor(ViewInfo);
CGraphics::sNumLights = 0;
CGraphics::UpdateLightBlock();
LoadModelMatrix();
if (ComponentIndex < 0)