熱浪扭曲
•每個人都對自然界中的這種大氣效果很熟悉
•光線在穿過不同密度的介質時會彎曲
熱微光
•熱空氣密度比冷空氣小
•密度影響介質的折射率
•熱空氣上公升的同時會被冷空氣替代, 這會改變光射入眼睛的路線
•渲染場景到rgba離屏快取(可渲染的紋理)
•顏色寫入rgb值
•扭曲度寫入alpha通道
•繪製全屏長方形到後備緩衝區
•對離屏緩衝取樣以獲得扭曲度
•用擾動貼圖來確定擾動向量, 用扭曲度放縮後偏移原始紋理座標
•基於擾動紋理座標的可增長
泊松分布(根據扭曲度來進行偏移)
扭曲度
•逐畫素判斷當前畫素被扭曲的程度
•當光線穿過更多的氣體時, 折射程度也相應增加
•扭曲隨場景深度增加
–開始時把渲染目標的alpha通道清為1.0,表示最大深度
–pixel shader把每個畫素的深度寫入alpha通道
•深度提供了乙個很好的全域性扭曲方案, 但是你的美工們希望區域性控制
•熱浪幾何體可以用來定義扭曲範圍, 如熱空氣出口和噴氣發動機尾
•熱浪紋理可以使熱浪幾何本上的扭曲動起來
熱度幾何體 &熱度紋理
•畫素扭曲度**來熱度紋理
•扭曲度被深度放大
•用高度進一步放大 (紋理座標) 並且 n.v 來避免生硬的邊緣
•扭曲度被寫入alpha通道
全屏矩形
•全屏矩形用離屏快取(可渲染的紋理)來繪製並且用擾動貼圖作為紋理
擾動貼圖
•乙個2d向量儲存在紅色和綠色通道內
•在全屏矩形兩個方向上捲動貼圖並取樣兩次
•平均兩次取樣並把值變換到 [-1.0, 1.0] 的範圍內
•用扭曲度放縮向量
•結果就是扭曲向量
扭曲向量
•扭曲向量用於偏移原始紋理座標
•向量的大小取決於扭曲度
•這個新的擾動紋理用於讀入離屏快取
可增長泊松分布
•模糊中心在擾動紋理座標的中間
•偏移基於扭曲度
扭曲 shader
float4main (psinputi) :color
可增長泊松分布 shader
float3sigrowablepoissondisc13filterrgb
(samplertsource,float2texcoord,float2pixelsize,floatdiscradius)
;
// 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官網介紹 每次遇...