MCPcopy Create free account
hub / github.com/TorqueGameEngines/Torque3D / _addPass

Method _addPass

Engine/source/materials/processedShaderMaterial.cpp:650–725  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

648}
649
650bool ProcessedShaderMaterial::_addPass( ShaderRenderPassData &rpd,
651 U32 &texIndex,
652 MaterialFeatureData &fd,
653 U32 stageNum,
654 const FeatureSet &features )
655{
656 // Set number of textures, stage, glow, etc.
657 rpd.mNumTex = texIndex;
658 rpd.mStageNum = stageNum;
659 rpd.mGlow |= mMaterial->mGlow[stageNum];
660
661 // Copy over features
662 rpd.mFeatureData.materialFeatures = fd.features;
663
664 Vector<String> samplers;
665 samplers.setSize(Material::MAX_TEX_PER_PASS);
666 for(int i = 0; i < Material::MAX_TEX_PER_PASS; ++i)
667 {
668 samplers[i] = (rpd.mSamplerNames[i].isEmpty() || rpd.mSamplerNames[i][0] == '$') ? rpd.mSamplerNames[i] : "$" + rpd.mSamplerNames[i];
669 }
670
671 // Generate shader
672 GFXShader::setLogging( true, true );
673 rpd.shader = SHADERGEN->getShader( rpd.mFeatureData, mVertexFormat, &mUserMacros, samplers );
674 if( !rpd.shader )
675 return false;
676 rpd.shaderHandles.init( rpd.shader );
677
678 // If a pass glows, we glow
679 if( rpd.mGlow )
680 mHasGlow = true;
681
682 ShaderRenderPassData *newPass = new ShaderRenderPassData( rpd );
683 mPasses.push_back( newPass );
684
685 //initSamplerHandles
686 ShaderConstHandles *handles = _getShaderConstHandles( mPasses.size()-1 );
687 AssertFatal(handles,"");
688 for(int i = 0; i < rpd.mNumTex; i++)
689 {
690 if(rpd.mSamplerNames[i].isEmpty())
691 {
692 handles->mTexHandlesSC[i] = newPass->shader->getShaderConstHandle( String::EmptyString );
693 handles->mRTParamsSC[i] = newPass->shader->getShaderConstHandle( String::EmptyString );
694 continue;
695 }
696
697 String samplerName = rpd.mSamplerNames[i];
698 if( !samplerName.startsWith("$"))
699 samplerName.insert(0, "$");
700
701 GFXShaderConstHandle *handle = newPass->shader->getShaderConstHandle( samplerName );
702
703 handles->mTexHandlesSC[i] = handle;
704 handles->mRTParamsSC[i] = newPass->shader->getShaderConstHandle( String::ToString( "$rtParams%s", samplerName.c_str()+1 ) );
705
706 AssertFatal( handle,"");
707 }

Callers

nothing calls this directly

Calls 14

startsWithMethod · 0.80
getFeatureCountMethod · 0.80
setSizeMethod · 0.45
isEmptyMethod · 0.45
getShaderMethod · 0.45
initMethod · 0.45
push_backMethod · 0.45
sizeMethod · 0.45
getShaderConstHandleMethod · 0.45
insertMethod · 0.45
c_strMethod · 0.45
hasFeatureMethod · 0.45

Tested by

no test coverage detected