mirror of
https://github.com/alliedmodders/hl2sdk.git
synced 2025-09-19 20:16:10 +08:00
Sync with latest source-sdk-2013.
This commit is contained in:
@ -32,6 +32,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 );
|
||||
|
||||
|
||||
static inline bool WantsSkinShader( IMaterialVar** params, const VertexLitGeneric_DX9_Vars_t &info )
|
||||
@ -382,7 +383,8 @@ 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 bHasMatLuxel = bHasLightmapTexture && mat_luxels.GetBool();
|
||||
|
||||
//bool bNoCull = IS_FLAG_SET( MATERIAL_VAR_NOCULL );
|
||||
bool bFlashlightNoLambert = false;
|
||||
@ -622,6 +624,11 @@ static void DrawVertexLitGeneric_DX9_Internal( CBaseVSShader *pShader, IMaterial
|
||||
pShaderShadow->EnableTexture( SHADER_SAMPLER11, true ); // self illum mask
|
||||
}
|
||||
|
||||
|
||||
// Always enable this sampler, used for lightmaps depending on the dynamic combo.
|
||||
// Lightmaps are generated in gamma space, but not sRGB, so leave that disabled. Conversion is done in the shader.
|
||||
pShaderShadow->EnableTexture( SHADER_SAMPLER12, true );
|
||||
|
||||
bool bSRGBWrite = true;
|
||||
if( (info.m_nLinearWrite != -1) && (params[info.m_nLinearWrite]->GetIntValue() == 1) )
|
||||
{
|
||||
@ -1188,12 +1195,33 @@ static void DrawVertexLitGeneric_DX9_Internal( CBaseVSShader *pShader, IMaterial
|
||||
|
||||
|
||||
// Set up light combo state
|
||||
LightState_t lightState = {0, false, false};
|
||||
LightState_t lightState = { 0, false, false, false };
|
||||
if ( bVertexLitGeneric && (!bHasFlashlight || IsX360() ) )
|
||||
{
|
||||
pShaderAPI->GetDX9LightState( &lightState );
|
||||
}
|
||||
|
||||
// Override the lighting desired if we have a lightmap set!
|
||||
if ( bHasLightmapTexture )
|
||||
{
|
||||
lightState.m_bStaticLightVertex = false;
|
||||
lightState.m_bStaticLightTexel = true;
|
||||
|
||||
// Usual case, not debugging.
|
||||
if (!bHasMatLuxel)
|
||||
{
|
||||
pShader->BindTexture(SHADER_SAMPLER12, info.m_nLightmap);
|
||||
}
|
||||
else
|
||||
{
|
||||
float dimensions[] = { 0.0f, 0.0f, 0.0f, 0.0f };
|
||||
DynamicCmdsOut.BindStandardTexture( SHADER_SAMPLER12, TEXTURE_DEBUG_LUXELS );
|
||||
pShader->GetTextureDimensions( &dimensions[0], &dimensions[1], info.m_nLightmap );
|
||||
DynamicCmdsOut.SetPixelShaderConstant( 11, dimensions, 1 );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
MaterialFogMode_t fogType = pShaderAPI->GetSceneFogMode();
|
||||
int fogIndex = ( fogType == MATERIAL_FOG_LINEAR_BELOW_FOG_Z ) ? 1 : 0;
|
||||
int numBones = pShaderAPI->GetCurrentNumBones();
|
||||
@ -1277,7 +1305,7 @@ static void DrawVertexLitGeneric_DX9_Internal( CBaseVSShader *pShader, IMaterial
|
||||
if ( bAmbientOnly ) // Override selected light combo to be ambient only
|
||||
{
|
||||
lightState.m_bAmbientLight = true;
|
||||
lightState.m_bStaticLight = false;
|
||||
lightState.m_bStaticLightVertex = false;
|
||||
lightState.m_nNumLights = 0;
|
||||
}
|
||||
|
||||
@ -1289,7 +1317,8 @@ static void DrawVertexLitGeneric_DX9_Internal( CBaseVSShader *pShader, IMaterial
|
||||
|
||||
DECLARE_DYNAMIC_VERTEX_SHADER( vertexlit_and_unlit_generic_vs20 );
|
||||
SET_DYNAMIC_VERTEX_SHADER_COMBO( DYNAMIC_LIGHT, lightState.HasDynamicLight() );
|
||||
SET_DYNAMIC_VERTEX_SHADER_COMBO( STATIC_LIGHT, lightState.m_bStaticLight ? 1 : 0 );
|
||||
SET_DYNAMIC_VERTEX_SHADER_COMBO( STATIC_LIGHT_VERTEX, lightState.m_bStaticLightVertex ? 1 : 0 );
|
||||
SET_DYNAMIC_VERTEX_SHADER_COMBO( STATIC_LIGHT_LIGHTMAP, lightState.m_bStaticLightTexel ? 1 : 0);
|
||||
SET_DYNAMIC_VERTEX_SHADER_COMBO( DOWATERFOG, fogIndex );
|
||||
SET_DYNAMIC_VERTEX_SHADER_COMBO( SKINNING, numBones > 0 );
|
||||
SET_DYNAMIC_VERTEX_SHADER_COMBO(
|
||||
@ -1306,6 +1335,8 @@ static void DrawVertexLitGeneric_DX9_Internal( CBaseVSShader *pShader, IMaterial
|
||||
|
||||
// SET_DYNAMIC_PIXEL_SHADER_COMBO( PIXELFOGTYPE, pShaderAPI->GetPixelFogCombo() );
|
||||
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( DEBUG_LUXELS, bHasMatLuxel ? 1 : 0 );
|
||||
SET_DYNAMIC_PIXEL_SHADER_COMBO(
|
||||
LIGHTING_PREVIEW,
|
||||
pShaderAPI->GetIntRenderingParameter(INT_RENDERPARM_ENABLE_FIXED_LIGHTING) );
|
||||
@ -1315,6 +1346,7 @@ static void DrawVertexLitGeneric_DX9_Internal( CBaseVSShader *pShader, IMaterial
|
||||
{
|
||||
DECLARE_DYNAMIC_PIXEL_SHADER( vertexlit_and_unlit_generic_ps20 );
|
||||
SET_DYNAMIC_PIXEL_SHADER_COMBO( PIXELFOGTYPE, pShaderAPI->GetPixelFogCombo() );
|
||||
SET_DYNAMIC_PIXEL_SHADER_COMBO( STATIC_LIGHT_LIGHTMAP, lightState.m_bStaticLightTexel ? 1 : 0 );
|
||||
SET_DYNAMIC_PIXEL_SHADER_COMBO(
|
||||
LIGHTING_PREVIEW,
|
||||
pShaderAPI->GetIntRenderingParameter(INT_RENDERPARM_ENABLE_FIXED_LIGHTING) );
|
||||
@ -1328,7 +1360,8 @@ static void DrawVertexLitGeneric_DX9_Internal( CBaseVSShader *pShader, IMaterial
|
||||
|
||||
DECLARE_DYNAMIC_VERTEX_SHADER( vertexlit_and_unlit_generic_vs30 );
|
||||
SET_DYNAMIC_VERTEX_SHADER_COMBO( DYNAMIC_LIGHT, lightState.HasDynamicLight() );
|
||||
SET_DYNAMIC_VERTEX_SHADER_COMBO( STATIC_LIGHT, lightState.m_bStaticLight ? 1 : 0 );
|
||||
SET_DYNAMIC_VERTEX_SHADER_COMBO( STATIC_LIGHT_VERTEX, lightState.m_bStaticLightVertex ? 1 : 0 );
|
||||
SET_DYNAMIC_VERTEX_SHADER_COMBO( STATIC_LIGHT_LIGHTMAP, lightState.m_bStaticLightTexel ? 1 : 0 );
|
||||
SET_DYNAMIC_VERTEX_SHADER_COMBO( DOWATERFOG, fogIndex );
|
||||
SET_DYNAMIC_VERTEX_SHADER_COMBO( SKINNING, numBones > 0 );
|
||||
SET_DYNAMIC_VERTEX_SHADER_COMBO( LIGHTING_PREVIEW,
|
||||
@ -1340,6 +1373,8 @@ static void DrawVertexLitGeneric_DX9_Internal( CBaseVSShader *pShader, IMaterial
|
||||
DECLARE_DYNAMIC_PIXEL_SHADER( vertexlit_and_unlit_generic_ps30 );
|
||||
// SET_DYNAMIC_PIXEL_SHADER_COMBO( PIXELFOGTYPE, pShaderAPI->GetPixelFogCombo() );
|
||||
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( DEBUG_LUXELS, bHasMatLuxel ? 1 : 0 );
|
||||
SET_DYNAMIC_PIXEL_SHADER_COMBO( LIGHTING_PREVIEW,
|
||||
pShaderAPI->GetIntRenderingParameter(INT_RENDERPARM_ENABLE_FIXED_LIGHTING) );
|
||||
SET_DYNAMIC_PIXEL_SHADER_CMD( DynamicCmdsOut, vertexlit_and_unlit_generic_ps30 );
|
||||
|
Reference in New Issue
Block a user