编辑评论:
《Unity 3D ShaderLab开发实战》适合移动开发者、游戏开发者和程序员阅读。可作为高校相关专业师生的教材,也可作为培训学校使用。教材。
简介
《Unity 3D ShaderLab开发实战详解》全面讲解Unity Shader渲染实战技术。全书分为五个部分,共33章。主要内容有:Shader在3D游戏中的作用、Shader的实例化、Shader Language的实现等; Unity中Shader的形状,SubShader、可编程Shader、Surface Shader的重要标签; Shader中使用的各种空间概念和Shader中的投影矩阵;基本照明模型;执行Pass,包括渲染路径和Passes的LightMode标签; VertexLit 渲染路径,包括顶点光照以及 Unity 如何存储光源;前向渲染路径;基于光照贴图的烘焙光照;基于 LightProbes 的照明;表面阴影;球体阴影;体积阴影;映射阴影;内置阴影; Pass通用指令开关;固定管道;表面着色器;凹凸材质;卡通素材;镜面材质;半透明材质;体积雾; Wrap 模型的新解决方案;区域灯;音量灯;材质替换渲染;后期效果;地形;投影;着色器组织和重用。不可多得的实用教程,有你必须知道的渲染概念、基于渲染路径的优化、移动平台优化等实用内容。
着色器实例化
在使用C#、C++、Java等面向对象的编程语言时,有程序员经验的读者都知道,在大多数情况下,需要实例化一个类,获取这样的对象,使用对象来执行逻辑上不相关的任务。数据处理。刚才讲的是CPU,GPU上也有类似的概念。 Shader相当于编程语言中类的概念。当我们需要为特定对象使用这个Shader的定义时,我们需要实例化这个Shader,来获取它的一个对象。通过这种对象,我们可以将同一个Shader的含义赋予不同的具体内容,比如纹理、颜色等,从而在不重新定义的情况下获得丰富多彩的变化,大大降低了我们工作的强度。和编程语言中的类一样,我们可以在运行时实例化它们。
Unity 的 Shaderlab 支持的着色器编程语言
在Unity的ShaderLab提供的结构中,我们既可以使用GLSL编写Shader逻辑代码,也可以使用Cg/HLSL编写。如果使用 GLSL,这些代码必须位于 GLSLPROGRAM 和 ENDGLSL 关键字之间;如果使用 Cg/HLSL,这些代码必须位于 CGPROGRAM 和 ENDCG 之间。本书完全用 Cg 编程语言编写。 Cg语言不像在Mac平台上开发的Object-C语言,让习惯了C.C++或者Java、C#的程序员看起来怪怪的。这种语言与 C 语言非常相似。作为一种Shader编程语言,它主要提供了一个全新的函数库。关于Cg的学习,读者可以查看附录,里面有NVIDIA官方权威教程的链接地址。
模型空间
为什么选择模型空间
在3ds Max、Maya等建模软件中,为了便于表示和实用,每个物体都有一个欧几里得三维坐标空间,以自己的轴心为原点。建模软件 3ds Max 中的一块几何图形,箭头显示其模型空间的 x 和 y 轴。
Mesh中每个顶点和法线的表示都是相对于这个模型空间的。
在脚本和着色器中进出模型空间
在Unity脚本中,可以通过transform.worldToLocalMatrix矩阵的MultiplyPoint()或Multiply Vector()方法,将世界坐标表示的向量转换为该对象的模型空间表示的向量。在 Shader 中,这个任务可以通过左乘 World20bject 矩阵来完成。
文件目录
/学习智库10/unity3dshaderlabkfszxj
| ├──unity3dshaderlabkfszxj.zip 232.0MB
声明:本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。如若本站内容侵犯了原着者的合法权益,可联系我们进行处理。
暂无评论内容