UnityShader9:光照基础回顾
一、需要提前了解的
基于经验的基础光照,相比于后面物理光照的学习,简单不少:
- 光照基础:https://blog.csdn.net/Jaihk662/article/details/106624451
- 漫反射:https://blog.csdn.net/Jaihk662/article/details/106640285(里面也有法向量的讲解)
- 镜面光照:https://blog.csdn.net/Jaihk662/article/details/106660744
- 两种基于经验的光照模型:https://blog.csdn.net/Jaihk662/article/details/107856884(第二节 Blinn-Phong 光照)
其实这4篇文章了解完,基本上这章就算没问题了,这章主要还是总结性质
二、BRDF 光照模型
光线射到物体表面后,只有两种结果:散射(scattering)和吸收(absorption),散射到物体内部的即是折射(refraction)和投射(transmission),散射到物体外部的叫反射(reflection),其中漫反射(diffuse)和镜面反射(specular)就是需要重点被考虑的,对于不透明物体,折射进入物体内部的光线还会继续与内部的颗粒进行相交,并有部分会重新发射出去,当然这部分的模拟计算要困难得多,可以暂时不用考虑
根据材质信息、光源信息,用特定的等式去计算某个沿某个观察方向的出射度的过程叫做着色(shading),这个“特定的等式”就是光照模型(Lighting Model)
BRDF 就是光照模型中,用于描述计算当光线从某个方向照射到一个表面时,反射的光强和方向的,其中 BRDF 全称为双向反射分布函数(Bidirectional Reflectance Distribution Function),在图形学中大多使用一个数学公式来表示,并且提供了一些参数来调整材质属性,之前提到的 Phong 光照和 Blinn-Phong 光照就是两个最基础的 BRDF
- 经验模型:前面了解到的所有光照模型都是基于经验的光照模型,它不符合真实世界的光照现象,只不过它的易用性、计算速度和得到的效果都比较好,很多重要的物理现象(例如菲涅耳反射)无法用经验模型表示
- 物理模型:基于物理的光照(PBR),算出来的光照效果非常真实,质量非常高
各向同性(isotropic)与各向异性(anisotropic):在固定光源方向和视角仅旋转物体的表面的情况下,反射是否会发生改变,很显然前面的光照模型都是各向同性的:也就是不会发生改变
直接光照(DirectLight)和间接光照(IndirectLight):直接光照是光源直接照射上去的光,间接光照是一次或者多次反射后的光,例如阳光就是直接光照,月光是间接光照
三、公式汇总
1):兰伯特漫反射:
,对应第二章的图,其中 是光照颜色, 是材质漫反射颜色
2):半兰伯特漫反射
,其中 和 为缩放和偏移参数,一般情况下它们都是 0.5,这时刚好可以将 的范围由 [-1, 1] 映射到 [0, 1] 当中
3):镜面光照反射方向计算:
4):Phong 模型镜面光照:
,对应第二章的图,其中 是材质镜面反射颜色
5):Blinn - Phong 模型镜面光照:
,其中
UnityShader9:光照基础回顾相关推荐
- UnityShader9.1:光照基础实例
前置:UnityShader9:光照基础回顾 一.漫反射光照 直接上代码: 注意其中 Tags 需要设置光照模式为 ForwardBase,它定义了该 Pass 在光照流水线中的角色,在不同的光照模式 ...
- 四、Android学习第四天——JAVA基础回顾(转)
(转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 四.Android学习第四天--JAVA基础回顾 这才学习Android的 ...
- php大牛额城战笔记,PHP语言大牛开发笔记(8)——MySQL数据库基础回顾[2]
本文主要向大家介绍了PHP语言大牛开发笔记(8)--MySQL数据库基础回顾[2],通过具体的实例向大家展示,希望对大家学习php语言有所帮助. 一.数据表 为了确保数据的完整性和一致性,在创建表时指 ...
- Javascript基础回顾 之(一) 类型
本来是要继续由浅入深表达式系列最后一篇的,但是最近团队突然就忙起来了,从来没有过的忙!不过喜欢表达式的朋友请放心,已经在写了:) 在工作当中发现大家对Javascript的一些基本原理普遍存在这里或者 ...
- 【数理统计】概率论基础回顾
零.概率论基础回顾 1. 求离散型的期望
- c语言基础回顾 —— 其他知识点
参考:c语言基础回顾 -- 其他知识点 作者:丶PURSUING 发布时间: 2021-03-11 14:48:59 网址:https://blog.csdn.net/weixin_44742824/ ...
- Javascript基础回顾 之(二) 作用域
本来是要继续由浅入深表达式系列最后一篇的,但是最近团队突然就忙起来了,从来没有过的忙!不过喜欢表达式的朋友请放心,已经在写了:) 在工作当中发现大家对Javascript的一些基本原理普遍存在这里或者 ...
- C#基础回顾:正则表达式
C#基础回顾:正则表达式 写在前面:本文根据笔者的学习体会结合相关书籍资料对正则表达式的语法和使用(C#)进行基本的介绍.适用于初学者. 摘要:正则表达式(Regular Expressions),相 ...
- 【车载开发系列】UDS诊断---DTC故障码基础回顾
[车载开发系列]UDS诊断-DTC故障码基础回顾 UDS诊断---DTC故障码基础回顾 [车载开发系列]UDS诊断---DTC故障码基础回顾 一.什么是DTC故障码 二.DTC故障码的作用 三.什么是 ...
最新文章
- 程序员缺乏经验的 7 种表现
- Hadoop实战(6)_搭建Apache Hadoop的Eclipse开发环境
- Android4.1 触摸屏(TP)划线曲折、不圆润的解决办法
- Java 消息机制之回调详解
- JavaFX UI控件教程(十六)之Separator
- windows 安装 zabbix agent 客户端
- win10启动修复_以安全模式启动win10的4种方法,简单高效,修复电脑故障必用技巧...
- python 中指针_【系列】Python源码剖析(base 2.7.18)Note之初见“对象”
- 实验报告二:例2-19 一位全加器
- RK3288关于LVDS信号配置和1080p视频信号的详解
- C++数据结构之图的储存结构——十字链表
- 【传感器】HT1621 LCD驱动芯片
- c语言一个笼子里关了鸡和兔子,成年后的你是否还质疑 古人为什么把鸡和兔子关在一个笼子里...
- 升级mysql后zpanel无法进入_升级到mysql5.7无法启动问题解决
- linux下redis设置密码登录(简单易懂)
- C++函数重载(6) - main函数重载
- 100道爬虫面试题以及答案(宝典级别的)
- 思岚科技亮相工博会,加速技术下沉,赋能产业新发展
- C#将Excel数据导入到SQL server数据库
- 个性印章在线生成下载网站
热门文章
- python经典实例-终于明了python入门经典实例
- python函数定义及调用-python函数声明和调用定义及原理详解
- python精彩编程200例-Python趣味编程与精彩实例
- 全球硬科技开发者大会(成都)开幕 蓝光发展等超300名开发者「乘风」数字升级...
- 调用Mutation函数的方式
- MongoDB删除文档(非常详细~)
- Vue3学习之第四节:setup()中使用watch、watchEffect 函数
- unix 连接 mysql_UNIX域套接字连接mysql
- 【MYSQL进阶挑战】筛选排序
- 【数论】21蓝桥:货物摆放