17
0
mirror of https://github.com/MaSzyna-EU07/maszyna.git synced 2026-10-17 05:09:20 +02:00

perf(instancing): cache instance rotation and group lod bands linearly

This commit is contained in:
2026-10-01 12:43:07 +02:00
parent 4eabf3c3b5
commit 2130d175e9
4 changed files with 93 additions and 78 deletions

View File

@@ -664,6 +664,23 @@ void TAnimModel::RaPrepare()
}
}
glm::mat4 const &TAnimModel::rotation_scale() {
if( ( false == m_rotationscalevalid ) || ( vAngle != m_rotationscaleangles ) || ( m_scale != m_rotationscalescale ) ) {
// same order as the per-instance render path
glm::mat4 transform( 1.0f );
if( vAngle.y != 0.0f ) { transform = glm::rotate( transform, glm::radians( vAngle.y ), glm::vec3( 0.f, 1.f, 0.f ) ); }
if( vAngle.x != 0.0f ) { transform = glm::rotate( transform, glm::radians( vAngle.x ), glm::vec3( 1.f, 0.f, 0.f ) ); }
if( vAngle.z != 0.0f ) { transform = glm::rotate( transform, glm::radians( vAngle.z ), glm::vec3( 0.f, 0.f, 1.f ) ); }
if( m_scale != glm::vec3( 1.0f ) ) { transform = glm::scale( transform, m_scale ); }
m_rotationscale = transform;
m_rotationscaleangles = vAngle;
m_rotationscalescale = m_scale;
m_rotationscalevalid = true;
}
return m_rotationscale;
}
int TAnimModel::Flags()
{ // informacja dla TGround, czy ma być w Render, RenderAlpha, czy RenderMixed
int i = pModel ? pModel->Flags() : 0; // pobranie flag całego modelu