博客 / 列表

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新

遊戲開發

SmalBox - 【光照】[自發光Emission]以UnityURP為例

【從UnityURP開始探索遊戲渲染】專欄-直達 自發光的基本原理 $Cemissive=Memissive$ 自發光是物體表面主動發射光線的現象,在光照模型中通常作為獨立於外部光源的附加項。其核心特點是不受其他光照影響,但可以影響周圍環境。 實現流程 ‌定義發射顏色和強度‌:確定基礎發光顏色和亮度 ‌紋理採樣 可選‌:使用紋理控制發射圖案 ‌HDR處理‌:支持高於1.0的亮度值

遊戲開發

SmalBox - 【光照】[漫反射diffuse]以UnityURP為例

【從UnityURP開始探索遊戲渲染】專欄-直達 漫反射基本流程 漫反射遵循蘭伯特定律(Lambert's Cosine Law),其核心流程如下: ‌法線準備‌:獲取表面法線向量(通常來自頂點法線或法線貼圖) ‌光源方向計算‌:確定光源到表面點的單位方向向量 ‌點積運算‌:計算法線向量與光源方向的點積(N·L) ‌能量約束‌:使用saturate函數將結果限制在[0,1]範圍

遊戲開發

SmalBox - 【光照】[漫反射]UnityURP蘭伯特能量守恆嗎?

【從UnityURP開始探索遊戲渲染】專欄-直達 蘭伯特漫反射的能量守恆性 ‌能量守恆基本原理‌ 在物理正確的渲染中,能量守恆要求: 表面反射的光能總量 ≤ 入射光能 漫反射+高光反射 ≤ 1.0 沒有能量憑空產生或消失 ‌經典蘭伯特模型的能量守恆問題‌ 傳統蘭伯特漫反射公式: $漫反射 = 表面反照率 × max(0, N·L)$ ‌不守恆的原因‌: ‌缺乏歸一化因子‌:

遊戲開發

SmalBox - 【光照】[漫反射]UnityURP蘭伯特有光照衰減嗎?

【從UnityURP開始探索遊戲渲染】專欄-直達 光照衰減的基本原理 在物理正確的光照模型中,衰減需要遵循兩個基本定律: ‌平方反比定律‌:光強與距離平方成反比 (I ∝ 1/r²) ‌餘弦定律‌:表面接收的光強與入射角餘弦成正比 (I ∝ cosθ) 經典蘭伯特模型的衰減處理 標準蘭伯特公式 $漫反射 = 表面顏色 * 表面反照率 * max(0, N·L)$ 衰減實現分析 ‌

遊戲開發

SmalBox - 【光照】[高光反射specular]以UnityURP為例

【從UnityURP開始探索遊戲渲染】專欄-直達 高光反射的基本流程 經驗光照模型中的高光反射通常遵循以下流程: ‌入射光計算‌:確定光源方向和強度 ‌視角向量計算‌:確定觀察者方向 ‌反射向量計算‌:根據表面法線計算理想反射方向 ‌高光強度計算‌:使用特定模型計算高光反射強度 ‌最終合成‌:將高光反射與漫反射和環境光結合 主要高光反射模型及實現 Phong模型 (1975)

遊戲開發

SmalBox - 【光照】[環境光ambient]以UnityURP為例

【從UnityURP開始探索遊戲渲染】專欄-直達 環境光的基本處理流程 $Cambient$ ‌環境光采集‌:獲取場景環境光照信息 ‌環境光遮蔽‌:計算環境光遮擋關係 ‌環境光反射‌:根據材質屬性反射環境光 ‌環境光混合‌:與其他光照成分合成最終顏色 主要環境光模型及實現 恆定環境光(Constant Ambient) ‌實現原理‌: $環境光 = 環境光顏色 ×

遊戲開發

SmalBox - 【光照】Unity中的[物理模型]PBR

【從UnityURP開始探索遊戲渲染】專欄-直達 PBR(Physically Based Rendendering)的核心內容與BRDF應用‌ PBR是一種基於物理光學原理的渲染框架,其核心是通過‌物理可測量的材質屬性‌和‌真實的光照計算規則‌實現跨環境一致的真實感渲染。 ‌PBR四大核心支柱‌ 模塊 作用 關鍵參數 ‌材質參數系統

遊戲開發

SmalBox - 【光照】[物理模型]中的[BRDF]是什麼?

【從UnityURP開始探索遊戲渲染】專欄-直達 雙向反射分佈函數 Bidirectional Reflectance Distribution Function 解釋當光線從某個方向照射到一個表面時,有多少光線被反射、反射方向有哪些。BRDF大多使用一個數學公式表示,並提供一些參數來調整材質屬性。 BRDF(雙向反射分佈函數)是計算機圖形學和光學中描述物體表面反射特性的核心數學模型,其定義

遊戲開發

SmalBox - 【光照】[PBR][漫反射]實現方法對比

【從UnityURP開始探索遊戲渲染】專欄-直達 URP BRDF漫反射方法對比 方法名稱 數學公式 特點 性能消耗 適用場景 Lambert $L_d = k_d * max(0, N·L)$ 經典模型,能量不守恆 ★☆☆ 移動端低配 Half-Lambert $L_d =

遊戲開發

SmalBox - 【光照】[PBR][鏡面反射]實現方法解析

【從UnityURP開始探索遊戲渲染】專欄-直達 微表面理論的核心概念 微表面理論是一種物理渲染模型,它將宏觀表面視為由無數微觀幾何細節(微表面)組成的複雜結構。這一理論是Unity URP中PBR(基於物理的渲染)實現的基礎。 基本假設 ‌微觀結構‌: 宏觀表面由大量隨機方向的微觀小平面組成 每個微表面都是完美的鏡面反射體 微表面尺度小於單個像素但大於光波長

遊戲開發

SmalBox - 【光照】[PBR][法線分佈]GGX實現方法對比

【從UnityURP開始探索遊戲渲染】專欄-直達 GGX的全稱與基本概念 ‌GGX的全稱‌:Ground Glass X (或 Generalized Trowbridge-Reitz Distribution) ‌首次提出‌:Walter等人在2007年發表的論文《Microfacet Models for Refraction through Rough Surfaces》中提出 GGX

遊戲開發

SmalBox - 【光照】[PBR][法線分佈]為何不選Beckmann

【從UnityURP開始探索遊戲渲染】專欄-直達 Beckmann分佈函數原理 Beckmann分佈函數是最早用於微表面模型的法線分佈函數之一,由Paul Beckmann在1963年的光學研究中首次提出。它描述了表面微平面法線分佈的統計規律,是計算機圖形學中最早的物理準確NDF實現。 數學原理 Beckmann分佈函數的標準形式為: $D_{Beckmann}(h)=\frac1{πm2(

遊戲開發

SmalBox - 【光照】[PBR][幾何遮蔽]實現方法對比

【從UnityURP開始探索遊戲渲染】專欄-直達 幾何遮蔽的基本流程 幾何遮蔽(G)在BRDF中用於模擬微表面間的自陰影和遮蔽效應,其計算流程通常分為三個步驟: ‌遮蔽項計算‌:光線入射方向的遮擋概率 ‌陰影項計算‌:視線方向的遮擋概率 ‌聯合計算‌:將兩者結合形成完整的幾何函數 主要幾何遮蔽模型 1. Cook-Torrance模型 ‌原理‌: 基於V形微槽假設 使用簡單的

遊戲開發

SmalBox - 【URP】Unity[後處理]鏡頭畸變LensDistortion

【從UnityURP開始探索遊戲渲染】專欄-直達 Lens Distortion 效果概述 Lens Distortion 是 Unity URP 後處理系統中的核心組件之一,用於模擬真實相機鏡頭的光學畸變現象。這種效果通過扭曲渲染畫面邊緣,能夠創造出桶形畸變(Barrel Distortion)或枕形畸變(Pincushion Distortion)等視覺效果,廣泛應用於電影感營造、科幻風

遊戲開發 , unity3d , 圖形學

SmalBox - 【URP】Unity[後處理]膠片顆粒FilmGrain

【從UnityURP開始探索遊戲渲染】專欄-直達 Film Grain的定義與作用 Film Grain是一種模擬傳統攝影膠片顆粒感的後期處理效果,通過添加隨機噪點紋理增強畫面的藝術表現力。其核心用途包括: 復古風格模擬:重現膠片攝影的顆粒質感,增強懷舊氛圍 畫面細節強化:掩蓋低分辨率紋理的瑕疵,提升視覺豐富度 電影感塑造:配合色調映射、色差等效果構建電影級視覺風格 發展歷史

遊戲開發 , unity3d , 圖形學

SmalBox - 【URP】Unity[後處理]景深DepthOfField

【從UnityURP開始探索遊戲渲染】專欄-直達 Unity URP中的景深(Depth of Field)是一種模擬真實相機光學特性的後處理效果,通過模糊近處或遠處的物體來突出焦點區域,增強畫面層次感和真實感。其發展經歷了從Built-in管線的基礎實現到URP/HDRP的物理化演進過程,早期採用高斯模糊近似,現代則引入散景(Bokeh)等更接近真實光學特性的算法。 核心作用 ‌視覺引

遊戲開發 , unity3d , 圖形學

SmalBox - 【URP】Unity[後處理]顏色查詢ColorLookup

【從UnityURP開始探索遊戲渲染】專欄-直達 技術定義與核心作用 ColorLookup是基於LUT(Lookup Table)技術的顏色映射系統,通過預定義的256x16像素條狀PNG紋理實現全局色彩替換。其核心價值在於: ‌風格統一‌:批量修改場景色彩,避免逐物體調整 ‌影視級調色‌:支持專業調色軟件生成的.cube格式轉換 ‌性能優化‌:相比實時計算的顏色調整,LUT採樣消

遊戲開發 , unity3d , 圖形學

SmalBox - 【URP】Unity[後處理]顏色曲線ColorCurves

【從UnityURP開始探索遊戲渲染】專欄-直達 ColorCurves 是 Unity 通用渲染管線(URP)中的一種高級顏色分級工具,它允許通過曲線精細調整圖像的色相、飽和度和亮度。這種工具最初在專業影視後期軟件(如 Fusion)中成熟應用,後被引入遊戲引擎用於實時渲染的色彩控制。 ColorCurves 提供了8條獨立曲線,包括: Master(整體亮度) ‌功

遊戲開發 , unity3d , 圖形學

SmalBox - 【URP】Unity[後處理]色彩調整ColorAdjustments

【從UnityURP開始探索遊戲渲染】專欄-直達 Unity URP中的Color Adjustments後處理效果用於調整最終渲染圖像的整體色調、亮度和對比度,是優化視覺表現的核心工具。其發展歷史可追溯至Unity 4.X時代的色彩校正曲線和3D查找紋理技術,早期通過手動調節RGB通道曲線實現基礎調色功能,而在URP中已整合為標準化體積框架下的模塊化組件。 底層原理 Unity URP中的

遊戲開發 , unity3d , 圖形學

SmalBox - 【URP】Unity[後處理]通道混合ChannelMixer

【從UnityURP開始探索遊戲渲染】專欄-直達 ChannelMixer是Unity URP後處理系統中用於顏色通道混合的核心效果組件,主要用於調整RGB通道的混合比例以實現特定的色彩分級效果。其發展歷史可追溯至影視行業的傳統調色技術,後被整合到Unity的Post Processing Stack中,並隨着URP的演進成為Volume框架下的標準化模塊 核心功能與參數 ‌通道混合原理‌

遊戲 , unity3d , 圖形學

SmalBox - 【光照】[PBR][菲涅爾]實現方法對比

【從UnityURP開始探索遊戲渲染】專欄-直達 菲涅爾效應基本流程 菲涅爾效應(F)在BRDF中描述光線在不同入射角下的反射率變化,其計算流程通常分為三個步驟: ‌基礎反射率確定‌:0°入射角時的反射率(F₀) ‌角度依賴計算‌:根據入射角變化調整反射率 ‌金屬/非金屬處理‌:區分導體和絕緣體的不同表現 主要菲涅爾模型實現 1. Schlick近似模型 ‌原理‌: 對完整菲涅

渲染 , unity3d , 圖形學

SmalBox - 【渲染流水線】[應用階段]-[渲染命令隊列]以UnityURP為例

應用階段最後是CPU向GPU提交需要渲染的數據。通常數據會被複制到顯存中,然後設置渲染參數,最後調用渲染接口。PC中是這樣的,但是移動設備一般沒有單獨的顯存。使用內存為GPU服務。他們使用同一內存地址。除非要讀/寫這段內存內容才會複製出一份調整CPU和GPU之間協作。 【從UnityURP開始探索遊戲渲染】專欄-直達 渲染狀態: 一連串開關或方法,以及方法的地址指向(階段中的各種可配置的

渲染 , unity , 前端