Unity3D游戏开发之Shader基础

Unity3D游戏开发之Shader基础

ID:39891050

大小:349.50 KB

页数:8页

时间:2019-07-14

Unity3D游戏开发之Shader基础_第1页
Unity3D游戏开发之Shader基础_第2页
Unity3D游戏开发之Shader基础_第3页
Unity3D游戏开发之Shader基础_第4页
Unity3D游戏开发之Shader基础_第5页
资源描述:

《Unity3D游戏开发之Shader基础》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、Unity3D游戏开发之Shader基础 今天要说的是unity3D中shader相关的一些知识。不会做非常细致的讲解(东西实在太多!--),但是看完之后会知道shader是怎么用的。一些术语          在shader编程中,有一些术语,有时候不明白的话容易被整懵圈,所以这里就简单提一下。Shading      Shading最开始指的在素描中给物体画明暗调子,在图形学中,其实就是给Mesh上色(Mesh就是一堆三角面片,包含顶点左边,法线坐标,uv坐标之类的),wiki中说的是根据物体相对于光线的角度及其距离光源距离改变物体

2、颜色生成photorealistic效果的过程。我们所编写的处理shading的程序就叫做shader,中文叫着色器,程序的输入是颜色,纹理,坐标等等,输出的是mesh网格的最终的颜色。光照模型      光照模型主要包括两个部分,一部分是光源的定义,另一部分是mesh表面的光照计算。光源根据现实中的光源可以抽象成点光源,方向光源,聚光灯。mesh表面的光照计算主要计算三个部分,  环境光(Ambientlight),漫反射光(Diffuselight),全反射光(Specularlight)。文章出处【狗刨学习网】Lambert光照模

3、型    此模型属于经验模型,主要用来简单模拟粗糙物体表面的光照现象。    此模型假设物体表面为理想漫反射体(也就是只产生漫反射现象,也成为Lambert反射体),同时,场景中存在两种光,一种为环境光,一种为方向光,然后我们分别计算这两种光照射到粗糙物体表面所产生的光照现象,最后再将两个结果相加,得出反射后的光强值。    首先是计算环境光的公式:    I_ambdiff=K_d*I_a;    其中,K_d为粗糙物体表面材质对光的反射系数,这个系数由程序编写者在宿主程序中给出,I_a为环境光的光强,也就是环境光的颜色数值,一般是一

4、个float3型的变量。    然后是计算方向光的公式:    I_ldiff=K_d*I_l*cosa;    由向量的点积公式可得:cosa=N﹒L,所以计算方向光的公式就变为:    I_ldiff=K_d*I_l*(N﹒L);    综上,得出漫反射后的光强为:    I_diff=K_d*I_a+K_d*I_l*(N﹒L);Build-inShader      unity3d自带的shader。MeshFilter和MeshRenderer还有SkinnedMeshRenderer      当将一个静态的mesh网格添加到

5、场景中的时候,unity会自动为这个GameObject添加MeshFilter和MeshRenderer组件,MeshFilter用来保存网格过滤器用于从你的资源中获取网格信息(Mesh)并将其传递到用于将其渲染到屏幕的网格渲染器当中。MeshRenderer从MeshFilter获得几何形状,并且根据物体的Transform组件的定义位置进行渲染。当导入有蒙皮的网格时,SkinnedMeshRenderer会自动添加到导入的网格。材质和shader的关系    在3dsmax中要给模型加贴图都要新建一个材质球,Shader(着色器)

6、实际上就是一小段程序,它负责将输入的Mesh(网格)以指定的方式和输入的贴图或者颜色等组合作用,然后输出。绘图单元可以依据这个输出来将图像绘制到屏幕上。输入的贴图或者颜色等,加上对应的Shader,以及对Shader的特定的参数设置,将这些内容(Shader及输入参数)打包存储在一起,得到的就是一个Material(材质)。之后,我们便可以将材质赋予合适的renderer(渲染器)来进行渲染(输出)了。实战开始          话不多说,打开U3D。      首先将准备好的模型拖到场景中。    拖进来的模型都会自带一个Skinne

7、dMeshRenderer,用来显示带动画的模型,并且unity会自动创建一个材质,material_0,直接用的自带的diffuseshader来渲染,然后赋到这个renderer上面。接下来我们要自己创建Material和Shader,点击Project面板的create,创建一个Shader和Material,名字都叫Test0。(程序猿强迫症-索引一定要从0开始--)    Test0的解释    打开创建好的Test0.shader1.Shader"Custom/Test0"{ 2.3.  Properties{  4.5. 

8、     _MainTex("Base(RGB)",2D)="white"{}  6.7.  }  8.9.  SubShader{  10.11.      Tags{"RenderType"="Opaq

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。