内置渲染管线
Shader "SunY/C11-ScrollingBackground" { Properties { _MainTex("Base Layer", 2D) = "white"{} _DetailTex("2nd Layer", 2D) = "white"{} _ScrollX("Base Scroll Speed", float) = 1 _Scroll2X("2nd Scroll Speed", float) = 1 _Multiplier("Layer MultipLier", float) = 1 } SubShader { Pass { Tags{ "LightMode" = "ForwardBase" } CGPROGRAM #include "UnityCG.cginc" #pragma vertex vert #pragma fragment frag sampler2D _MainTex; float4 _MainTex_ST; sampler2D _DetailTex; float4 _DetailTex_ST; float _ScrollX; float _Scroll2X; float _Multiplier; struct a2v { float4 vertex : POSITION; float4 texcoord : TEXCOORD0; }; struct v2f { float4 pos : SV_POSITION; float4 uv : TEXCOORD0; }; v2f vert(a2v v) { v2f o; o.pos = UnityObjectToClipPos(v.vertex); o.uv.xy = TRANSFORM_TEX(v.texcoord, _MainTex).xy; o.uv.x += frac(_ScrollX * _Time.y); o.uv.zw = TRANSFORM_TEX(v.texcoord, _DetailTex); o.uv.z += frac(_Scroll2X * _Time.y); return o; } fixed4 frag(v2f i) : SV_Target { fixed4 firstColor = tex2D(_MainTex, i.uv.xy); fixed4 secondColor = tex2D(_DetailTex, i.uv.zw); fixed4 finalColor = lerp(firstColor, secondColor, secondColor.a); finalColor.rgb *= _Multiplier; return finalColor; } ENDCG } } FallBack "vertexLit" }
URP渲染管线
Shader "SunY/C11-U-ScrollingBackground" { Properties { _MainTex("Base Layer", 2D) = "white"{} _DetailTex("2nd Layer", 2D) = "white"{} _ScrollX("Base Scroll Speed", float) = 1 _Scroll2X("2nd Scroll Speed", float) = 1 _Multiplier("Layer MultipLier", float) = 1 } SubShader { Tags { "RenderPipeline" = "UniversalPipeline" } Pass { Tags { "LightMode" = "UniversalForward" } HLSLPROGRAM #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" #pragma vertex vert #pragma fragment frag CBUFFER_START(UnityPerMaterial) float4 _MainTex_ST; float4 _DetailTex_ST; float _ScrollX; float _Scroll2X; float _Multiplier; CBUFFER_END TEXTURE2D(_MainTex); SAMPLER(sampler_MainTex); TEXTURE2D(_DetailTex); SAMPLER(sampler_DetailTex); struct a2v { float4 vertex : POSITION; float4 texcoord : TEXCOORD0; }; struct v2f { float4 pos : SV_POSITION; float4 uv : TEXCOORD0; }; v2f vert(a2v v) { v2f o; o.pos = TransformObjectToHClip(v.vertex); o.uv.xy = TRANSFORM_TEX(v.texcoord, _MainTex); o.uv.x += frac(_ScrollX * _Time.y); o.uv.zw = TRANSFORM_TEX(v.texcoord, _DetailTex); o.uv.z += frac(_Scroll2X * _Time.y); return o; } half4 frag(v2f i) : SV_Target { half4 firstColor = SAMPLE_TEXTURE2D(_MainTex, sampler_MainTex, i.uv.xy); half4 secondColor = SAMPLE_TEXTURE2D(_DetailTex, sampler_DetailTex, i.uv.zw); half4 color = lerp(firstColor, secondColor, secondColor.a); return color; } ENDHLSL } } }
浙公网安备 33010602011771号