日常筆記-1 unity技術(shù)美術(shù)流程
概述
主要功能:
給定虛擬相機、三維對象、光源
生成二維圖像
物體外觀的決定因素:
材質(zhì)屬性
光源
貼圖
著色方程
渲染速度表示:
每秒幀數(shù)FPS:每秒渲染的圖像數(shù)量
赫茲HZ:渲染一幀需要的時間
坐標(biāo)變換:
(模型坐標(biāo)系)---模型變換(M)--->(世界坐標(biāo)系)-----視圖變換(V)------->(視錐坐標(biāo)系)--------投影變換(P)-------->(投影坐標(biāo)系)--------視口變換-------(視口坐標(biāo)系)
并行執(zhí)行
提高性能
最慢的階段影響整個管線速度
流程
應(yīng)用階段 Application
CPU上,由應(yīng)用程序驅(qū)動
準(zhǔn)備場景中的基本數(shù)據(jù)
場景物體數(shù)據(jù)
物體變換數(shù)據(jù)
位置
旋轉(zhuǎn)
縮放
物體網(wǎng)格數(shù)據(jù)
頂點位置
UV貼圖
攝像機數(shù)據(jù)
位置、方向、遠(yuǎn)近裁剪平面
正交/透視(FOV)
視口比例/尺寸
光源及陰影數(shù)據(jù)
設(shè)置光源
方向光
顏色
方向
點光源
顏色
位置
范圍
聚光源
顏色
位置
方向
內(nèi)外圓錐角
設(shè)置陰影
是否需要陰影
判斷該光源可見范圍內(nèi)是否有可投射陰影的物體
陰影參數(shù)
對應(yīng)光源序號
陰影強度
級聯(lián)參數(shù)
深度偏移(優(yōu)化相關(guān))
近平面偏移(優(yōu)化相關(guān))
逐光源繪制陰影貼圖
近平面偏移
逐級聯(lián)
計算當(dāng)前光源+級聯(lián)對應(yīng)的觀察矩陣、投影矩陣、以及對應(yīng)到陰影貼圖里的視口區(qū)域
繪制到陰影貼圖
其他全局?jǐn)?shù)據(jù)
加速算法,粗粒度剔除
碰撞檢測
加速算法
遮擋剔除
可見光裁剪
可見場景物體裁剪
八叉樹
BSP樹
K-D樹
BVH
其他算法
設(shè)置渲染狀態(tài),準(zhǔn)備渲染參數(shù)
繪制設(shè)置
使用著色器
合批方式
繪制物體的順序
相對攝像機的距離
材質(zhì)RenderQueue
UICanvas
其他方式等
渲染目標(biāo)(輸出到哪)
FrameBuffer
RenderTexture
渲染模式
前向渲染
延遲渲染
調(diào)用 Drawcall,輸出渲染圖元到顯存
頂點數(shù)據(jù)
位置
顏色
法線
紋理UV坐標(biāo)
其他頂點數(shù)據(jù)
其他數(shù)據(jù)
MVP變換矩陣
紋理貼圖
其他數(shù)據(jù)
幾何階段 Geometry Processing
GPU
頂點著色器 Vertex Shading (可編程)
視圖變換
頂點著色
曲面細(xì)分(可選)
外殼著色器 Hull Shader
曲面細(xì)分 tesselator
域著色器 domain shader
幾何著色器(可選)
基于圖元的操作
投影 Projection
正交
透視
裁剪 Clipping
CVV
正面或背面剔除(可配置)
屏幕映射 Screen Mapping
從連續(xù)到離散
坐標(biāo)系差異(OpenGL/D3D)
光柵化階段 Rasterization
GPU
三角形設(shè)置 Triangle Setup
計算微分、邊方程和其他三角形數(shù)據(jù)
三角形遍歷 Triangle Traversal
抗鋸齒(MSAA)
SSAA
渲染到 一個分辨率放大n倍的buffer
對放大n倍的buffer下采樣
MSAA
在光柵化階段
計算多個覆蓋樣本
FXAA/TXAA
后處理技術(shù)
逐片元操作 Pixel Processing
GPU
片元著色 Fragment Shader
顏色混合 Color Blending
透明度測試 Alpha test
模板測試 stencil test
深度測試 depth test
混合 blending
目標(biāo)緩沖區(qū) FrameBuffer
后處理
Bloom
HDR
FXAA
Depth of View
邊緣檢測
徑向模糊