Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops GLSL:哪一个更理想?使用CPU上的循环或片段着色器中的循环进行乒乓?_Loops_Glsl_Fragment Shader - Fatal编程技术网

Loops GLSL:哪一个更理想?使用CPU上的循环或片段着色器中的循环进行乒乓?

Loops GLSL:哪一个更理想?使用CPU上的循环或片段着色器中的循环进行乒乓?,loops,glsl,fragment-shader,Loops,Glsl,Fragment Shader,我有一个片段着色器,它使用作为统一int变量传入的过程数执行for循环 uniform int numPasses; void main(void) { for (int i=0; i<numPasses; i=i+1) { //do something } } 统一整数; 真空总管(真空){ 对于(int i=0;i,如果您不需要来自相邻线程的数据,看起来不需要处理多个渲染过程并避免绘制调用、同步和光栅化会更快 也就是说,如果你的循环很大,总的计算在时间上变化很

我有一个片段着色器,它使用作为统一int变量传入的过程数执行for循环

uniform int numPasses;
void main(void) {
   for (int i=0; i<numPasses; i=i+1) {
      //do something
   }
}
统一整数;
真空总管(真空){

对于(int i=0;i,如果您不需要来自相邻线程的数据,看起来不需要处理多个渲染过程并避免绘制调用、同步和光栅化会更快

也就是说,如果你的循环很大,总的计算在时间上变化很大,或者你没有足够的片段着色器运行以保持GPU繁忙,这可能会影响性能


GPU很复杂,很容易做出错误的假设。正如您已经在做的那样,测试两者可能是最好的。当您改变过程和片段的数量时,看到差异会很有趣。

考虑到您不需要来自相邻线程的数据,看起来不需要多个渲染过程并避免重复渲染会更快他绘制调用、同步和光栅化

也就是说,如果你的循环很大,总的计算在时间上变化很大,或者你没有足够的片段着色器运行以保持GPU繁忙,这可能会影响性能


GPU很复杂,很容易做出错误的假设。正如您已经在做的那样,测试两者可能是最好的。当您改变过程和片段的数量时,看到差异会很有趣。

这在很大程度上取决于1)什么硬件2)什么是“做某事”。您需要添加更多详细信息以获得有意义的答案。这个问题无法按原样回答。它太过硬件特定,以及用法特定,无法有效回答。请注意,某些ATI GPU不喜欢将“for”循环与统一的“numpasss”变量一起使用。这在很大程度上取决于1)什么硬件2)什么是“do something”。您需要添加更多详细信息以获得有意义的答案。这个问题无法按原样回答。它太过硬件特定,也太过使用特定,无法有效回答。请注意,某些ATI GPU不喜欢将“for”循环与统一的“numpasss”变量一起使用。