Skip to content

snej55/mix_simulator

Repository files navigation

https://hackatime-badge.hackclub.com/U08264TFUKV/mix_simulator

Crazy Mix Simulator

A physics based game made using C++ and OpenGL. Currently a renderer based off of my opengl framework.

screenshot

Sketchfab GLTF model used: https://sketchfab.com/3d-models/spartan-armour-mkv-halo-reach-57070b2fd9ff472c8988e76d8c5cbe66

Building:

git clone --depth 1 https://github.com/snej55/mix_simulator.git
cd mix_simulator

# build it
cmake -S . -B build
cmake --build build/ -j$(nproc)

# to run
cd build
./main

Features:

  • Physically based rendering
  • IBL (Image Based Lighting)
  • Skeletal animation
  • GLTF Model loading
  • Hybrid renderer (deferred for opaque meshes, forward for transparent)
  • HDR (Khronos PBR Neutral Tonemapping)
  • Bloom (PBR)
  • SSAO (Screen Space Ambient Occlusion)
  • Anti-aliasing (FXAA)
  • Frustum Culling (AABB bounding volumes)
  • Freetype2 font rendering
  • Physics engine (Jolt)
  • Cascading Shadow Maps

screenshot2

TODO:

  • Finish IBL
  • Skeletal animation
  • PBR Textures
  • PBR Material loading
  • Deferred rendering
  • Mesh sorting (render opaque meshes deferred and transparent/translucent using forward)
  • Duplicate material checks? Batch render meshes using material index vertex data?
  • Animate transparent meshes
  • Fog
  • Implement static entities
  • Fix transparent mesh culling
  • SSAO
  • Add FXAA anti-aliasing
  • Global materials
  • JSON Scene loading
  • Frustum culling
  • Space partitioning
  • Bounding volume generation
  • Main game class
  • Level editor
  • Add lights to level editor
  • Rag dolls?
  • Fix arena deletion order (child -> parent -> root)
  • Add Jolt Physics
  • Point lights
  • Add shader compilation test
  • Add lens dirt
  • Find lens dirt texture
  • Area lights
  • Optimize static shader uniforms
  • Add player character + controls/kinematic body
  • Create player models
  • Implement freetype2 font rendering
  • Screen coordinates shape rendering
  • Add UI framebuffer
  • Add cascading shadow maps
  • Smooth cascade transition
  • Add credits
  • Make camera follow player
  • Add alpha to shape rendering
  • Add settings
  • Add in game font
  • Find new HDRI
  • Make some music
  • Add physics sfx using jolt contact listeners
  • Add sliding sfx
  • Generate flow field quadtree
  • Paralax mapping with tesselation shader?
  • Add flow field pathfinding algorithm
    • Add quad tree navigation functions
    • Add wave propagation
    • Dijkstra algorithm?
    • Improve quadtree generation (cost/penetration depth)
    • Optimize tile sizes
  • Make enemies fall apart
    • Precalculate fracture in blender
    • Load shards
    • Instance render shards
    • Pregenerate convex hull shapes (jolt)
  • Clean up data folder

Debugging todo:

  • Polish shadows
  • Fix camera jitter when falling

About

A mixing simulator made with C++ and OpenGL

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors