Loading
S7ARRY_SPACE
0%
INITIALIZING
Album Cover
焚蝶
铁痕电台
0:00
Xiaohongshu
PBR 学习总结:实战篇
DOC_ID // 373fd5ONLINE

PBR 学习总结:实战篇

2026-3-28
UPDATED: 2026-6-10
知识总结
1435 CHARS
#UNITY#图形学
S7ARRY
type
Post
status
Published
date
Mar 28, 2026
slug
pbr02
summary
tags
Unity
图形学
category
知识总结
icon
password

零、前言

上一篇介绍了PBR的理论知识,这篇使用Unity进行实战,先来看下效果:
notion image

一、工作流

在PBR中,为了在不同的光照环境下保持材质表现的一致性和真实感,主要分为了两种工作流:
  • 金属/粗糙度(Metallic/Roughness)
  • 镜面反射/光泽度(Specular/Glossiness)

1. 金属 / 粗糙度工作流 (Metallic/Roughness)

这是目前游戏引擎中最常用的工作流
贴图:
  • Base Color(基础色): 包含非金属的漫反射颜色和金属的镜面反射颜色(需要配合metallic将diffuse和spcular分离)
  • Metallic(金属度): 一张黑白图(通常建议只用纯黑或纯白)。白色(1.0)表示金属,黑色(0.0)表示非金属(绝缘体)
  • Roughness(粗糙度): 描述表面的平整程度。1.0 为完全粗糙(漫反射散射),0.0 为完全平滑(镜面反射)。

2. 镜面反射/光泽度工作流 (Specular/Glossiness)

更传统的 PBR 方案,常见于影视渲染和较早的游戏渲染管线中
贴图:
  • Diffuse(漫反射):仅包含非金属的漫反射颜色
  • Specular(镜面反射):一张 RGB 彩色贴图。控制材质表面的反射颜色和强 度
  • Glossiness(光泽度): 与 Roughness 相反。1.0 表示非常平滑,0.0 表示非常粗糙

本文中使用金属、粗糙度的工作流,来制作

二、项目设置

1. 贴图设置

  • Albedo、BaseMap、DiffuseMap、SpecularMap需要勾选sRGB
  • Roughness、Metallic、AO等是线性空间计算的,不要勾选sRGB
  • Normal在Unity中选择Normal Map

2. 后处理设置

  • ToneMapping - ACES
  • ColorGrading 调下色(处理ACES后过暗)
  • Bloom(太闪不好看)
  • 暗角
  • DoF

3. 摄像机设置

  • 调整FOV :20~30
  • 剔除

三、代码

不要忘记加上其他的Pass

面板参数

如下

向量、贴图

BRDF参数

在金属粗糙度工作流中,从BaseMap/Albedo中获取DiffuseColor和SpcularColor

直接光

漫反射

镜面反射

D项
F项
V项
V项就是将 公式中的分母和G项放在一起计算

整合

多光源和主光计算逻辑一样,for循环处理每一盏灯

间接光

漫反射

球谐函数,模拟环境光漫反射

镜面反射

a. 预过滤环境贴图

采样CubeMap的MipMap

b. 环境BRDF

流派1:LUT
流派2:解析拟合

整合


完结撒花~
后续可能看情况补一下各个效果图
NAVIGATION // Related Articles
Loading...