@@ -191,14 +191,22 @@ SingletonConstruction( uint32_t index, PrimitiveContainer& primitives, BoxNode*
191191 primNodes[0 ].m_mask = primitives.fetchMask ( 0 );
192192 primNodes[0 ].m_type = instance.type ;
193193 primNodes[0 ].m_static = primitives.getCount () == primitives.getFrameCount () ? 1 : 0 ;
194+
194195 if ( instance.type == hiprtInstanceTypeScene )
195196 primNodes[0 ].m_scene = reinterpret_cast <SceneHeader*>( instance.scene );
196197 else
197198 primNodes[0 ].m_geometry = reinterpret_cast <GeomHeader*>( instance.geometry );
199+
198200 if ( primitives.getFrameCount () == 1 )
201+ {
199202 primNodes[0 ].m_identity = primitives.copyInvTransformMatrix ( 0 , primNodes[0 ].m_matrix ) ? 1 : 0 ;
203+ }
200204 else
205+ {
201206 primNodes[0 ].m_transform = primitives.fetchTransformHeader ( 0 );
207+ primNodes[0 ].m_identity = 0 ;
208+ }
209+
202210 leafType = InstanceType;
203211 }
204212
@@ -440,6 +448,8 @@ __device__ void ResetCountersAndUpdateLeaves(
440448 if ( transform.frameCount == 1 )
441449 primNodes[index].m_identity =
442450 primitives.copyInvTransformMatrix ( transform.frameIndex , primNodes[index].m_matrix ) ? 1 : 0 ;
451+ else
452+ primNodes[index].m_identity = 0 ;
443453 }
444454 }
445455}
@@ -650,15 +660,22 @@ __device__ void Collapse(
650660 primNodes[nodeAddr].m_mask = primitives.fetchMask ( reference.m_primIndex );
651661 primNodes[nodeAddr].m_type = instance.type ;
652662 primNodes[nodeAddr].m_static = transform.frameCount == 1 ? 1 : 0 ;
663+
653664 if ( instance.type == hiprtInstanceTypeScene )
654665 primNodes[nodeAddr].m_scene = reinterpret_cast <SceneHeader*>( instance.scene );
655666 else
656667 primNodes[nodeAddr].m_geometry = reinterpret_cast <GeomHeader*>( instance.geometry );
668+
657669 if ( transform.frameCount == 1 )
670+ {
658671 primNodes[nodeAddr].m_identity =
659672 primitives.copyInvTransformMatrix ( transform.frameIndex , primNodes[nodeAddr].m_matrix ) ? 1 : 0 ;
673+ }
660674 else
675+ {
661676 primNodes[nodeAddr].m_transform = transform;
677+ primNodes[nodeAddr].m_identity = 0 ;
678+ }
662679 }
663680 done = true ;
664681 }
0 commit comments