Step_04.glsl差异#
Step_03.glsl至Step_04.glsl差异#
--- /pb1/repo/arcade/doc/tutorials/raycasting/step_03.glsl
+++ /pb1/repo/arcade/doc/tutorials/raycasting/step_04.glsl
@@ -2,6 +2,15 @@
uniform vec2 lightPosition;
// Size of light in pixels
uniform float lightSize;
+
+float terrain(vec2 samplePoint)
+{
+ float samplePointAlpha = texture(iChannel0, samplePoint).a;
+ float sampleStepped = step(0.1, samplePointAlpha);
+ float returnValue = 1.0 - sampleStepped;
+
+ return returnValue;
+}
void mainImage( out vec4 fragColor, in vec2 fragCoord )
{
@@ -14,6 +23,9 @@
// Start our mixing variable at 1.0
float lightAmount = 1.0;
+ float shadowAmount = terrain(normalizedFragCoord);
+ lightAmount *= shadowAmount;
+
// Find out how much light we have based on the distance to our light
lightAmount *= 1.0 - smoothstep(0.0, lightSize, distanceToLight);