創作內容

26 GP

【筆記】Post Processing Shader - Basis Setup

作者:樂小呈│2020-11-27 19:13:52│巴幣:52│人氣:465
PostProcessing Shader  
基本設置

使用OnRenderImage和 Shader對畫面進行後處理

建立C# 腳本並掛在Camera 上
[SerializeField] Shader shader = null;
Material material;

void OnEnable()
{
    material = new Material(shader);
}
void OnRenderImage(RenderTexture source, RenderTexture destination)
{
    source 為輸入,destination 則為輸出結果
    Graphics.Blit 函式,使用shader 渲染texture
    
    Graphics.Blit(source, destination, material);
}
文檔 Graphics.Blit

建立Shader
Create > Shader > Image Effect Shader
fixed4 frag (v2f i) : SV_Target
{
    _MainTex 就是OnRenderImage 的輸入,整個畫面擷取的Texture (Frame Buffer的資料)
    在這裡進行計算,輸出的結果就是整個畫面的渲染解果
    範例是整個畫面的負片效果 (1 - color)
    
    fixed4 col = tex2D(_MainTex, i.uv);
    col.rgb = 1 - col.rgb;
    return col;
}
註: 建立vertex shader 也行,重點只是在fragment shader (frag)


重點變量
float2 _MainTex_TexelSize
_MainTex 對應螢幕像素的UV 大小,可以透過這個變量取得MainTex 鄰近像素
tex2D(_MainTex, uv + float2(_MainTex_TexelSize.x, 0))

重點數學
用一個不同權重的3*3(或更大) 網格,把像素輸入然後根據輸出結果做任何事
註: 後面的筆記不會再解說這個計算

一些後處理的資料

實作各種效果的教學

更新註記: 我搞錯了,數學計算是叫 kernel,Sobel operator是他的衍生,用於邊緣檢測

今天沒做事
發ㄍ筆記

引用網址:https://home.gamer.com.tw/TrackBack.php?sn=4994707
All rights reserved. 版權所有,保留一切權利

相關創作

同標籤作品搜尋:Shader|筆記

留言共 3 篇留言

矮鵝
OnRenderImage的輸入是_MainTex還是最後的col阿?

11-27 20:44

樂小呈
輸入是_MainTex,col是把像素提出來的變量[e19]11-27 21:14
御安鴨·摸頭害鴨哭
我太菜了看不懂

11-27 22:17

樂小呈
沒關C11-27 23:03
kiwi(薇薇安)
看起來好複雜...

11-27 23:02

樂小呈
沒關係的[e19]11-27 23:03
我要留言提醒:您尚未登入,請先登入再留言

26喜歡★angus945 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:【紀錄】Shader -... 後一篇:初試被刷仔的自傳...

追蹤私訊切換新版閱覽

作品資料夾

SALOL~~
望德勒斯圖書館更新中~看更多我要大聲說昨天15:03


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】