熱浪扭曲 •
每個人都對自然界中的這種大氣效果很熟悉
•光線在穿過不同密度的介質時會彎曲
熱微光
•熱空氣密度比冷空氣小
•密度影響介質的折射率
•熱空氣上公升的同時會被冷空氣替代, 這會改變光射入眼睛的路線
•渲染場景到rgba離屏快取(可渲染的紋理)
•顏色寫入rgb值
•扭曲度寫入alpha通道
•繪製全屏長方形到後備緩衝區
•對離屏緩衝取樣以獲得扭曲度
•用擾動貼圖來確定擾動向量, 用扭曲度放縮後偏移原始紋理座標
•基於擾動紋理座標的可增長
泊松分布(根據扭曲度來進行偏移)
扭曲度
•逐畫素判斷當前畫素被扭曲的程度
•當光線穿過更多的氣體時, 折射程度也相應增加
•扭曲隨場景深度增加
–開始時把渲染目標的alpha通道清為1.0,表示最大深度
–pixel shader把每個畫素的深度寫入alpha通道
•深度提供了乙個很好的全域性扭曲方案, 但是你的美工們希望區域性控制
•熱浪幾何體可以用來定義扭曲範圍, 如熱空氣出口和噴氣發動機尾
•熱浪紋理可以使熱浪幾何本上的扭曲動起來
熱度幾何體 & 熱度紋理
•畫素扭曲度**來熱度紋理
•扭曲度被深度放大
•用高度進一步放大 (紋理座標) 並且 n.v 來避免生硬的邊緣
•扭曲度被寫入alpha通道
全屏矩形 •
全屏矩形用離屏快取(可渲染的紋理)來繪製並且用擾動貼圖作為紋理
擾動貼圖
•乙個2d向量儲存在紅色和綠色通道內
•在全屏矩形兩個方向上捲動貼圖並取樣兩次
•平均兩次取樣並把值變換到 [-1.0, 1.0] 的範圍內
•用扭曲度放縮向量
•結果就是扭曲向量
扭曲向量
扭曲向量用於偏移原始紋理座標
•向量的大小取決於扭曲度
•這個新的擾動紋理用於讀入離屏快取
可增長泊松分布
模糊中心在擾動紋理座標的中間
•偏移基於扭曲度
扭曲 shader
float4
main (
psinput
i) :
color
可增長泊松分布 shader
float3
sigrowablepoissondisc13filterrgb
(sampler
tsource,
float2
texcoord,
float2
pixelsize,
float
discradius)
;
// center tap
cout = tex2d (tsource, texcoord);
for(
inttap = 0; tap < 12; tap++)
return
(cout / 13.0f);
}
熱浪扭曲效果
熱浪扭曲 每個人都對自然界中的這種大氣效果很熟悉 光線在穿過不同密度的介質時會彎曲 熱微光 熱空氣密度比冷空氣小 密度影響介質的折射率 熱空氣上公升的同時會被冷空氣替代,這會改變光射入眼睛的路線 渲染場景到rgba離屏快取 可渲染的紋理 顏色寫入rgb值 扭曲度寫入alpha通道 繪製全屏長方形到後...
熱浪扭曲效果
熱浪扭曲 每個人都對自然界中的這種大氣效果很熟悉 光線在穿過不同密度的介質時會彎曲 熱微光 熱空氣密度比冷空氣小 密度影響介質的折射率 熱空氣上公升的同時會被冷空氣替代,這會改變光射入眼睛的路線 渲染場景到rgba離屏快取 可渲染的紋理 顏色寫入rgb值 扭曲度寫入alpha通道 繪製全屏長方形到後...
unity Shader 扭曲效果
所謂扭曲就是擾動乙個物體的uv座標,表現出來就是乙個擾動效果,如火焰扭曲空氣,和水波對水底的影響。1.在shader 中我們需要一張當前渲染的紋理 2.給乙個物體渲染並使用當前紋理,用螢幕座標作為uv座標加上乙個擾動值 1.unity提供了抓取的pass grabpass unity官網介紹 每次遇...