OpenGL中的着色器有多复杂?

OpenGL中的着色器有多复杂?,opengl,Opengl,如果我有一个非常复杂的几何体着色器,代码的内存占用是否有限制?着色器不受“复杂性”的限制,而是受运行时的限制。如果着色器执行时间过长,GPU/OS将假定着色器已进入无限循环并终止着色器的执行(可能还有启动它的应用程序)。多长时间取决于GPU,可能还取决于着色器阶段。现代GPU对给定程序中的指令数没有上限吗?@genpfault:可能,但1)无法将GLSL甚至SPIR-V代码映射到“指令数”(展开、内联等完全不受您的控制),因此,如果存在限制,您将无法控制它,并且2)相对于渲染着色器的执行时间限制

如果我有一个非常复杂的几何体着色器,代码的内存占用是否有限制?

着色器不受“复杂性”的限制,而是受运行时的限制。如果着色器执行时间过长,GPU/OS将假定着色器已进入无限循环并终止着色器的执行(可能还有启动它的应用程序)。多长时间取决于GPU,可能还取决于着色器阶段。

现代GPU对给定程序中的指令数没有上限吗?@genpfault:可能,但1)无法将GLSL甚至SPIR-V代码映射到“指令数”(展开、内联等完全不受您的控制),因此,如果存在限制,您将无法控制它,并且2)相对于渲染着色器的执行时间限制,该限制将非常大。@NicolBolas,我发现
switch
control的分支语句数量不能超过8,或者在ntdll.dll中导致错误。