pudding81 2024. 2. 26. 13:16

 

x= >red

y =>green

z=> blue

 

 

Shader "Custom/triplanar"
{
    Properties
    {
      
        _MainTex ("Albedo (RGB)1", 2D) = "white" {}
        _MainTex2 ("Albedo (RGB)2", 2D) = "white" {}
        _MainTex3 ("Albedo (RGB)3", 2D) = "white" {}
        
    }
    SubShader
    {
        Tags { "RenderType"="Opaque" }
      

        CGPROGRAM
    
        #pragma surface surf Lambert

       
        #pragma target 3.0

        sampler2D _MainTex;
        sampler2D _MainTex2;
        sampler2D _MainTex3;

        struct Input
        {
            float2 uv_MainTex;
         
            float3 worldPos;
            float3 worldNormal;

        };

    
        void surf (Input IN, inout SurfaceOutput o)
        {
            
            fixed4 c = tex2D (_MainTex, IN.uv_MainTex);
           
            float2 topUV = float2(IN.worldPos.x,IN.worldPos.z); //윗면
            float2 sideUV = float2(IN.worldPos.z,IN.worldPos.y); //옆면 
            float2 frontUV = float2(IN.worldPos.x,IN.worldPos.y); //앞면 

            float4 topColor = tex2D(_MainTex,topUV); //red
            float4 sideColor = tex2D(_MainTex2,sideUV); //green
            float4 frontColor = tex2D(_MainTex3,frontUV);//blue
            
            //혼합 
            o.Albedo = lerp(sideColor,frontColor,abs(IN.worldNormal.z)); //y =green, z=blue
            o.Albedo = lerp(o.Albedo,topColor,abs(IN.worldNormal.x)); //x =red
           
  
           // o.Albedo = IN.worldNormal.rgb;           
            o.Alpha = 1;
        }
        ENDCG
    }
    FallBack "Diffuse"
}