Skip to content
Simon Dietz edited this page Jan 27, 2025 · 16 revisions

Dev Log

Date: 2025-01-27

Why All This? The Inspiration Behind

Minecraft has always been more than just a game to me—it was a creative playground where I could build, experiment, and push the limits of what’s possible. While the game’s sandbox kept me hooked, I quickly found myself drawn to coding plugins and tools that could enhance the building experience. I became part of two large build teams, collaborating on massive projects and learning how to optimize workflows in the builder scene.

Over time, procedural content creation became my obsession. I was fascinated by how automation could speed up map generation and bring complex terrains and structures to life. When I hit limitations in tools like drububu, I didn’t stop—I coded my own voxelizer capable of processing massive OBJ-based terrains, scaling up to 4k maps and beyond. This journey has taught me so much, and I’ve built a personal library of tools, plugins, and knowledge over the years.

Now, I feel it’s time to bring all of this together. My goal is to create a voxel engine and build tool that combines everything I’ve learned—procedural generation, large-scale voxelization, and workflow optimization—to turn ambitious ideas into reality.

Date: 2025-01-24

Adding Backface Culling to the Voxel Engine

Today, I continued optimizing the voxel engine and added backface culling to improve rendering performance.

Backface culling is a technique in 3D graphics where polygons (or faces) of an object that are not visible to the camera (i.e., their "back side") are not rendered. This reduces the number of faces processed by the GPU and helps improve performance, especially in complex scenes.

Processing does not provide direct access to this feature, so I utilized the PGL graphics context to implement it myself. To make it reusable, I added two new methods to my custom graphics context:

void enableFaceCulling();

void disableFaceCulling();

The Processing-specific implementation looks as follows:

public void enableFaceCulling() {
    PGraphicsOpenGL pgl = (PGraphicsOpenGL) g;
    pgl.pgl.frontFace(PGL.CCW); // Counter-clockwise winding order for front faces
    pgl.pgl.enable(PGL.CULL_FACE); // Enable face culling
    pgl.pgl.cullFace(PGL.BACK); // Cull back faces
}

public void disableFaceCulling() {
    PGraphicsOpenGL pgl = (PGraphicsOpenGL) g;
    pgl.pgl.disable(PGL.CULL_FACE); // Disable face culling
}

By enabling face culling, only the outer faces of the objects are rendered, significantly reducing the number of rendered polygons. This is especially useful in voxel-based systems where many internal faces are hidden and unnecessary for rendering.

https://forum.processing.org/one/topic/disable-backface-culling.html

engine_voxel_24_01_2025_1

engine_voxel_24_01_2025_2

Date: 2025-01-24

Showcase

engine_voxel_24_01_2025_3

engine_voxel_24_01_2025_4

engine_voxel_24_01_2025_5

Clone this wiki locally