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

Method RebuildSamplerOverrides

trinity/Shader/Tr2Effect.cpp:614–665  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

612}
613
614void Tr2Effect::RebuildSamplerOverrides()
615{
616 if( m_samplerOverrides.empty() )
617 {
618 return;
619 }
620
621 USE_MAIN_THREAD_RENDER_CONTEXT();
622
623 auto UpdateSamplers = [&]( ShaderType shaderType, const Tr2EffectStageInput& stage, Tr2ResourceSetDescriptionAL& resourceSetDesc ) {
624 bool modified = false;
625 for( auto& samplerOverride : m_samplerOverrides )
626 {
627 if( auto sampler = FindSamplerByName( stage.samplers, samplerOverride.name.c_str() ) )
628 {
629 modified |= resourceSetDesc.SetSampler( shaderType, sampler->first, samplerOverride.sampler );
630 }
631 }
632 return modified;
633 };
634
635 auto& desc = m_shader->GetEffectDescription();
636 for( size_t technique = 0; technique < desc.techniques.size(); ++technique )
637 {
638 const unsigned passCount = unsigned( desc.techniques[technique].passes.size() );
639 for( unsigned passIx = 0; passIx != passCount; ++passIx )
640 {
641 Tr2EffectPassParameters& pp = *m_parametersForPasses[technique].passes[passIx];
642
643 for( unsigned i = 0; i != Tr2RenderContextEnum::SHADER_TYPE_COUNT; ++i )
644 {
645 auto& stage = desc.techniques[technique].passes[passIx].stageInputs[i];
646 if( !stage.m_exists )
647 {
648 continue;
649 }
650
651 if( UpdateSamplers( ShaderType( i ), stage, pp.m_resourceSetDesc ) )
652 {
653 pp.m_compatibleWithGdr = false;
654 m_compatibleWithGdr = false;
655 }
656 }
657 }
658 for( unsigned passIx = 0; passIx != desc.techniques[technique].libraries.size(); ++passIx )
659 {
660 auto& pp = *m_parametersForPasses[technique].libraries[passIx];
661
662 UpdateSamplers( Tr2RenderContextEnum::COMPUTE_SHADER, desc.techniques[technique].libraries[passIx].globalInput, pp.m_globalResourceSetDesc );
663 }
664 }
665}
666
667// ---------------------------------------------------------------
668void Tr2Effect::RebuildCachedDataInternal()

Callers

nothing calls this directly

Calls 5

FindSamplerByNameFunction · 0.85
ShaderTypeEnum · 0.85
emptyMethod · 0.80
sizeMethod · 0.80
SetSamplerMethod · 0.45

Tested by

no test coverage detected