MCPcopy Create free account
hub / github.com/carbonengine/trinity / PruneParameters

Method PruneParameters

trinity/Shader/Tr2Effect.cpp:1077–1187  ·  view source on GitHub ↗

--------------------------------------------------------------- PruneParameters Removes any parameters from the object that do not exist in the effect file ---------------------------------------------------------------

Source from the content-addressed store, hash-verified

1075// effect file
1076// ---------------------------------------------------------------
1077bool Tr2Effect::PruneParameters()
1078{
1079 CCP_STATS_ZONE( __FUNCTION__ );
1080
1081 if( !m_shader )
1082 {
1083 CCP_LOGERR( "Tr2Effect::PruneParameters: no effect resource loaded." );
1084 return false;
1085 }
1086
1087 // Prune Effects Parameters
1088 int y = 0;
1089 while( y < m_parameters.GetSize() )
1090 {
1091 std::string pName = m_parameters[y]->GetParameterName();
1092 bool removeParameter = !GetBool( m_shader, pName.c_str(), "SasUiVisible" );
1093 const Tr2EffectConstant* constant = m_shader->GetConstant( pName.c_str() );
1094 if( constant == nullptr && !removeParameter )
1095 {
1096 removeParameter = true;
1097 auto& desc = m_shader->GetEffectDescription();
1098 for( auto technique = desc.techniques.begin(); technique != desc.techniques.end(); ++technique )
1099 {
1100 for( auto pass = technique->passes.begin(); pass != technique->passes.end(); ++pass )
1101 {
1102 for( unsigned i = 0; i < Tr2RenderContextEnum::SHADER_TYPE_COUNT; ++i )
1103 {
1104 for( auto sampler = pass->stageInputs[i].resources.begin(); sampler != pass->stageInputs[i].resources.end(); ++sampler )
1105 {
1106 if( strcmp( sampler->second.name, pName.c_str() ) == 0 )
1107 {
1108 removeParameter = false;
1109 break;
1110 }
1111 }
1112 }
1113 }
1114 }
1115 }
1116 if( removeParameter )
1117 {
1118 m_parameters.Remove( y );
1119 }
1120 else
1121 {
1122 ++y;
1123 }
1124 }
1125
1126 // Prune const parameters
1127 size_t it = 0;
1128 while( it < m_constParameters.size() )
1129 {
1130 const char* pName = m_constParameters[it].name.c_str();
1131 bool removeParameter = !GetBool( m_shader, pName, "SasUiVisible" );
1132 const Tr2EffectConstant* constant = m_shader->GetConstant( pName );
1133 if( constant == nullptr && !removeParameter )
1134 {

Callers

nothing calls this directly

Calls 7

GetBoolFunction · 0.85
GetConstantMethod · 0.80
sizeMethod · 0.80
GetSizeMethod · 0.45
GetParameterNameMethod · 0.45
beginMethod · 0.45
endMethod · 0.45

Tested by

no test coverage detected