simvx.graphics.renderer.shadow_pass¶
Cascaded Shadow Map (CSM) rendering pass.
Module Contents¶
Classes¶
Renders depth from directional light’s POV into a cascaded shadow map atlas. |
Data¶
API¶
- simvx.graphics.renderer.shadow_pass.__all__¶
[‘ShadowPass’]
- simvx.graphics.renderer.shadow_pass.log¶
‘getLogger(…)’
- simvx.graphics.renderer.shadow_pass.MAX_CASCADE_COUNT¶
None
- simvx.graphics.renderer.shadow_pass.DEFAULT_CASCADE_COUNT¶
None
- simvx.graphics.renderer.shadow_pass.SHADOW_MAP_SIZE¶
2048
- simvx.graphics.renderer.shadow_pass.DEPTH_FORMAT¶
None
- simvx.graphics.renderer.shadow_pass.CASCADE_COUNT¶
None
- class simvx.graphics.renderer.shadow_pass.ShadowPass(engine: Any)[source]¶
Renders depth from directional light’s POV into a cascaded shadow map atlas.
Atlas layout:
MAX_CASCADE_COUNTimages side-by-side horizontally. Total size:SHADOW_MAP_SIZE * MAX_CASCADE_COUNT × SHADOW_MAP_SIZE. The fragment shader’s loop iteratesactive_cascade_countslices so 1–4 cascades can be selected at runtime viaWorldEnvironment.shadow_cascade_countwithout recompiling shaders.Initialization
- compute_cascades(view: numpy.ndarray, proj: numpy.ndarray, light_dir: numpy.ndarray, near: float = 0.0, far: float = 0.0) None[source]¶
Compute cascade split distances and light-space VP matrices.
Delegates to
shadow_math.compute_cascadesforself.cascade_countslices and transposes to GLSL column-major for the SSBO upload. Slots beyondself.cascade_countare zeroed so the shader’sactive_cascade_countclamp leaves them untouched.