2008-08-09 68 views
18

我想开始使用微软的XNA做一些游戏开发。其中一部分是Shader开发,但我不知道如何开始。我知道nVidia's FX Composer是开发着色器的好工具,但是我没有找到有关如何真正开始使用的更多有用和更新的内容。开始着色器开发

你会推荐哪些教程?

回答

31

发展(这显然使用DirectX)要求的HLSL或着色器组装知识。我建议在潜入后者之前先熟悉前者。

编写任何着色器之前,这是一个好主意,让着色器管线的充分理解,并试图让你的头脑周围使用可编程着色器时,什么是可能的。当你熟悉像素的生命时(从源数据一直到屏幕),理解着色器的例子变得容易得多。

下一页做出尝试写自己的HLSL它做什么用的Fixed T&L管道做,只是为了让你的手脏。这相当于顶点/像素着色器世界中的“hello world”程序。当你能够做到这一点,并且你明白你写的是什么时,你已经准备好去尝试更有趣的东西。

正如你可能想模拟基本在一个着色器的sepcular lighting从单一光源下一个步骤。然后,您可以沿着轨道适应多个灯光。玩的颜色和灯光的运动。这将有助于熟悉着色器常量的使用。

当你有几个基本的着色器放在一起,你应该尝试让这个游戏/引擎使用不同对象的多个/不同的着色器。开始添加一些其他位,如基本bumpnormal maps

当你到了这个阶段,世界尽在掌握。你可以开始钻研一些时髦effectcs,而且比它最初的目的,甚至考虑使用GPU进行more

对于那些稍微先进的人来说,有几本好书可以免费在线获得,这些书有一些来自Nvidia herehere的很好的信息。

不要忘记,有一个名为ShaderX一个优秀的系列丛书涵盖一些真棒着色器的东西。有1,​​,3,4,56已经打印,7即将推出。

好运。如果你得到一些着色器去,我很乐意看到他们:)

+0

感谢您的详细回复。可以肯定的是,一旦我找到了一些东西,我会添加一个链接:)虽然可能需要几个月。 – 2008-11-28 09:05:15

1

SAMS的XNA Unleashed乍得卡特是XNA一个很好的起点,并在开始之前假定的游戏开发实践或硬数学知之甚少。它有两章关于基础和高级着色器的章节。作为一个旁注,请注意Google上的WPF Shader教程,它现在使用相同的技术来允许WPF应用程序和教程中的客户着色器,因为我相信它们与XNA基本兼容。在XNA的着色器

5

我只是想重申GPU精粹书是多么伟大 - 任何严重的图形开发一个真正梦幻般的资源。

OJ基本上总结了一个非常好的学习过程,我只是补充说,在几何数学(向量/矩阵至少)方面有一个良好的基础不能低估 - 但它并不像人们有时做的那么难出。学习一个点积,交叉乘积,法向量和矩阵乘法是和做是一个好的第一步:)。试着去了解究竟是什么发生的事情之间的世界/视点/投影剪辑/屏幕空间,透视鸿沟是什么,等等。

当我开始学习的,一个很好的锻炼是真正实现整个牛逼&大号管道在软件中,完成裁剪/剔除等。这是一个漫长的过程,可能并不值得,因为我确信你只是想潜入有趣的东西,但对正在发生的事情有一个正确的理解是非常有用的,并且会证明当你总是遇到更加阴险和难以诊断的错误时,这是​​值得的。

尽量不要使用FX Composer这样的工具,这对于原型设计非常有用,但从长远来看,在基础知识方面有坚实的基础是非常有价值的。

1

我还没有使用XNA或DirectX。但是,为了了解Cg着色器编程的基础知识,Cg Tutorial是我找到的最好的书。

1

你还应该看看RenderMonkey。这是一个很好的工具。就书本而言,请查看Riemer Grootjans的XNA 2.0游戏编程食谱......很棒的书。

2

我会加入对OJ的赞扬 - 真的是一个很好的答案。 不过,一旦你有,你可以通过下载以下两个伟大的工具之一学到很多东西,快速的基本认识:

一旦你这样做,去他们的项目库,并开始浏览示例,从基本阴影开始,移动到阴影,法线贴图,材质,效果以及您感兴趣的所有内容。 接受一个项目,根据你设定的目标开始改变算法,看看如何得到它。 你会发现很多例子都非常先进,他们会打开你的视野。

玩得开心

2

虽然有很多很好的建议已经被赋予,如果你有一个艰苦的工作,让你的头脑围绕涉及的步骤,Mental Mill提供构建着色器的可视化的方式(艺术家版是与Fx Composer一起免费捆绑 - 本身也免费!)。

虽然你最好直接长期学习HLSL代码,但Mental Mill可以为你生成这些Fx文件(这样你可以查看变化)。请注意,与所有代码生成器一样,一旦您理解HLSL,它会比您可能做的更冗长一点!

从一种方法到另一种方法的效果的视觉进程是非常令人印象深刻的!

1

关于视觉着色编辑器的一个简单的想法。 这类编辑器是一件非常有趣的事情,但我真的会推荐坚持使用基于文本的HLSL(RM和FXC都可以完成这项工作)。我是一名游戏开发人员,并且已经构建了一些着色器系统(例如Battlefield 2和Farcry 2中的一个),并且说实话,已经发现HLSL比迄今为止的任何图形着色器网络更有价值。

有些事情喜欢跟随执行流程,调试着色器或能够快速迭代测试用例,这些测试用例给你的洞察力几乎不可能通过可视化工具。

我已经自己使用了可视化着色器构建器,而且我喜欢它们,有一天,当着色不像今天那样对性能至关重要时,它们可能是正确的工具。

..though我的猜测是,我们将看到延迟光照,可能完整的软件渲染在那一天到来之前;)

3

一个开始使用着色器的最佳途径就是阅读入门3D游戏编程采用Frank Luna的DirectX 9.0ca Shader Approach。笔者首先介绍DirectX和HLSL,然后逐步揭示着色器的强大功能。他从非常简单的着色器开始,但在本书的最后,您知道如何创建光照,阴影,粒子系统等等。

OJ建议您阅读ShaderX系列,但这些东西不适合初学者,所以在您开始第一步时不会对您有所帮助。

我也发布了一篇文章here关于最好的书籍,可以让你开始游戏开发。

+0

这看起来像一本非常有趣的书。是的,我查看了ShaderX和推荐的GPU Gems,但它们似乎确实是硬核。有点像阅读Bruce Schneier时不知道密码学。我想我会订购Luna的书。 – 2008-11-28 09:04:42