diff --git a/Content/Shaders/SDF.flax b/Content/Shaders/SDF.flax index 9f9a6a261..ebb5875c6 100644 --- a/Content/Shaders/SDF.flax +++ b/Content/Shaders/SDF.flax @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bd485ffce3c1d002621d795968cfda9c68555600157332dde91618d75881207e -size 7903 +oid sha256:462d122e2c49303b45658b7a0498a847ca8b1a4427db0ece8027e7c2946fdf4d +size 8092 diff --git a/Source/Shaders/SDF.shader b/Source/Shaders/SDF.shader index 7976558c7..6da0877f2 100644 --- a/Source/Shaders/SDF.shader +++ b/Source/Shaders/SDF.shader @@ -142,6 +142,8 @@ void CS_RasterizeTriangle(uint3 DispatchThreadId : SV_DispatchThreadID) int voxelIndex = GetVoxelIndex(voxelCoord); float3 voxelPos = GetVoxelPos(voxelCoord); float distance = SignedDistancePointToTriangle(voxelPos, v0, v1, v2); + if (distance < -10.0f) // TODO: find a better way to reject negative distance from degenerate triangles that break SDF shape + distance = abs(distance); InterlockedMin(SDF[voxelIndex], FloatFlip3(distance)); } }