Unity3D Shader 半兰伯特光照模型】的更多相关文章

//效果预览 //Shader代码 Shader "Unlit/HalfLambert" { Properties { _MainTex ("Texture", 2D) = "white" {} _Diffuse (,,,) } SubShader { Tags { "RenderType"="Opaque" } LOD Pass { CGPROGRAM #pragma vertex vert #pragm…
半兰伯特光照模型,为Valve公司在开发游戏<半条命>时提出的一种技术,用于解决漫反射光无法到达区域无任凭明暗变化,丢失模型细节表现的问题. 其公式如下: Cdiffuse = Clight * mdiffuse * ( dot(n, l) * 0.5 +0.5 ) 通过这样的方式,将dot(n, l)的结果从[-1,1]映射到[0,1]的范围. 转载请注明出处:http://www.cnblogs.com/jietian331/p/7083289.html shader如下: Shader…
在光照无法达到的区域,模型的外观通常是全黑的,没有任何明暗变化,这会使模型的背光区域看起来就像一个平面. 使用半兰伯特光照可以解决这个问题. 逐顶点光照技术也被称为兰伯特光照模型.因为它符合兰伯特定律. Valve公司在开发半条命的时候提出了半兰伯特光照模型. 半兰伯特光照模型没有使用max操作来防止n和I的点积为负值,而是对其结果进行了一个α 倍的缩放再加上一个β 大小的偏移. 绝大多数情况下,α 和β的值均为0.5,即公式为: 对于模型的背光面,在漫反射模型中点积结果将映射到同一个值,即0值…
光照模型 光照模型就是一个公式,使用这个公式来计算在某个点的光照效果. 在标准光照模型里面,我们把进入摄像机的光分为下面四个部分: 自发光 类似生活中的萤火虫等自己能够发光 高光反射 类似生活中的镜子,近似认为百分百反射出去 漫反射 类似生活中的光照射到墙壁上.桌子上的反光不会百分百反射出去,各个方向都会反射. 环境光 类似生活中的光照照射在某个物体上,物体漫反射然后反射到其他物体上这些过程的光是环境光. 以上都是模拟生活中的光照效果,并不等同于实际生活中的光照计算,实际生活中的光照会更加复杂.…
看很多人实现shader都用插件shader force,那我还学shader干X!!!??? 好了,废话不多说,学习shader去.... 漫反射在shader里算是最基础的知识了.入手shader,你必须可以信手拈来一个漫反射吧??什么叫信手拈来,就是不查阅资料的前提下吧 那我就信手拈来一个半兰伯特漫反射效果吧(瞄了一眼资料,好像没人看见). 正常的漫反射公式(Lambert)是这样的: C(diffuse) = C(light) * M(diffuse)max(0,n*I) C(light…
[Unity Shader](三) ---------------- 光照模型原理及漫反射和高光反射的实现 [Unity Shader](四) ------ 纹理之法线纹理.单张纹理及遮罩纹理的实现 [Unity Shader](五) ------ 透明效果之半透明效果的实现及原理 本文主要参考了冯乐乐老师的<Unity Shader入门精要 >一书,再加上网上一些参考资料而写. 笔者使用的是 Unity 2018.2.0f2 + VS2017,书中使用的是 Unity 5.2.1 ,由于版本…
高光反射模型 Specular=直射光*pow(cosθ,高光的参数) θ:是反射光和视野方向的夹角 编写高光反射Shader Shader "AladdinShader/07 Specular Vertex Shader" { Properties { _Diffuse("Diffuse",Color)=(1,1,1,1) //添加自身的颜色 } SubShader { Pass { Tags{"LightMode"="Forward…
Lambert (兰伯特)光照模型 是光源照射到物体表面后,向四面八方反射,产生的漫反射效果.这是一种理想的漫反射光照模型.如下图:这个是顶点函数处理后的该光照模型,因此看起来像素不够平滑. 漫反射 是投射在粗糙表面上的光向各个方向反射的现象.当一束平行的入射光线射到粗糙的表面时,表面会把光线向着四面八方反射,所以入射线虽然互相平行,由于各点的法线方向不一致,造成反射光线向不同的方向无规则地反射,这种反射称之为“漫反射”或“漫射”.这种反射的光称为漫射光. Lambert光照模型计算方法 漫反射…
本文为翻译,附上原文链接. 转载请注明出处--polobymulberry-博客园. 刚开始接触Unity3D Shader编程时,你会发现有关shader的文档相当散,这也造成初学者对Unity3D Shader编程望而却步.该系列教程的第一篇文章(译者注:即本文,后续还有5篇文章)详细介绍了Unity3D中的表面着色器(Surface Shader)的,为学习更复杂的Shader编程打下基础. 动机 如果你是刚刚接触Shader编程的新手,你可能不知道从何开始踏出Shader编程的第一步.本…
本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/40723789 作者:毛星云(浅墨)    微博:http://weibo.com/u/1723155442 邮箱: happylifemxy@163.com 作为一个系统介绍Unity3D中Shader编写的系列文章的开篇,本文的第一部分为系列文章的前言,然后第二部分介绍了这个系列文章中我们会使用的游戏场景创建方式,最后一部分讲解了如…