DirectX

Voxel Engine Demo 4: Dynamic/Updating Objects and Special Collision Shapes

I've started doing the work to add voxels that can allocate and store information for themselves. I've also added support for voxels that have different sorts of collision geometry. Right now we only support Axis-Aligned Bounding Boxes for collision.

I've started doing the work to add voxels that can allocate and store information for themselves. I've also added support for voxels that have different sorts of collision geometry. Right now we only support Axis-Aligned Bounding Boxes for collision. You can also define custom geometry for each voxel that can be either static and placed in chunk buffer, or dynamic and get generated every frame. The lighting still works like before but the new blocks and shapes have not been implemented correctly. There are also still some bugs and weird behavior with the collision system.

Converting 3D Coordinates Into Screen Space

Finally got my Matrix4 * Vec3 function working so that I can use my view and projection matrix to get a screen coordinate for a specific point in 3D space. This will be useful for dialogue boxes and clipping faces in front of the player when in 3rd person.

Some More Debug Readouts

I added some more debug readouts in the top left that I can easily enable and disable. Also changed the clear color to white for the time being so we can see which faces are actually being drawn. I've also gone and sped up the rendering a little bit more. We used to drop to about 24FPS is large open areas. Now we can always stay above 30 since our early out in the loop is when the block we are checking is solid. We get a consistent 60 inside cave-like areas which is good.

New Textures and Simple UI Buttons

I added a different texture pack to start from. Still not my own textures but it'll serve as a base point for a while as we slowly start making our own textures. Also added a way to easily add buttons to the UI. I went with a method proposed by Casey Muratori called "Immediate Mode GUI" (https://www.youtube.com/watch?v=Z1qyvQsjK5Y). It was surprisingly easy to implement.