这是代码:
着色器“世界着色器” { 特性 { _MainTex("基础(RGB)", 2D) = "白色"{} _TextureScale(“纹理比例”,浮点数)= 1
//[NoScaleOffset] _BumpMap ("Normalmap", 2D) = "bump" {}
}
SubShader
{
Tags { "RenderType"="Opaque" }
LOD 250
CGPROGRAM
#pragma surface surf Lambert noforwardadd
sampler2D _MainTex;
float _TextureScale;
//sampler2D _BumpMap;
struct Input
{
float2 uv_MainTex;
float3 worldPos;
float3 worldNormal;
};
float myFmod(float a, float b)
{
float c = frac(abs(a / b)) * abs(b);
return c;
}
void surf (Input IN, inout SurfaceOutput o)
{
float x = IN.worldPos.x * _TextureScale;
float y = IN.worldPos.y * _TextureScale;
float z = IN.worldPos.z * _TextureScale;
float isUp = abs(IN.worldNormal.y);
float2 offset = float2(myFmod(z + x * (1 - isUp), 0.0625), myFmod(y + x * isUp, 0.0625));
fixed4 c = tex2D(_MainTex, IN.uv_MainTex + offset);
o.Albedo = c.rgb;
o.Alpha = 1;
//o.Normal = UnpackNormal(tex2D(_BumpMap, IN.uv_MainTex));
}
ENDCG
}
FallBack "Mobile/Diffuse"
}
我将 Unity 项目切换到 URP,并且我的自定义着色器停止工作:( 如何使我的自定义着色器支持 URP? 我该如何转换它?
这里是有关此内容的统一文档的链接。希望有帮助。 升级自定义着色器以实现 URP 兼容性
在尝试将着色器代码转换为 URP 之前,如果您的着色器足够简单,您可以尝试让 Unity 自行转换它。
选择应用着色器的材质。 编辑 -> 渲染 -> 材质 -> 将选择的内置材质转换为 URP。