跳到主要内容
← Advanced Rendering

Advanced Rendering

Soft Particle

回来深度调查

实时渲染 · 网格 GLSL

第 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);
}

复盘笔记

  • 回来深度调查