ShadowReceiverProgram

Common contract implemented by every shader program that samples the cascaded shadow maps (see ShadowReceiverGlsl for the GLSL these methods drive). Lets applyShadowReceiverUniforms bind cascade depth textures and load the per-frame cascade matrices in one place rather than copy-pasting the recipe into every receiver drawable.

Inheritors

Properties

Link copied to clipboard
abstract var shadowUploadStamp: Long

Frame stamp of the last ShadowState whose uniforms were uploaded into this program. GL uniforms are program-state and persist across draw calls, so once a program has been loaded with the current frame's cascades it doesn't need to be loaded again until the cascades change. Implementations declare this as a plain var field, default -1L.

Functions

Link copied to clipboard
abstract fun loadShadowDisabled()

Disables shadow sampling. Receivers' fragments fall through to a fixed 1.0 visibility.

Link copied to clipboard
abstract fun loadShadowEnabled(state: ShadowState)

Enables shadow sampling and uploads the cascade matrices, split depths, texel sizes, light direction and fade distance from state. Cascade sampler bindings (GL_TEXTURE1..4) are baked in at program init time; the caller is responsible for binding the matching cascade depth textures to those units before invoking this method — applyShadowReceiverUniforms does both in lockstep.