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

Method ReplayCapture

trinity/Sprite2d/Tr2Sprite2dScene.cpp:2073–2132  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2071}
2072
2073void Tr2Sprite2dScene::ReplayCapture( Tr2Sprite2dDisplayList* dl )
2074{
2075 CCP_STATS_ZONE( __FUNCTION__ );
2076
2077 USE_MAIN_THREAD_RENDER_CONTEXT();
2078
2079 IssueDrawCall();
2080
2081 if( !dl->vertexBuffer.IsValid() || !dl->indexBuffer.IsValid() || dl->entries.empty() )
2082 {
2083 return;
2084 }
2085
2086 CCP_STATS_INC( spriteSceneDisplayListsUsed );
2087
2088 renderContext.m_esm.ApplyIndexBuffer( dl->indexBuffer );
2089 renderContext.m_esm.ApplyStreamSource( 0, dl->vertexBuffer, 0, sizeof( Tr2Sprite2dD3DVertex ) );
2090
2091 for( auto it = dl->entries.begin(); it != dl->entries.end(); ++it )
2092 {
2093 auto& entry = *it;
2094
2095 CCP_STATS_ADD( spriteSceneCount, entry.primitiveCount / 2 );
2096
2097 m_itemsRendered++;
2098 if( m_itemsRendered >= m_maxItemsToRender )
2099 {
2100 continue;
2101 }
2102
2103 if( entry.job )
2104 {
2105 RunJobHelper( entry.job );
2106
2107 renderContext.m_esm.ApplyIndexBuffer( dl->indexBuffer );
2108 renderContext.m_esm.ApplyStreamSource( 0, dl->vertexBuffer, 0, sizeof( Tr2Sprite2dD3DVertex ) );
2109 }
2110 else
2111 {
2112 m_texelSizeVar[0] = entry.texelSize0;
2113 m_texelSizeVar[1] = entry.texelSize1;
2114
2115 auto desc = entry.effect->GetPassDescription( 0, 0 );
2116 auto colorSpace = m_useLinearColorSpace ? Tr2RenderContextEnum::COLOR_SPACE_SRGB : Tr2RenderContextEnum::COLOR_SPACE_LINEAR;
2117 desc->m_resourceSetDirty |= desc->m_resourceSetDesc.SetSrv( PIXEL_SHADER, m_textureRegisters[0], ( entry.texture0 && entry.texture0->GetTexture() ) ? *entry.texture0->GetTexture() : Tr2TextureAL(), colorSpace );
2118 desc->m_resourceSetDirty |= desc->m_resourceSetDesc.SetSrv( PIXEL_SHADER, m_textureRegisters[1], ( entry.texture1 && entry.texture1->GetTexture() ) ? *entry.texture1->GetTexture() : Tr2TextureAL(), colorSpace );
2119
2120 CCP_STATS_INC( spriteSceneDrawCallCount );
2121
2122 entry.effect->Render( &entry, renderContext );
2123 }
2124 }
2125
2126 for( unsigned int i = 0; i < s_textureMax; ++i )
2127 {
2128 m_texture[i] = nullptr;
2129 }
2130

Callers 1

GatherSpritesMethod · 0.80

Calls 12

emptyMethod · 0.80
ApplyIndexBufferMethod · 0.80
ApplyStreamSourceMethod · 0.80
GetPassDescriptionMethod · 0.80
SetSrvMethod · 0.80
Tr2TextureALClass · 0.50
IsValidMethod · 0.45
beginMethod · 0.45
endMethod · 0.45
GetTextureMethod · 0.45
RenderMethod · 0.45
GetBufferMethod · 0.45

Tested by

no test coverage detected