我正在寻找能够让我更好地了解着色器在游戏中使用什么样的东西的资源,他们可以做什么,甚至更重要的是,他们不能做什么。我理解图形管道是如何工作的以及所有这些,我在GLSL中制作了一些非常基本的着色器(主要是为了替换固定功能管道功能),但我还没有完全理解哪些东西只能用自定义着色器我可以找到某些技术的例子,特别是照明,但我正在寻找更高层次的使用概述。
与概述相反,某些有趣技术的链接和解释也受到赞赏(但不是概述;)),最好是GLSL或伪代码。
答案 0 :(得分:4)
考虑到DirectX和OpenGL都朝向仅着色器(即没有固定功能)系统,你的“只有着色器才能实现哪些效果”的答案可能是“一切”。
我认为,如果没有可编程着色器(或使用非常特殊的黑盒API),我认为不可行/可行的一些技术是:
并且列表可以继续,我相信有些人会不同意我的评估,即使用固定功能(通过黑客或各种固定功能扩展)无法实现这些功能。
可归结为,在可编程着色器之前,供应商必须在硬件/驱动程序中实现给定的效果,并且必须通过API合理地表达。现在,您可以有效地执行任何您想要的用户定义代码(在不同着色器阶段的约束和硬件的其他限制之内),这样您就可以灵活地自定义渲染管道并根据需要发明新技术。
看看第一批GPU Gems书籍(可以在Nvidia的网站上免费阅读),以了解一旦可编程硬件可用时出现的技术类型。