19/09/2023 r2
Sky Rendering
This release adds a new sample DrawSky
, which essentially renders a skybox-style environment. The sky is rendered using a single full-screen triangle.
It has been integrated into exisiting samples:
- SimpleTerrain
- SimpleWater
Assets Optimisation
Assets have been refactored and updated to include resources used by the latest release. Asset versions have been bumped and will be consistent with the release tag in the future, i.e., in the form of rx where x is an integer.
Also, we have changed the resource download referenced link to use GitHub Releases rather than GitHub Issues due to attachment size limit.
- Pack terrain heightmap and normalmap into a single image heightfield.
- This avoids wasting the alpha channel on normalmap, thus reducing memory consumption.
- Use image view component swizzle to allow reading different channels based on different applications, from the same image memory.
- Assets version has been bumped. Large assets are split into different archives.
Misc
- Add contents to README.
- Update license to include time and author info.
- Add more fields to camera data uniform block.
- Allow more customisation to pipeline creation in
PipelineManager
. - Fix a bug in
createImageFromReadResult
where only the first layer is copied to the image. - Use nearest min filter for
SimpleTerrain
sampler. - Avoid using hard-coded depth layout in
SimpleWater
draw function. - Capture all structured bindings of
RendererInterface::DrawInfo
by reference. SimpleWater
no longer preserves framebuffer output at the end.ImageManager
now allows creation of image with custom image creation flag.ImageManager
now allows creation of image view with custom component swizzle.- Fix incorrect perfect forward in
FixedArray::pushBack
.
Code clean-up
- Refactor shader module batch compilation to reduce code redundancy.
- Add
SpanArray
container; currently it doesn't have any use, yet. - Remove unused extension
VK_EXT_vertex_attribute_divisor
.
Optimise command buffer usage
- Create command pool for each in-flight frame to allow batch command buffer reset.
- Add new method to allocate one command buffer to avoid heap allocation.