Unity Shader入門練習 高斯模糊

2021-12-30 03:01:38 字數 1576 閱讀 7801

0x00 序言

【unity shader入門練習】高斯模糊,本文是《unity shader入門精要》讀書筆記,最近接觸到專案中用到了模糊處理,經過查閱資料,發覺模糊處理是螢幕後處理技術中的一種,就從螢幕後處理技術開始學習。[使用的unity版本:5.6.1f1]

0x01 效果圖

0x02 基本概念

卷積(convolution)操作指的是使用乙個卷積核(kernal)對一張影象中的每個畫素進行一系列操作。卷積核通常是乙個四方形網格結構(例如2*2、3*3的方形區域),該區域內每個方格都有乙個權重值。

模糊的實現由很多方法,例如均值模糊和中值模糊。均值模糊同樣使用了卷積操作,它使用的卷積核中的各個元素值都相等,且相加等於1,也就是說,卷積後得到的畫素值是其鄰域內各個畫素的平均值。而中值模糊則是選擇鄰域內對所有畫素排序後的中值替換掉原顏色。

0x03 指令碼**

using system.collections;

using system.collections.generic;

using unityengine;

public class gaussianblur : posteffectsbase

}[range(0, 4)]

public int iterations = 3;

[range(0.2f, 3.0f)]

public float blurspread = 0.6f;

[range(1, 8)]

public int downsample = 2;

void onrenderimage(rendertexture src, rendertexture dest)

graphics.blit(buffer0, dest);

rendertexture.releasetemporary(buffer0);

}else}}

0x04 shader**

shader "gaussian blur"

_blursize("blur size", float) = 1.0

}subshader;

v2f vertblurvertical(appdata_img v)

v2f vertblurhorizontal(appdata_img v)

fixed4 fragblur(v2f i) : sv_target;

fixed3 sum = tex2d(_maintex, i.uv[0]).rgb * weight[0];

for (int it = 1; it < 3; it++)

return fixed4(sum, 1.0);

}endcg

ztest always cull off zwrite off

pass

pass

}fallback "diffuse"

}

Unity Shader入門精要

學習資料 unity shader入門精要 時長 乙個月 計畫 1 2天完成一章,預計乙個月內完成 幾何階段 gpu實現,輸出螢幕空間的二位點座標,深度,著色資訊,傳送給光柵化階段 光柵化階段 gpu實現,決定每個渲染圖元哪些畫素應該被繪製在螢幕上,將幾何階段傳來的頂點資料進行插值 頂點v法線的獲取...

筆記 《Unity Shader入門精要》

應用階段 輸出渲染圖元 rendering primitives 包括 準備場景資料 相機 場景模型 光源 粗粒度剔除 culling 把不可見的物體剔除 渲染狀態 材質 紋理,使用的shader等。光柵化階段 每個渲染圖元的哪些畫素應該被繪製在螢幕上,包括 三角形設定 三角形遍歷 片元著色器 逐片...

《UnityShader入門精要》Unity陰影

lightmode為shadowcaster的pass是用來渲染陰影對映紋理。該shader如果沒有定義lightmode為shadowcaster的pass,則會去fallback指定的shader繼續尋找。如果沒有找到,該物體無法向其他物體投射陰影,但能接收來自其他物體投射的陰影 螢幕空間的對映...