- Lighting components and material data
- Forward+ rendering algorithm
- Initially use simple Blinn-Phong shading
- Debug displays
- Environment maps
- Asset processing
- IBL
- Automatic exposure/iris adaptation/HDR scaling
- PBR shading model
- Organize backend code to be more re-usable.
- Move postprocess pipeline to separate module
- GPU driven rendering
- Raytraced reflections
- Fog
- Water/fluid simulation
- Atmospheric scattering
- Base implementation
- Move transmittance into lookup texture
- Additional UI changes (allow setting sun, possibly multiple suns)
- Vertex pulling instead of vertex attributes
- Put all meshes in a single large VkBuffer
- Terrain system
- Particles
- Raytraced shadows using VK_KHR_ray_query
- Rebuild TLAS every frame
- Rebuild BLAS only when needed
- Support different vertex formats so shading doesn't break on ex. powerplant.
- Improve soft shadow sampling
- Fix final few bugs
- Denoise shadows
- Make
assettool
take a single file as argument - Extend
assettool
with command line options- RGB/sRGB color space
- Make
assettool
work for images that have fewer channels. - Model loading and processing
- json model format linking multiple meshes and materials together
- processing
.obj
into.ent
and necessary.mesh
and.tx
files - add model loading to engine
- add blueprinting ECS
- add copying from blueprint ECS to real ECS.
- model loading creates a new blueprint entity
- loading model into scene copies the blueprint into the real ecs
- Asset hot-reloading
- Remove STB as it doesn't support DDS.
- Move away from assimp and create own loader
- Possibly create smart model splitter that splits meshes by locality to improve raytracing performance.
- Asset browser
- Preview rendering
- Drag and drop for asset handles
- Integrate
assettool
into the main Andromeda project
- Gizmos
- Rendering world grid
- Project system
- Scene serialization
- Object picking in editor
- Integration of Python/Lua or even custom scripting language
- Settings menu
- Performance display
- Timings for each pass
- Color type for components fields to distinguish between vectors and colors
- Correctly handle tangent W, formula is
bitangent = cross(normal, tangent.xyz) * tangent.w
- Maybe assimp already handles this internally?
- Support for materials that have solid color properties instead of textures
- ex. mugs in coffee cart model
- Make
PostProcessingSettings
truly optional by removing stuff like automatic exposure from the pipeline if disabled. - Fix case in renderer with no lights loaded
- Minimize allocations in the engine to further improve performance
- Bind acceleration structure to different set to remove overhead from constantly allocating large descriptor sets.
- Remove scalar block layout and replace with proper padding (each field 16-byte aligned most likely)
- Raytraced rendering backend
- Full raytraced backend should probably not be real-time and only update at certain intervals.
- Possibly integrate Nvidia RT denoiser API