Skip to content

awesomelemonade/Evolution

Repository files navigation

Evolution

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.

Features

  • 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)
  • MarchingCube normal calculation for terrain coloring/texturing - rastertek
  • Multitexturing for terrain
  • Triplanar texturing for terrain

Ideas

  • 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

Other

  • LWJGL Version: 3.2.3 release (Downloaded 27 Nov 19)
  • Requires Java 16
  • Semantic Versioning 2.0.0: https://semver.org

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages