邊緣檢測效果動畫Shader實現

2021-07-29 14:39:29 字數 1666 閱讀 5292

ar專案中在掃瞄識別圖時需要加上掃瞄識別效果,加上邊緣識別後看起來效果更好,所以就需要這樣乙個邊緣檢測效果的動畫shader。
shader "unlit/animateedgeshader"

_edgeonly ("edge only",range(0,1)) = 1

_edgecolor ("edge color",color) = (1,0,0,1)

_backgroundcolor ("background color",color) = (1,1,1,1)

_animatetex ("texture", 2d) = "white" {}

_scrollx ("speed",float) = 0.5

} subshader

lod 100

blend srcalpha oneminussrcalpha

pass

; struct v2f

;sampler2d _maintex;

float4 _maintex_st;

fixed4 frag (v2f i) : sv_target

endcg

} pass

; struct v2f

;sampler2d _animatetex;

float4 _animatetex_st;

float _scrollx;

sampler2d _maintex;

half4 _maintex_texelsize;

float4 _maintex_st;

fixed _edgeonly;

fixed4 _edgecolor;

fixed4 _backgroundcolor;

fixed luminance(fixed4 color)

half sobel(v2f i)

;const half gy[9] = ;

half texcolor;

half edgex = 0;

half edgey = 0;

for (int it = 0;it < 9;it++)

half edge = 1 - abs(edgex) - abs(edgey);

return edge;

}fixed4 frag (v2f i) : sv_target

endcg

} }}

這裡用easy ar 實驗效果。呼叫攝像機,顯示畫面,並描繪邊框

這裡的第二個材質球realityplane就是 easy ar實時獲取的手機攝像機畫面,第乙個材質球就是我們的邊緣檢測shader,animate第一張顯示我們要檢測邊緣的,第二張就是我們邊框描繪的。

邊框大概就這樣,可以自己調整

效果就是這樣

Unity Shader 螢幕後效果 邊緣檢測

關於螢幕後效果的控制類詳細見之前寫的另一篇部落格 這篇主要是基於之前的控制類,實現另一種常見的螢幕後效果 邊緣檢測。概念和原理部分 首先,我們需要知道在圖形學中經常處理畫素的一種操作 卷積。卷積操作的實質在於,對於影象中的每個畫素與其周圍的畫素進行的重新融合計算行為,以得到不同的畫素處理效果,例如銳...

Canny邊緣檢測

1.canny邊緣檢測基本原理 1 圖象邊緣檢測必須滿足兩個條件 一能有效地抑制雜訊 二必須盡量精確確定邊緣的位置。2 根據對訊雜比與定位乘積進行測度,得到最優化逼近運算元。這就是canny邊緣檢測運算元。3 類似與marr log 邊緣檢測方法,也屬於先平滑後求導數的方法。2.canny邊緣檢測演...

Canny邊緣檢測

canny運算元是邊緣檢測運算元中最常用的一種,是公認效能優良的一種運算元,常被其它邊緣檢測運算元作為標準運算元進行優劣分析。canny演算法基本可以分為3個步驟 平滑 梯度計算 基於梯度值及梯度方向的候選點過濾 1 平滑 影象梯度的計算對雜訊很敏感,因此必須首先對其進行低通濾波。在這裡使用5 5的...