gpt4 book ai didi

opengl - 如何确定我的 GLSL 编译器是否优化了以下内容?

转载 作者:行者123 更新时间:2023-12-02 08:06:03 28 4
gpt4 key购买 nike

我确信 GLSL 编译器做了很多优化。我想知道是否有一种方法(也许使用 GL 调试上下文或某些扩展?)来获取给定 GLSL 源字符串的“优化版本”就在将其转换为难以理解的 ASM 或直接 GPU 机器代码。

看下面的例子:

vec3 fx_Noop (const in vec3 vCol) {
return vCol;
}
vec3 fx_Tex2D (const in vec3 vCol) {
return fx_Noop(texture(uni_Tex2D, var_Tex2D).rgb);
}

这里整个 fx_Noop() 定义和对它的所有调用都应该被消除,但更重要的是 fx_Tex2D() 应该像这样重写:

vec3 fx_Tex2D () {
return texture(uni_Tex2D, var_Tex2D).rgb;
}

因为 vec3 vCol 中的 const 没有被使用。

现在我意识到每个 GL 驱动程序和 GLSL 实现的行为都不同。尽管如此,我还是想深入了解驱动程序在汇编/编译/链接之前对给定的 GLSL 源字符串到底做了什么。

我还意识到 GLSL 编码器不应该编写像上面这样的代码,但是在某种实验性代码生成场景中,当可以安全地进行某些权衡时,事情会变得简单很多,知道大多数编译器/实现都将适用无论如何,良好的清洁...

最佳答案

不,如果不分析不同的着色器,就无法确定某种方式。

关于opengl - 如何确定我的 GLSL 编译器是否优化了以下内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14811630/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com