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

Method DoPrepareResources

trinity/Tr2ReflectionProbe.cpp:243–321  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

241}
242
243bool Tr2ReflectionProbe::DoPrepareResources( ImageIO::PixelFormat rtFormat, Tr2PrimaryRenderContext& renderContext )
244{
245
246 for( int i = 0; i < 6; i++ )
247 {
248 if( !m_renderTargets[i]->IsValid() )
249 {
250 CR_RETURN_VAL( m_renderTargets[i]->CreateManual( m_intermediateSize, m_intermediateSize, 1, rtFormat, 0, 0, EX_BIND_UNORDERED_ACCESS, TEX_TYPE_2D, Tr2CpuUsage::NONE, Tr2GpuUsage::RENDER_TARGET ), false );
251 }
252
253 if( !m_stencilMaps[i].IsValid() )
254 {
255 int stencilSize = ( m_customSourceTexture && m_customSourceTexture->IsValid() ) ? m_customSourceTexture->GetWidth() : m_intermediateSize;
256 CR_RETURN_VAL( m_stencilMaps[i].Create( Tr2BitmapDimensions( stencilSize, stencilSize, 1, PIXEL_FORMAT_D32_FLOAT ), Tr2GpuUsage::DEPTH_STENCIL | Tr2GpuUsage::SHADER_RESOURCE, renderContext ), false );
257 }
258 }
259
260 if( !m_renderTargetCube->IsValid() )
261 {
262 CR_RETURN_VAL( m_renderTargetCube->Create( m_intermediateSize, m_intermediateSize, 1, rtFormat, 0, 0, EX_BIND_UNORDERED_ACCESS, TEX_TYPE_CUBE ), false );
263 }
264
265 if( !m_preFilterTarget->IsValid() )
266 {
267 CR_RETURN_VAL( m_preFilterTarget->Create( FILTER_SIZE, FILTER_SIZE, 8, rtFormat, 0, 0, EX_BIND_UNORDERED_ACCESS, TEX_TYPE_CUBE ), false );
268 }
269
270 if( !m_postFilterTarget->IsValid() )
271 {
272 CR_RETURN_VAL( m_postFilterTarget->Create( FILTER_SIZE * 2, FILTER_SIZE * 2, MIP_COUNT + 1, m_hdrOutput ? rtFormat : PIXEL_FORMAT_R8G8B8A8_UNORM, 0, 0, EX_BIND_UNORDERED_ACCESS, TEX_TYPE_CUBE ), false );
273 m_hasData = false;
274 }
275
276 if( !m_initialized )
277 {
278 m_filterEffect->SetEffectPathName( "res:/graphics/effect/managed/space/System/Reflection/ReflectionFilterActivision128.fx" );
279 m_preFilterEffect->SetEffectPathName( "res:/graphics/effect/managed/space/System/Reflection/ReflectionFilterActivisionPre.fx" );
280 auto source = dynamic_cast<ITr2TextureProvider*>( m_customSourceTexture.p );
281 m_preFilterEffect->SetParameter( BlueSharedString( "tex_hi_res" ), source ? source : static_cast<ITr2TextureProvider*>( m_renderTargetCube ) );
282 m_preFilterEffect->SetParameter( BlueSharedString( "tex_lo_res" ), m_preFilterTarget );
283
284 m_preFilterEffect->SetOption( BlueSharedString( "HOLLYWOOD_MODE" ), BlueSharedString( m_hollywoodMode ? "HOLLYWOOD_ON" : "HOLLYWOOD_OFF" ) );
285 if( m_hollywoodMode )
286 {
287 m_preFilterEffect->SetParameter( s_backLightColorName, Vector4( m_backlightColor ) );
288 m_preFilterEffect->SetParameter( s_backLightContrastName, m_backlightContrast );
289 m_preFilterEffect->SetParameter( s_viewDirectionName, Vector3( 0, 1, 0 ) );
290 }
291
292 m_filterEffect->SetParameter( BlueSharedString( "tex_in" ), m_preFilterTarget );
293
294 for( int i = 0; i < MIP_COUNT; i++ )
295 {
296 std::stringstream str;
297 str << "tex_out" << i;
298 Tr2RuntimeTextureParameterPtr param;
299 param.CreateInstance();
300 param->Create( BlueSharedString( str.str() ), m_postFilterTarget, i + 1 );

Callers

nothing calls this directly

Calls 11

CreateManualMethod · 0.80
SetEffectPathNameMethod · 0.80
SetOptionMethod · 0.80
CreateInstanceMethod · 0.80
AddResourceMethod · 0.80
Vector3Class · 0.70
Vector4Class · 0.50
IsValidMethod · 0.45
GetWidthMethod · 0.45
CreateMethod · 0.45
SetParameterMethod · 0.45

Tested by

no test coverage detected