I wrote a giant list on what I want to implement into this framework to make it full. I’m pretty sure I’ll be done in about 150-200 hours, which I have about 40 days to make before the end of this thing. That is 3.75 - 5 hours of coding in a day. Anyway, here’s the list:
TODO FEATURES:
-
lighting
- gpu scene data uniform buffer
- ambient light
- directional light
- point lights
- tangent space normal mapping
- tangent generation in gltf loading
- dynamic light count
- proper api for handling lights
-
shadow mapping
- depth-only pipeline
- shadow map image
- light space matrix
- shadow pass
- shadow sampling in the main fragment shader
- shadow bias
- PCF filtering
-
material system
- material struct (albedo map, normal map, roughness map, emissive map, scalar tint and roughness and metallic factors)
- material descriptor layout
- default fallback textures
- gltf material loading
- draw_mesh api update
- emissive support in the shader
- creating and destroying materials for user-made materials
-
mipmaps and proper sample management
- mipmap generation on upload
- mip count calculation
- sampler cache (so samplers are never duplicated)
-
instanced rendering
- per-instance storage buffer
- draw_mesh_instanced api
- write the shader for it (gl_InstanceIndex)
- move to indirect drawing so the instance count can eventually come from gpu-side data
-
skybox
- cubemap loading
- skybox pipeline
- skybox shader
- set_skybox api
-
frustrum culling
- bounding sphere per mesh (compute in loading by finding the disctance from the centroid across all vectires)
- frustrum plane extraction (gribb-hartmann)
- cull loop
- stats readout
-
post processing stack
- fullscreen traingle pipeline
- HDR tonemapping
- guassian blur api
- box blur api
- bloom
- vignette
-
2D rendering
- quad mesh
- 2D pipeline
- surface class
- default surface
- draw_surface
- draw_rect
- font atlas rendering
-
MSAA
- multisample draw image
- resolve attachment
- configurable sample count
Comments 0
No comments yet. Be the first!
Sign in to join the conversation.