我打算在OpenGL中使用它来进行alpha截断.GLSL中的等价物是否只是
if (gl_FragColor.a < cutoff)
{
discard;
}
Run Code Online (Sandbox Code Playgroud)
还是有一些更有效的等价物?
Nic*_*las 12
OpenGL没有这样的功能.而且它不需要一个.
还是有一些更有效的等价物?
该问题假定此条件语句的效率低于调用HLSL的clip函数.它很有可能更有效(尽管如此,它是一个完全的微优化).clip检查该值是否小于0,如果是,则丢弃该片段.但是你没有测试零; 你正在测试cutoff,可能不是0.所以,你必须这样调用clip(使用GLSL风格):clip(gl_FragColor.a - cutoff)
如果硬件没有直接支持剪辑,那么您的调用等同于if(gl_FragColor.a - cutoff < 0) discard;.那是数学运算和条件检验.这比条件测试要慢.如果不是......驱动程序几乎肯定会重新排列代码以进行条件测试.
条件会比慢的唯一方法clip是,如果硬件有具体的支持clip 和驱动程序是太愚蠢转if(gl_FragColor.a < cutoff) discard;成clip(gl_FragColor.a - cutoff).如果驱动程序是那么愚蠢,如果它缺乏基本的针孔优化,那么你遇到的问题就比这更大.
简而言之:不要担心.
| 归档时间: |
|
| 查看次数: |
9171 次 |
| 最近记录: |