首页 >> 中医药茶

Shader知识普及之:高斯杂乱效果的实现

发布时间:2025年08月16日 12:18

0.0855,0.0855,0.0855,0),

half4(0.0205,0.0205,0.0205,0)

};

VertexOutput_DownSmpl vert_DownSmpl(VertexInput v)

{

VertexOutput_DownSmpl o;

o.pos = UnityObjectToClipPos(v.vertex);

o.uv20 = v.texcoord + _MainTex_TexelSize.xy* half2(0.5h, 0.5h);;

o.uv21 = v.texcoord + _MainTex_TexelSize.xy * half2(-0.5h, -0.5h);

o.uv22 = v.texcoord + _MainTex_TexelSize.xy * half2(0.5h, -0.5h);

o.uv23 = v.texcoord + _MainTex_TexelSize.xy * half2(-0.5h, 0.5h);

return o;

}

fixed4 frag_DownSmpl(VertexOutput_DownSmpl i) : SV_Target

{

fixed4 color = (0,0,0,0);

color += tex2D(_MainTex, i.uv20);

color += tex2D(_MainTex, i.uv21);

color += tex2D(_MainTex, i.uv22);

color += tex2D(_MainTex, i.uv23);

return color / 4;

}

struct VertexOutput_Blur

{

float4 pos : SV_POSITION;

half4 uv : TEXCOORD0;

half2 offset : TEXCOORD1;

};

VertexOutput_Blur vert_BlurHorizontal(VertexInput v)

{

VertexOutput_Blur o;

o.pos = UnityObjectToClipPos(v.vertex);

o.uv = half4(v.texcoord.xy, 1, 1);

o.offset = _MainTex_TexelSize.xy * half2(1.0, 0.0) ;

return o;

}

VertexOutput_Blur vert_BlurVertical(VertexInput v)

{

VertexOutput_Blur o;

o.pos = UnityObjectToClipPos(v.vertex);

o.uv = half4(v.texcoord.xy, 1, 1);

o.offset = _MainTex_TexelSize.xy * half2(0.0, 1.0) ;

return o;

}

half4 frag_Blur(VertexOutput_Blur i) : SV_Target

{

half2 uv = i.uv.xy;

half2 OffsetWidth = i.offset;

half2 uv_withOffset = uv - OffsetWidth * 3.0;

half4 color = 0;

for (int j = 0; j

{

half4 texCol = tex2D(_MainTex, uv_withOffset);

color += texCol * GaussWeight[j];

uv_withOffset += OffsetWidth;

}

return color;

}

ENDCG

FallBack Off

}

字符串主要在结构上可分三个走廊,每个走廊都度量好各自的六边形和影像三维:

走廊1:降均值走廊(六边形三维为vert_DownSmpl,影像三维为frag_DownSmpl)

走廊1:垂直朝向清晰三处理事件走廊(六边形三维为vert_BlurVertical,影像三维为frag_Blur)

走廊2:水平朝向清晰三处理事件走廊(六边形三维为vert_BlurHorizontal,影像三维为frag_Blur)

我们看一下主要用到的逻辑三处理事件部分:

降均值输出在结构上体:度量的四级色块圆周

half2 uv20 : TEXCOORD0;

half2 uv21 : TEXCOORD1;

half2 uv22 : TEXCOORD2;

half2 uv23 : TEXCOORD3;

由此而来影像上下左右周围的点,分别存于四级色块圆周之前

o.uv20 = v.texcoord + _MainTex_TexelSize.xy* half2(0.5h, 0.5h);;

o.uv21 = v.texcoord + _MainTex_TexelSize.xy * half2(-0.5h, -0.5h);

o.uv22 = v.texcoord + _MainTex_TexelSize.xy * half2(0.5h, -0.5h);

o.uv23 = v.texcoord + _MainTex_TexelSize.xy * half2(-0.5h, 0.5h);

四个相邻影像点三处的色块值相纳并返回略高于:

color += tex2D(_MainTex, i.uv20);

color += tex2D(_MainTex, i.uv21);

color += tex2D(_MainTex, i.uv22);

color += tex2D(_MainTex, i.uv23);

return color / 4;

计数X朝向的对齐量

o.offset = _MainTex_TexelSize.xy * half2(0.0, 1.0);

计数Y朝向的对齐量

o.offset = _MainTex_TexelSize.xy * half2(0.0, 1.0);

循环获由此而来纳权后的颜色值

half4 color = 0;

for (int j = 0; j

{

half4 texCol = tex2D(_MainTex, uv_withOffset);

color += texCol * GaussWeight[j];

uv_withOffset += OffsetWidth;

}

此外,我们可以在影像对齐之之前的影像大小后面纳一个区域内是0至1的数值系数,从而动态的管控清晰程度,如下三幅 :

设立较低清晰数值

设立较低清晰数值

我们知晓了黎曼清晰的原理就可以根据基本上的需求,调整我们想要看到的屏幕,无论是清晰还是清晰都在你的一念之间,其实好像很引人注目呢,一起来试试吧!

北京看妇科哪个医院比较好
小孩腹胀不消化怎么办
信阳看妇科的医院哪家好
云南妇科医院去哪家好
江苏白癜风医院哪好
脂肪肝
肺炎
长新冠
全民健康网药品库
中医瘦身

上一篇: 杭州构建“轨道上的都市生活” 到2025年智慧道路超300公里

下一篇: 再获认可|九州云获评2022分布式云与云边协同革新实践案例

友情链接