标签:disp uv vertex shader 后处理 unity xy v2f using
效果:
c#
using System; using System.Collections; using System.Collections.Generic; using UnityEngine; //编辑模式可见 [ExecuteInEditMode] public class TestImageEffect : MonoBehaviour { public Material EffectMaterial; // Start is called before the first frame update void Start() { } // Update is called once per frame void Update() { } private void OnRenderImage(RenderTexture src, RenderTexture dest) { Graphics.Blit(src, dest, EffectMaterial); } }
shader
使用image effect模板
Shader "Custom/TestImageEffectShader" { Properties { _MainTex ("Texture", 2D) = "white" {} _DisplaceTex("DIsplacement", 2D) = "white" {}//噪点图 _Magnitude("Magnitude", Range(0, 0.1)) = 1//偏移强度 _Strength("strength", Range(0,1)) = 1//流动速度 } SubShader { // No culling or depth Cull Off ZWrite Off ZTest Always Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" struct appdata { float4 vertex : POSITION; float2 uv : TEXCOORD0; }; struct v2f { float2 uv : TEXCOORD0; float4 vertex : SV_POSITION; }; v2f vert (appdata v) { v2f o; o.vertex = UnityObjectToClipPos(v.vertex); o.uv = v.uv; return o; } sampler2D _MainTex; sampler2D _DisplaceTex; float _Magnitude; float _Strength; fixed4 frag (v2f i) : SV_Target { //纹理采样,只要xy; i.uv - _Time.xy是为了流动感 float2 disp = tex2D(_DisplaceTex, i.uv - _Time.xy * _Strength).xy; //disp的范围是0-1,这步操作让其变成-1 到 1 乘以 参数 disp = ((disp * 2) - 1) * _Magnitude; //uv坐标偏移 float4 col = tex2D(_MainTex, i.uv + disp); return col; } ENDCG } } }
噪点图
标签:disp,uv,vertex,shader,后处理,unity,xy,v2f,using 来源: https://www.cnblogs.com/sanyejun/p/11601048.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。