Shader Learn

10 片元的其他输出

gl_FragDepth:用平面模拟球体

绿色的“球”其实是一张正对你的平面。片元算出球面的深度写进 gl_FragDepth,方块才会和它正确穿插。

0.51.3

每个像素运行一次拖动数字,或直接改代码

光栅化给每个片元一个深度;写 gl_FragDepth 可以覆盖它。一张平面卡片因此能和方块像真正的球一样穿插。

试一试

  • 关掉「写入 gl_FragDepth」,方块和卡片怎样相交?
  • 把半径调大,球面更鼓
  • 把 N.z 换成 0.0,深度又变回平面