我想开始使用微软的XNA进行一些游戏开发.部分原因是Shader开发,但我不知道如何开始.我知道nVidia的FX Composer是开发着色器的一个很好的工具,但我没有找到有关如何实际入门的有用和更新的内容.
你会推荐什么教程?
OJ.*_*OJ. 31
在XNA中开发着色器(显然使用DirectX)需要了解HLSL或着色器组件.我建议在潜入后者之前熟悉前者.
在编写任何着色器之前,最好深入了解着色器管道,并尝试了解使用可编程着色器时的可能性.当您熟悉像素的生命周期(从源数据一直到屏幕)时,理解着色器的示例变得更加容易.
接下来尝试编写自己的HLSL,它执行固定T&L管道所做的事情,只是为了让你自己动手.这相当于顶点/像素着色器世界中的"hello world"程序.当你能够做到这一点并且你理解你所写的内容时,你就可以开始学习更有趣的东西了.
作为下一步,您可能希望从单个光源模拟其中一个着色器中的基本黄色光照.然后,您可以将其调整到轨道上以使用多个灯光.玩色彩和灯光运动.这将有助于熟悉着色器常量的使用.
当你有几个基本着色器时,你应该尝试使它,以便你的游戏/引擎在不同的对象上使用多个/不同的着色器.开始添加一些其他位,如基本凹凸或法线贴图.
当你到达这个阶段时,世界就是你的牡蛎.你可以开始潜入一些时髦的效果,甚至考虑使用GPU 比原来的更多.
对于那些谁更先进一点,有一对夫妇的好书是网上免费提供其来自Nvidia有一些伟大的信息在这里和这里.
不要忘记,有一系列名为ShaderX的优秀书籍,涵盖了一些很棒的着色器.有1,2,3,4,5和6已经在打印和7即将推出.
祝好运.如果你有一些着色器,我很想看到它们:)
我想重申一下GPU Gems的书籍有多棒 - 对于任何严肃的图形开发来说都是一个非常棒的资源.
OJ基本上总结了一个非常好的学习过程,我只想补充说,在几何数学(矢量/矩阵作为最低限度)方面有一个很好的基础是不容小觑的 - 但它并不像人们有时做出的那么难.学习点积,交叉乘积,法向量和矩阵乘法是什么和做的是一个很好的第一步:).试着准确理解世界/视图/投影 - 剪辑/屏幕空间之间发生的事情,视角差异等等.
当我开始学习时,一个很好的练习是用软件实际完成整个T&L管道,完成剪切/剔除等.这是一个漫长的过程,可能看起来不值得,因为我确定你想要深入了解这个乐趣事情,但正确理解正在发生的事情是非常有用的,并且当你总是遇到更加阴险和难以诊断的错误时,这将证明是值得的.
尽量不要像FX Composer这样的工具进行边缘化,它们对于原型设计非常有用,但从长远来看,在基础知识方面有一个坚实的基础是非常值得的.