Need help with shader, please help im desperate and there is no solution on internet :((

Hello i have custom shader that i have downloaded and used for about half a year, i modified it a little bit just to add emission and other stuff but i cant seem to figure out a way to add Fade rendering mode just like in standart Shader. I need it for my special half transparent object/material and i have to use this shader.
My shader :

Shader "Curved/CurvedSurfaceFade" {
Properties {
      _Color ("Color", Color) = (1,1,1,1)
      _MainTex ("Albedo (RGB)", 2D) = "white" {}
      _Emission("Emission", float) = 0
      [HDR] _EmissionColor("Color", Color) = (0,0,0)
      _Glossiness ("Smoothness", Range(0,1)) = 0.5
}
SubShader {
    Tags { "RenderType"="Opaque" }
    LOD 200
    CGPROGRAM
    // Physically based Standard lighting model, and enable shadows on all light types
    #pragma surface surf Standard fullforwardshadows vertex:vert addshadow
    //#pragma surface surf Lambert vertex:vert addshadow
    // Use shader model 3.0 target, to get nicer looking lighting
    #pragma target 3.0
    #include "UnityCG.cginc"
    sampler2D _MainTex;
    struct Input {
    float2 uv_MainTex;
    };
    fixed4 _Color;
    fixed4 _EmissionColor;
    half _Glossiness;
    // Add instancing support for this shader. You need to check 'Enable Instancing' on materials that use the shader.
    // See https://docs.unity3d.com/Manual/GPUInstancing.html for more information about instancing.
    // #pragma instancing_options assumeuniformscaling
    UNITY_INSTANCING_BUFFER_START(Props)
    // put more per-instance properties here
    UNITY_INSTANCING_BUFFER_END(Props)
    #include "CurvedSurfaceCore.cginc"
    void surf (Input IN, inout SurfaceOutputStandard o)
    //void surf (Input IN, inout SurfaceOutput o)
    {
        // Albedo comes from a texture tinted by color
        fixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color;
        o.Albedo = c.rgb;
        o.Alpha = c.a;
        o.Emission = c.rgb * tex2D(_MainTex, IN.uv_MainTex).a * _EmissionColor;
        o.Smoothness = _Glossiness;
    }
    ENDCG
}
FallBack "Diffuse"
}

Example of the shader im using for better understanding if needed.

I dont have a solution for you. But we do have a shader subforum, which is probably more appropriate than the scripting subforum. Unity Engine - Unity Discussions

Also, this is literally the third identical thread you opened within 24 hours.

This is not only spamm but also against the forum rules. In literally all forums. Please stop.

Well, for just a cursory inspection: if you want a shader that uses a fade (a fade meaning some sort of transparency), you need to change:

“RenderType”=“Transparent”

This will cause the geometry for that shader to be processed after all opaque, and then have the transparency applied.

Maybe also try the following pragmas:

#pragma surface surf Standard fullforwardshadows alpha

Note that attempting to modify shaders without any understanding of the subject will only lead to early baldness.

-ch

I understand, old threads get lost and never responded again though. Anyways im sorry and you can be assured im not planning to post it again.

Thanks for reply, after adding the entire line after #pragma (from what you send), im getting this warning : Duplicate #pragma surface found, ignoring: #pragma surface surf Standard fullforwardshadows alpha at line 32, and it doesnt do anything, my object is still fully opaque :(, any other idea ? Or any way i can help you help me ? :smile:

The description is quite obvious, isn’t it? You already have a line with “#pragma surface”, and that line is 14.

If you simply recompiled, the existing materials will not update their slot in the render queue. Create a new material to make sure it’s correctly placed into Transparent.

Other than that please heed my warning. You need to understand what you are doing; messing around with shaders otherwise is going to be immensely frustrating (heck it’s that already WITH deep shader knowledge) and will take a lot of time. Read the shader documentation (which is really badly written), and experiment with sample code. You are in Voodoo territory, so tread carefully.

1 Like

Also, a thought: your relevant code reads

        fixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color;
        o.Albedo = c.rgb;
        o.Alpha = c.a;

Question: where do you calculate the fade? The alpha will be derived from the texture color * _Color. I see no modification at all, so unless your source texture has transparency in the A channel, there will be no fading.

Fixed with this shader script :

Shader "Curved/CurvedSurfaceAlpha" {
    Properties {
        _Color ("Color", Color) = (1,1,1,1)
        _MainTex ("Albedo (RGB)", 2D) = "white" {}
        _Emission("Emission", float) = 0
        [HDR] _EmissionColor("Color", Color) = (0,0,0)
        _Glossiness ("Smoothness", Range(0,1)) = 0.5
        _Metallic ("Metallic", Range(0,1)) = 0.0
    }
    SubShader {
        Tags {"Queue"="Transparent" "RenderType"="Transparent"}
        Blend SrcAlpha OneMinusSrcAlpha
        ZWrite off

        LOD 200

        CGPROGRAM
        // Physically based Standard lighting model, and enable shadows on all light types
        //#pragma surface surf Standard fullforwardshadows vertex:vert alpha:blend noshadow
        #pragma surface surf Standard fullforwardshadows vertex:vert alpha:blend

        // Use shader model 3.0 target, to get nicer looking lighting
        #pragma target 3.0

        sampler2D _MainTex;

        struct Input {
            float2 uv_MainTex;
        };

        half _Glossiness;
        half _Metallic;
        fixed4 _Color;
        fixed4 _EmissionColor;

        // Add instancing support for this shader. You need to check 'Enable Instancing' on materials that use the shader.
        // See https://docs.unity3d.com/Manual/GPUInstancing.html for more information about instancing.
        // #pragma instancing_options assumeuniformscaling
        UNITY_INSTANCING_BUFFER_START(Props)
            // put more per-instance properties here
        UNITY_INSTANCING_BUFFER_END(Props)

        #include "CurvedSurfaceCore.cginc"

        void surf (Input IN, inout SurfaceOutputStandard o) {
            // Albedo comes from a texture tinted by color
            fixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color;
            o.Emission = c.rgb * tex2D(_MainTex, IN.uv_MainTex).a * _EmissionColor;
            o.Albedo = c.rgb;
            // Metallic and smoothness come from slider variables
            //o.Metallic = _Metallic;
            //o.Smoothness = _Glossiness;
            o.Alpha = c.a;
        }
        ENDCG
    }
    FallBack "Diffuse"
}