Nov 07 2025
SmalBox -
【光照】Unity中的[經驗模型]
【從UnityURP開始探索遊戲渲染】專欄-直達
圖形學第一定律:“看起來對就對”
URP光照模型發展史
2018年:URP首次發佈(原LWRP),繼承傳統前向渲染的Blinn-Phong簡化版
2019年:URP 7.x引入Basic Shader的簡化光照模型
2020年:URP 10.x整合PBR核心(GGX+Smith)
2022年:URP 14.x新
遊戲開發
Nov 07 2025
SmalBox -
【光照】[自發光Emission]以UnityURP為例
【從UnityURP開始探索遊戲渲染】專欄-直達
自發光的基本原理
$Cemissive=Memissive$
自發光是物體表面主動發射光線的現象,在光照模型中通常作為獨立於外部光源的附加項。其核心特點是不受其他光照影響,但可以影響周圍環境。
實現流程
定義發射顏色和強度:確定基礎發光顏色和亮度
紋理採樣 可選:使用紋理控制發射圖案
HDR處理:支持高於1.0的亮度值
遊戲開發
Nov 07 2025
SmalBox -
【光照】[漫反射diffuse]以UnityURP為例
【從UnityURP開始探索遊戲渲染】專欄-直達
漫反射基本流程
漫反射遵循蘭伯特定律(Lambert's Cosine Law),其核心流程如下:
法線準備:獲取表面法線向量(通常來自頂點法線或法線貼圖)
光源方向計算:確定光源到表面點的單位方向向量
點積運算:計算法線向量與光源方向的點積(N·L)
能量約束:使用saturate函數將結果限制在[0,1]範圍
遊戲開發
Nov 07 2025
SmalBox -
【光照】[漫反射]UnityURP蘭伯特能量守恆嗎?
【從UnityURP開始探索遊戲渲染】專欄-直達
蘭伯特漫反射的能量守恆性
能量守恆基本原理
在物理正確的渲染中,能量守恆要求:
表面反射的光能總量 ≤ 入射光能
漫反射+高光反射 ≤ 1.0
沒有能量憑空產生或消失
經典蘭伯特模型的能量守恆問題
傳統蘭伯特漫反射公式:
$漫反射 = 表面反照率 × max(0, N·L)$
不守恆的原因:
缺乏歸一化因子:
遊戲開發
Nov 07 2025
SmalBox -
【光照】[漫反射]UnityURP蘭伯特有光照衰減嗎?
【從UnityURP開始探索遊戲渲染】專欄-直達
光照衰減的基本原理
在物理正確的光照模型中,衰減需要遵循兩個基本定律:
平方反比定律:光強與距離平方成反比 (I ∝ 1/r²)
餘弦定律:表面接收的光強與入射角餘弦成正比 (I ∝ cosθ)
經典蘭伯特模型的衰減處理
標準蘭伯特公式
$漫反射 = 表面顏色 * 表面反照率 * max(0, N·L)$
衰減實現分析
遊戲開發
Nov 07 2025
SmalBox -
【光照】[高光反射specular]以UnityURP為例
【從UnityURP開始探索遊戲渲染】專欄-直達
高光反射的基本流程
經驗光照模型中的高光反射通常遵循以下流程:
入射光計算:確定光源方向和強度
視角向量計算:確定觀察者方向
反射向量計算:根據表面法線計算理想反射方向
高光強度計算:使用特定模型計算高光反射強度
最終合成:將高光反射與漫反射和環境光結合
主要高光反射模型及實現
Phong模型 (1975)
遊戲開發
Nov 07 2025
SmalBox -
【光照】[環境光ambient]以UnityURP為例
【從UnityURP開始探索遊戲渲染】專欄-直達
環境光的基本處理流程
$Cambient$
環境光采集:獲取場景環境光照信息
環境光遮蔽:計算環境光遮擋關係
環境光反射:根據材質屬性反射環境光
環境光混合:與其他光照成分合成最終顏色
主要環境光模型及實現
恆定環境光(Constant Ambient)
實現原理:
$環境光 = 環境光顏色 ×
遊戲開發
Nov 07 2025
SmalBox -
【光照】Unity中的[物理模型]PBR
【從UnityURP開始探索遊戲渲染】專欄-直達
PBR(Physically Based Rendendering)的核心內容與BRDF應用
PBR是一種基於物理光學原理的渲染框架,其核心是通過物理可測量的材質屬性和真實的光照計算規則實現跨環境一致的真實感渲染。
PBR四大核心支柱
模塊
作用
關鍵參數
材質參數系統
遊戲開發
Nov 07 2025
SmalBox -
【光照】[物理模型]中的[BRDF]是什麼?
【從UnityURP開始探索遊戲渲染】專欄-直達
雙向反射分佈函數 Bidirectional Reflectance Distribution Function 解釋當光線從某個方向照射到一個表面時,有多少光線被反射、反射方向有哪些。BRDF大多使用一個數學公式表示,並提供一些參數來調整材質屬性。
BRDF(雙向反射分佈函數)是計算機圖形學和光學中描述物體表面反射特性的核心數學模型,其定義
遊戲開發
Nov 07 2025
SmalBox -
【光照】[PBR][漫反射]實現方法對比
【從UnityURP開始探索遊戲渲染】專欄-直達
URP BRDF漫反射方法對比
方法名稱
數學公式
特點
性能消耗
適用場景
Lambert
$L_d = k_d * max(0, N·L)$
經典模型,能量不守恆
★☆☆
移動端低配
Half-Lambert
$L_d =
遊戲開發
Nov 07 2025
SmalBox -
【光照】[PBR][鏡面反射]實現方法解析
【從UnityURP開始探索遊戲渲染】專欄-直達
微表面理論的核心概念
微表面理論是一種物理渲染模型,它將宏觀表面視為由無數微觀幾何細節(微表面)組成的複雜結構。這一理論是Unity URP中PBR(基於物理的渲染)實現的基礎。
基本假設
微觀結構:
宏觀表面由大量隨機方向的微觀小平面組成
每個微表面都是完美的鏡面反射體
微表面尺度小於單個像素但大於光波長
遊戲開發
Nov 07 2025
SmalBox -
【光照】[PBR][法線分佈]GGX實現方法對比
【從UnityURP開始探索遊戲渲染】專欄-直達
GGX的全稱與基本概念
GGX的全稱:Ground Glass X (或 Generalized Trowbridge-Reitz Distribution)
首次提出:Walter等人在2007年發表的論文《Microfacet Models for Refraction through Rough Surfaces》中提出
GGX
遊戲開發
Nov 07 2025
SmalBox -
【光照】[PBR][法線分佈]為何不選Beckmann
【從UnityURP開始探索遊戲渲染】專欄-直達
Beckmann分佈函數原理
Beckmann分佈函數是最早用於微表面模型的法線分佈函數之一,由Paul Beckmann在1963年的光學研究中首次提出。它描述了表面微平面法線分佈的統計規律,是計算機圖形學中最早的物理準確NDF實現。
數學原理
Beckmann分佈函數的標準形式為:
$D_{Beckmann}(h)=\frac1{πm2(
遊戲開發
Nov 07 2025
SmalBox -
【光照】[PBR][幾何遮蔽]實現方法對比
【從UnityURP開始探索遊戲渲染】專欄-直達
幾何遮蔽的基本流程
幾何遮蔽(G)在BRDF中用於模擬微表面間的自陰影和遮蔽效應,其計算流程通常分為三個步驟:
遮蔽項計算:光線入射方向的遮擋概率
陰影項計算:視線方向的遮擋概率
聯合計算:將兩者結合形成完整的幾何函數
主要幾何遮蔽模型
1. Cook-Torrance模型
原理:
基於V形微槽假設
使用簡單的
遊戲開發
Oct 02 2025
SmalBox -
【光照】[PBR][菲涅爾]實現方法對比
【從UnityURP開始探索遊戲渲染】專欄-直達
菲涅爾效應基本流程
菲涅爾效應(F)在BRDF中描述光線在不同入射角下的反射率變化,其計算流程通常分為三個步驟:
基礎反射率確定:0°入射角時的反射率(F₀)
角度依賴計算:根據入射角變化調整反射率
金屬/非金屬處理:區分導體和絕緣體的不同表現
主要菲涅爾模型實現
1. Schlick近似模型
原理:
對完整菲涅
渲染
,
unity3d
,
圖形學