我有3个频道的着色器代码。基本上我用
texture(inputTexture0,vUV).rgb
我会做一些添加和元素明智的乘法,例如:
vec3 + vec3
dot(vec3,vec3)
如果我不想重新编程1个通道的着色器代码,我想理论上知道与专门针对1个通道的着色器代码相比,浪费了多少处理时间?
答案 0 :(得分:2)
这是高度依赖硬件的。传统上,即使只需要标量操作(即一个组件),许多GPU也总是在向量上运行。聪明的编译器优化仍然可以将多个标量操作打包到一个向量操作中。但从根本上说,在这种类型的架构中,仅使用一个组件不会减少操作次数。
部分基于GPU的用途远远超过传统图形(计算),可以更有效地处理标量操作的架构变得越来越普遍。
因此,如果您实际上只需要一个组件,则使用vec3
值上的操作可以是相同处理时间和处理时间的3倍之间的任何值。如果你测量各种各样的GPU,你可能会发现接近这两个极端的结果。