Graphics 概述/展示着色器技术/游戏用途

Graphics 概述/展示着色器技术/游戏用途,graphics,glsl,shader,Graphics,Glsl,Shader,我正在寻找可以让我更好地了解着色器在游戏中用于什么样的用途的资源,它们可以做什么,也许更重要的是,它们不能做什么。我了解图形管道是如何工作的,我在GLSL中制作了一些非常基本的着色器(主要是为了取代固定的函数管道功能),但我还不完全了解哪些事情只能通过自定义着色器实现,哪些事情可以更有效地完成,我已经找到了一些特定技术的例子,最显著的是照明,但我正在寻找它们使用的更高层次的概述 与概述相反,某些有趣技术的链接和解释也值得欣赏(但不如概述;),首选GLSL或伪代码。考虑到DirectX和OpenG

我正在寻找可以让我更好地了解着色器在游戏中用于什么样的用途的资源,它们可以做什么,也许更重要的是,它们不能做什么。我了解图形管道是如何工作的,我在GLSL中制作了一些非常基本的着色器(主要是为了取代固定的函数管道功能),但我还不完全了解哪些事情只能通过自定义着色器实现,哪些事情可以更有效地完成,我已经找到了一些特定技术的例子,最显著的是照明,但我正在寻找它们使用的更高层次的概述


与概述相反,某些有趣技术的链接和解释也值得欣赏(但不如概述;),首选GLSL或伪代码。

考虑到DirectX和OpenGL都已转向只使用着色器(即没有固定功能)的系统,这是您的问题的答案“哪种效果只有着色器才可能”的问题可能是“一切”

但是,我认为,如果没有可编程着色器(或使用非常特定的黑盒API),一些技术是不可能/不可行的:

  • 每像素照明
  • 阴影贴图
  • 用于动画网格的GPU蒙皮(即矩阵调色板蒙皮)
  • 现在常见的各种后期处理效果:bloom、SSAO、景深等
  • 延迟着色
  • 实施任意/其他照明模型,如Oren–Nayar、Cook–Torrance、Rim照明等
  • 这个列表还可以继续下去,我相信有些人会不同意我的评估,即这些功能无法通过固定功能(通过黑客或各种固定功能扩展)实现

    归根结底,在可编程着色器出现之前,供应商和it必须在硬件/驱动程序中实现给定的效果,并且必须是可以通过API合理表达的效果。现在,您可以有效地执行所需的任何用户定义代码(在不同着色器阶段的限制和硬件的其他限制范围内),因此您可以灵活地极大地自定义渲染管道,并根据需要发明新技术


    看看首批几本GPU Gems书籍(可以在Nvidia的网站上免费阅读)了解可编程硬件可用后出现的技术类型。

    这个问题可能更适合我,我认为这是一个非常有效的问题。我也一直在思考这个问题,这就是我在这里发现你的问题的原因。我对拥有完全可编程的e管道。无法对附近的碎片进行采样是一件令人惊讶的事情。但我认为在纹理组合方面有很多可能性(固定管道中的噩梦)。我认为GLSL并不是一种即时的酷效配方(有些人认为这听起来很酷),但肯定会有它的用途。虽然我同意这个答案,但这里有一点注意:阴影贴图实际上可以与固定/函数GL(不知道D3D)一起使用,并且还有一个矩阵调色板蒙皮的扩展(我肯定D3D也有)。但它们肯定没有着色器那么灵活(并且蒙皮扩展未得到广泛支持)。