Page

Page (Github) is a basic 3D first-person engine I am building in C++/OpenGL without using external libraries. This is largely for the sake of re-familiarizing myself with 3D math…but also because the idea of a 3D fantasy dungeon crawler is just really nice? It feels nice.

I’ve implemented all the basic necessities (creating a rendering context, loading OpenGL functions, Windows keyboard/mouse input), textured rendering for triangles (using shaders, dealing with view/perspective transforms, batched rendering for triangles that use textures within the same texture array), and programmatically creating rectangular cuboid bounding volumes for axis-aligned and non-axis-aligned quads.

I’ve created a Unity script that can export all of the textured quads in a scene to a text file, and added logic to Page that can read this text file in. The script itself isn’t very fancy, but does involve transforming all the quads to world space and then flipping those vertices to a right-handed coordinate space. This is really helpful because it gives me a really rudimentary way of editing levels, plus all quads that use the same texture are batched together, so I don’t have to worry about sorting them before uploading them to the GPU.

As of August 2018, I’ve implemented MSAA and point-light shadows with percent-closest filtering.