Shader Learn

09 Dibujar en varias pasadas

Sombras: dibujar primero un mapa de profundidad desde la luz

Abajo a la izquierda se muestra la profundidad que «ve» la luz. Donde un objeto bloquea la luz, el suelo queda en sombra.

-33
-0.0040.002
Explicación

Arrastra los números subrayados a izquierda y derecha

renderer.shadowMap.enabled = true;light.castShadow = true;light.shadow.bias = ;mesh.castShadow = ;ground.receiveShadow = ;light.position.x = ;// en el shader, aproximadamente:// float lit = myDepth - bias < mapDepth ? 1.0 : 0.0;
Mapa de sombrasPasada 1: ver la escena desde la luz y guardar solo la profundidad. Pasada 2: comparar «mi distancia a la luz» con el mapa.

Sombra = dibujar primero un mapa de profundidad desde la luz y después comprobar si «mi distancia a la luz» es mayor de lo que indica el mapa.

Pruébalo

  • Mira abajo a la izquierda: el mapa de profundidad de la luz
  • Pon bias en 0: aparecen franjas en las superficies (acné de sombras)
  • Desactiva la proyección de sombras