由浅入深学习PBR的原理和实现part_01(理论知识)转载
Hello .大家好
今天是2020年02月26日星期三
前言
1.1 pbr
PBR全称Physically Based Rendering,译成中文是基于物理的渲染,是当今非常流行的一种拟真渲染技术。
国内外研究它的人数不胜数,由此出现的书籍、论文、文章等资料也非常多,其中最富盛名的非《Physically Based Rendering From Theory to Implementation》莫属,它非常系统全面深入地介绍了PBR的底层原理、渲染实现、公式推导、进阶主题等内容

上图:《Physically Based Rendering From Theory to Implementation, 3rd Edition》的封面,总页数1270。
但是,这些资料大多存在一些问题,它们要么太简单太笼统,不能系统全面地介绍PBR的原理和实现;要么太全面太复杂,动辄上千页,对刚踏入PBR技术领域的人不够友好,令人望而却步。
1.3 本文内容及特点
本文有以下特点:
章节分层,层层递进,承上启下。
引入大量精美配图,使PBR教学生动有趣。
采用Markdown语法,图文编排更精美和统一。
采用LATEX表达数学公式。
语句精炼,浅显易懂。
丰富多样的举例。
紧紧围绕PBR的核心原理,避免节外生枝。
本篇文章主要有以下章节内容,分别从不同层次不同侧重点描述了PBR的原理、实现、应用,面向的群体也不一样:
初阶:PBR基本认知和应用
初级程序员
美术
初级TA(技术美术)
想初步了解PBR基本认知和应用的人
介绍PBR的概念、历史、应用。
内容:
面向:
中阶:PBR基本原理和实现
中级程序员
TA
想了解PBR实现的人
介绍PBR的基本原理和商业引擎的实现。
内容:
面向:
进阶:PBR核心理论和原理
进阶程序员
对PBR底层原理感兴趣的人
深入介绍PBR的核心理论和渲染原理。
内容:
面向:
高阶:PBR关联理论和推导
高阶程序员
想全面且透彻了解PBR底层原理及理论的人
介绍跟PBR核心理论相关的理论原理及推导。
内容:
面向:
从上面可以看出,每个章节都是承上启下,层层递进地剖析PBR原理及实现,从而达到由浅入深介绍PBR的目的。读者可以根据目前的水平,以及想要了解的程度,有针对性有选择性地阅读不同的章节。其实本文标题更适合取为《分层渐进式学习PBR的原理和实现》,但,还是现在的标题浅显易懂。
需要注意的是,本文将围绕PBR的核心理论做阐述,以实时渲染领域的Cook-Torrance的BRDF光照模型为实现案例。其它旁系理论不在本文探讨的范围,可以查阅其它文献。
二. 初阶:PBR基本认知和应用
2.1.1 PBR概念
PBR(Physically Based Rendering)译成中文是基于物理的渲染。它是利用真实世界的原理和理论,通过各种数学方法推导或简化或模拟出一系列渲染方程,并依赖计算机硬件和图形API渲染出拟真画面的技术。
2.1.2 与物理渲染的差别
那它为什么不叫物理渲染(Physical Rendering)呢?
物理渲染(Physical Rendering)是指跟真实世界完全一致的计算机渲染效果。
为了回答这个问题,先了解一下真实世界的成相原理。
真实世界的物体有着各自的材质属性和表面特征,它们受到各种局部灯光和全局环境光的影响,而且它们之间又相互影响,最终这些信息通过光波的形式进入复杂的人眼构造,刺激视神经形成生物信号进入大脑感光皮层,最终让人产生视觉认知。(下图)

有论文指出,绝大多数人的眼睛可以接收相当于5亿~10亿个像素的信息量。目前主流的分辨率才百万~千万级别,加上显示器亮度范围和屏幕像素间距的限制,远远达不到亿级像素的渲染和亮度表示范围。
基于现阶段的知识水平和硬件水平,还不能渲染跟真实世界完全一致的效果,只能一定程序上模拟接近真实世界的渲染画面,故而叫基于物理的渲染(Physically Based Rendering),而非物理渲染(Physical Rendering)。
2.1.3 PBR的特征
这节阐述的是PBR呈现的效果特征,而非底层物理原理的特征。
相比传统的Lambert着色和Phong着色,PBR着色在效果上有着质的提升,可以表示更多更复杂的材质特征:
表面细节
物体粗糙度
区别明显的金属和绝缘体
物体的浑浊程度
菲涅尔现象:不同角度有不同强度的反射光
半透明物体
多层混合材质
清漆效果
其它更复杂的表面特征

Phong模型着色效果,只能简单地表现理想模型的漫反射和高光,渲染出的效果跟真实世界相差甚远。

更多内容 感兴趣关注公众号 排版太麻烦了
更多内容 感兴趣关注公众号 排版太麻烦了
文章 完整版本 公众号
