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

Method AddHitGroup

trinity/Raytracing/Tr2RaytracingGeometry.cpp:97–138  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

95}
96
97BlueSharedStringW Tr2RaytracingPipelineStateManager::AddHitGroup( const Tr2EffectLibrary& library )
98{
99 auto found = m_hitGroups.find( library.libraryHandle );
100 if( found != end( m_hitGroups ) )
101 {
102 return found->second;
103 }
104
105 const wchar_t* names[3];
106 std::wstring closestHitName;
107 std::wstring anyHitName;
108 std::wstring intersectionName;
109 const wchar_t* exportNamesRaw[3];
110 size_t count = 0;
111
112 if( !library.intersectionName.empty() )
113 {
114 intersectionName = GetUniqueName();
115 exportNamesRaw[count] = intersectionName.c_str();
116 names[count++] = library.intersectionName.c_str();
117 }
118 if( !library.anyHitName.empty() )
119 {
120 anyHitName = GetUniqueName();
121 exportNamesRaw[count] = anyHitName.c_str();
122 names[count++] = library.anyHitName.c_str();
123 }
124 if( !library.closestHitName.empty() )
125 {
126 closestHitName = GetUniqueName();
127 exportNamesRaw[count] = closestHitName.c_str();
128 names[count++] = library.closestHitName.c_str();
129 }
130
131 m_pipelineDesc.AddShaders( count, exportNamesRaw, *Tr2EffectStateManager::GetShaderLibraryCode( library.libraryHandle ), names, library.payloadSize, library.localInput.signature );
132 auto hitGroup = BlueSharedStringW( GetUniqueName() );
133 m_pipelineDesc.AddHitGroup( hitGroup.c_str(), anyHitName.c_str(), closestHitName.c_str(), intersectionName.c_str(), library.localInput.signature );
134 m_pipelineDesc.AddLocalSignature( library.localInput.signature );
135 m_hitGroups[library.libraryHandle] = hitGroup;
136 m_isDirty = true;
137 return hitGroup;
138}
139
140Tr2RtPipelineStateAL Tr2RaytracingPipelineStateManager::GetPipelineState( Tr2RenderContext& renderContext )
141{

Callers 1

Calls 4

emptyMethod · 0.80
AddShadersMethod · 0.80
AddLocalSignatureMethod · 0.80
endFunction · 0.50

Tested by

no test coverage detected