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

Method RebuildCachedDataInternal

trinity/Shader/Tr2Effect.cpp:668–821  ·  view source on GitHub ↗

---------------------------------------------------------------

Source from the content-addressed store, hash-verified

666
667// ---------------------------------------------------------------
668void Tr2Effect::RebuildCachedDataInternal()
669{
670 if( m_insideStartUpdate )
671 {
672 return;
673 }
674 m_parameterHash = INVALID_PARAMETER_HASH;
675 auto bk = m_shader;
676 m_shader = nullptr;
677 m_lodTextureParameters.clear();
678 m_compatibleWithGdr = true;
679
680 if( m_effectResource )
681 {
682 m_shader = m_effectResource->GetShader( m_options.empty() ? nullptr : &m_options[0], m_options.size() );
683 if( m_shader )
684 {
685 CCP_STATS_ZONE( __FUNCTION__ );
686 USE_MAIN_THREAD_RENDER_CONTEXT();
687
688 for( auto& over : m_samplerOverrides )
689 {
690 over.sampler.Create( CreateSamplerDescription( over ), renderContext );
691 }
692
693 m_parametersForPasses.clear();
694
695 auto& desc = m_shader->GetEffectDescription();
696 m_parametersForPasses.resize( desc.techniques.size() );
697
698 for( size_t technique = 0; technique < desc.techniques.size(); ++technique )
699 {
700 const unsigned passCount = unsigned( desc.techniques[technique].passes.size() );
701
702 m_parametersForPasses[technique].passes.resize( passCount );
703
704 for( unsigned passIx = 0; passIx != passCount; ++passIx )
705 {
706 m_parametersForPasses[technique].passes[passIx].reset( CCP_NEW( "Tr2EffectPassParameters" ) Tr2EffectPassParameters() );
707 Tr2EffectPassParameters& pp = *m_parametersForPasses[technique].passes[passIx];
708 pp.m_resourceSetDesc = desc.techniques[technique].passes[passIx].resourceSetDesc;
709 pp.m_resourceSetHash = 0;
710 pp.m_resourceSetDirty = true;
711 pp.m_compatibleWithGdr = true;
712
713 uint32_t stageCount = 0;
714
715 for( unsigned i = 0; i != Tr2RenderContextEnum::SHADER_TYPE_COUNT; ++i )
716 {
717 auto& stage = desc.techniques[technique].passes[passIx].stageInputs[i];
718 if( !stage.m_exists )
719 {
720 continue;
721 }
722
723 if( i != Tr2RenderContextEnum::VERTEX_SHADER && i != Tr2RenderContextEnum::PIXEL_SHADER && i != Tr2RenderContextEnum::COMPUTE_SHADER )
724 {
725 pp.m_compatibleWithGdr = false;

Callers

nothing calls this directly

Calls 10

CreateSamplerDescriptionFunction · 0.85
ShaderTypeEnum · 0.85
emptyMethod · 0.80
sizeMethod · 0.80
resetMethod · 0.80
GetShaderMethod · 0.45
CreateMethod · 0.45
RebuildEffectHandlesMethod · 0.45

Tested by

no test coverage detected