【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 ...
随机推荐
- 七、latex中的插图
- 2018 Web 开发者路线图[转载]
2018 Web 开发者路线图[转载] https://qianduan.group/posts/5a66f36e0cf6b624d2239c74?hmsr=toutiao.io&utm_me ...
- evpp心跳机制
client server xin good
- Insomni'hack teaser 2019 - Misc - echoechoechoecho
参考链接 https://ctftime.org/task/7456 题目内容 Echo echo echo echo, good luck nc 35.246.181.187 1337 解题过程 主 ...
- 使用navcat进行筛选和排序
- HTML5的新特性:范围样式,又叫做<style scoped>
Chromium 最近实现了一个HTML5的新特性:范围样式,又叫做<style scoped> .开发者可以通过为根元素设定一个添加了scoped属性的style标签,来限制样式只作用于 ...
- 微信小程序支付功能讲解
前言:虽然小程序做过很多,但是一直觉得微信支付功能很是神秘,现在终于有机会接触心里还是有点小激动的,经过一番折腾发现支付也不过如此,在此记录下支付功能的实现过程 小程序的官方文档介绍到发起微信支付即调 ...
- Spring——简介
学习网站: [1]http://spring.io/ [2]http://projects.spring.io/spring-framework/ Spring是为解决企业应用开发的复杂性而创建的,是 ...
- luogu P1036 选数 x
P1036 选数 题目描述 已知 n 个整数 x1,x2,…,xn,以及一个整数 k(k<n).从 n 个整数中任选 k 个整数相加,可分别得到一系列的和.例如当 n=4,k=3,4 个整数分别 ...
- vue使用过滤器 filters:{}
在项目开发过程中,经常会用到过滤器,下面就来说说我用的用法 我从后台获取到一个时间字段,是2017-03-23的格式,但是我要的是年月日分开显示,那就要用到过滤器了 在没有用过滤器的时候,是这样的: ...