1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
Shader "LearmZDTA/L14and16/Water" { Properties { _MainTex ("颜色贴图", 2d) = "white"{} _WarpTex ("扰动图", 2d) = "gray"{} _Speed ("X:流速X Y:流速Y", vector) = (1.0, 1.0, 0.5, 1.0) _Warp1Params ("X:大小 Y:流速X Z:流速Y W:强度", vector) = (1.0, 1.0, 0.5, 1.0) _Warp2Params ("X:大小 Y:流速X Z:流速Y W:强度", vector) = (2.0, 0.5, 0.5, 1.0) } SubShader { Tags { "RenderType"="Opaque" } Pass { Name "FORWARD" Tags { "LightMode"="ForwardBase" } CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" #pragma multi_compile_fwdbase_fullshadows #pragma target 3.0 // 输入参数 uniform sampler2D _MainTex; uniform float4 _MainTex_ST; uniform sampler2D _WarpTex; uniform half2 _Speed; uniform half4 _Warp1Params; uniform half4 _Warp2Params; struct VertexInput { float4 vertex : POSITION; float2 uv : TEXCOORD0; }; struct VertexOutput { float4 pos : SV_POSITION; float2 uv0 : TEXCOORD0; // 采样Mask float2 uv1 : TEXCOORD1; // 采样Noise1 float2 uv2 : TEXCOORD2; // 采样Noise2 }; VertexOutput vert (VertexInput v) { VertexOutput o = (VertexOutput)0; o.pos = UnityObjectToClipPos( v.vertex); o.uv0 = v.uv - frac(_Time.x * _Speed); //主贴图水波纹也需要流动 o.uv1 = v.uv * _Warp1Params.x - frac(_Time.x * _Warp1Params.yz); o.uv2 = v.uv * _Warp2Params.x - frac(_Time.x * _Warp2Params.yz); return o; } float4 frag(VertexOutput i) : COLOR { half3 var_Warp1 = tex2D(_WarpTex, i.uv1).rgb; // 扰动1 half3 var_Warp2 = tex2D(_WarpTex, i.uv2).rgb; // 扰动2 // 扰动混合 half2 warp = (var_Warp1.xy - 0.5) * _Warp1Params.w + (var_Warp2.xy - 0.5) * _Warp2Params.w; //-0,5的原因,将(0,1)Remap到(-0.5,0.5),让偏移可以负方向 // 扰动UV float2 warpUV = i.uv0 + warp; // 采样MainTex half4 var_MainTex = tex2D(_MainTex, warpUV); return float4(var_MainTex.xyz, 1.0); } ENDCG } } FallBack "Diffuse" } |
本站所有文章、资源、如无特殊说明或标注互联网转载外, 均为本站以及特邀作者、注册会员、游客投稿原创发布. 所提供下载链接均为站外链接, 网站本身并不存储相关资源文件, 所有资源仅用于个人学习及研究使用, 请在24小时内删除, 切勿用于商业用途, 如产生法律纠纷本站概不负责, 任何个人或组织, 在未征得本站同意时, 禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台. 如若本站内容侵犯了原著者的合法权益, 请及时通知本站, 待核实后将在三个工作日内进行删除.