一、【标准光照模型】
1、自发光emissve:描述一个表面本身会发散多少光。在没有使用全局光照时,这些自发光是不会真正照亮周围物体。
自发光就是直接由发光体发射进入摄像机,不经过任何反射,在标准光照模型中直接使用该材质的自发光颜色。
        计算公式:Cemissive = Memissive

2、高光反射specular:当光线从光源照射到模型表面时,该表面会向完全镜面反射方向散发的光照强度
标准光照模型中的高光反射是一种经验模型,它并不是完全符合真实世界中的高光反射现象。它可用于计算那些
沿着完全镜面反射方向发射的光线,这可以让物体看起来是有光泽的。
  (1)计算高光需要知道4个矢量:光照方向L、视角方向V、表面法线N和反射方向R。这4个数据只要知道3个就可以
反射方向可以通过计算得到:R = 2(N*L)N - L;
  计算高光Phong模型:Cspecular = (Clight*Mspecular)max(0,V * R)^Mshiniess
  Mshiniess是指反光度,用于控制亮点的大小。

  (2)另外:不同于Phong模型,Blinn模型在跟符合实验结果。Blinn模型的思想是,避免计算反射方向R,为此引入
了一个新的矢量H,它是通过V和L的取平均之后再归一化得到。即H = (V+L)/|V+L|然后计算N和H的夹角。
  计算高光Blinn模型:Cspecular = (Clight*Mspecular)max(0,N*H)^Mshiniess

3、漫反射diffuse:当光线从光源照射到模型表面时,该表面会想每个方向散发的光照强度
漫反射光是用于那些被物体表面随机散发到各个方向的辐射度进行建模的。因此视角位置不重要,因为反射
是完全随机的,可以看做在任何反射方向上光的强度是一样的。但是,入射光线的角度很重要.
漫反射光照符合兰伯特定律(Lambert‘s Law):反射光线强度与表面法线和光源方向之间夹角的余弦值成
正比。因此,漫反射部分的计算如下:
      Cdiffuse = (Clight * Mdiffuse)max(0,N * L)

4、环境光ambient:用于描述其他所有的间接光照强度
标准光照模型的重点是在描述直接光照,但是真实世界中,物体也可以被间接光照所照亮。间接光照
就是指,光线在多个物体之间经过多次反射最后进入摄像机,这种间接光照在标准光照模型中被称为环境
光。
      计算公式:Camnient = Gambient

【Unity Shader】---基础光照的更多相关文章

  1. Unity Shader基础

    Unity Shader基础 先上代码,代码一般是这样的. void Initialization(){ //先从硬盘加载代码再加载到GPU中 string vertexShaderCode = Lo ...

  2. Unity Shader 基础(4) 由深度纹理重建坐标

    在PostImage中经常会用到物体本身的位置信息,但是Image Effect自身是不包含这些信息的,因为屏幕后处其实是使用特定的材质渲染一个刚好填满屏幕的四边形面片(四个角对应近剪裁面的四个角). ...

  3. Unity3D学习(六):《Unity Shader入门精要》——Unity的基础光照

    前言 光学中,我们是用辐射度来量化光. 光照按照不同的散射方向分为:漫反射(diffuse)和高光反射(specular).高光反射描述物体是如何反射光线的,漫反射则表示有多少光线会被折射.吸收和散射 ...

  4. Unity Shader入门精要学习笔记 - 第3章 Unity Shader 基础

    来源作者:candycat   http://blog.csdn.net/candycat1992/article/ 概述 总体来说,在Unity中我们需要配合使用材质和Unity Shader才能达 ...

  5. 第二章 Unity Shader基础

    [TOC] 1. Unity Shader 的基础: ShaderLab 学习和编写着色器的过程一直是一个学习曲线很陡峭的过程,通常情况下为了自定义渲染效果往往要和很多文件和设置打交道,这些设置很容易 ...

  6. Unity Shader 基础

    推荐: https://www.cnblogs.com/nanwei/p/7277417.html 上面链接作者的整个系列都写的不错 https://www.cnblogs.com/nanwei/ca ...

  7. Unity Shader 基础(3) 获取深度纹理

    Unity提供了很多Image Effect效果,包含Global Fog.DOF.Boom.Blur.Edge Detection等等,这些效果里面都会使用到摄像机深度或者根据深度还原世界坐标实现各 ...

  8. Unity Shader 基础(1): RenderType & ReplacementShader

    很多Shader中都会定义RenderType这个类型,但是一直搞不明白到底是干嘛的,官方文档是这样结解释的:Rendering with Replaced Shaders Rendering wit ...

  9. Unity Shader基础(1):基础

    一.Shaderlab语法 1.给Shader起名字 Shader "Custom/MyShader" 这个名称会出现在材质选择使用的下拉列表里 2. Properties (属性 ...

  10. Unity Shader 基础(2) Image Effect

    Unity中 Image Effect 是Post Processing的一种方,Unity自身也提供很多Effect效果供使用.Image Effect的使用官方文档做了很多介绍,这里重点Post ...

随机推荐

  1. Django中使用djangorestframework产生Token

    修改settings.py: INSTALLED_APPS添加rest_framework 产生Token from rest_framework.authtoken.models import To ...

  2. 一、IIS搭建前端静态模板_资源加载问题

    一.模板文件说明和效果展示 二.IIS配置模板 三.解决方案 把资源文件复制到html目录内与index.htm同级,因为我iis指定站点就是该目录.

  3. qt02 textEdit

    1.向QTextEdit中当前光标位置添加一行字符串message ui.messageTextEdit->textCursor().insertText(message+"\n&qu ...

  4. C++HeartCode

    #include <iostream> int main() { int A=43,B=A/2, C=B/2,x,y,i=B,j=-C;for(y=0;y<B;j=(++y)-(C+ ...

  5. noip考前抱佛脚 数论小总结

    exCRT 求解韩信点兵问题,常见的就是合并不同\(mod\). 先mo一发高神的板子 for(R i=2;i<=n;++i){ ll Y1,Yi,lcm=Lcm(p[i],p[1]); exg ...

  6. NOIP2016 D2T1 组合数问题

    洛谷P2822 数学真重要啊…… 其实解这一题的关键就是组合恒等式:C(n,m)=C(n-1,m)+C(n-1,m-1),然后再知道组合数的矩阵(杨辉三角)和题中n,m的关系就很容易解决了(然而做这题 ...

  7. 多个excel文件内容合并到一个excel文件的多个sheet的小程序

    # -*- coding:utf-8 -*- import xlrd, xlsxwriter # 待合并excelallxls = ["D:\\excelcs\\***.xlsx" ...

  8. toString和toLocalString

    toLocalString()是调用每个数组元素的 toLocaleString() 方法,然后使用地区特定的分隔符把生成的字符串连接起来,形成一个字符串. toString()方法获取的是Strin ...

  9. [CF1004E] Sonya and Ice-cream

    问题描述 Sonya likes ice cream very much. She eats it even during programming competitions. That is why ...

  10. [CF434D Div1] Tree

    问题描述 给定一颗 n 个点的树,树边带权,试求一个排列 P,使下式的值最大 \[ \sum_{i=1}^{n-1}maxflow(P_i,P_{i+1}) \] 其中 maxflow(s, t) 表 ...