UnityShader
Cco丶
学海无涯
展开
-
渐变纹理 和 遮罩纹理
渐变纹理纹理不仅可以定义一个物体的颜色,也可以用来存储任何表面属性。比如用渐变纹理 来控制漫反射光照结果。可以通过使用不同的渐变纹理 来控制物体的漫反射光照。Shader "Custom/RampTexture"{ Properties { _Color ("Color", Color) = (1,1,1,1) //渐变纹理 ...原创 2020-02-21 18:45:21 · 665 阅读 · 0 评论 -
凹凸映射
凹凸映射的目的是使用一张纹理来修改模型表面的法线,以便为模型提供更多的细节。这个方法不会真的改变模型的顶点位置。凹凸映射的两种方式:1.高度映射:使用一张高度纹理来模拟表面位移,然后得到一个修改后的法线值。2.法线映射:使用一张法线纹理来直接存储表面法线。我们通常使用 高度图和发现映射一起使用,来修改光照。法线纹理:存储的是表面的法线方向,法线方向的分量范围在[-1,1...原创 2020-02-21 18:28:56 · 567 阅读 · 0 评论 -
Blinn-Phong 光照模型
前面 我们使用Phong光照模型计算的高光反射,这里我们 用Blinn-Phong来实现高光反射计算。在Blinn-Phong中,没有使用反射方向,而是引入了新的矢量h,它是通过对视角方向v 和光照方向 l 相加后再归一化得到的。=(+)/(l+l)所以Blinn-Phong 模型计算高光反射公式如下:=(*)max(0,)计算如下:Shader "Custom/Sp...原创 2020-02-19 23:46:11 · 878 阅读 · 0 评论 -
高光反射
这里的高光反射是一种经验模型,并不完全符合真实世界中的高光反射现象,用于计算那些沿着完全镜面反射方向被反射的光线,可以让物体看起来有光泽,比如金属材质。计算高光反射需要知道 表面法线,视角方向,光源方向,反射方向等。我们使用Phong模型 来计算高光反射,公式如下:=(* )max(0,)其中:指的是 材质的光泽度--gloss即反光度。控制高光部分区域,越大,亮点就越小。...原创 2020-02-19 23:29:34 · 1598 阅读 · 0 评论 -
半兰伯特光照模型
由于使用漫反射光照的时候 在光照面和半光照面结合处出现了锯齿形状,影响模型的效果,Value公司 提出一种技术,在原兰伯特光照模型基础上做出了修改解决了漫反射中的的问题,依次被称为半兰伯特光照模型。广义半兰伯特计算公式:(C* M)(α()+β)没有采用max 函数来防止点积为负值,采用的是α倍的缩放和β倍的偏移。一般情况下,α和β的值均为0.5这样也可以将结果从[-1,1]映射...原创 2020-02-19 19:40:57 · 714 阅读 · 0 评论 -
漫反射光照模型
漫反射光照是用于被物体表面随机散射到各个方向的辐射度进行的建模。在漫反射中视角的位置是不重要的,因为反射是完全随机的,所以在任何反射方向都是随机的。但是入射光线的角度很重要。漫反射光照符合兰伯特定律:反射光线的强度 与 表面法线和光源方向之间 的夹角 的余弦值成正比。漫反射计算公式:(C* M)max(0,)n:表面法线,l:指向光源的单位矢量,Mdiffuse:材质漫反射颜色,Cl...原创 2020-02-19 19:10:05 · 1807 阅读 · 0 评论 -
渲染流水线
渲染流水线:从一个三维场景出发,生成我们在屏幕上看到的图像的过程。渲染流水线分为三个阶段:应用阶段------------>几何阶段----------------->光栅化阶段1.应用阶段:Cpu来负责,拥有绝对控制权,属于可编程阶段。该阶段准备场景数据,将渲染所需数据从硬盘加载到内存中,网格数据等被加载到显存中。不可见剔除。设置渲染状态,使用什么类型的着色器,光源属...原创 2019-07-16 15:43:10 · 234 阅读 · 0 评论