我正在使用WebGL片段着色器进行光线追踪,计划使用一个动态生成的包含场景中所有物体的片段着色器。当我往场景中添加新物体时,就需要在片段着色器中添加一些代码行,因此它可能会变得非常大。那么片段着色器能达到多大才能正常工作?它是否取决于显卡?
我喜欢在着色器中加入几何图形,也喜欢使用有符号距离场和光线行进等技术来玩耍,但这些技术更像是解谜或娱乐。 它们在性能方面并不理想。例如,这个基于SDF的着色器在我的笔记本电脑上全屏只能以每秒1帧的速度运行,而我的笔记本电脑可以以合理的帧率显示《侠盗猎车手5》中的洛圣都。
如果你想要更好的性能,应该使用更标准的技术,将几何图形放入缓冲区,并进行正向或延迟渲染。
您不希望创建大型片段着色器,因为它们往往会非常快地消耗性能。如果可能的话,您应该在CPU或顶点着色器上进行任何计算,而不是针对每个像素。