Include a depth buffer.

Co-authored-by: sigonasr2 <sigonasr2@gmail.com>
origin
sigonasr2, Sig, Sigo 3 years ago
parent 562ae07307
commit 1ce63d60a2
  1. 11
      src/sig/Panel.java
  2. 4
      src/sig/SigRenderer.java
  3. 10
      src/sig/utils/DrawUtils.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<width;x++) {
for (int y=0;y<height;y++) {
boolean found=false;
if (!found) {
p[ (int)(x*SigRenderer.RESOLUTION) + (int)(y*SigRenderer.RESOLUTION) * width] = 0;
}
p[ (int)(x*SigRenderer.RESOLUTION) + (int)(y*SigRenderer.RESOLUTION) * width] = 0;
SigRenderer.depthBuffer[x+y*width]=0;
}
}
@ -196,14 +195,14 @@ public class Panel extends JPanel implements Runnable {
}
}
Collections.sort(accumulatedTris, new Comparator<Triangle>() {
/*Collections.sort(accumulatedTris, new Comparator<Triangle>() {
@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 (z1<z2)?1:(z1==z2)?0:-1;
}
});
});*/
for (Triangle t : accumulatedTris) {
Triangle[] clipped = new Triangle[]{new Triangle(),new Triangle()};

@ -17,7 +17,7 @@ import java.awt.BorderLayout;
public class SigRenderer implements KeyListener,MouseListener,MouseMotionListener{
public static boolean WIREFRAME = true;
public static boolean WIREFRAME = false;
public static Mesh cube;
public static int SCREEN_WIDTH=1280;
@ -45,6 +45,8 @@ public class SigRenderer implements KeyListener,MouseListener,MouseMotionListene
public static Texture dirtTex;
public static float[] depthBuffer;
boolean upHeld=false,downHeld=false,leftHeld=false,rightHeld=false,
aHeld=false,sHeld=false,dHeld=false,wHeld=false;

@ -79,7 +79,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;
}
}
@ -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;
}
}

Loading…
Cancel
Save