Przeglądaj źródła

Mesh batch compute culling do not emit "very small" instances.

clementlandrin 1 rok temu
rodzic
commit
ad5d9463f2
1 zmienionych plików z 4 dodań i 2 usunięć
  1. 4 2
      h3d/scene/MeshBatch.hx

+ 4 - 2
h3d/scene/MeshBatch.hx

@@ -85,6 +85,9 @@ class ComputeIndirect extends hxsl.Shader {
 
 
 			var culled = false;
 			var culled = false;
 
 
+			if ( dot(scaledRadius, scaledRadius) < 1e-6 )
+				culled = true;
+
 			if ( ENABLE_CULLING ) {
 			if ( ENABLE_CULLING ) {
 				for ( i  in 0...6 ) {
 				for ( i  in 0...6 ) {
 					var plane = frustum[i];
 					var plane = frustum[i];
@@ -116,8 +119,7 @@ class ComputeIndirect extends hxsl.Shader {
 				commandBuffer[ invocID * 5 + 2] = int(matInfos[ int(matIndex) + lod * MATERIAL_COUNT ].y);
 				commandBuffer[ invocID * 5 + 2] = int(matInfos[ int(matIndex) + lod * MATERIAL_COUNT ].y);
 				commandBuffer[ invocID * 5 + 3] = 0;
 				commandBuffer[ invocID * 5 + 3] = 0;
 				commandBuffer[ invocID * 5 + 4] = invocID;
 				commandBuffer[ invocID * 5 + 4] = invocID;
-			}
-			else {
+			} else {
 				commandBuffer[ invocID * 5 ] = 0;
 				commandBuffer[ invocID * 5 ] = 0;
 				commandBuffer[ invocID * 5 + 1] = 0;
 				commandBuffer[ invocID * 5 + 1] = 0;
 				commandBuffer[ invocID * 5 + 2] = 0;
 				commandBuffer[ invocID * 5 + 2] = 0;