【Unity Shader】---基础光照
一、【标准光照模型】
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】---基础光照的更多相关文章
- Unity Shader基础
Unity Shader基础 先上代码,代码一般是这样的. void Initialization(){ //先从硬盘加载代码再加载到GPU中 string vertexShaderCode = Lo ...
- Unity Shader 基础(4) 由深度纹理重建坐标
在PostImage中经常会用到物体本身的位置信息,但是Image Effect自身是不包含这些信息的,因为屏幕后处其实是使用特定的材质渲染一个刚好填满屏幕的四边形面片(四个角对应近剪裁面的四个角). ...
- Unity3D学习(六):《Unity Shader入门精要》——Unity的基础光照
前言 光学中,我们是用辐射度来量化光. 光照按照不同的散射方向分为:漫反射(diffuse)和高光反射(specular).高光反射描述物体是如何反射光线的,漫反射则表示有多少光线会被折射.吸收和散射 ...
- Unity Shader入门精要学习笔记 - 第3章 Unity Shader 基础
来源作者:candycat http://blog.csdn.net/candycat1992/article/ 概述 总体来说,在Unity中我们需要配合使用材质和Unity Shader才能达 ...
- 第二章 Unity Shader基础
[TOC] 1. Unity Shader 的基础: ShaderLab 学习和编写着色器的过程一直是一个学习曲线很陡峭的过程,通常情况下为了自定义渲染效果往往要和很多文件和设置打交道,这些设置很容易 ...
- Unity Shader 基础
推荐: https://www.cnblogs.com/nanwei/p/7277417.html 上面链接作者的整个系列都写的不错 https://www.cnblogs.com/nanwei/ca ...
- Unity Shader 基础(3) 获取深度纹理
Unity提供了很多Image Effect效果,包含Global Fog.DOF.Boom.Blur.Edge Detection等等,这些效果里面都会使用到摄像机深度或者根据深度还原世界坐标实现各 ...
- Unity Shader 基础(1): RenderType & ReplacementShader
很多Shader中都会定义RenderType这个类型,但是一直搞不明白到底是干嘛的,官方文档是这样结解释的:Rendering with Replaced Shaders Rendering wit ...
- Unity Shader基础(1):基础
一.Shaderlab语法 1.给Shader起名字 Shader "Custom/MyShader" 这个名称会出现在材质选择使用的下拉列表里 2. Properties (属性 ...
- Unity Shader 基础(2) Image Effect
Unity中 Image Effect 是Post Processing的一种方,Unity自身也提供很多Effect效果供使用.Image Effect的使用官方文档做了很多介绍,这里重点Post ...
随机推荐
- 已知链表头结点指针head,写一个函数把这个链表逆序
Node* ReverseList ( Node *head ) { if ( head == NULL || head->next == NULL ) return head; Node *p ...
- MongoDB入门_MongoDB安装与配置
MongoDB运行环境 MongoDB环境:CentOS-6.7-i386 MongoDB版本:MongoDB 2.6.5 ssh工具:xshell 文本编辑工具:vim与editplus++ 编译M ...
- 025-Cinder服务-->安装并配置一个本地存储节点(ISCSI)
一:Cinder提供块级别的存储服务,块存储提供一个基础设施为了管理卷,以及和OpenStack计算服务交互,为实例提供卷.此服务也会激活管理卷的快照和卷类型的功能,块存储服务通常包含下列组件:cin ...
- python字典总结
今天总结一篇关于字典的知识点> 字典也是python提供的一种常用的数据结构,它用于存放具有映射关系的数据 比如成绩表,语文:34,数学:99,如果单纯的使用两个列表保存这组数据,则无法记录两组 ...
- 可决系数R^2和方差膨胀因子VIF
然而很多时候,被筛选的特征在模型上线的预测效果并不理想,究其原因可能是由于特征筛选的偏差. 但还有一个显著的因素,就是选取特征之间之间可能存在高度的多重共线性,导致模型对测试集预测能力不佳. 为了在筛 ...
- 【05】Python 标准模块:random、os、time、hashlib 第三方模块:excel、数据库 列表生成式
1 模块分类 标准模块,不需要你单独安装,python自带的模块 第三方模块 自己写的python 一个python文件就是一个模块 2 random模块 2.1 随机取元素 import rando ...
- CSS3——制作图片翻页的小动画
觉得还挺有意思的嘻嘻~ 这里有一个问题要注意一下,图片反转过程中可能会遇到一种如下所示的跳变bug: 这玩意一出来吓我一大跳,显然这种用户体验是很不好的,解决方法: 在.pic, .info{...} ...
- SQL Server清理索引碎片
DECLARE @SchemeName NVARCHAR(MAX)=N''; DECLARE @TableName NVARCHAR(MAX)=N''; DECLARE @IndexName NVAR ...
- JavaScript正则表达式简介(一)
一.正则表达式 正则表达式Regular Expression,可以简写为regexp.regex或是RE. 正则表达式使用单个字符串来描述或是匹配一系列符合某个句法规则的字符串模型. 按照某种规则去 ...
- github上.md的编写
# algs4 一:大标题 =========== 二:中标题 ------------ 三:1~6级标题 # 一级标题 ## 二级标题 ### 三级标题 #### 四级标题 ##### 五级标题 # ...