一、【标准光照模型】
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. bak文件恢复成 SQL2005 数据库 的全程讲解

    经常会碰到客户给我们发的是一个bak的数据库备份文件,而不是一个数据库.这就需要我们把这数据文件还原成数据库的形式. 如将demo.bak数据库恢复到mssql2005下 打开SQL2005,打开后就 ...

  2. pandas读取Excel文件

    In [7]: import pandas as pd filname = 'ch02数据导入\\student.xlsx' data = pd.read_excel(filname) data Ou ...

  3. 常用sql---表记录数和占用空间统计

    1.每张表的记录数和占用空间 select owner as 用户名, table_name as 表名, num_rows as 记录数, ROUND(t.NUM_ROWS * t.AVG_ROW_ ...

  4. python如何调用c编译好可执行程序

    python如何调用c编译好可执行程序       以下总结出几种在Python 中调用 C/C++ 代码的方法 ------------------------------------------- ...

  5. Python3 面向对象-类的继承与派生

    1.什么是继承? 继承是一种创建新类的方式,新建的类可以继承一个或多个父类(python支持多继承),父类可称为基类或超类,新建的类称为派生类和或子类. 子类会遗传父类的属性,从而解决代码重用问题. ...

  6. PHP入门培训教程 PHP变量的使用

      很多朋友在编写PHP程序的时候有时候对变量总有着不能确定的问题,而且也有很多问题就是因为变量的处理不当所造成的.这里兄弟连PHP培训 小编,就PHP变量系统说一下. PHP的变量分为全局变量与局部 ...

  7. B/S实现大视频上传

    在公司做B/S 开发与维护三年啦, 对B/S架构的了解也是只知大概,对于这种基础知识还是很有必要理一理哒.趁空去网上查阅了资料,顺便整理一份笔记供以后查询. 一. B/S的概念 B/S(Brower/ ...

  8. 【CF1252K】Addition Robot(线段树,矩阵乘法)

    题意: 思路:因为线段树上每一段的矩阵之积只有两种,预处理一下,翻转的时候下传tag然后把另一种可能性换上来就好 #include<bits/stdc++.h> using namespa ...

  9. nvm 管理 node 版本

    nvm 有 Mac 版本 num 亦有 windows 版本(可以搜索 nvm for windows) 安装后 运行 nvm v 可查看版本 运行 nvm install latest 安装最新版本 ...

  10. RedHat下使用gcc编译HelloWorld.cpp

    gcc ./HelloWorld.cpp 错误: /tmp/ccZuz3Ca.o:(.eh_frame+0x12): undefined reference to `__gxx_personality ...