From 1ce63d60a2d6765ec042aa91e64d45fb8bd3c42c Mon Sep 17 00:00:00 2001 From: "sigonasr2, Sig, Sigo" Date: Wed, 3 Nov 2021 15:15:02 +0000 Subject: [PATCH] Include a depth buffer. Co-authored-by: sigonasr2 --- src/sig/Panel.java | 11 +++++------ src/sig/SigRenderer.java | 4 +++- src/sig/utils/DrawUtils.java | 10 ++++++++-- 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/sig/Panel.java b/src/sig/Panel.java index 3e9e9d9..da46e15 100644 --- a/src/sig/Panel.java +++ b/src/sig/Panel.java @@ -66,6 +66,7 @@ public class Panel extends JPanel implements Runnable { if(thread.isInterrupted() || !thread.isAlive()){ thread.start(); } + SigRenderer.depthBuffer = new float[width*height]; } /** * Do your draws in here !! @@ -81,10 +82,8 @@ public class Panel extends JPanel implements Runnable { if(p.length != width * height) return; for (int x=0;x() { + /*Collections.sort(accumulatedTris, new Comparator() { @Override public int compare(Triangle t1, Triangle t2) { float z1=(t1.A.z+t1.B.z+t1.C.z)/3f; float z2=(t2.A.z+t2.B.z+t2.C.z)/3f; return (z1SigRenderer.depthBuffer[i*SigRenderer.SCREEN_WIDTH+j]) { + Draw(canvas,j,i,texture.getColor(tex_u/tex_w,tex_v/tex_w,colorMult/255f)); + SigRenderer.depthBuffer[i*SigRenderer.SCREEN_WIDTH+j] = tex_w; + } t+=tstep; } } @@ -128,7 +131,10 @@ public class DrawUtils { tex_u=(1.0f-t)*tex_su+t*tex_eu; tex_v=(1.0f-t)*tex_sv+t*tex_ev; tex_w=(1.0f-t)*tex_sw+t*tex_ew; - Draw(canvas,j,i,texture.getColor(tex_u/tex_w,tex_v/tex_w,colorMult/255f)); + if (tex_w>SigRenderer.depthBuffer[i*SigRenderer.SCREEN_WIDTH+j]) { + Draw(canvas,j,i,texture.getColor(tex_u/tex_w,tex_v/tex_w,colorMult/255f)); + SigRenderer.depthBuffer[i*SigRenderer.SCREEN_WIDTH+j] = tex_w; + } t+=tstep; } }