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

Method UpdateMeshMorphs

trinity/Eve/SpaceObject/Children/EveChildMesh.cpp:1533–1574  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1531
1532
1533bool EveChildMesh::UpdateMeshMorphs( Tr2RenderContext& renderContext )
1534{
1535 GPU_REGION( renderContext, "MeshMorphs" );
1536
1537 if( m_bakeMorphs )
1538 {
1539 auto shader = m_mergeMorphsEffect->GetShaderStateInterface();
1540 if( !shader )
1541 {
1542 return false;
1543 }
1544 if( !PrepareMorphBuffers( renderContext ) )
1545 {
1546 return false;
1547 }
1548
1549 auto meshIndex = m_mesh->GetMeshIndex();
1550 auto lod = m_mesh->GetGeometryResource()->GetMeshLod( meshIndex, m_currentScreenSize );
1551 uint32_t vertexCount = lod->m_vertexCount;
1552
1553 renderContext.SetConstants( m_mergeMorphsConstantBuffer, Tr2RenderContextEnum::COMPUTE_SHADER, Tr2Renderer::GetPerObjectVSStartRegister() );
1554
1555
1556 Tr2Renderer::RunComputeShader(
1557 m_mergeMorphsEffect,
1558 BlueSharedString( "MorphBaking" ),
1559 ( vertexCount + 63 ) / 64,
1560 1,
1561 1,
1562 renderContext );
1563
1564 auto rtMesh = m_mesh->GetRtMesh();
1565
1566 if( rtMesh )
1567 {
1568 rtMesh->MarkDirty();
1569 }
1570 }
1571
1572 m_isMorphsBaked = true;
1573 return true;
1574}
1575
1576
1577bool EveChildMesh::IsMorphsBaked() const

Callers 1

RenderDepthPassMethod · 0.80

Calls 7

GetMeshIndexMethod · 0.80
GetGeometryResourceMethod · 0.80
GetRtMeshMethod · 0.80
MarkDirtyMethod · 0.80
GetMeshLodMethod · 0.45
SetConstantsMethod · 0.45

Tested by

no test coverage detected