Add bicubic lightmap sampling support to VertexLitGeneric

This commit is contained in:
AndrewBetson 2025-03-10 14:37:01 -04:00
parent 9ab501ea6f
commit 16f0105997
4 changed files with 68 additions and 11 deletions

View file

@ -21,6 +21,8 @@
// $FLASHLIGHT && $CUBEMAP
// $CUBEMAP_SPHERE_LEGACY && ($CUBEMAP == 0)
// ($STATIC_LIGHT_LIGHTMAP == 0) && ($DEBUG_LUXELS == 1)
// $BICUBIC_LIGHTMAP && ($STATIC_LIGHT_LIGHTMAP == 0)
// $BICUBIC_LIGHTMAP && ($DEBUG_LUXELS == 1)
// defined $HDRTYPE && defined $HDRENABLED && !$HDRTYPE && $HDRENABLED
// defined $PIXELFOGTYPE && defined $WRITEWATERFOGTODESTALPHA && ( $PIXELFOGTYPE != 1 ) && $WRITEWATERFOGTODESTALPHA
// defined $LIGHTING_PREVIEW && defined $HDRTYPE && $LIGHTING_PREVIEW && $HDRTYPE != 0
@ -355,7 +357,7 @@ public:
AssertMsg( !( m_nBLENDTINTBYBASEALPHA && ( m_nSELFILLUM || ( ( m_nDISTANCEALPHA && ( m_nDISTANCEALPHAFROMDETAIL == 0 ) ) || m_nBASEALPHAENVMAPMASK ) ) ), "Invalid combo combination ( BLENDTINTBYBASEALPHA && ( SELFILLUM || ( ( DISTANCEALPHA && ( DISTANCEALPHAFROMDETAIL == 0 ) ) || BASEALPHAENVMAPMASK ) ) )" );
AssertMsg( !( m_nFLASHLIGHT && m_nCUBEMAP ), "Invalid combo combination ( FLASHLIGHT && CUBEMAP )" );
AssertMsg( !( m_nCUBEMAP_SPHERE_LEGACY && ( m_nCUBEMAP == 0 ) ), "Invalid combo combination ( CUBEMAP_SPHERE_LEGACY && ( CUBEMAP == 0 ) )" );
return ( 72 * m_nDETAILTEXTURE ) + ( 144 * m_nCUBEMAP ) + ( 288 * m_nDIFFUSELIGHTING ) + ( 576 * m_nENVMAPMASK ) + ( 1152 * m_nBASEALPHAENVMAPMASK ) + ( 2304 * m_nSELFILLUM ) + ( 4608 * m_nVERTEXCOLOR ) + ( 9216 * m_nFLASHLIGHT ) + ( 18432 * m_nSELFILLUM_ENVMAPMASK_ALPHA ) + ( 36864 * m_nDETAIL_BLEND_MODE ) + ( 368640 * m_nSEAMLESS_BASE ) + ( 737280 * m_nSEAMLESS_DETAIL ) + ( 1474560 * m_nDISTANCEALPHA ) + ( 2949120 * m_nDISTANCEALPHAFROMDETAIL ) + ( 5898240 * m_nSOFT_MASK ) + ( 11796480 * m_nOUTLINE ) + ( 23592960 * m_nOUTER_GLOW ) + ( 47185920 * m_nFLASHLIGHTDEPTHFILTERMODE ) + ( 141557760 * m_nDEPTHBLEND ) + ( 283115520 * m_nBLENDTINTBYBASEALPHA ) + ( 566231040 * m_nSRGB_INPUT_ADAPTER ) + ( 1132462080 * m_nCUBEMAP_SPHERE_LEGACY ) + 0;
return ( 144 * m_nDETAILTEXTURE ) + ( 288 * m_nCUBEMAP ) + ( 576 * m_nDIFFUSELIGHTING ) + ( 1152 * m_nENVMAPMASK ) + ( 2304 * m_nBASEALPHAENVMAPMASK ) + ( 4608 * m_nSELFILLUM ) + ( 9216 * m_nVERTEXCOLOR ) + ( 18432 * m_nFLASHLIGHT ) + ( 36864 * m_nSELFILLUM_ENVMAPMASK_ALPHA ) + ( 73728 * m_nDETAIL_BLEND_MODE ) + ( 737280 * m_nSEAMLESS_BASE ) + ( 1474560 * m_nSEAMLESS_DETAIL ) + ( 2949120 * m_nDISTANCEALPHA ) + ( 5898240 * m_nDISTANCEALPHAFROMDETAIL ) + ( 11796480 * m_nSOFT_MASK ) + ( 23592960 * m_nOUTLINE ) + ( 47185920 * m_nOUTER_GLOW ) + ( 94371840 * m_nFLASHLIGHTDEPTHFILTERMODE ) + ( 283115520 * m_nDEPTHBLEND ) + ( 566231040 * m_nBLENDTINTBYBASEALPHA ) + ( 1132462080 * m_nSRGB_INPUT_ADAPTER ) + ( 2264924160 * m_nCUBEMAP_SPHERE_LEGACY ) + 0;
}
};
@ -368,12 +370,14 @@ class vertexlit_and_unlit_generic_ps20b_Dynamic_Index
unsigned int m_nLIGHTING_PREVIEW : 2;
unsigned int m_nFLASHLIGHTSHADOWS : 2;
unsigned int m_nSTATIC_LIGHT_LIGHTMAP : 2;
unsigned int m_nBICUBIC_LIGHTMAP : 2;
unsigned int m_nDEBUG_LUXELS : 2;
#ifdef _DEBUG
bool m_bPIXELFOGTYPE : 1;
bool m_bLIGHTING_PREVIEW : 1;
bool m_bFLASHLIGHTSHADOWS : 1;
bool m_bSTATIC_LIGHT_LIGHTMAP : 1;
bool m_bBICUBIC_LIGHTMAP : 1;
bool m_bDEBUG_LUXELS : 1;
#endif // _DEBUG
public:
@ -413,6 +417,15 @@ public:
#endif // _DEBUG
}
void SetBICUBIC_LIGHTMAP( int i )
{
Assert( i >= 0 && i <= 1 );
m_nBICUBIC_LIGHTMAP = i;
#ifdef _DEBUG
m_bBICUBIC_LIGHTMAP = true;
#endif // _DEBUG
}
void SetDEBUG_LUXELS( int i )
{
Assert( i >= 0 && i <= 1 );
@ -428,23 +441,27 @@ public:
m_nLIGHTING_PREVIEW = 0;
m_nFLASHLIGHTSHADOWS = 0;
m_nSTATIC_LIGHT_LIGHTMAP = 0;
m_nBICUBIC_LIGHTMAP = 0;
m_nDEBUG_LUXELS = 0;
#ifdef _DEBUG
m_bPIXELFOGTYPE = false;
m_bLIGHTING_PREVIEW = false;
m_bFLASHLIGHTSHADOWS = false;
m_bSTATIC_LIGHT_LIGHTMAP = false;
m_bBICUBIC_LIGHTMAP = false;
m_bDEBUG_LUXELS = false;
#endif // _DEBUG
}
int GetIndex() const
{
Assert( m_bPIXELFOGTYPE && m_bLIGHTING_PREVIEW && m_bFLASHLIGHTSHADOWS && m_bSTATIC_LIGHT_LIGHTMAP && m_bDEBUG_LUXELS );
Assert( m_bPIXELFOGTYPE && m_bLIGHTING_PREVIEW && m_bFLASHLIGHTSHADOWS && m_bSTATIC_LIGHT_LIGHTMAP && m_bBICUBIC_LIGHTMAP && m_bDEBUG_LUXELS );
AssertMsg( !( ( m_nSTATIC_LIGHT_LIGHTMAP == 0 ) && ( m_nDEBUG_LUXELS == 1 ) ), "Invalid combo combination ( ( STATIC_LIGHT_LIGHTMAP == 0 ) && ( DEBUG_LUXELS == 1 ) )" );
return ( 1 * m_nPIXELFOGTYPE ) + ( 3 * m_nLIGHTING_PREVIEW ) + ( 9 * m_nFLASHLIGHTSHADOWS ) + ( 18 * m_nSTATIC_LIGHT_LIGHTMAP ) + ( 36 * m_nDEBUG_LUXELS ) + 0;
AssertMsg( !( m_nBICUBIC_LIGHTMAP && ( m_nSTATIC_LIGHT_LIGHTMAP == 0 ) ), "Invalid combo combination ( BICUBIC_LIGHTMAP && ( STATIC_LIGHT_LIGHTMAP == 0 ) )" );
AssertMsg( !( m_nBICUBIC_LIGHTMAP && ( m_nDEBUG_LUXELS == 1 ) ), "Invalid combo combination ( BICUBIC_LIGHTMAP && ( DEBUG_LUXELS == 1 ) )" );
return ( 1 * m_nPIXELFOGTYPE ) + ( 3 * m_nLIGHTING_PREVIEW ) + ( 9 * m_nFLASHLIGHTSHADOWS ) + ( 18 * m_nSTATIC_LIGHT_LIGHTMAP ) + ( 36 * m_nBICUBIC_LIGHTMAP ) + ( 72 * m_nDEBUG_LUXELS ) + 0;
}
};
#define shaderDynamicTest_vertexlit_and_unlit_generic_ps20b psh_forgot_to_set_dynamic_PIXELFOGTYPE + psh_forgot_to_set_dynamic_LIGHTING_PREVIEW + psh_forgot_to_set_dynamic_FLASHLIGHTSHADOWS + psh_forgot_to_set_dynamic_STATIC_LIGHT_LIGHTMAP + psh_forgot_to_set_dynamic_DEBUG_LUXELS
#define shaderDynamicTest_vertexlit_and_unlit_generic_ps20b psh_forgot_to_set_dynamic_PIXELFOGTYPE + psh_forgot_to_set_dynamic_LIGHTING_PREVIEW + psh_forgot_to_set_dynamic_FLASHLIGHTSHADOWS + psh_forgot_to_set_dynamic_STATIC_LIGHT_LIGHTMAP + psh_forgot_to_set_dynamic_BICUBIC_LIGHTMAP + psh_forgot_to_set_dynamic_DEBUG_LUXELS

View file

@ -21,6 +21,8 @@
// $FLASHLIGHT && $CUBEMAP
// $CUBEMAP_SPHERE_LEGACY && ($CUBEMAP == 0)
// ($STATIC_LIGHT_LIGHTMAP == 0) && ($DEBUG_LUXELS == 1)
// $BICUBIC_LIGHTMAP && ($STATIC_LIGHT_LIGHTMAP == 0)
// $BICUBIC_LIGHTMAP && ($DEBUG_LUXELS == 1)
// defined $HDRTYPE && defined $HDRENABLED && !$HDRTYPE && $HDRENABLED
// defined $PIXELFOGTYPE && defined $WRITEWATERFOGTODESTALPHA && ( $PIXELFOGTYPE != 1 ) && $WRITEWATERFOGTODESTALPHA
// defined $LIGHTING_PREVIEW && defined $HDRTYPE && $LIGHTING_PREVIEW && $HDRTYPE != 0
@ -341,7 +343,7 @@ public:
AssertMsg( !( m_nBLENDTINTBYBASEALPHA && ( m_nSELFILLUM || ( ( m_nDISTANCEALPHA && ( m_nDISTANCEALPHAFROMDETAIL == 0 ) ) || m_nBASEALPHAENVMAPMASK ) ) ), "Invalid combo combination ( BLENDTINTBYBASEALPHA && ( SELFILLUM || ( ( DISTANCEALPHA && ( DISTANCEALPHAFROMDETAIL == 0 ) ) || BASEALPHAENVMAPMASK ) ) )" );
AssertMsg( !( m_nFLASHLIGHT && m_nCUBEMAP ), "Invalid combo combination ( FLASHLIGHT && CUBEMAP )" );
AssertMsg( !( m_nCUBEMAP_SPHERE_LEGACY && ( m_nCUBEMAP == 0 ) ), "Invalid combo combination ( CUBEMAP_SPHERE_LEGACY && ( CUBEMAP == 0 ) )" );
return ( 72 * m_nDETAILTEXTURE ) + ( 144 * m_nCUBEMAP ) + ( 288 * m_nDIFFUSELIGHTING ) + ( 576 * m_nENVMAPMASK ) + ( 1152 * m_nBASEALPHAENVMAPMASK ) + ( 2304 * m_nSELFILLUM ) + ( 4608 * m_nVERTEXCOLOR ) + ( 9216 * m_nFLASHLIGHT ) + ( 18432 * m_nSELFILLUM_ENVMAPMASK_ALPHA ) + ( 36864 * m_nDETAIL_BLEND_MODE ) + ( 368640 * m_nSEAMLESS_BASE ) + ( 737280 * m_nSEAMLESS_DETAIL ) + ( 1474560 * m_nDISTANCEALPHA ) + ( 2949120 * m_nDISTANCEALPHAFROMDETAIL ) + ( 5898240 * m_nSOFT_MASK ) + ( 11796480 * m_nOUTLINE ) + ( 23592960 * m_nOUTER_GLOW ) + ( 47185920 * m_nFLASHLIGHTDEPTHFILTERMODE ) + ( 141557760 * m_nDEPTHBLEND ) + ( 283115520 * m_nBLENDTINTBYBASEALPHA ) + ( 566231040 * m_nCUBEMAP_SPHERE_LEGACY ) + 0;
return ( 144 * m_nDETAILTEXTURE ) + ( 288 * m_nCUBEMAP ) + ( 576 * m_nDIFFUSELIGHTING ) + ( 1152 * m_nENVMAPMASK ) + ( 2304 * m_nBASEALPHAENVMAPMASK ) + ( 4608 * m_nSELFILLUM ) + ( 9216 * m_nVERTEXCOLOR ) + ( 18432 * m_nFLASHLIGHT ) + ( 36864 * m_nSELFILLUM_ENVMAPMASK_ALPHA ) + ( 73728 * m_nDETAIL_BLEND_MODE ) + ( 737280 * m_nSEAMLESS_BASE ) + ( 1474560 * m_nSEAMLESS_DETAIL ) + ( 2949120 * m_nDISTANCEALPHA ) + ( 5898240 * m_nDISTANCEALPHAFROMDETAIL ) + ( 11796480 * m_nSOFT_MASK ) + ( 23592960 * m_nOUTLINE ) + ( 47185920 * m_nOUTER_GLOW ) + ( 94371840 * m_nFLASHLIGHTDEPTHFILTERMODE ) + ( 283115520 * m_nDEPTHBLEND ) + ( 566231040 * m_nBLENDTINTBYBASEALPHA ) + ( 1132462080 * m_nCUBEMAP_SPHERE_LEGACY ) + 0;
}
};
@ -354,12 +356,14 @@ class vertexlit_and_unlit_generic_ps30_Dynamic_Index
unsigned int m_nLIGHTING_PREVIEW : 2;
unsigned int m_nFLASHLIGHTSHADOWS : 2;
unsigned int m_nSTATIC_LIGHT_LIGHTMAP : 2;
unsigned int m_nBICUBIC_LIGHTMAP : 2;
unsigned int m_nDEBUG_LUXELS : 2;
#ifdef _DEBUG
bool m_bPIXELFOGTYPE : 1;
bool m_bLIGHTING_PREVIEW : 1;
bool m_bFLASHLIGHTSHADOWS : 1;
bool m_bSTATIC_LIGHT_LIGHTMAP : 1;
bool m_bBICUBIC_LIGHTMAP : 1;
bool m_bDEBUG_LUXELS : 1;
#endif // _DEBUG
public:
@ -399,6 +403,15 @@ public:
#endif // _DEBUG
}
void SetBICUBIC_LIGHTMAP( int i )
{
Assert( i >= 0 && i <= 1 );
m_nBICUBIC_LIGHTMAP = i;
#ifdef _DEBUG
m_bBICUBIC_LIGHTMAP = true;
#endif // _DEBUG
}
void SetDEBUG_LUXELS( int i )
{
Assert( i >= 0 && i <= 1 );
@ -414,23 +427,27 @@ public:
m_nLIGHTING_PREVIEW = 0;
m_nFLASHLIGHTSHADOWS = 0;
m_nSTATIC_LIGHT_LIGHTMAP = 0;
m_nBICUBIC_LIGHTMAP = 0;
m_nDEBUG_LUXELS = 0;
#ifdef _DEBUG
m_bPIXELFOGTYPE = false;
m_bLIGHTING_PREVIEW = false;
m_bFLASHLIGHTSHADOWS = false;
m_bSTATIC_LIGHT_LIGHTMAP = false;
m_bBICUBIC_LIGHTMAP = false;
m_bDEBUG_LUXELS = false;
#endif // _DEBUG
}
int GetIndex() const
{
Assert( m_bPIXELFOGTYPE && m_bLIGHTING_PREVIEW && m_bFLASHLIGHTSHADOWS && m_bSTATIC_LIGHT_LIGHTMAP && m_bDEBUG_LUXELS );
Assert( m_bPIXELFOGTYPE && m_bLIGHTING_PREVIEW && m_bFLASHLIGHTSHADOWS && m_bSTATIC_LIGHT_LIGHTMAP && m_bBICUBIC_LIGHTMAP && m_bDEBUG_LUXELS );
AssertMsg( !( ( m_nSTATIC_LIGHT_LIGHTMAP == 0 ) && ( m_nDEBUG_LUXELS == 1 ) ), "Invalid combo combination ( ( STATIC_LIGHT_LIGHTMAP == 0 ) && ( DEBUG_LUXELS == 1 ) )" );
return ( 1 * m_nPIXELFOGTYPE ) + ( 3 * m_nLIGHTING_PREVIEW ) + ( 9 * m_nFLASHLIGHTSHADOWS ) + ( 18 * m_nSTATIC_LIGHT_LIGHTMAP ) + ( 36 * m_nDEBUG_LUXELS ) + 0;
AssertMsg( !( m_nBICUBIC_LIGHTMAP && ( m_nSTATIC_LIGHT_LIGHTMAP == 0 ) ), "Invalid combo combination ( BICUBIC_LIGHTMAP && ( STATIC_LIGHT_LIGHTMAP == 0 ) )" );
AssertMsg( !( m_nBICUBIC_LIGHTMAP && ( m_nDEBUG_LUXELS == 1 ) ), "Invalid combo combination ( BICUBIC_LIGHTMAP && ( DEBUG_LUXELS == 1 ) )" );
return ( 1 * m_nPIXELFOGTYPE ) + ( 3 * m_nLIGHTING_PREVIEW ) + ( 9 * m_nFLASHLIGHTSHADOWS ) + ( 18 * m_nSTATIC_LIGHT_LIGHTMAP ) + ( 36 * m_nBICUBIC_LIGHTMAP ) + ( 72 * m_nDEBUG_LUXELS ) + 0;
}
};
#define shaderDynamicTest_vertexlit_and_unlit_generic_ps30 psh_forgot_to_set_dynamic_PIXELFOGTYPE + psh_forgot_to_set_dynamic_LIGHTING_PREVIEW + psh_forgot_to_set_dynamic_FLASHLIGHTSHADOWS + psh_forgot_to_set_dynamic_STATIC_LIGHT_LIGHTMAP + psh_forgot_to_set_dynamic_DEBUG_LUXELS
#define shaderDynamicTest_vertexlit_and_unlit_generic_ps30 psh_forgot_to_set_dynamic_PIXELFOGTYPE + psh_forgot_to_set_dynamic_LIGHTING_PREVIEW + psh_forgot_to_set_dynamic_FLASHLIGHTSHADOWS + psh_forgot_to_set_dynamic_STATIC_LIGHT_LIGHTMAP + psh_forgot_to_set_dynamic_BICUBIC_LIGHTMAP + psh_forgot_to_set_dynamic_DEBUG_LUXELS

View file

@ -33,6 +33,7 @@
// DYNAMIC: "FLASHLIGHTSHADOWS" "0..1" [ps30]
// DYNAMIC: "STATIC_LIGHT_LIGHTMAP" "0..1" [ps20b] [ps30]
// DYNAMIC: "STATIC_LIGHT_LIGHTMAP" "0..0" [ps20]
// DYNAMIC: "BICUBIC_LIGHTMAP" "0..1" [ps20b] [ps30]
// DYNAMIC: "DEBUG_LUXELS" "0..1" [ps20b] [ps30]
// detail blend mode 6 = ps20b only
@ -77,6 +78,13 @@
// Debugging luxels only makes sense if we have lightmaps on this geometry.
// SKIP: ($STATIC_LIGHT_LIGHTMAP == 0) && ($DEBUG_LUXELS == 1)
// Can't sample lightmaps bicubically if we don't have lightmaps.
// SKIP: $BICUBIC_LIGHTMAP && ($STATIC_LIGHT_LIGHTMAP == 0)
// Luxel debugging overrides lightmap sampler with the luxel dev texture,
// no point in sampling that bicubically.
// SKIP: $BICUBIC_LIGHTMAP && ($DEBUG_LUXELS == 1)
#include "common_flashlight_fxc.h"
#include "common_vertexlitgeneric_dx9.h"
@ -174,7 +182,7 @@ const float4 g_OutlineParams : register( c9 );
const float3 g_DetailTint : register( c10 );
#endif
#if DEBUG_LUXELS
#if DEBUG_LUXELS || BICUBIC_LIGHTMAP
const float4 g_LuxelScale : register( c11 );
#endif
@ -354,7 +362,14 @@ float4 main( PS_INPUT i ) : COLOR
#if DEBUG_LUXELS
lightmapTexCoords.xy *= g_LuxelScale.xy;
#endif
float3 f3LightmapColor = GammaToLinear( 2.0f * tex2D( LightMapSampler, lightmapTexCoords ).rgb );
float2 vLightmapSize = 0.0.xx;
#if BICUBIC_LIGHTMAP
vLightmapSize = g_LuxelScale;
#endif
float3 f3LightmapColor = GammaToLinear( 2.0f * LightMapSample( LightMapSampler, lightmapTexCoords, vLightmapSize.x, vLightmapSize.y ) );
diffuseLighting = f3LightmapColor;
#endif

View file

@ -33,6 +33,7 @@
static ConVar mat_fullbright( "mat_fullbright","0", FCVAR_CHEAT );
static ConVar r_lightwarpidentity( "r_lightwarpidentity","0", FCVAR_CHEAT );
static ConVar mat_luxels( "mat_luxels", "0", FCVAR_CHEAT );
extern ConVar r_lightmap_bicubic;
//static ConVar r_treesway( "r_treesway", "1" );
static inline bool WantsSkinShader( IMaterialVar** params, const VertexLitGeneric_DX9_Vars_t &info )
@ -402,6 +403,7 @@ static void DrawVertexLitGeneric_DX9_Internal( CBaseVSShader *pShader, IMaterial
bool bIsAlphaTested = IS_FLAG_SET( MATERIAL_VAR_ALPHATEST ) != 0;
bool bHasDiffuseWarp = (!bHasFlashlight || IsX360() ) && hasDiffuseLighting && (info.m_nDiffuseWarpTexture != -1) && params[info.m_nDiffuseWarpTexture]->IsTexture();
bool bHasLightmapTexture = IsTextureSet( info.m_nLightmap, params );
bool bHasBicubicLightmapSampling = bHasLightmapTexture && r_lightmap_bicubic.GetBool();
bool bHasMatLuxel = bHasLightmapTexture && mat_luxels.GetBool();
//bool bNoCull = IS_FLAG_SET( MATERIAL_VAR_NOCULL );
@ -1267,8 +1269,12 @@ static void DrawVertexLitGeneric_DX9_Internal( CBaseVSShader *pShader, IMaterial
}
else
{
float dimensions[] = { 0.0f, 0.0f, 0.0f, 0.0f };
DynamicCmdsOut.BindStandardTexture( SHADER_SAMPLER12, TEXTURE_DEBUG_LUXELS );
}
if ( bHasMatLuxel || bHasBicubicLightmapSampling )
{
float dimensions[] = { 0.0f, 0.0f, 0.0f, 0.0f };
pShader->GetTextureDimensions( &dimensions[0], &dimensions[1], info.m_nLightmap );
DynamicCmdsOut.SetPixelShaderConstant( 11, dimensions, 1 );
}
@ -1398,6 +1404,7 @@ static void DrawVertexLitGeneric_DX9_Internal( CBaseVSShader *pShader, IMaterial
SET_DYNAMIC_PIXEL_SHADER_COMBO( PIXELFOGTYPE, pShaderAPI->GetPixelFogCombo1( true ) );
SET_DYNAMIC_PIXEL_SHADER_COMBO( FLASHLIGHTSHADOWS, bFlashlightShadows );
SET_DYNAMIC_PIXEL_SHADER_COMBO( STATIC_LIGHT_LIGHTMAP, lightState.m_bStaticLightTexel ? 1 : 0 );
SET_DYNAMIC_PIXEL_SHADER_COMBO( BICUBIC_LIGHTMAP, bHasBicubicLightmapSampling ? 1 : 0 );
SET_DYNAMIC_PIXEL_SHADER_COMBO( DEBUG_LUXELS, bHasMatLuxel ? 1 : 0 );
SET_DYNAMIC_PIXEL_SHADER_COMBO(
LIGHTING_PREVIEW,
@ -1436,6 +1443,7 @@ static void DrawVertexLitGeneric_DX9_Internal( CBaseVSShader *pShader, IMaterial
SET_DYNAMIC_PIXEL_SHADER_COMBO( PIXELFOGTYPE, pShaderAPI->GetPixelFogCombo1( true ) );
SET_DYNAMIC_PIXEL_SHADER_COMBO( FLASHLIGHTSHADOWS, bFlashlightShadows );
SET_DYNAMIC_PIXEL_SHADER_COMBO( STATIC_LIGHT_LIGHTMAP, lightState.m_bStaticLightTexel ? 1 : 0 );
SET_DYNAMIC_PIXEL_SHADER_COMBO( BICUBIC_LIGHTMAP, bHasBicubicLightmapSampling ? 1 : 0 );
SET_DYNAMIC_PIXEL_SHADER_COMBO( DEBUG_LUXELS, bHasMatLuxel ? 1 : 0 );
SET_DYNAMIC_PIXEL_SHADER_COMBO( LIGHTING_PREVIEW,
pShaderAPI->GetIntRenderingParameter(INT_RENDERPARM_ENABLE_FIXED_LIGHTING) );