将自定义统一着色器转换为URP

问题描述 投票:0回答:2

这是代码:

着色器“世界着色器” { 特性 { _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? 我该如何转换它?

unity-game-engine shader hlsl cg urp
2个回答
0
投票

这里是有关此内容的统一文档的链接。希望有帮助。 升级自定义着色器以实现 URP 兼容性


-1
投票

在尝试将着色器代码转换为 URP 之前,如果您的着色器足够简单,您可以尝试让 Unity 自行转换它。

选择应用着色器的材质。 编辑 -> 渲染 -> 材质 -> 将选择的内置材质转换为 URP。

将材料转换为URP

© www.soinside.com 2019 - 2024. All rights reserved.