aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/dev
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/dev')
-rw-r--r--src/main/java/dev/figboot/cuberender/state/Framebuffer.java5
-rw-r--r--src/main/java/dev/figboot/cuberender/test/GraphicsPanel.java2
2 files changed, 7 insertions, 0 deletions
diff --git a/src/main/java/dev/figboot/cuberender/state/Framebuffer.java b/src/main/java/dev/figboot/cuberender/state/Framebuffer.java
index 17f4870..8da0803 100644
--- a/src/main/java/dev/figboot/cuberender/state/Framebuffer.java
+++ b/src/main/java/dev/figboot/cuberender/state/Framebuffer.java
@@ -27,6 +27,7 @@ public class Framebuffer {
@Setter private Matrix4f transform;
@Setter private BlendMode blendMode = BlendMode.DISABLE;
+ @Setter private boolean cullBackFace = true;
public Framebuffer(int width, int height) {
this.width = width;
@@ -114,6 +115,10 @@ public class Framebuffer {
vert2 = transform.transform(vert2);
normal = transform.transform(normal).normalize();
+ if (cullBackFace && normal.z < 0) {
+ return;
+ }
+
float sx0 = logToScrX(vert0.x), sy0 = logToScrY(vert0.y);
float sx1 = logToScrX(vert1.x), sy1 = logToScrY(vert1.y);
float sx2 = logToScrX(vert2.x), sy2 = logToScrY(vert2.y);
diff --git a/src/main/java/dev/figboot/cuberender/test/GraphicsPanel.java b/src/main/java/dev/figboot/cuberender/test/GraphicsPanel.java
index aa34853..2f7f1fc 100644
--- a/src/main/java/dev/figboot/cuberender/test/GraphicsPanel.java
+++ b/src/main/java/dev/figboot/cuberender/test/GraphicsPanel.java
@@ -315,6 +315,7 @@ public class GraphicsPanel extends JPanel {
long start = System.nanoTime();
framebuffer.setBlendMode(BlendMode.DISABLE);
+ framebuffer.setCullBackFace(true);
framebuffer.clear(Framebuffer.FB_CLEAR_COLOR | Framebuffer.FB_CLEAR_DEPTH, 0xFF000000);
long t1 = System.nanoTime();
@@ -327,6 +328,7 @@ public class GraphicsPanel extends JPanel {
framebuffer.setDepthMode(Framebuffer.FB_DEPTH_USE | Framebuffer.FB_DEPTH_COMMIT_TRANSPARENT);
framebuffer.setBlendMode(BlendMode.BLEND_OVER);
+ framebuffer.setCullBackFace(false);
framebuffer.drawMesh(meshes.get(BodyPart.HAT));
framebuffer.drawMesh(meshes.get(BodyPart.TORSO_OVERLAY));
framebuffer.drawMesh(meshes.get(BodyPart.LEFT_ARM_OVERLAY));