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

Jon*_*esy 7 graphics shader glsl

我正在寻找能够让我更好地了解着色器在游戏中使用什么样的东西的资源,他们可以做什么,甚至更重要的是,他们不能做什么.我理解图形管道是如何工作的以及所有这些,我在GLSL中制作了一些非常基本的着色器(主要是为了替换固定功能管道功能),但我还没有完全理解哪些东西只能用自定义着色器我可以找到某些技术的例子,特别是照明,但我正在寻找更高级别的使用概述.

与概述相反,某些有趣技术的链接和解释也受到赞赏(但不是概述;)),最好是在GLSL或伪代码中.

eod*_*ash 4

考虑到 DirectX 和 OpenGL 都已转向仅着色器(即无固定功能)系统,“哪些效果只能通过着色器实现”问题的答案可能是“一切”。

\n\n

我认为如果没有可编程着色器(或通过使用非常具体的黑盒 API),一些技术是不可能/不可行的,它们是:

\n\n
    \n
  1. 每像素照明
  2. \n
  3. 阴影贴图。
  4. \n
  5. 动画网格的 GPU 蒙皮(即矩阵调色板蒙皮)。
  6. \n
  7. 当今常见的各种后期处理效果:光晕、SSAO、景深等。
  8. \n
  9. 延迟着色。
  10. \n
  11. 实现任意/“其他”光照模型,例如 Oren\xe2\x80\x93Nayar、Cook\xe2\x80\x93Torrance、Rim-Lighting 等。
  12. \n
\n\n

这个列表可以继续下去,我确信有些人会不同意我的评估,即这些无法通过固定功能功能来实现(通过黑客或各种固定功能扩展)。

\n\n

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

\n\n

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

\n