熱浪扭曲效果

2021-06-01 07:43:10 字數 1955 閱讀 5442

熱浪扭曲 •

每個人都對自然界中的這種大氣效果很熟悉

•光線在穿過不同密度的介質時會彎曲

熱微光

•熱空氣密度比冷空氣小

•密度影響介質的折射率

•熱空氣上公升的同時會被冷空氣替代, 這會改變光射入眼睛的路線

•渲染場景到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官網介紹 每次遇...