summaryrefslogtreecommitdiffstats
path: root/src/main/java/dev/figboot/cuberender/state/Framebuffer.java
diff options
context:
space:
mode:
authorLibravatar bigfoot547 <[email protected]>2024-06-14 20:47:14 -0500
committerLibravatar bigfoot547 <[email protected]>2024-06-14 20:47:14 -0500
commit0dfcb09376007cded49a1d2d54bf2c197a2dbe44 (patch)
tree6becc57575b232099298fc4821f9c859e8db1b07 /src/main/java/dev/figboot/cuberender/state/Framebuffer.java
parentinitial commit (diff)
allow translation using 4x4 matrices
Diffstat (limited to 'src/main/java/dev/figboot/cuberender/state/Framebuffer.java')
-rw-r--r--src/main/java/dev/figboot/cuberender/state/Framebuffer.java23
1 files changed, 10 insertions, 13 deletions
diff --git a/src/main/java/dev/figboot/cuberender/state/Framebuffer.java b/src/main/java/dev/figboot/cuberender/state/Framebuffer.java
index 56e218e..3c2a1ad 100644
--- a/src/main/java/dev/figboot/cuberender/state/Framebuffer.java
+++ b/src/main/java/dev/figboot/cuberender/state/Framebuffer.java
@@ -1,6 +1,7 @@
package dev.figboot.cuberender.state;
import dev.figboot.cuberender.math.Matrix3f;
+import dev.figboot.cuberender.math.Matrix4f;
import dev.figboot.cuberender.math.Vector3f;
import dev.figboot.cuberender.math.Vector4f;
import lombok.Getter;
@@ -23,9 +24,9 @@ public class Framebuffer {
@Getter private final BufferedImage color;
private final float[] depth;
- private int depthMode = FB_DEPTH_USE | FB_DEPTH_COMMIT;
+ @Setter private int depthMode = FB_DEPTH_USE | FB_DEPTH_COMMIT;
- @Setter private Matrix3f transform;
+ @Setter private Matrix4f transform;
@Setter private BlendMode blendMode = BlendMode.DISABLE;
@@ -37,10 +38,6 @@ public class Framebuffer {
depth = new float[width * height];
}
- public void setDepthMode(int mode) {
- this.depthMode = mode;
- }
-
public void clear(int bits, int color) {
if ((bits & FB_CLEAR_COLOR) != 0) {
Graphics gfx = this.color.getGraphics();
@@ -74,9 +71,9 @@ public class Framebuffer {
i1 = mesh.indices[tri * 3 + 1];
i2 = mesh.indices[tri * 3 + 2];
- Vector3f vert0 = mesh.vertices[i0];
- Vector3f vert1 = mesh.vertices[i1];
- Vector3f vert2 = mesh.vertices[i2];
+ Vector4f vert0 = mesh.vertices[i0];
+ Vector4f vert1 = mesh.vertices[i1];
+ Vector4f vert2 = mesh.vertices[i2];
drawTriangle(vert0, vert1, vert2, mesh.normals[tri], s, i0, i1, i2);
}
@@ -94,9 +91,9 @@ public class Framebuffer {
i1 = tri * 3 + 1;
i2 = tri * 3 + 2;
- Vector3f vert0 = mesh.vertices[i0];
- Vector3f vert1 = mesh.vertices[i1];
- Vector3f vert2 = mesh.vertices[i2];
+ Vector4f vert0 = mesh.vertices[i0];
+ Vector4f vert1 = mesh.vertices[i1];
+ Vector4f vert2 = mesh.vertices[i2];
drawTriangle(vert0, vert1, vert2, mesh.normals[tri], s, i0, i1, i2);
}
@@ -111,7 +108,7 @@ public class Framebuffer {
}
// triangles have flat normals (we don't need anything more than that in this renderer and it saves us the trouble of interpolating between 3 normal vectors)
- private void drawTriangle(Vector3f vert0, Vector3f vert1, Vector3f vert2, Vector3f normal, Sampleable<Object> sampleable, int i0, int i1, int i2) {
+ private void drawTriangle(Vector4f vert0, Vector4f vert1, Vector4f vert2, Vector4f normal, Sampleable<Object> sampleable, int i0, int i1, int i2) {
Vector4f outColor = new Vector4f(), prevColor = new Vector4f();
vert0 = transform.transform(vert0);