首页 > 代码库 > Unity shader教程-第一课:写shader和应用shader的流程
Unity shader教程-第一课:写shader和应用shader的流程
这是我们Unity shader(着色器)教程的第一课,在这节课中,你会学到怎么样来用程序来编写一个在Unity中能使用的着色器:漫反射着色器。这节课的内容主要让我们熟悉创建shader和应用shader的流程。
准备工作:
- 安装Unity版本4.6以上
- 创建一个新的工程
- 菜单GameObject | 3D Object | Plane创建出一个平面,作为我们的地面
- 菜单GameObject | 3D Object | Sphere创建出球来,反复多次创建多个
注意:
1. 创建地面后选中该物体(Hierarchy面板中),把相应的transform的position部分全部清成0.
2. 所有的sphere在创建后都跟上面的地面物体一样,position部分清零。然后把球依次拖开一定距离,并放置到地面上面,可以看到整个球的部分为止。
上面的工作做完,我们得到这样的画面:
正式工作
- 在编辑器的Project面板上,右键点击该面板手柄下面的Create,弹出的菜单中选择Shader
- 把创建出的shader文件的名字改成myDiffuse
- 双击myDiffuse这个文件,让MonoDevelop运行并且打开它,我们可以编辑
- 打开的‘myDiffuse‘文件中,全部选中所有的代码,按delete清空
- 然后拷贝我们下面的代码段到该文件内容中
Shader "CookbookShaders/BasicDiffuse" { Properties { _MainTex ("Base (RGB)", 2D) = "white" {} } SubShader { Tags { "RenderType"="Opaque" } LOD 200 CGPROGRAM #pragma surface surf Lambert sampler2D _MainTex; struct Input { float2 uv_MainTex; }; void surf (Input IN, inout SurfaceOutput o) { half4 c = tex2D (_MainTex, IN.uv_MainTex); o.Albedo = c.rgb; o.Alpha = c.a; } ENDCG } FallBack "Diffuse" }
- 然后保存我们的这个文件。回到Unity编辑器中
- 通过Project面板上的Create,创建出一个Material出来,重命名为myMaterial
- 选中myMaterial。对应的Inspector面板上,shader栏位点开菜单,下拉条中选中‘myDiffuse‘
- 把myMaterial这个material拖到Hierarchy中的某个物体,可以是sphere,也可以是plane上面
- 选中Hierarchy中的我们刚才拖入myMaterial的物体,在对应的Inspector面板上确保看到它的‘Mesh Renderer‘部分的‘Use Light Probes‘下面部分是‘myMaterial‘
这个过程就是一个创建新的shader,并且通过material把我们的shader应用到物体上的步骤。以后每个新的shader,都可以通过类似的步骤来使用到场景中的物体上。
上面的shader应用到物体上以后,我们可以发现物体的表征跟原来是一模一样的。这个原因是因为我们写的这个第一个shader的功能,跟unity默认的shader是一模一样的。也就是说,虽然我们在创建物体的时候,我们并没有给它相应指定相关的shader,但是unity会保证它带上一个默认的。在3d应用中,每个物体都必须有一个相应的shader来完成最后的渲染(绘制物体的术语)。你没有去刻意选择的时候,3d引擎本身会帮助你选择一个默认的而已。
但是,同时我们也注意到了,shader只有通过material(材质)作为媒介才能应用到物体上,而不能直接绑定到物体。这也就是为什么我们在创建shader以后必须要创建一个material,然后从material中选择我们的shader,再把material绑到物体上的原因。所以,对于物体来说,它具备材质属性,而shader只是材质中的一个组件或者部分。这个大家需要先弄清楚。
这就是我们第一节课的内容,熟悉一下整个shader制作和应用的流程。下面的课程,我们会在这个shader的基础上加入元素,能让物体改变色彩和一些更丰富的功能。
98教育(98jy.net)原创文章,转载请注明原文地址,否则视为侵权!
Unity shader教程-第一课:写shader和应用shader的流程