第 6 课:Soft Particle
实现:回来深度调查
实现
uniform float iTime;
uniform sampler2D iDepthBuffer;
uniform sampler2D iChannel0;
in vec2 vUv;
in vec4 vPosProj;
out vec4 FragColor;
float calculateDepthFade(vec3 pixelCoord) {
float depth = (texture(iDepthBuffer, pixelCoord.xy * 0.5 + 0.5).r);
float z = pixelCoord.z * 0.5 + 0.5;
return clamp((depth - z) * 50.0, 0.0, 1.0);
}
void main() {
float soft = calculateDepthFade(vPosProj.xyz / vPosProj.w);
float frame = mod(floor(iTime / 0.05), 30.0);
float x = mod(frame, 6.0);
float y = 4.0 - mod(floor(frame / 6.0), 5.0);
vec4 texel = texture(iChannel0, (vUv + vec2(x, y)) * vec2(1.0 / 6.0, 0.2));
FragColor = vec4(texel.rgb, texel.a * soft);
}
复盘笔记
- 回来深度调查