以下是一个使用 Unity Shader 编写水波纹渲染的示例:\n\ncsharp\nShader \"Custom/WaterRipple\" {\n Properties {\n _MainTex (\"Texture\", 2D) = \"white\" {}\n _WaveCenter (\"Wave Center\", Vector) = (0.5, 0.5, 0, 0)\n _WaveRadius (\"Wave Radius\", Float) = 0.1\n _WaveStrength (\"Wave Strength\", Float) = 0.2\n }\n SubShader {\n Tags { \"RenderType\"=\"Opaque\" }\n LOD 200\n CGPROGRAM\n #pragma surface surf Lambert vertex:vert\n\n sampler2D _MainTex;\n float4 _MainTex_ST;\n float2 _WaveCenter;\n float _WaveRadius;\n float _WaveStrength;\n\n struct Input {\n float2 uv_MainTex;\n };\n\n void vert (inout appdata_full v, out Input o) {\n UNITY_INITIALIZE_OUTPUT(Input, o);\n float2 offset = (v.vertex.xy - _WaveCenter.xy) / _WaveRadius;\n float waveFactor = _WaveStrength * smoothstep(1, 0, length(offset));\n v.vertex.z += waveFactor;\n }\n\n void surf (Input IN, inout SurfaceOutput o) {\n fixed4 c = tex2D(_MainTex, IN.uv_MainTex);\n o.Albedo = c.rgb;\n o.Alpha = c.a;\n }\n ENDCG\n }\n FallBack \"Diffuse\"\n}\n\n\n如上所示,这个 Shader 使用了一个主纹理 _MainTex ,并使用 _WaveCenter_WaveRadius_WaveStrength 这三个属性来控制波纹的位置、大小和强度。\n\n要使用这个 Shader,你可以在一个材质上应用它,并在材质的属性面板中设置波纹的参数。然后,将该材质应用到你想要显示波纹效果的对象上即可。\n\n请注意,这个 Shader 只会在对象的顶点上产生波纹效果,而不是在屏幕指定位置。如果你想要在屏幕上指定位置显示波纹效果,你需要使用 Unity 的脚本来控制 Shader 的参数。

Unity Shader 水波纹渲染 - 在屏幕指定位置播放波纹效果

原文地址: https://www.cveoy.top/t/topic/oDFd 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录