中EN

Chapter 10. Parallel-Split Shadow Maps on Programmable GPUs — Zhang, Sun, Nyman

Markdown2 KB 原始文件

Summary of full chapter read

PSSM splits the view frustum with planes parallel to the view plane; each split gets an independent shadow map. Same idea as Engel's CSM / 3DMark cascaded shadows (Lloyd, Zhang, Tadamura lineage).

Aliasing decomposition

dp/ds ≈ perspective aliasing (dz/(z ds)) × projection aliasing (cos φ / cos θ). Perspective aliasing is scene-independent and addressable by warping/splitting; projection aliasing needs scene analysis.

Practical split scheme

Blend logarithmic (theoretically even perspective aliasing) and uniform splits: C_i = λ C_log_i + (1−λ) C_uni_i, default λ=0.5. Pure log oversamples near (tiny first splits); pure uniform undersamples near. Preprocess: tighten camera near/far to visible objects.

Light matrices

Scene-independent: AABB of split in light clip space, near z left at 0 so casters between light near and split still cast; crop matrix zooms light frustum. Scene-dependent: bound casters for near/xy and receivers for far; only receivers need depth compare at synthesize time.

Implementations

  1. Multipass: reuse one SM texture; render front-to-back with viewport depth range remapped so depth test stays valid.
  2. DX9: multiple SM textures; VS passes all light texcoords; PS picks split by view-space z.
  3. DX10: texture arrays + GS cloning or instancing to single-submit casters into all needed array slices; SampleCmpLevelZero with TextureCube for ≤6 splits PCF.

Optimizations

PCF/VSM filtering; pack into atlas; warp within splits; vary resolution per split; linear depth for point lights.

引用这一章的笔记

输入关键词开始搜索

滚轮或双指缩放 · 拖动平移 · 双击放大 / 还原