// FIXME: Figure out a better way to do this? //----------------------------------------------------------------------------- int CBaseShader::ComputeModulationFlags( IMaterialVar** params, IShaderDynamicAPI* pShaderAPI ) { s_pShaderAPI = pShaderAPI; int mod = 0; if( UsingFlashlight(params) ) { mod |= SHADER_USING_FLASHLIGHT; } if ( UsingEditor(params) ) { mod |= SHADER_USING_EDITOR; } if( IS_FLAG2_SET( MATERIAL_VAR2_USE_FIXED_FUNCTION_BAKED_LIGHTING ) ) { AssertOnce( IS_FLAG2_SET( MATERIAL_VAR2_NEEDS_BAKED_LIGHTING_SNAPSHOTS ) ); if( IS_FLAG2_SET( MATERIAL_VAR2_NEEDS_BAKED_LIGHTING_SNAPSHOTS ) ) { mod |= SHADER_USING_FIXED_FUNCTION_BAKED_LIGHTING; } } if ( IsSnapshotting() ) { if ( IS_FLAG2_SET( MATERIAL_VAR2_USE_GBUFFER0 ) ) mod |= SHADER_USING_GBUFFER0; if ( IS_FLAG2_SET( MATERIAL_VAR2_USE_GBUFFER1 ) ) mod |= SHADER_USING_GBUFFER1; } else { int nFixedLightingMode = pShaderAPI->GetIntRenderingParameter( INT_RENDERPARM_ENABLE_FIXED_LIGHTING ); if ( nFixedLightingMode & 1 ) mod |= SHADER_USING_GBUFFER0; if ( nFixedLightingMode & 2 ) mod |= SHADER_USING_GBUFFER1; } s_pShaderAPI = NULL; return mod; }
//----------------------------------------------------------------------------- // FIXME: Figure out a better way to do this? //----------------------------------------------------------------------------- int CBaseShader::ComputeModulationFlags( IMaterialVar** params, IShaderDynamicAPI* pShaderAPI ) { s_pShaderAPI = pShaderAPI; int mod = 0; if ( GetAlpha(params) < 1.0f ) { mod |= SHADER_USING_ALPHA_MODULATION; } float color[3]; params[COLOR]->GetVecValue( color, 3 ); if ((color[0] < 1.0) || (color[1] < 1.0) || (color[2] < 1.0)) { mod |= SHADER_USING_COLOR_MODULATION; } if( UsingFlashlight(params) ) { mod |= SHADER_USING_FLASHLIGHT; } if ( UsingEditor(params) ) { mod |= SHADER_USING_EDITOR; } if( IS_FLAG2_SET( MATERIAL_VAR2_USE_FIXED_FUNCTION_BAKED_LIGHTING ) ) { AssertOnce( IS_FLAG2_SET( MATERIAL_VAR2_NEEDS_BAKED_LIGHTING_SNAPSHOTS ) ); if( IS_FLAG2_SET( MATERIAL_VAR2_NEEDS_BAKED_LIGHTING_SNAPSHOTS ) ) { mod |= SHADER_USING_FIXED_FUNCTION_BAKED_LIGHTING; } } s_pShaderAPI = NULL; return mod; }