基于 Mesa GLSL 编译器的 GLSL 优化器。曾用于 Unity 中的移动设备着色器优化。
GLSL 优化器 ==================== > :warning: 截至 2016 年中期,该项目不太可能有重大的发展。在 Unity 中,我们正在转向另一种着色器编译管线,不再使用 glsl-optimizer。因此,我不会对它做出重大的工作。 :warning: 这是一款 C++ 库,它接受 GLSL 着色器,对它们进行一些不依赖 GPU 的优化,并输出 GLSL 或 Metal 源代码。优化包括函数内联、死代码消除、复制传播、常量折叠、常量传播、算术优化等。
显然,许多移动平台在优化着色器方面做得很差;不幸的是,它们还缺乏离线着色器编译器。因此,在离线使用 GLSL 优化器,可以使着色器在这样的平台上运行得更快。请参阅 此博客文章 中的性能数字。即使对于具有良好着色器优化的驱动程序,GLSL 优化器也可以用来删除死代码,使着色器变得更小,并进行离线统一/输入反射。几乎所有实际代码都是 Mesa 3D 的 GLSL 编译器;本库的作用仅仅是输出优化后的 GLSL 或 Metal,并向优化器添加 GLES 类型精度处理。
GLSL 优化器是专为 Unity 而设计的,并从 Unity 3.0 开始内置。GLSL Optimizer 根据 MIT 许可协议进行许可。请参阅 更改日志。
使用方法------
静态库的 Visual Studio 2010 (Windows, x86/x64) 和 Xcode 5+ (Mac, i386) 项目文件分别位于 projects/vs2010/glsl_optimizer.sln 和 projects/xcode5/glsl_optimizer_lib 中。
对于 Linux,您可以使用 cmake。只需在根目录中输入"cmake . && make"。这将构建优化器库和一些可执行二进制文件。库的接口为 src/glsl/glsl_optimizer.h。一般用法如下:
暂无开放 Issues,或尚未同步最近议题。