First versions created in 2012 (not uploaded to github). First commit in this version dates back to 2015. This project is a playground for experimenting with various ideas related to computer graphics.
- Event system (old version used Java reflection and @Subscribe annotation)
- Signed Distance Field Font Rendering: Implemented a technique shown in this Valve paper by Chris Green
- OpenGL 3+ Rendering (Vertex Arrays, Vertex Buffers, Shaders, Shader Programs, GLSL, Uniform Variables, etc)
- TimeSync using lwjgl's implementation of sync() to sync frame rates - discussion here
- Multithreading (Terrain Generation w/ "Computable" and ThreadPoolExecutor)
- Cubemap rendering technique for skyboxes
- Terrain generation using perlin noise
- Raytracing with Moller Trumbore Intersection algorithm
- Linear Algebra library (Matrix, Vector)
- Window & Input Handling with GLFW + LWJGL 3
- Animations & Interpolations using Bezier Curves
- Cantor & Szudzik Pairing function implementations (3D variant)
- MurMur hash implementation for noise generation
- Java lambda expressions for convenient binding and unbinding of various OpenGL objects (ShaderProgram, FrameBuffer)
- Particle System using OpenGL's instanced rendering with glDrawElementsInstanced and glVertexAttribDivisor
- Marching Cube - 0fps, paulbourke, Stanford-mdfisher
- Phong (Ambient + Diffuse + Specular) lighting
- Object model loading (ObjLoader) using .obj files for 3D rendering
- Infinite Terrain generation with overhangs and caves - stackoverflow, sourceforge
- Explosions (Carvings) in Marching Cube terrain w/ even sampling
- RAII-styled object pools for memory conservation (ObjectPool, MatrixPool)
- Efficient continuous collision detection and response on marching cube mesh (CollisionPacket)
- Initially based on Kasper Fauerby's paper
- MarchingCube normal calculation for terrain coloring/texturing - rastertek
- Multitexturing for terrain
- Triplanar texturing for terrain
- Remove magic values from creation of vertexArray and vertexBuffer in favor of linking them with ShaderProgram
- Icosphere generation
- Compute shaders for marching cube
- Improvement to Marching Cube/Tetrahedra - caltech paper
- Shadows - Shadow Mapping
- Deferred lighting scheme
- Dual Contouring alternative to marching cube
- Audio with OpenAL
- LWJGL Version: 3.2.3 release (Downloaded 27 Nov 19)
- Requires Java 16
- Semantic Versioning 2.0.0: https://semver.org