Fix culling issue with scale 53/292653/3
authorseungho baek <sbsh.baek@samsung.com>
Thu, 11 May 2023 01:07:41 +0000 (10:07 +0900)
committerseungho baek <sbsh.baek@samsung.com>
Thu, 11 May 2023 05:19:31 +0000 (14:19 +0900)
Change-Id: Ibd07450e6fdd39d15cd5e90b8c8c0994cde3d589
Signed-off-by: seungho baek <sbsh.baek@samsung.com>
dali/internal/update/manager/render-instruction-processor.cpp

index dcae779..25d6e97 100644 (file)
@@ -154,9 +154,14 @@ inline bool SetNodeUpdateArea(Node* node, bool isLayer3d, Matrix& nodeWorldMatri
 
   if(node->GetUpdateAreaHint() == Vector4::ZERO)
   {
+    if(isLayer3d)
+    {
+      return true;
+    }
     // RenderItem::CalculateViewportSpaceAABB cannot cope with z transform
     // I don't use item.mModelMatrix.GetTransformComponents() for z transform, would be too slow
-    if(!isLayer3d && nodeWorldMatrix.GetZAxis() == Vector3(0.0f, 0.0f, 1.0f))
+    Vector3 zaxis = nodeWorldMatrix.GetZAxis();
+    if(EqualsZero(zaxis.x) && EqualsZero(zaxis.y))
     {
       nodeUpdateArea = Vector4(0.0f, 0.0f, nodeSize.width, nodeSize.height);
       return false;
@@ -217,7 +222,7 @@ inline void AddRendererToRenderList(BufferIndex               updateBufferIndex,
       nodeUpdateAreaSet = true;
 
       const Vector3& scale = nodeWorldMatrix.GetScale();
-      const Vector3& size  = Vector3(nodeUpdateArea.z, nodeUpdateArea.w, 1.0f) * scale;
+      const Vector3& size  = Vector3(nodeUpdateArea.z, nodeUpdateArea.w, 0.0f) * scale;
 
       if(size.LengthSquared() > Math::MACHINE_EPSILON_1000)
       {