资源描述:
《Unity游戏开发之着色器》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、Unity游戏开发之着色器着色器:ShaderLab和固定功能着色器 此教程将介绍如何创建自己的着色器,使您的游戏看起来更棒! Unity配置了一种强大的着色和材质语言,名为ShaderLab。其语言风格类似于CgFX和Direct3DEffects(.FX)语言–可描述显示材质(Material)所需的一切信息。 着色器的属性描述可在Unity材质检视器(MaterialInspector)中查看,并且多个着色器实现(子着色器(SubShaders))旨在实现不同的图形硬件功能,每一种都描述了图形硬件渲染状态、固定功能管道设置或要
2、使用的顶点/片段程序。顶点和片段程序都使用高级Cg/HLSL编程语言编写。 本教程介绍如何使用固定功能和编程管道编写着色器。我们根据以下前提条件制定此教程:假设读者了解OpenGL或Direct3D渲染状态、固定功能和编程管道基础知识,并对Cg、HLSL或GLSL编程语言有一定了解。可在NVIDIA和AMD开发人员网站找到一些着色器教程和文档。文章出处【狗刨学习网】入门 要新建着色器,请在菜单栏中依次选择资源(Assets)->创建(Create)->着色器(Shader),或复制并运行现有着色器。在工程视图(ProjectView)
3、中双击新着色器,即可对其进行编辑。 我们先从最基础的着色器开始:1.Shader"Tutorial/Basic"{2.Properties{3._Color("MainColor",Color)=(1,0.5,0.5,1)4. }5.SubShader{6.Pass{7.Material{8.Diffuse[_Color]9. }10.LightingOn11. }12. }1.} 这个简单的着色器函数介绍了一个具备最基本结构的着色器。它定义了名为“MainColor”的颜色属性,并分配一个玫瑰色的默认值(
4、红色=100%绿色=50%蓝色=50%alpha=100%)。然后通过调用Pass渲染该对象,将设置漫反射材质组件传递至属性_Color,并打开逐顶点照明。要测试此着色器,请新建材质,在下拉菜单(教程(Tutorial)->基本(Basic))中选择着色器,并将材质(Material)分配到某个对象。调节材质检视器(MaterialInspector)中的颜色并查看其变化。现在我们将讨论更复杂的内容!基本顶点照明 如果打开现有的复杂着色器,可能难以看明白。首先,我们要仔细分析Unity随附的内置顶点光照(VertexLit)着色器。此着
5、色器使用固定功能管道执行标准逐顶点照明。1.Shader"VertexLit"{2.Properties{3._Color("MainColor",Color)=(1,1,1,0.5)4._SpecColor("SpecColor",Color)=(1,1,1,1)5._Emission("EmmisiveColor",Color)=(0,0,0,0)6._Shininess("Shininess",Range(0.01,1))=0.77._MainTex("Base(RGB)",2D)="white"{}8. }9.10.SubSha
6、der{11.Pass{12.Material{13.Diffuse[_Color]14.Ambient[_Color]15.Shininess[_Shininess]16.Specular[_SpecColor]17.Emission[_Emission]18. }19.LightingOn1.SeparateSpecularOn2.SetTexture[_MainTex]{3.constantColor[_Color]4.Combinetexture*primaryDOUBLE,texture*constant5.
7、 }6. }7. }8.} 所有着色器都是以关键字Shader开头,其后紧跟着表示着色器名称的字符串。检视器(Inspector)中将显示此名称。此着色器的所有代码必须位于其名称后面的大括号中:{}(称为块)。 1、名称应简短意赅。但不必与.shader文件名对应。 2、要将着色器放入Unity子菜单中,请使用反斜线–例如MyShaders/Test应在名为MyShaders的子菜单中显示为Test或MyShaders->Test。 着色器由属性(Properties)块和其后的子着色器(SubShader)块
8、构成。下面将介绍这两个块。属性 在着色器块的起始部分,可以定义设计师可在材质检视器(MaterialInspector)中编辑的任何属性。以顶点光照(VertexLit)为例,其属性示例如下