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;
阴影贴图第一遍:从灯看场景,只记录深度。第二遍:比较“我到灯的距离”和深度图。JS 这一侧
阴影 = 先从灯的位置画一张深度图,再比较“我到灯的距离”是否比深度图更远。
试一试
- 看左下角:灯看到的深度图
- 把 bias 调到 0,表面出现条纹(阴影痤疮)
- 关闭投射阴影