shader学习之路——玻璃效果

编程入门 行业动态 更新时间:2024-10-11 15:16:27

shader学习<a href=https://www.elefans.com/category/jswz/34/1770107.html style=之路——玻璃效果"/>

shader学习之路——玻璃效果

// 通过凹凸贴图实现扭曲效果 使用凹凸贴图来表示扭曲方向Shader "Unlit/Grass"
{Properties{_MainTex("Base(RGB) Trans(A)",2D)   = "white"{}_Color("Color",Color) = (1,1,1,1)_BumpMap("Noise text",2D) = "Bump"{} // 表示xyz偏移值_Magnitede("Magnitude",Range(0,1))  = 0.05 //扭曲幅度}SubShader{Tags { "Queue" = "Transparent"   //渲染队列里面的顺序  透明队列"IgnoreProjector" = "True" //忽略阴影"RenderType"="Opaque"  }ZWrite OnLighting OffCull OffFog{Mode Off}Blend One ZeroGrabPass{"_GrabTexture"} //在对玻璃第一遍渲染时,把整个场景拍照,绘制到一个名为_GrabTexture的纹理上		Pass{CGPROGRAM#pragma vertex vert#pragma fragment frag			#include "UnityCG.cginc" sampler2D _GrabTexture; //存储GrabPass中抓取的纹理sampler2D _MainTex;fixed4 _Color;sampler2D _BumpMap;float _Magnitede;struct appdata{float4 vertex : POSITION;		float4 color:COLOR;float2 texcoord:TEXCOORD0;};struct v2f{float4 vertex : POSITION;float4 grab_uv : TEXCOORD1;		float4 color:COLOR;float2 texcoord:TEXCOORD2;};v2f vert (appdata v){v2f o;o.vertex = UnityObjectToClipPos(v.vertex); //从模型空间到摄像机空间o.color = v.color;o.texcoord = v.texcoord;//ComputeGrabScreenPos 传入一个投影空间中的顶点坐标,//此方法会以摄像机可视范围的左下角纹理坐标为[0,0]点,以右上角为[1,1]点,计算出当前顶点对应的纹理o.grab_uv = ComputeGrabScreenPos(o.vertex);return o;}//ComputeGrabScreenPos和tex2Dproj 经过这两个方法可以把摄像机空间的点对应到屏幕空间贴图的坐标half4 frag (v2f i) : COLOR{half4 mainColor = tex2D(_MainTex,i.texcoord);half4 Bump = tex2D(_BumpMap,i.texcoord);half2 distortion = UnpackNormal(Bump).rg; //把纹理坐标转换为法线坐标 [0-1]区间i.grab_uv.xy += distortion * _Magnitede;fixed4 col = tex2Dproj(_GrabTexture,UNITY_PROJ_COORD(i.grab_uv));return col * mainColor * _Color;}ENDCG}}
}

 

更多推荐

shader学习之路——玻璃效果

本文发布于:2024-02-06 11:14:53,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1748609.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:之路   效果   玻璃   shader

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!