Shader Learn

09 多遍渲染

Shadow:先从光源渲染一张深度图

左下角是灯“看到”的深度。物体挡住光,地面才出现影子。

-33
-0.0040.002
讲解

带下划线的数字可以左右拖动

renderer.shadowMap.enabled = true;light.castShadow = true;light.shadow.bias = ;mesh.castShadow = ;ground.receiveShadow = ;light.position.x = ;// shader 里大致是:// float lit = myDepth - bias < mapDepth ? 1.0 : 0.0;
阴影贴图第一遍:从灯看场景,只记录深度。第二遍:比较“我到灯的距离”和深度图。

阴影 = 先从灯的位置画一张深度图,再比较“我到灯的距离”是否比深度图更远。

试一试

  • 看左下角:灯看到的深度图
  • 把 bias 调到 0,表面出现条纹(阴影痤疮)
  • 关闭投射阴影