From cf44396d3d1cd415b6c62e3ba1be6b2372e0aee4 Mon Sep 17 00:00:00 2001 From: luboslenco Date: Mon, 4 Mar 2019 09:25:21 +0100 Subject: [PATCH] Flip normals --- Sources/arm/util/MeshUtil.hx | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/Sources/arm/util/MeshUtil.hx b/Sources/arm/util/MeshUtil.hx index f3fe8c0a..afe65fb2 100644 --- a/Sources/arm/util/MeshUtil.hx +++ b/Sources/arm/util/MeshUtil.hx @@ -120,4 +120,26 @@ class MeshUtil { g.vertexBufferMap.get("posnor").unlock(); } } + + public static function flipNormals() { + for (p in UITrait.inst.paintObjects) { + var g = p.data.geom; + // position, normals + var vertices = g.vertexBuffer.lockInt16(); // posnortex + var verticesDepth = g.vertexBufferMap.get("pos").lockInt16(); + if (!g.vertexBufferMap.exists("posnor")) g.get([{name: "pos", data: 'short4norm'}, {name: "nor", data: 'short2norm'}]); + var verticesVox = g.vertexBufferMap.get("posnor").lockInt16(); + for (i in 0...Std.int(vertices.length / 8)) { + vertices[i * 8 + 3] = -vertices[i * 8 + 3]; + vertices[i * 8 + 4] = -vertices[i * 8 + 4]; + vertices[i * 8 + 5] = -vertices[i * 8 + 5]; + verticesVox[i * 6 + 3] = -verticesVox[i * 6 + 3]; + verticesVox[i * 6 + 4] = -verticesVox[i * 6 + 4]; + verticesVox[i * 6 + 5] = -verticesVox[i * 6 + 5]; + } + g.vertexBuffer.unlock(); + g.vertexBufferMap.get("pos").unlock(); + g.vertexBufferMap.get("posnor").unlock(); + } + } }