首页 / UNITY / unity毛玻璃效果
unity毛玻璃效果
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了unity毛玻璃效果,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2600字,纯文字阅读大概需要4分钟。
内容图文
shader原理,读取屏幕像素进行处理,再返回纹理
// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
Shader "my/FrostedGlass"
{
Properties
{
_blurSizeXY("BlurSizeXY", Range(0,10)) = 2
}
SubShader
{
// 透明队列,在所有不透明的几何图形后绘制
Tags { "Queue" = "Transparent" }
// 采样后面的图像
GrabPass { }
Pass
{
CGPROGRAM
#pragma target 3.0
#pragma debug
#pragma vertex vert
#pragma fragment frag
sampler2D _GrabTexture : register(s0);
float _blurSizeXY;
struct data
{
float4 vertex : POSITION;
float3 normal : NORMAL;
};
struct v2f
{
float4 position : POSITION;
float4 screenPos : TEXCOORD0;
};
v2f vert(data i)
{
v2f o;
o.position = UnityObjectToClipPos(i.vertex);
o.screenPos = float4(o.position.x, o.position.y, o.position.z, o.position.w);
return o;
}
half4 frag(v2f i) : COLOR
{
float2 screenPos = i.screenPos.xy / i.screenPos.w;
float depth = _blurSizeXY * 0.0005;
screenPos.x = (screenPos.x + 1) * 0.5;
screenPos.y = 1 - (screenPos.y + 1) * 0.5;
half4 sum = half4(0,0,0,0);
sum += tex2D(_GrabTexture, float2(screenPos.x - 5.0 * depth, screenPos.y + 5.0 * depth)) * 0.025;
sum += tex2D(_GrabTexture, float2(screenPos.x + 5.0 * depth, screenPos.y - 5.0 * depth)) * 0.025;
sum += tex2D(_GrabTexture, float2(screenPos.x - 4.0 * depth, screenPos.y + 4.0 * depth)) * 0.05;
sum += tex2D(_GrabTexture, float2(screenPos.x + 4.0 * depth, screenPos.y - 4.0 * depth)) * 0.05;
sum += tex2D(_GrabTexture, float2(screenPos.x - 3.0 * depth, screenPos.y + 3.0 * depth)) * 0.09;
sum += tex2D(_GrabTexture, float2(screenPos.x + 3.0 * depth, screenPos.y - 3.0 * depth)) * 0.09;
sum += tex2D(_GrabTexture, float2(screenPos.x - 2.0 * depth, screenPos.y + 2.0 * depth)) * 0.12;
sum += tex2D(_GrabTexture, float2(screenPos.x + 2.0 * depth, screenPos.y - 2.0 * depth)) * 0.12;
sum += tex2D(_GrabTexture, float2(screenPos.x - 1.0 * depth, screenPos.y + 1.0 * depth)) * 0.15;
sum += tex2D(_GrabTexture, float2(screenPos.x + 1.0 * depth, screenPos.y - 1.0 * depth)) * 0.15;
sum += tex2D(_GrabTexture, screenPos - 5.0 * depth) * 0.025;
sum += tex2D(_GrabTexture, screenPos - 4.0 * depth) * 0.05;
sum += tex2D(_GrabTexture, screenPos - 3.0 * depth) * 0.09;
sum += tex2D(_GrabTexture, screenPos - 2.0 * depth) * 0.12;
sum += tex2D(_GrabTexture, screenPos - 1.0 * depth) * 0.15;
sum += tex2D(_GrabTexture, screenPos) * 0.16;
sum += tex2D(_GrabTexture, screenPos + 5.0 * depth) * 0.15;
sum += tex2D(_GrabTexture, screenPos + 4.0 * depth) * 0.12;
sum += tex2D(_GrabTexture, screenPos + 3.0 * depth) * 0.09;
sum += tex2D(_GrabTexture, screenPos + 2.0 * depth) * 0.05;
sum += tex2D(_GrabTexture, screenPos + 1.0 * depth) * 0.025;
return sum / 2;
}
ENDCG
}
}
Fallback Off
}
内容总结
以上是互联网集市为您收集整理的unity毛玻璃效果全部内容,希望文章能够帮你解决unity毛玻璃效果所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。