UnityD技术之纹理着色器基础详解.docxVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
UnityD技术之纹理着色器基础详解

Unity3D技术之纹理着色器基础详解今天要说的是unity3D中shader相关的一些知识。不会做非常细致的讲解(东西实在太多!- -),但是看完之后会知道shader是怎么用的。一些术语? ?? ?? ?在shader编程中,有一些术语,有时候不明白的话容易被整懵圈,所以这里就简单提一下。ShadingShading最开始指的在素描中给物体画明暗调子,在图形学中,其实就是给Mesh上色(Mesh就是一堆三角面片,包含顶点左边,法线坐标,uv坐标之类的),wiki中说的是根据物体相对于光线的角度及其距离光源距离改变物体颜色生成photorealistic效果的过程。我们所编写的处理shading的程序就叫做shader,中文叫着色器,程序的输入是颜色,纹理,坐标等等,输出的是mesh网格的最终的颜色。光照模型? ?? ???光照模型主要包括两个部分,一部分是光源的定义,另一部分是mesh表面的光照计算。光源根据现实中的光源可以抽象成点光源,方向光源,聚光灯。mesh表面的光照计算主要计算三个部分,??环境光(Ambient light),漫反射光(Diffuse light),全反射光(Specular light)。文章出处【狗刨学习网】。Lambert光照模型? ?? ? 此模型属于经验模型,主要用来简单模拟粗糙物体表面的光照现象。? ?? ? 此模型假设物体表面为理想漫反射体(也就是只产生漫反射现象,也成为Lambert反射体),同时,场景中存在两种光,一种为环境光,一种为方向光,然后我们分别计算这两种光照射到粗糙物体表面所产生的光照现象,最后再将两个结果相加,得出反射后的光强值。? ?? ? 首先是计算环境光的公式:? ?? ? I_ambdiff = K_d * I_a;? ?? ? 其中,K_d为粗糙物体表面材质对光的反射系数,这个系数由程序编写者在宿主程序中给出,I_a为环境光的光强,也就是环境光的颜色数值,一般是一个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-in Shader? ?? ???unity3d自带的shader。MeshFilter 和 MeshRenderer还有Skinned Mesh Renderer? ?? ???当将一个静态的mesh网格添加到场景中的时候,unity会自动为这个GameObject添加MeshFilter 和 MeshRenderer组件,MeshFilter用来保存网格过滤器用于从你的资源中获取网格信息(Mesh)并将其传递到用于将其渲染到屏幕的网格渲染器当中。MeshRenderer从MeshFilter 获得几何形状,并且根据物体的Transform组件的定义位置进行渲染。当导入有蒙皮的网格时,Skinned Mesh Renderer会自动添加到导入的网格。材质和shader的关系? ?? ? 在3dsmax中要给模型加贴图都要新建一个材质球,Shader(着色器)实际上就是一小段程序,它负责将输入的Mesh(网格)以指定的方式和输入的贴图或者颜色等组合作用,然后输出。绘图单元可以依据这个输出来将图像绘制到屏幕上。输入的贴图或者颜色等,加上对应的Shader,以及对Shader的特定的参数设置,将这些内容(Shader及输入参数)打包存储在一起,得到的就是一个Material(材质)。之后,我们便可以将材质赋予合适的renderer(渲染器)来进行渲染(输出)了。实战开始? ?? ???? ?? ? 话不多说,打开Unity。首先将准备好的模型拖到场景中。拖进来的模型都会自带一个Skinned Mesh Renderer,用来显示带动画的模型,并且unity会自动创建一个材质,material_0,直接用的自带的diffuse shader 来渲染,然后赋到这个renderer上面。接下来我们要自己创建Material和Shader,点击Project面板的create,创建一个Shader和Material,名字都叫Test0。(程序猿强迫症 - 索引一定要从0开始 - - )? ?? ? Test0的解释? ?? ? 打开创建好的Test0.shaderShader Custom/Test0 {?? ? Properties {??? ?? ???_MainTex (Base

文档评论(0)

qiwqpu54 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档