基于物理的渲染(PBR):让虚拟世界拥有“真实灵魂“的革命

发布时间:2026/5/27 23:24:52

基于物理的渲染(PBR):让虚拟世界拥有“真实灵魂“的革命 一、从一颗金属球说起请你回想一下十几年前的3D游戏长什么样。那时候的金属看起来像塑料那时候的木头看起来像橡皮那时候的皮肤看起来像蜡像那时候的水面看起来像绿色果冻。每个材质都差不多但又都不太对。你说不出哪里不对但你的眼睛知道——“这不像真的”。然后大约从2013年开始游戏画面突然进入了一个新时代。《神秘海域4》里的金属枪管能看到金属特有的反光和被磨损的痕迹《战神》里奎托斯的皮肤能看到皮下细微的散射和疤痕的凹凸《荒野大镖客2》里的雨水能让石头湿润、让木头变深、让皮革反光《赛博朋克2077》里的霓虹能在金属、玻璃、塑料、布料上呈现完全不同的反射。突然之间一切都对了。这场革命的背后是一个改变图形学历史的技术基于物理的渲染Physically Based Rendering, PBR。它不是某一个具体算法而是一整套让虚拟材质遵循真实物理规律的渲染哲学。今天让我慢慢讲给你听这套魔法是怎么工作的。二、PBR 之前渲染的野蛮时代要理解 PBR 有多重要先得知道 PBR 之前的世界有多野蛮。经典的 Phong/Blinn-Phong 光照模型20世纪70年代图形学先驱们发明了第一批光照模型。其中最著名的是Phong 模型物体的最终颜色 环境光 漫反射 镜面反射每个部分都有一个手调的参数环境光多少美术拍脑袋定一个漫反射强度美术拍脑袋定一个高光多锐利美术拍脑袋定一个高光颜色美术拍脑袋定一个这套方法简单、快、好用统治了图形学三十年。但它有一个致命问题它跟物理一毛钱关系都没有。它只是看起来像而不是真的是。这种野蛮带来的问题问题1材质在不同光照下表现不一致美术在室内灯光下调好了一个材质看起来很漂亮。但物体一拿到户外的阳光下看起来就不对了——太亮了、太假了、高光位置不对。每换一个场景材质就要重调一次。美术加班加到崩溃。问题2能量不守恒物理规律告诉我们物体反射出去的光不可能比照到它的光更多。但 Phong 模型不管这套——美术调参数的时候完全可以让一个物体反射 200% 的光亮得像太阳。这在视觉上会产生奇怪的发光感。问题3金属和非金属混为一谈现实里金属和非金属是完全不同的两种东西金属所有反光都带颜色金子反金光、铜反铜光非金属反光是白色的不管什么颜色的塑料高光都是白的但 Phong 模型把它们当一种东西处理。结果就是——塑料看起来像金属金属看起来像塑料。问题4调参靠玄学每个材质要调几十个参数每个参数没有物理意义全靠美术感觉。一个材质调好了没人能解释为什么这样调。要做一个游戏的几百种材质全靠美术的经验和直觉。这种状态显然不能持续下去。三、PBR 革命让物理学进场2010年左右一群图形学家开始反思既然我们要模拟真实世界为什么不让光照模型遵循真实的物理规律呢于是 PBR 诞生了。它的核心思想是光的反射不是调出来的而是由物体的物理属性算出来的。美术不再调高光多少、光泽度多少这些抽象参数。他们改为定义物体的物理属性它是金属还是非金属它的表面有多粗糙它的基础颜色是什么然后让算法根据物理规律自动计算出在任何光照下的表现。结果是惊人的一个材质在任何光照下都看起来对室内调好的金属拿到阳光下自然就成了正确的样子美术不再需要猜他们只需要描述真实四、PBR 的四大物理支柱PBR 之所以真实是因为它建立在四个物理规律之上。支柱一能量守恒物体反射的光加起来不能超过它接收的光。这听起来是常识但 PBR 之前的模型从不遵守。PBR 严格执行这个原则漫反射多了镜面反射就少镜面反射强了漫反射就弱加起来永远 ≤ 1这就是为什么 PBR 的材质不会出现过曝的廉价感——它在物理上不可能。支柱二微表面理论Microfacet Theory这是 PBR 的核心思想。任何看起来光滑的表面放大到微观其实都是凹凸不平的。想象一面光滑的镜子。在显微镜下它其实也是布满微小起伏的。PBR 的关键洞察是粗糙的表面微表面朝向杂乱反射光向四面八方散开漫反射多、高光糊光滑的表面微表面朝向一致反射光集中在一个方向高光锐利所以**“光滑和粗糙”**本质上是同一种物理过程只是微观结构不同。这个理论用一个数学函数描述法线分布函数NDF。常用的是GGX 分布——它能完美模拟从超光滑到超粗糙的所有材质。支柱三菲涅尔效应Fresnel Effect所有物体你斜着看的时候反光都会变强。这是一个非常重要、但很多人没注意到的物理现象。举个例子你正面看湖水能看到水底你斜着看湖水水面变得像镜子或者你正面看一张桌子看到的是桌面的颜色你斜着看桌面能看到桌面的反光这就是菲涅尔效应。物理学上叫边缘反射增强。PBR 用一个叫Schlick 近似的公式能在 GPU 上非常便宜地计算这个效应。加上菲涅尔之后材质立刻变得真实十倍——水变成了真的水玻璃变成了真的玻璃皮革有了真的皮革感。支柱四金属与非金属的二分法PBR 的另一个重要洞察世界上的材质只分两种金属导体和非金属绝缘体。它们的物理行为完全不同性质金属非金属漫反射没有全是反射有高光颜色带颜色金、铜、银白色反射率60% ~ 90%2% ~ 5%所以 PBR 引入了一个关键参数金属度Metallic。Metallic 0→ 非金属塑料、木头、布料、皮肤Metallic 1→ 金属铁、铜、金、银简单粗暴但符合物理规律。五、PBR 的调料表核心参数PBR 把材质简化成几个直观的物理参数美术调参变得前所未有的简单。1. Base Color / Albedo基础颜色物体本身的颜色不包含光照信息。注意是纯色不能画阴影、不能画高光。PBR 之前美术经常把环境光、阴影、高光都画在颜色图里。结果就是——这个材质只在那一个光照下好看换个环境就崩了。PBR 强制要求颜色图就是颜色图别夹带私货。光照交给引擎来算。2. Roughness粗糙度表面有多粗糙范围 0 ~ 1。Roughness 0→ 镜面玻璃、抛光金属Roughness 0.5→ 半光泽塑料、瓷器Roughness 1→ 完全粗糙橡胶、毛毡这是 PBR 里最重要的参数之一。同样的颜色改变粗糙度就能从抛光金属变成磨砂金属。3. Metallic金属度是不是金属通常是 0 或 1中间值很少用。非金属的高光是白色的金属的高光颜色由 Base Color 决定。所以一个金材质的 Base Color 应该是金色一个铜材质应该是铜色。4. Normal法线贴图表面的微观凹凸方向。虽然不严格属于 PBR 的物理参数但它是 PBR 表现细节的关键工具。5. AO环境光遮蔽每个点被遮挡的程度缝隙处更暗。让缝隙看起来有阴影模拟微观遮挡。6. Emissive自发光物体自身发出的光。灯泡、霓虹灯、岩浆、屏幕——它们自己会亮不依赖外部光照。工作流Metallic / RoughnessM/R主流的 PBR 工作流就用上面这几个参数。一个材质 一组贴图Base Color Roughness Metallic Normal AO简单、清晰、物理正确。整个游戏行业从 2015 年左右开始全面转向这个工作流。六、PBR 的宇宙第一公式BRDF聊到这里必须提一下 PBR 背后的数学。PBR 的核心是一个函数BRDFBidirectional Reflectance Distribution Function双向反射分布函数。听起来很吓人但思想简单给定入射光的方向和观察方向告诉我有多少光会被反射到观察者眼里。PBR 常用的 BRDF 叫Cook-Torrance BRDF由三部分组成BRDF (D × F × G) / (4 × cosθᵢ × cosθₒ)D法线分布函数NDF描述微表面的朝向分布GGXF菲涅尔项描述边缘增强Schlick 近似G几何遮蔽项描述微表面之间的自遮挡Smith三个函数一起工作描述了光线打到一个微观粗糙表面上的完整物理过程。不需要记住公式记住一句话就行PBR 不是画出来的光照而是算出来的光照。七、PBR 让世界变得对了PBR 普及后3D 世界发生了肉眼可见的变化。1. 材质终于像真材实料金属看起来真的像金属木头看起来真的像木头皮肤看起来真的像皮肤玻璃看起来真的像玻璃不再是塑料感的所有东西。2. 一套材质到处都好看美术调好的材质拿到不同的场景、不同的光照下自动呈现正确效果。阴天的金属是阴天的样子雨后的金属是雨后的样子烛光下的金属是烛光下的样子——不用重调物理自动算。3. 美术工作流的解放以前一个材质要调几十个抽象参数现在只需要这是什么颜色Base Color是金属吗Metallic有多粗糙Roughness三个问题搞定一个材质。Substance Painter 这样的工具更是把材质制作变成了画画一样的艺术。4. 跨引擎、跨平台的统一标准PBR 几乎成了整个行业的通用语言。在 Unreal 里做的材质能直接拿到 Unity 里用在 Substance 里做的材质能直接导出到任何引擎在 Blender 里渲染的效果在游戏引擎里基本一致这是图形学历史上第一次有这样的统一标准。八、PBR 的进阶玩法基础的 PBR 已经很强了但还有更高阶的玩法。1. IBL基于图像的光照PBR 的灵魂伴侣。用一张全景HDR图片作为环境光源。效果物体能反射整个场景的环境金属表面能看到周围的天空、建筑、植物。这是 PBR 之所以这么真实的关键——真实的光线来自四面八方不是只有一两盏灯。2. 次表面散射Subsurface Scattering, SSS光线钻进物体内部散射后再出来。适用于皮肤、蜡烛、玉石、牛奶、树叶。这是为什么现代游戏里的皮肤看起来真的像皮肤——光线在皮下散射让脸颊有那种红润的透光感。3. 清漆层Clear Coat物体有两层底层材质 一层透明亮漆。适用于汽车漆面、抛光木头、指甲油。汽车漆面在车展上的那种双层反光就是清漆层效果。4. 各向异性Anisotropic不同方向的反光不一样。适用于拉丝金属、头发、丝绸、CD表面。拉丝金属水壶上那种沿着拉丝方向延展的高光就是各向异性。5. 透射Transmission光线能穿过物体。适用于玻璃、水、宝石、半透明塑料。6. 能量补偿Energy CompensationPBR 早期有个小问题粗糙金属会显得太暗因为多次反射的能量没算进去。现代 PBR 引入能量补偿项确保能量真正守恒。九、PBR 的翻车现场PBR 虽然好但用错了也会出问题。翻车 1Base Color 太鲜艳或太暗物理上Base Color 的取值是有范围的最暗的非金属沥青≈ 0.02最亮的非金属雪≈ 0.95不能纯黑0也不能纯白1很多新手把 Base Color 拉满黑或拉满白结果材质看起来很假。翻车 2金属度的中间值Metallic应该是0 或 1中间值物理上不存在。但很多新手喜欢调成 0.5结果看起来像生锈的塑料——既不像金属也不像非金属。正确的做法用 mask 区分金属和非金属部分每部分内部都是 0 或 1。翻车 3粗糙度太低很多新手把所有材质的 Roughness 都调到 0.1觉得亮亮的好看。但真实世界几乎没有这么光滑的东西。结果就是所有材质看起来都像抛光过的塑料假得不行。翻车 4忘了考虑环境光PBR 严重依赖环境光IBL。如果场景里只有一盏点光源、没有 IBLPBR 材质会显得很暗、很死。十、PBR 的哲学聊到这里让我们退后一步看看 PBR 的本质。PBR 革命性的地方不在于它更复杂而在于它更简单。它把调参的玄学变成了描述真实。它告诉我们当你试图画出真实你只会越来越假。当你试图理解真实真实才会自然显现。这跟很多领域的智慧是相通的。画家学会了解剖学画的人才像作家理解了人性写的故事才打动人建筑师理解了力学盖的房子才美。真实是有规律的。理解规律才能再现真实。PBR 不是图形学的终点但它是图形学的一次思想成熟。从这之后我们不再伪造世界我们开始理解世界然后让计算机按照世界的规则自己生成画面。这是从工艺到科学的飞跃。十一、写在最后下次当你打开一款现代3D游戏——看到主角金属盔甲在火光下闪烁着真实的反光看到雨后的街道呈现出湿润的光泽看到木头桌面在阳光下展现出温暖的木纹看到角色脸上的皮肤透着真实的红润——请记得这一切的背后是一整套物理学的智慧。是几代图形学家把光学、材料学、数学翻译成了 GPU 能理解的语言。是 PBR 这场宁静的革命让虚拟世界真正有了真实的灵魂。“真实不是模仿出来的是计算出来的。”✨“光的本质不变所以基于物理的渲染才能在任何场景下都对。”“PBR 教会我们理解世界比模仿世界更接近世界。”那束打在金属上、被反射、被散射、被吸收的光——不是美术画上去的是它本来就应该在那里。而 PBR就是那把让它回到该在的地方的钥匙。

相关新闻