Shadows
- Shadows are implemented in the classic shadowmap way using poisson sampling for noisy style.
- Static and dynamic geometry have their own separate shadowmap in order to improve performance.
Stylized art
- To compensate for the lack of artists in our team I implemented two effects aiming at solving our asset-like look of our game.
- Pixelization:
- Using the depth buffer in order to determine different pixel levels across different distances, hence compensating for detail loss that other more common pixelization implementations may have.
- Quantized color palette:
- Snapping the colors towards the closest ones in a color palette, adding a bit of dither and mixing between the original and the new color using the exposed settings.
SSAO and FXAA
- SSAO is implemented in a standard fashion using hemispheres to check against geometry.
- FXAA is implemented as the industry standard in order to fix some of the aliasing problems.

Procedural sky
- The dynamic sky is creating as a screen space effect using rays from the camera and fractal brownian noise to sample the clouds.
- Implementation based on: https://www.shadertoy.com/view/wslyWs
Screen door transparency
- Worked on screen door transparency implementation
- Used it as enemy death effects
Debug renderer
- Created a vulkan debug line rendering pipeline.
- We can push 3D lines positions towards this pipeline to render them.
- Jolt Physics pushes it’s debug lines in our debug renderer too, allowing for collision visualizations, ray casts etc.