gpt4 book ai didi

opengl - 在GLSL中,分支还是从虚拟纹理中查找更好?

转载 作者:行者123 更新时间:2023-12-03 17:32:07 25 4
gpt4 key购买 nike

长话短说,我是否最好这样做:

if (normalMappingEnabled)
{
normal = calculateBumpedNormalFromTexture();
}
else
{
normal = somethingMuchEasierToCalculate();
}


如果normalMappingEnabled是统一的,则calculateBumpedNormalFromTexture需要纹理查找以及法线贴图所需的所有其他数学运算,而somethingMuchEasierToCalculate则不需要纹理查找,只需吐出插值的每个顶点法线即可。

或这个:

normal = calculateBumpedNormalFromTexture();


在这种情况下,如果我不需要法线贴图,则法线纹理为1x1,其中包含一个指向上的单个纹理像素,产生的结果与我刚使用插值的每个顶点法线相同。

在大多数现代硬件上哪个更快?有没有我没有考虑过的其他解决方案(使用2个不同的着色器除外)?

最佳答案

如果所有被调用的片段的条件都相同,则不会发生分支分歧。因此,在这种情况下AFAIK不会造成性能损失。

问题在于某些线程需要执行一个分支,而某些线程需要执行另一个分支。由于不能在一个处理器上并行执行不同的指令,因此两个分支将顺序执行(一些线程将被执行,另一部分将等待,然后另一部分将被执行,而第一部分将等待)。

关于opengl - 在GLSL中,分支还是从虚拟纹理中查找更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22703166/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com