카테고리 없음

알파 블랜딩 (2pass), Holo

일등하이 2023. 12. 13. 17:38
반응형

테스트 

Shader "Custom/Alpha2Pass"
{
    Properties
    {
        _MainTex ("Albedo (RGB)", 2D) = "white" {}
    }
    SubShader
    {
        Tags { "RenderType"="Opaque" }
        LOD 200

        zwrite on
        ColorMask 0

        CGPROGRAM
        #pragma surface surf nolight noambient noforwardadd nolightmap novertexlights noshadow

        #pragma target 3.0

        struct Input
        {
            float4 color:COLOR; 
        };

        void surf (Input IN, inout SurfaceOutput o)
        {
        }

        float4 Lightingnolight(SurfaceOutput s, float3 lightDir, float atten){
            return float4(0, 0, 0, 0);
        }
        ENDCG

        // 2nd pass zwrite off, rendering on
        zwrite off

        CGPROGRAM
        #pragma surface surf Lambert alpha:fade

        sampler2D _MainTex;

        struct Input
        {
            float2 uv_MainTex;
        };

        void surf (Input IN, inout SurfaceOutput o)
        {
            fixed4 c = tex2D (_MainTex, IN.uv_MainTex);
            o.Albedo = c.rgb;
            o.Alpha = 0.5;
        }
        ENDCG

    }
    FallBack "Diffuse"
}

 

 

 

 

 

Rim

Shader "Custom/Rim" {
	Properties {
		_Color ("Color", Color) = (0,0,0,0)
		_RimPower ("Rim Power", Range(0,5)) = 0
		_RimColor ("Rim Color", Color) = (1,1,1,1)
	}
	SubShader {
		Tags { "RenderType"="Transparent" "Queue" = "Transparent" }
		LOD 200
		Cull Back


		CGPROGRAM

		#pragma surface surf Standard alpha:fade

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

		sampler2D _MainTex;

		struct Input {
			float2 uv_MainTex;
			float3 viewDir;
			float3 worldPos;
		};

		float _RimPower;
		fixed4 _RimColor;
		fixed4 _Color;

		void surf (Input IN, inout SurfaceOutputStandard o) 
		{
			o.Albedo = _Color;
			float dotP = 1 - saturate(dot( normalize(IN.viewDir), normalize(o.Normal)));
			o.Emission = pow(dotP, _RimPower) * _RimColor;
			o.Alpha = pow(dotP, _RimPower) + _Color.a;
		}
		ENDCG
	}
	FallBack "Diffuse"
}

 

 

 

 

Holo

 

Shader "Custom/Holo2"
{
    Properties
    {
        _MainTex ("Albedo (RGB)", 2D) = "white" {}
        _Color ("Color", Color) = (1,1,1,1)
    }
    SubShader
    {
        Tags { "RenderType"="Transparent" "Queue"="Transparent" }

        //https://docs.unity3d.com/kr/530/Manual/SL-Pass.html
        Pass{
            ColorMask 0
        }

        CGPROGRAM        
        #pragma surface surf Lambert noambient alpha:fade

        sampler2D _MainTex;
        float4 _Color;
        
        struct Input
        {
            float2 uv_MainTex;
            float3 viewDir;
            float3 worldPos;
        };

        void surf (Input IN, inout SurfaceOutput o)
        {
            fixed4 c = tex2D (_MainTex, IN.uv_MainTex);
            //o.Albedo = 0;//c.rgb;
            float ndotv = saturate(dot(o.Normal, IN.viewDir));
            o.Emission = _Color.rgb;
            float rim = pow(1 - ndotv, 3) +  pow(frac(IN.worldPos.g * 10 - _Time.y * 2), 3);// float3(0,1,0);    1.1 -> 0.1, 1.9->0.9   0 ~ 0.9
            o.Alpha = rim;
        }
        ENDCG
    }
    FallBack "Diffuse"
}
반응형