当前课程知识点:游戏程序设计 > 第八章 《材质着色与光照》 > 8.4 材质 2 > 8.4 材质 2
讲下漫反射的BRDF
然后假如是以前的图形课的话
很快就讲到这个漫反射
但是我前面讲主要是更多的
从一些物理背景去出发
然后其实漫反射比较简单的
它就是也是我们游戏渲染里面最常用的
因为别的一些漫反射模型
其实跟那个Lambert的反射的一个效果
其实差不多的
当然有些主机游戏会尝试用更好的一点的
一个漫反射的项
它其实就是它的意思就是一个常量的项
然后它里面只有一个C
这个C是这个材质的
一个吸光率
然后后面除于这个π
主要是前面刚说的那个能量守恒
为了能量守恒去配比了一个常数
可以让这个整个项不会增加额外的能量
然后还有别的一些
还有别的一些漫反射模型
比如这个也是微表面模型
它假设一个不同的
每个凹凸的一个微的表面
它里面也是一个完美的一个
Lambert表面
但是然后再通过参数去建模
这些被表面杂乱的程度
但是后面我们可以看他的具体效果的区别
区别都不是很大
另外就是迪士尼
迪士尼就是
就是Fitting real world measurement
就是通过函数数学公式去拟合
真实世界的一些测量的数值
然后后面就是不同漫反射模型的
一个渲染的效果
前面这三列
这几列是粗糙度为零的情况下
这个粗糙度为零点五
这个粗糙度为一
粗糙度就是用来描述
这个物体表面粗糙的程度
零是最光滑的一个表面
一就是最粗糙的表面
然后前面第一列就是
就是Lanbet的一个效果渲染的效果
然后后面第二辆就是迪士尼电影
现在在用的一个渲染的效果
然后
这个这个主要是光入射角在正面的时候
然后入射角慢慢往右上角偏
偏到这个入射角到九十度时
我们看到的效果
可以到在真实测量的一个
数学再去拟合公式的一个模型去对比
其实差别是非常差异非常少的
所以
对漫反射来说
其基本就是一个平均概率了一个分布
每个方向的能量且基本是一致
然后后面第二项这个就是也是
也是迪士尼的
但是是有人改进迪士尼测量的结果
因为它发现迪士尼测量
测量它通过数据
通过公式拟合之后
它的公式拟合的BRDF
它能量不守恒
都有人把它重新做成守恒
然后刚才也说到这个微表面的那个模型
每个微表面都是一些都是一个极粗糙
都是一个lambet表面
然后
下面也是别的剩下的各种漫反射
BRFC可以看到区别都不是很大
让我们讲下高光反射的BRBF
这个也是现在就这近年来
游戏改进比较大的一个一个项
应该是从CryEngine衰落之后
后面新的游戏 到Unreal
虚幻4引擎起来的时候
这个游戏跟主机行业变化比较大的
就你会明显的看到后面
就差那么几年到后面几代的游戏作品
它跟以前游戏的真实感会上升很多个档次
但是其实对算例算例
计算却没有增加很多
首先
我们从生活中去观察一些高光反射的现象
我们会看到越粗糙的表面
它其实高光成像是越来越模糊的
当一个
它的微观表面是比较相对比较光滑的时候
能看到高光是越来越清晰了
它这一个越粗糙的表面
它高光成的像是越来越模糊
你要从这里
我们也可以看到一个渐变的效果
这个是粗糙度为零的时候
这粗糙度为一的时候就越来越粗糙的话
这个为微面结构越来越乱的话
它的高光反射打到这个物体
在发射出去
反射方向都是基本都是很随机的
要到这个是很一致的
然后我们也可以看到还有另外一个现象
就是当这个
这个越粗糙的话
它基本这个单个方向上能量
其实对比原来的观察到的
这个能量是要衰减了很多
因为它能量守恒你往
越多方向去发射能量的话
它自己本身能量的密度是降低的
然后我们生活中观察到物体
无论是自然产生的是人工制造的
都可以看到不同的
粗糙的程度的表面
比如只有一个就那些相机镜头有光滑的
有粗糙的
还有一些颗粒更加变化更大的
然后
为了方便我们美术游戏制作
去控制一个材质的粗糙程度
我们会用一个粗糙度来表示
用一个贴图是一个零一的值
当它粗糙度为一的时候
是最粗糙
像一些杂乱的石头
当粗糙度为零的时候
它就是最净面的
看到像一个镜子一样
然后们就讲到怎么去建模
刚才观察到了一些生活中的现象
我们就引入了一个微表面的理论
这微表面的理论
它其实就一句话可以总结出来
就假如我们
已经有一个微表面的一个结构了
有一个把白的物体在某一个点一直放大
有一个更杂乱的微表面结构
它局部上面
这微表面局部上面就有很多小的一个面
这个是一个大的红光的一个面
这些小的一些面就会有微表面
微表面上面有自身的一个法线
这个在M
然后跟这个红光的这个法线是有所区别的
红光这个就一直垂直了
然后这个微观了
这个就可以各个方向随机的
然后微表面的话就一句话概括
就是把它当成一个完美的一个镜面反射
完美的镜面
然后所有光打到这个为表面的时候
它是入射角更出射的
完全相等去反射出去
然后通过这样去建模
一个我们的高
这个@
主要就是讲这个
通过这个理论去建模整个高光的一个效果
然后也通过用粗糙度
去控制这个M这个微表面
杂乱的程度来控制整个高光的现象
去模拟那个我们渲染的时候
高光对不同粗糙度的了一个响应
然后
这个就是高光反射BRDF
它只要有那个FGD的这三个项
后面是由能量守恒项
后面会具体谁讲
前面那个项相机主要是要菲涅尔
是一些菲涅尔效应
菲涅尔项一主要主要是发生在不同折射率
高中物理会有讲过就不能折射率的分界面
传播的时候
那个月色光会发生反射和折射
然后这个反射折射角度
根据snell’ slaw可以算出的两个角度不一样了
算出这个角度
然后假如在物理学上更加定量模拟
可能需要考虑到偏振光
但是我们游戏中是不会那么复杂的
后面就会讲我们到底是怎么做简化
这里是一个菲涅尔现象的一个实验
我们可以看到
假如从一个折射率比较大的一个
从水底上面发出光线
打到一个空空
跟空气上面的话
它甚至有可能
那个这折射角度越来越大
甚至会发生全反射的现象
我们生活中也会观察到一些菲涅尔现象
我们生活中可以看到
假如我们看
一个天气
在下雨的时候
观察水的路面或者观察湖面的时候
我们看到
当我们垂直看这个表面的话
你看到的反射的像是比较弱的
当你在比较平行
就这个右上角比较大时候观察水的表面
会有的要有比较强的一个反射
对生活中的现象比我们去观察一个湖面
光在水面
当我们视线跟光的一个右侧角基本
差不多九十度摄像基本是平行差的
这个物体表面是观察的话
会看到它的那个反射的像是很清晰的
然后当我们观察差不多
垂直于这个水的表面的时候
基本我们看到的是水底下的东西
因为这时候基本上是
它的反射的能量是比较少
我说基本看到都是折射成的像
这一个也是一个举例
比如这个球的球面
在这个角度基本平行于这个球面的时候
基本上看到的这个反射的像
是很清晰的
但入射角跟这个反射表面
垂直的时候就基本是只能看穿这个物体
-1. 1什么是游戏(上)
--选择题
-1.2 什么是游戏(下)
--选择题
-1.3 游戏是如何开发出来的
-1.4 游戏引擎(上)
-1.5 游戏引擎(下)
--单选题
-1.6 如何成为一个游戏开发者
--多选题
-2.1 什么是游戏服务器
--单选题
-2.2 游戏服务器的和分类发展
--单选题
-2.3 核心技术和实现难点
--单选题
-2.4 设计原理与方法论
--单选题
-3.1 三维坐标系统
--多选题
-3.2 向量与运算
--单选题
-3.3 矩阵与线性变换
--双选题
-3.4 四元数
--3.4 四元数
--多选题
-4.1 游戏循环概述(上)
--多选题
-4.2 游戏循环概述(下)
--单选题
-4.3 《无尽之路》的实现
--单选题
-4.4 支撑游戏的功能
--选择题
-4.5 支撑游戏的机制与系统
--多选题
-5.1 基本介绍
--5.1 基本介绍
--单选题
-5.2 随机数生成器
--单选题
-5.3 随机数分布与应用
--单选题
-6.1 什么是游戏玩法开发
--单选题
-6.2 建立愿景 Vision
--单选题
-6.3 划定边界 Scope
-6.4 迭代 Iteration
--单选题
-6.5 迭代 Iteration+抛光Polish
--单选题
-7.1实时图形渲染管道 宏观渲染系统
--单选题
-7.2实时图形渲染管道 应用阶段
--单选题
-7.3实时图形渲染管道 几何阶段
--单选题
-7.4实时图形渲染管道 光栅化阶段
--单选题
-7.5实时图形渲染管道 总结 参考
-8.1 物理回顾1
--单选题
-8.2 物理回顾2
--单选题
-8.3 材质 1
--8.3 材质 1
-8.4 材质 2
--8.4 材质 2
-8.5 材质3
--8.5 材质3
-8.6局部光照
--8.6局部光照
--单选题
-8.7 全局光照
--8.7 全局光照
--单选题
-9.1 动画介绍
--9.1 动画介绍
--多选题
-9.2 游戏动画介绍
-9.3 动画技术类型
--多选题
-9.4 骨骼蒙皮动画
--多选题
-9.5 动画流水线
--多选题
-9.6 动画前沿趋势
--多选题
-10.1 .基本概念
--多选题
-10.2 设计目标
--多选题
-10.3 传输数据分析
--多选题
-10.4 常用同步方案 1
-10.4 常用同步方案 2
-10.4 常用同步方案 3
-10.4 常用同步方案 4
--多选题
-10.5 方案对比
--多选题
-11.1 基本图元
--单选题
-11.2 图元距离(上)
--单选题
-11.2 图元距离(下)
--单选题
-11.3 图元相交测试+ 其他几何方法
--单选题
-12.1 著名物理引擎介绍
--单选题
-12.2 物理引擎原理(上)
--单选题
-12.3 物理引擎原理(下)
--单选题
-12.4 游戏中的物理体
--单选题
-12.5 物理引擎使用入门
--单选题
-13.1开发语言
--13.1开发语言
--单选题
-13.2 开发环境
--单选题
-13.3 腾讯开发组件介绍
--单选题
-13.4 网络通信+业务框架介绍
--多选题
-14.1 进程间通信(上)
-14.2 进程间通信(下)
-14.3 通信格式
-14.4 并发模型
-14.5 超时处理
-14.6 大系统小做(上)
--多选题
-14.7 大系统小做(下)
-14.8 架构层面的技术支持(上)
--单选题
-14.9 架构层面的技术支持(下)
-14.10 分布系统的关键能力
--多选题
-15.1 游戏人工智能综述
-15.2 人工智能在游戏中主要方法 上
--多选题
-15.3人工智能在游戏中主要方法 (下)
-15.4 人工智能在游戏制作中的应用领域1
--多选题
-15.5 人工智能在游戏制作中的应用领域2
-15.6 人工智能在游戏制作中的应用领域3
--多选题
-15.7 人工智能在游戏运营中的应用实践(上)
-15.8 人工智能在游戏运营中的应用实践(下)
--多选题
-16.1 游戏支撑系统(1)
--单选题
-16.2 游戏支撑系统(2)
--单选题
-16.3 游戏支撑系统(3)
--单选题
-16.4 游戏支撑系统(4)
--单选题
-16.5 游戏支撑系统(5)
-17.1 游戏逻辑服务器(上)
--单选题
-17.1 游戏逻辑服务器(下)
-17.2 外挂与反外挂(上)
-17.2 外挂与反外挂(下)
--多选题
-18.1运行环境
--18.1运行环境
--多选题
-18.2物理部署
--18.2物理部署
--多选题
-18.3系统的可运维性
--多选题
-18.4运维案列分析
--多选题