Releases: KTStephano/StratusGFX
v0.10.3
- Frustum culling is now done for all views to improve performance -> camera, cascaded shadow maps, and each direction separately for point lights
- Better check when entities are removed to determine if a light needs to be invalidated and updated
v0.10.2
- GI occlusion minimum weight can now be set by application. This has the effect of brightening indirect shadowed regions nearby VPLs.
- GI now updates areas that are closest to the camera first when possible.
- GI now supports improved (but still very low resolution) indirect specular reflections.
- Denoising quality has been increased slightly which also caused a slight reduction in performance.
- Fixes some bugs with denoising disocclusion test.
v0.10.1
- Adds Async<void> for parallel tasks that don't need to return anything
- Adds StackAllocator and StackBasedPoolAllocator -> StackBasedPoolAllocator is designed to be used with C++ standard containers
- Refactors renderer frontend/backend to allocate short-lived per-frame objects from a 128 mb (size in bytes configurable by the application) stack of scratch memory that is cleared at the end of each frame
- Splits build into Standard Build and Development Build options each with their own instructions in the README - Standard Build is for quickly compiling everything in order to run the examples whereas Development Build is for anyone who wants to modify the source code
v0.10.0
In this release the following changes were made:
- Global illumination was overhauled to enable higher quality indirect lighting and support for dynamic time of day
- Skybox colors can be captured by VPLs as part of global illumination
- Image denoising was added based on inspiration from ReSTIR and SVGF
- Temporal Anti-Aliasing (TAA) was added: default mode is to run FXAA+TAA together, but one or the other can be run by themselves or both disabled
- Emission mapping was added
- Better LOD generation and selection was added
- Cornell Box and Junk Shop examples were added
- Various engine-level changes including TypedGpuBuffer and better way of generating and updating draw command buffers
- Camera can perform full mouse look instead of being locked to only Y-axis rotation
- More configuration options including ability to specify CSM resolution, bloom on/off, taa on/off, fxaa on/off and much more
- Additional support for Debian and Arch Linux distros has been added (thanks to @deccer who tested it and contributed some changes along with a few other people too!)
- Improved async loading/streaming of model and texture data
- All point shadow maps have been moved to large cubemap atlases/arrays with lights being added or evicted as needed
v0.9.4
Includes everything from 0.9.3 with the following additions:
- Engine no longer crashes when a model fails to load
- Engine performance no longer crashes when textures fail to load
- License has been set to MPL 2.0 and first public (pre-release) is done!
v0.9.3
Note: For versions 0.9.4 downto 0.1 the license has been set to MPL 2.0 now that the repo is public. License is attached.
Same as v0.9.2 with the following additions:
- GBuffer components were almost all reduced in precision to save on space and memory bandwidth
- Position texture in GBuffer was removed in favor of reconstructing world space position from depth
- Fixes bug where tiles along the top of the screen weren't being processed for GI
v0.9.2
Note: For versions 0.9.4 downto 0.1 the license has been set to MPL 2.0 now that the repo is public. License is attached.
Same as v0.9.1 with the following additions:
- Slight improvement to quality of GI when using VPLs
- Better parallelizes loading of models so that loading times could be majorly reduced from what they were
v0.9.1
v0.9.0
Note: For versions 0.9.4 downto 0.1 the license has been set to MPL 2.0 now that the repo is public. License is attached.
Everything from the previous release plus:
- VPL global illumination maintains better performance by reducing memory bandwidth and using 4x4 pixel tiles
- Switch to new PBR model described in the Google Filament paper (uses Disney BRDF)
- Rewrite of the old deferred lighting + shadowing to use bindless textures and #ifdefs instead of if-statements to improve performance
- Added new example scenes which were part of the YouTube tech showcase => Intel Sponza, San Miguel 2.0, Bistro, Bathroom, Warehouse
- Added fog rendering
- Added basic LOD generation and selection
- Added GPU view frustum culling based on AABBs
- Added FXAA
- Improves frame pacing (still probably more work to do)
- Adds basic punch-through transparency
- Better scheduling of point light and virtual point light updates so none are ever neglected
- Removes old resources/ folder (create Resources/ symlink to Dropbox when cloning fresh)
- Moves shaders into Source/ folder
v0.8.0
Note: For versions 0.9.4 downto 0.1 the license has been set to MPL 2.0 now that the repo is public. License is attached.
Everything from the previous release plus:
- Addition of both thread safe and thread unsafe pool allocators
- Window and Input handling have been moved out of the renderer into their own classes
- GL context initialization and other core GPU initialization has been moved to new GraphicsDriver class
- Switch to Entity-Component-System style of structure for majority of entities (pool allocator used for components)
- Refactoring of example code and renderer to make use of entities and entity processes
- Addition of GpuMeshAllocator which allows for all mesh and index data to be merged into two global GPU buffers
- Switch to Programmable Vertex Pulling in shaders so that mesh data can be pulled from the global GPU buffer manually
- Switch to bindless texturing for VPL shadow maps and forward rendered material system
- Addition of GpuCommandBuffer which allows for renderer frontend to create draw calls (opens up possibility of multithreaded draw call creation in the future)
- Renderer refactored to make use of merged meshes, bindless textures and GpuCommandBuffer to merge majority of draw calls into just a handful of glMultiDrawElementsIndirect calls (this greatly reduces overhead of interfacing with API during each frame)
- Virtual Point Light Global Illumination performance has been improved by enforcing no more than 16 VPLs per pixel chosen based on world distance between light and surface pixel represents
- Virtual Point Lights only compute diffuse lighting (no longer specular) and improvements have been made to prevent excessive brightening of surfaces closes to VPL