Answers:
注意到这两个,几乎每次我编写通用着色器时,我都会始终回到下面的文章:
如果您追求的是“着色器技术”,而不是单纯的语言参考(阅读问题,人们),那么我建议(从简单到高级):
基本上还是:尝试并实践,同时吸收“专家”做事的方式。或者选择与您要实现的目标相似的东西,然后从那里开始工作。
Cg从技术上讲不是HLSL,但从语法上讲它们实际上是相同的。
话虽如此,这是一本比较老的书,但是NVIDIA已将“ The Cg Tutorial ”免费在线阅读。它以非常全面的方式涵盖了可编程管线的基础知识,并且都应以最小的努力全部转换为HLSL。
如果您想编辑并实时查看结果,可以使用此简单的Silverlight工具
http://shazzam-tool.com/
Shazamm 1.3-HSLS着色器的编辑者和先驱
至于Riemers.net的教程+1,但我也发现这一系列XNA / HLSL教程更好。
这是列表,您将在这里找到所有它们:http : //digitalerr0r.wordpress.com/tutorials/
我想到了几件事
我发现Riemers.net在HLSL的XNA教程中有一个很好的入门教程。作者Riemer Grootjans也撰写了值得推荐的书XNA 3.0游戏编程食谱 -如果您喜欢食谱方法。
当我读到有关HLSL的文章时,我回到了今天。我喜欢它,因为它试图解释它所做的每个部分。
我发现了一系列教程,从基本的环境光着色器一直到反射和卡通着色器。每个过程都经过并解释了每一行,甚至还解释了一些数学运算:
不确定要使用的着色器模型和DirectX版本是什么,但我强烈建议您使用Direct3D11进行实用的渲染和计算。本书将向您介绍DirectX11的所有细节,包括资源,所有不同的管道着色器,HLSL(专门针对此主题的整章),以及如何开始实现诸如粒子系统模拟,镶嵌,图像处理,延迟渲染之类的东西。和DirectCompute!
我确实推荐此链接作为示例:http : //www.codesampler.com/dx9src/dx9src_8.htm#dx9_hlsl_fx_simple
对于那些想知道为什么他们的代码不起作用的人,或者对于如何将着色器合并到管道中感到困惑的人,这是一个不错的选择。
对我来说,首先学习GLSL更容易,而且因为HLSL和GLSL很相似。一旦了解了整个概念,管道,硬件以及内部着色器语言的工作原理,就可以轻松使用其他语言,例如HLSL甚至Cg。
我之所以提出GLSL,是因为它有一本非常好的书,例如openGL的橙色和红色书,并且对于初学者来说很容易学习。