
狂怒Rage 的GLSL着色器代码下载地址(完了看情况上传我个人现在觉得研究不研究无所谓乃是Rage 代码的一部分代码但是也是可以看到Rage的一些设计原理。着色器代码集中表现了动画混合虚拟纹理的加载反馈对于理解Rage 的megatexture有着很好的帮助。Rage是由id software软件由传奇程序员卡马克使用id tech5技术megatexture技术打造了 新一代的画面能够在 配置 超低 的 机器配置上运行非常好的画面。地址原文 http://renderingpipeline.com/2012/03/inspecting-the-shaders-of-rage/rRage游戏由ID软件开发玩得很开心。但是玩起来更有趣。我已经提出了检查id Tech 5的虚拟纹理或MegaTextures的机制的方法因为它们也被称为。但是如果您真的很好奇这是如何工作的您想要阅读用于解决MegaTexture的着色器文件。由于id Tech 5 Rage的引擎在OpenGL 3.2中实现着色器必须作为源代码上传到驱动程序所以必须有一种方式让你的手 此处翻译可能有误……但是在你想到拦截 OpenGL调用之前担心来源可能会被模糊化让此处翻译可能有误……我告诉你这更简单Rage 有一个 命令行选项 来 转储 着色文件只需将 set r_dumpGeneratedGLSL 1添加到命令行并将文件转储到您的蒸汽 目录 Steam \ steamapps \ common \ rage \ base \ generated \ glsl 。他们显然是从 内部格式 生成的可以同时为GLSLPCCGPS3和HLSLXBOX360写入着色器。这解释了为什么在所有着色器文件中总是具有相同的功能这些功能可以封装纹理访问和一些基本的数学函数 使用这些包装器可以轻松地将代码转换成多个着色器语言。我不会在这里引用任何着色器因为它们是受版权保护的但是如果你拥有这个游戏的PC版本你可以转储自己的设置并看看。不要害怕 848个文件其中一半是CG每个顶点着色器只有一个片段着色器 - 不会混合着色器。最终会有212个着色器程序其中有很多的冗余 ……如果你有两个稍微不同的材料你将得到两个共享99 代码的着色器程序。译者注Rage 的着色器代码文件非常的多分为fvertex和fargment两大部分代码真是复杂没有源代码只有着色器代码也只能猜透 一小部分而已有趣的是大多数 户外环境 基本上只是 纹理查找在具有 颜色空间 转换的 虚拟纹理 和 可选的 雾 所有照明都是 预烘焙 的即使是人的 动态照明 也是非常简单的让我想起了 Half-Life 2的简单光模型。你可能还想看一下 顶点着色器中的动画这是一个很好的阅读方式尽可能地挤压尽可能多的有效载荷变成很少的变量。你想了解更多吗好。获取glintercept 的副本并将提供的OPENGL32.DLL与配置文件一起 放在 您 的RAGE 文件夹 中请参阅提供的文档。因此您可以 转储用于 渲染一帧的所有 OpenGL调用。在早期的Rage版本中您还可以使用此工具在游戏过程中修改所有着色器看看会发生什么。可悲的是这破坏了最近的更新之一 我指的 统一缓冲区因为这似乎只是使用UBO的着色器程序发生并且 glintercept 可能不会在重新链接着色器之前查询统一的缓冲区绑定点所以找不到他们缓冲区了请注意这只是一个猜测我没有时间来验证和修复。但是如果你做了 -或者一段时间没有更新你的steam 你可以在 照明或虚拟纹理代码 等方面“打呵欠”。例如整个环境并不是法线载具 和人有他们但在环境中它是混合的外围没有任何没有法线的物体是白色的另一个在RGB中显示 世界空间法线。请注意游戏中的 人物 有非常详细的法定地图和管道。其中一个垃圾邮件具有正常的地图下一个不是 Console和PC端口上 必须使用 相同资产的微量 内存的标志......有可能操纵个人效果您可以看到他们的视觉影响有多大例如 广告牌如果 我们 停用 它们通过将 阿尔法 设置为0.0场景 看起来更加 “钝”更少的动画 当 云 移动时这更加 明显要看看这是多么 强调 ROP让 我们将 阿尔法设置为1.0并查看所有生成的片段或者将 颜色设置为很好的 红色看看所有的小灌木丛它还需要像这样的操作来 显示这些简单 广告牌 的问题如果 四边形相交则找不到正确的 绘制顺序