Blightspire graphics contributions

September 2024 - Current day

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.

Blightspire


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.

Blightspire


SSAO and FXAA

  • SSAO is implemented in a standard fashion using hemispheres to check against geometry.
Blightspire SSAO
  • FXAA is implemented as the industry standard in order to fix some of the aliasing problems.
Blightspire FXAA

Volumetric dynamic fog

  • Implemented using screen space ray marching
  • Volume density is computed using 3D noise with a simple hash function in the shader at runtime
  • The effect is fully dynamic using SDF functions to control the density that we sample
    • The player affects the density as he dashes trough it
    • Shooting through the fog will create bullet holes
  • The rendered fog is fully reactive to all of the point lights in the scene
  • Highly optimized running at under 1ms on my laptop (RTX 3060 GPU)
Fog performance

Procedural skybox

  • The dynamic skybox is generated as a screen space effect.
  • 3D perception is calculated using rays projected into the world using the screen's UVs and the camera data
  • Sky is rendered when the rays are higher than 0 on the Y axis and water is rendered when the rays are less than 0 on the Y
  • Using the depth buffer I make sure to render the effect only when depth doesn't exist to avoid rendering on geometry
  • A foggy interpolation is applied near the horizon line to blend between the sky and the water to achieve a seamless transition

Blightspire


Screen door transparency

  • Worked on screen door transparency implementation
  • Used it as enemy death effects

Blightspire


Debug renderer

  • Created a vulkan debug line rendering pipeline.
  • We can push 3D lines positions towards this pipeline to render them.
  • Jolt Physics pushes its debug lines in our debug renderer too, allowing for collision visualizations, ray casts etc.

Blightspire