版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
第基于Unity實現(xiàn)2D邊緣檢測目錄一、ShaderLab1.Alpha值邊緣檢測2.卷積邊緣檢測二、ShaderGraph
一、ShaderLab
1.Alpha值邊緣檢測
根據(jù)圖片的Alpha值邊緣判定,向內(nèi)擴一段距離做邊緣,顏色設置未描邊顏色;
片元著色階段,向上下左右四個方向做檢測,有一個點的透明度為0,判定為邊緣;
Shader"2DOutline"
Properties
_MainTex("Texture",2D)="white"{}
_LineWidth("Width",Range(0,0.4))=1.0
_LineColor("LineColor",color)=(1,1,1,1)
_Intensity("Intensity",Range(1,10))=1.0
SubShader
Tags{"RenderType"="Opaque""Queue"="Transparent"}
BlendSrcAlphaOneMinusSrcAlpha
Pass
CGPROGRAM
#pragmavertexvert
#pragmafragmentfrag
#include"UnityCG.cginc"
structappdata
float4vertex:POSITION;
float2uv:TEXCOORD0;
structv2f
float2uv:TEXCOORD0;
float4vertex:SV_POSITION;
sampler2D_MainTex;
float4_MainTex_ST;
fixed_LineWidth;
float4_LineColor;
fixed_Intensity;
v2fvert(appdatav)
v2fo;
o.vertex=UnityObjectToClipPos(v.vertex);
o.uv=TRANSFORM_TEX(v.uv,_MainTex);
returno;
fixed4frag(v2fi):SV_Target
fixed4col=tex2D(_MainTex,i.uv);
//采樣周圍4個點
float2up_uv=i.uv+float2(0,1)*_LineWidth*1/10*_MainTex_ST.xy;
float2down_uv=i.uv+float2(0,-1)*_LineWidth*1/10*_MainTex_ST.xy;
float2left_uv=i.uv+float2(-1,0)*_LineWidth*1/10*_MainTex_ST.xy;
float2right_uv=i.uv+float2(1,0)*_LineWidth*1/10*_MainTex_ST.xy;
//如果有一個點透明度為0說明是邊緣
floatw=tex2D(_MainTex,up_uv).a*tex2D(_MainTex,down_uv).a*tex2D(_MainTex,left_uv).a*tex2D(_MainTex,right_uv).a;
if(w==0){
col.rgb=lerp(_LineColor*_Intensity,col.rgb,w);
returncol;
ENDCG
如果圖片內(nèi)容恰好鋪滿整張圖,沒有alpha值,方法不適用;下圖底部邊緣消失了;
2.卷積邊緣檢測
在屏幕后處理階段,使用卷積做邊緣檢測;
卷積:根據(jù)像素周圍八個方向的像素的計算出新的像素值;
邊緣檢測卷積算子,都包含水平和豎直兩個方向的卷積核;
梯度公式:G=sqrt(Gx*Gx+Gy*Gy);
考慮性能問題,使用:G=|Gx|+|Gy|;
頂點著色器計算卷積紋理采樣坐標,減少計算量(片元數(shù)量更多);
片元著色階段Sobel卷積計算,插值獲得片元像素顏色;
Sobel計算結果和梯度Gradient比較,大于梯度和EdgeColor做插值;
屏幕后效調(diào)用OnRenderImage接口;
Shader"EdgeDetection"
Properties{
_MainTex("Base(RGB)",2D)="white"{}
_EdgeColor("EdgeColor",Color)=(0,0,0,1)
//卷積梯度
_Gradient("Gradient",float)=0.0
SubShader{
Pass
ZTestAlwaysCullOffZWriteOff
CGPROGRAM
#include"UnityCG.cginc"
#pragmavertexvert
#pragmafragmentfrag
sampler2D_MainTex;
uniformhalf4_MainTex_TexelSize;
//fixed_EdgeOnly;
fixed4_EdgeColor;
//fixed4_BackgroundColor;
fixed_Gradient;
structv2f{
float4pos:SV_POSITION;
half2uv[9]:TEXCOORD0;
v2fvert(appdata_imgv){
v2fo;
o.pos=UnityObjectToClipPos(v.vertex);
half2uv=v.texcoord;
o.uv[0]=uv+_MainTex_TexelSize.xy*half2(-1,-1);
o.uv[1]=uv+_MainTex_TexelSize.xy*half2(0,-1);
o.uv[2]=uv+_MainTex_TexelSize.xy*half2(1,-1);
o.uv[3]=uv+_MainTex_TexelSize.xy*half2(-1,0);
o.uv[4]=uv+_MainTex_TexelSize.xy*half2(0,0);
o.uv[5]=uv+_MainTex_TexelSize.xy*half2(1,0);
o.uv[6]=uv+_MainTex_TexelSize.xy*half2(-1,1);
o.uv[7]=uv+_MainTex_TexelSize.xy*half2(0,1);
o.uv[8]=uv+_MainTex_TexelSize.xy*half2(1,1);
returno;
fixedluminance(fixed4color){
return0.2125*color.r+0.7154*color.g+0.0721*color.b;
halfSobel(v2fi){
consthalfGx[9]={-1,0,1,
-2,0,2,
-1,0,1};
consthalfGy[9]={-1,-2,-1,
0,0,0,
1,2,1};
halftexColor;
halfedgeX=0;
halfedgeY=0;
for(intit=0;itit++){
texColor=luminance(tex2D(_MainTex,i.uv[it]));
edgeX+=texColor*Gx[it];
edgeY+=texColor*Gy[it];
halfedge=1-abs(edgeX)-abs(edgeY);
returnedge;
fixed4frag(v2fi):SV_Target{
halfedge=Sobel(i);
fixed4col=tex2D(_MainTex,i.uv[4]);
if(edge_Gradient)
col=lerp(_EdgeColor,tex2D(_MainTex,i.uv[4]),edge);
returncol;
ENDCG
FallBackOff
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中職大數(shù)據(jù)應用技術(數(shù)據(jù)采集技術)試題及答案
- 2025年大學化妝品技術(化妝品研發(fā))試題及答案
- 2025年中職(物聯(lián)網(wǎng)應用技術)傳感器應用綜合測試題及答案
- 2025年大學大三(畜牧獸醫(yī)法規(guī))畜牧獸醫(yī)行業(yè)法規(guī)應用階段測試題及答案
- 2025年大學食品科學與工程(食品添加劑)試題及答案
- 2025年大學環(huán)境設計(公共空間設計)試題及答案
- 2025年大學大四(歷史學)世界近代史工業(yè)革命測試題及答案
- 2025年高職(荒漠化防治技術)植被恢復技術專項測試試題及答案
- 巴洛克紋樣介紹
- 運維管理制度
- 2026國家電投集團蘇州審計中心選聘15人筆試模擬試題及答案解析
- 2026年桐城師范高等專科學校單招職業(yè)技能考試題庫及答案1套
- 霧化吸入操作教學課件
- 上海市楊浦區(qū)2026屆初三一模英語試題(含答案)
- 2025年小學圖書館自查報告
- 【語文】廣東省佛山市羅行小學一年級上冊期末復習試卷
- 2025年醫(yī)療器械注冊代理協(xié)議
- 新疆三校生考試題及答案
- 2025新疆亞新煤層氣投資開發(fā)(集團)有限責任公司第三批選聘/招聘筆試歷年參考題庫附帶答案詳解
- 圍手術期心肌梗塞的護理
- 代貼現(xiàn)服務合同范本
評論
0/150
提交評論