shader语言中为什么if else慢

shader语言中为什么if else慢,第1张

if 和 else的分支 具体和移动GPU的硬件有关 : 更详细理解
(一)
if 和 else 条件判断用来实现代码按条件跳转执行:
(1)正常的if else 语句使用 bool 来进行判定 *** 作,该bool 值可以通过使用逻辑和比较运算符来生成。。
(2)但是 : 向量运算的bool 结果不能直接使用,因为这些运算结果是一个向量值,而不是bool值
(二)
基于“ 执行代码后才产生的值” 去进行判定的条件分支,当编译成汇编指令后,用两种方法中的一种来表达:
(1)预侦测
编译器会对 if-else 条件表达式两部分都执行并求值
然后执行一个比较指令,去选择使用 if-else 条件表达式的if部分 或者是 else 部分 的结果
(2)动态分支(高端GPU可以生成)
而动态分支代码是由着色器程序中的执行流程去明确的控制
所以它可以用来跳过一些不需要计算和存储器访问的 *** 作
优势: 当 if - else 内的代码段比较复杂时,使用动态分支 ,效果大大的好!!!

以上就是关于shader语言中为什么if else慢全部的内容,包括:shader语言中为什么if else慢、、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9757504.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存