图形学常见概念小结

前言:本文记录《unity shader入门精要》和openGL相关学习过程中一些学习要点;

PBR流程

小结:一套基于自然界微平面理论、能量守恒、菲涅尔反射等的科学理论所实现的基于物理的渲染系统,包含一系列基于物理理论和基于感知经验的模型的BRDF双向反射分布模型(兰伯特反射模型、冯光照模型、菲涅尔模型等),以构建基于物理的材质、光照、适配的摄像机。PBR有金属值粗糙度工作流和镜面反射光泽度工作流,UE引擎只支持前者,金属值粗糙度工作流包括baseColor基色贴图、metallic金属度贴图和roughness粗糙度贴图,镜面反射光泽度工作流包括漫反射贴图、镜面反射贴图和光泽度贴图,因为对漫反射和镜面反射的数值设置过大容易做出违反能量守恒定律的材质,所以更容易出错。

PBR就是Physically-Based Rendering的缩写,意为基于物理的渲染,不仅擅长用来表现非常写实的材质,同时也能用来处理风格化的资源,

使用PBR有以下几个优点:
第一,用PBR方法创建材质更容易,创建材质属性时不再需要猜测,而是根据真实数据设置
第二,材质在所有光照条件下看起来都是正确的
第三,PBR提供了一种稳定的美术工作流程

PBR有两种主要的工作流(指数据以何种形式输入到引擎中)
一种是Metallic/Roughness(金属值/粗糙度);另一种是Specular/Glossiness(镜面反射/光泽度),Unity支持两种工作流,而UE4则只支持metallic工作流;
Metallic由于使用了统一的非金属F0值而减少了因非金属F0值出错的可能性而更易于创作,其占用的贴图内存也更少,是目前被采用最多的工作流程。但Metallic的缺点是无法控制非金属的F0值(在有些工具中,例如UE4,可以通过Specular输入来改变F0值),在低分辨率贴图中边缘瑕疵问题会比较明显。

最后我们总结一下PBR的关键要素
1.能量守恒,反射的光线永远不会比照到表面的入射光线更亮。
2.菲涅尔。非金属的F0值变动很小,只在2%-5%区间内;而金属的F0值范围在70%-100%。
3.Specular强度通过BRDF、roughness或者glossiness贴图和F0反射值来控制。
4.光照计算是在线性空间计算的。

摘自:10分钟了解PBR流程-PBR基本原理和概念

金属流和镜面反射流的区别

金属/粗糙度工作流(简写为M/R工作流)采用了三张贴图来表示PBR所需的参数:
baseColor(基色),RGB贴图,表示非导体(电介质)的反照率颜色(Albedo)或金属的F0,它不应该含有任何光照信息;
metallic(金属度),灰度贴图,可以视为一个遮罩,表示金属成分的占比:1表示100%的纯金属,0表示100%的非金属,metallic贴图可以用于表示金属-非金属的混合状态;
roughness(粗糙度),灰度贴图,数值越大越粗糙;

M/R工作流的优劣:

  • 非金属的F0固定为0.04,无法调整;
  • 主流的工作流,用途广泛;

镜面反射/光泽度工作流(简写为S/G工作流)
Diffuse(漫反射),即Albedo,RGB贴图,表示非金属的Albedo,如果是金属,Diffuse贴图给出的值是纯黑(0);
Specular(镜面反射),RGB贴图,定义金属和非金属的F0;
Glossiness(光泽度),灰度贴图,数值越大越光滑,跟M/R工作流的roughness刚好相反;

S/G工作流的优劣:

  • 可以对金属、非金属的F0自由调整,但是这也非常容易做出违反能量守恒定律的材质;
  • 两张RGB贴图,对性能的要求会更高;

公用的贴图为环境光吸收,法线和高度贴图。

摘自:两种不同的PBR工作流介绍

自然界材质原理:扩散与反射、半透明与透明、金属、菲涅尔、微表面等;

PBR材质系统包含一系列BRDF双向反射分布模型(分为基于物理理论和基于感知经验的模型):LamberTain兰伯特漫反射模型、Phong光照模型、Fresnel模型、Cook-Torrance模型、Ward模型、波动光学模型、数据驱动模型等;

UE引擎中的材质系统引入了各种BRDF函数理论模型,在每个Input中完成材质表现的一系列细节;

(所以说PBR就是基于物理理论的一套渲染系统

摘自:PBR材质系统原理简介

深入理解(专栏文章):

PBR理论和渲染原理:微平面理论、能量守恒、菲涅尔反射、线性空间和gamma校正、色调映射、物质的光学特性(金属和非金属)、PBR的范畴(基于物理的材质、光照、适配的摄像机)、光与非光学平坦表面的交互原理;

摘自:【基于物理的渲染(PBR)白皮书】(一) 开篇:PBR核心知识体系总结与概览

延伸:伽马空间与线性空间详解

渲染管线

顶点数据的输入—>顶点着色器—>曲面细分过程—>几何着色器—>图元组装—>裁剪剔除—>光栅化—>片段着色器—>混合测试

顶点数据
作用:为后面阶段提供处理的数据。
具体内容:送入到渲染管线的的数据包括顶点坐标,纹理坐标,顶点法线、顶点颜色等顶点属性和相对应的图元信息。
常见的图元信息有:点,线,线条,面。

顶点着色器
作用:进行坐标转换(虽然在这个阶段也会进行光照计算再光栅化着色,但是不够自然。所以一般再片段着色进行光照计算),输入单个顶点或属性,输出变换后的顶点。
具体内容:局部坐标——>世界坐标——>观察坐标——>裁剪坐标。

曲面细分(可选):
作用:增加物体表面三角形的数量。

几何着色器(可选):
作用:顶点或线扩展成一个多边形。输入一个完整的图元,输出一个或多个其他图元。

图元组装
作用:
1、输入的顶点组装成指点的图元。
2、进行裁剪背面剔除相关优化。
3、屏幕映射:透视除法,视口变化(这个在哪个阶段有争议)。

光栅化(现在是在窗口坐标):
作用:确定图元所覆盖的片段,利用顶点属性值得到片段的属性信息,然后送到片段着色器进行颜色计算。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值