跳到主要内容
← Built-In functions

Built-In functions

Branch Divergence

从结果来看没有区别?

实时渲染 · 纹理 GLSL

第 44 课:Branch Divergence

我的解:从结果来看没有区别?

我的解

uniform float iTime;
uniform sampler2D iChannel0;
uniform sampler2D iChannel1;

varying vec2 vUv;

void main() {
  vec2 uv = vUv;

  vec4 result = texture(iChannel0, uv);
  result.a = 0.0;

  result.a = mix(result.a, 1.0,  uv.x < 0.1 || uv.x > 0.9);
  result.a = mix(result.a, 1.0, uv.y < 0.1 || uv.y > 0.9);
  result.a = mix(result.a, 1.0, texture(iChannel1, uv).r > 0.45);


  gl_FragColor = result;
}

复盘笔记

  • 从结果来看没有区别?
  • 原版用if写的,会引入一个概念叫 Divergence aka wrap split,
  • <2025/09/16>