Skip to content

Latest commit

 

History

History

ExponentialVarianceShadow

README.md

Exponential Variance Shadow Mapping (EVSM)

Code Name: ExponentialVarianceShadow

Description

In this example, the shadows in the scene are created using Exponential Variance Shadow Mapping (EVSM) with using box filtering that can be adjusted from user.

Output

Controls

Input Action
W/A/S/D Move the camera
Mouse Look around with the camera
Esc Close the window
0 Apply no filter
1 Apply 3x3 filter
2 Apply 5x5 filter
3 Apply 7x7 filter
4 Apply 9x9 filter

Application Parameters

Settings

Parameter / Key Type Usage in Code Description Default Value
AppSettings.ClearColor VkClearColorValue AppSettings::ClearColor Background color of the screen
AppSettings.MouseSensitivity float AppSettings::MouseSensitivity Mouse sensitivity value
AppSettings.CameraSpeed float AppSettings::CameraSpeed Speed of the camera
AppSettings.EsmExponent float AppSettings::EsmExponent ESM coefficient

Learning Objectives

  • Implementing Exponential Variance Shadow Mapping (EVSM) technique in Vulkan
  • Applying box filtering kernel to Exponential Variance Shadow Mapping (EVSM)

Shader Status

Shader Type Status Notes
GLSL ✅
HLSL ❌ Will be implemented.
Slang ❌ Will be implemented.

Theoretical Background

None

Extensions Used

Instance

Window system-dependent extensions:

  • VK_KHR_surface
  • VK_KHR_win32_surface (Windows)

Device

  • VK_KHR_swapchain