surface shader base

fragment ¹æ¹ý°ú ºñ½ÁÇÏÁö¸¸ ÃÖÁ¾ °á°ú°ªÀÌ color·Î ³ª¿ÀÁö ¾Ê°í ±¸Á¶Ã¼·Î ³ª¿Â´Ù.
º¹ÀâÇÑ ¶óÀÌÆà °ø½ÄÀ» Á¦°øÇØÁֱ⠶§¹®¿¡ ¶óÀÌÆà ÄÚµå ÀÛ¼º¾øÀÌ »ç¿ë °¡´ÉÇÏ´Ù.

¹°·Ð Á÷Á¢ Ä¿½ºÅÒ ¶óÀÌÆÃÀ» ¼ÎÀÌ´õ ÄÚµå·Î ÀÛ¼º ÇÒ ¼öµµ ÀÖ´Ù.

±âº» ±¸Á¶

#pragma surface ¸í·ÉÀ¸·Î ½ÃÀÛÇϸé Surface Shader¸¦ »ç¿ëÇÏ°í Àִ°ÍÀÌ´Ù.

#pragma surface surfaceFunction lightModel [optionalparams]

¿¹Á¦¸¦ ¸ÕÀúº¸°í ºÐ¼® Çغ¸ÀÚ.
¶óÀÌÆÃÀº À¯´ÏƼ¿¡¼­ Á¦°øÇØÁÖ´Â "Lamber"¸¦ ÀÌ¿ëÇÑ´Ù.

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

        #pragma surface surf Lambert

        sampler2D _MainTex;
        sampler2D _TwoTex;        

        struct Input {
            float2 uv_MainTex;
            float2 uv_TwoTex;
            float4 c : Color;  //vertex color
        };

        void surf (Input input, inout SurfaceOutput o) {
            o.Albedo = half3(0.5, 0.5, 1);
        }
        ENDCG
    }
    FallBack "Diffuse"
}

À§ÀÇ ¼ÎÀÌ´õ Äڵ带 ´õ ´Ü¼øÈ­ ½ÃÄÑ º¸¸é ´ÙÀ½°ú °°´Ù.

Shader "Custom/TestSurf" {
    Properties { }
    
    SubShader {
        CGPROGRAM

        #pragma surface surf Lambert

        struct Input {
            float4 c : Color;
        };

        void surf (Input input, inout SurfaceOutput o) {
            o.Albedo = 0.3;
        }
        ENDCG
    }
    FallBack "Diffuse"
}

Surface ¼ÎÀÌ´õ ÀÔ·Â ±¸Á¶Ã¼


surface ÇÔ¼öÀÇ Input ±¸Á¶Ã¼¿¡ µé¾î °¥¼ö ÀÖ´Â ÆĶó¸ÞÅÍ¿¡ ´ëÇؼ­ ¾Ë¾Æ º¸ÀÚ.

  • Color Á¤ÀÇ °ªÀÌ µé¾î°¡¸é ¹öÅؽº Ä®¶óÀÌ´Ù
  • ÅؽºÃ³´Â uv µÚ¿¡ ÅؽºÃ³ À̸§À» ºÙÀδÙ
  • viewDir - ºä ¹æÇâÀ» Æ÷ÇÔÇÕ´Ï´Ù
  • screenPos - ¹Ý»ç È¿°úÀÇ ½ºÅ©¸°½ºÆäÀ̽º À§Ä¡ ¶Ç´Â ½ºÅ©¸°½ºÆäÀ̽º È¿°ú¸¦ Æ÷ÇÔÇÑ´Ù
  • worldPos - ¿ùµå °ø°£»óÀÇ À§Ä¡¸¦ ​​Æ÷ÇÔÇÑ´Ù
  • worldRefl - Surface ShadersÀÌ o.Normal¿¡ ±âÀÔÇÏÁö ¾Ê´Â °æ¿ì ¿ùµå ¹Ý»ç º¤Å͸¦ Æ÷ÇÔÇÑ´Ù
  • worldNormal - Surface ShadersÀÌ o.Normal¿¡ ±âÀÔÇÏÁö ¾Ê´Â °æ¿ì ¿ùµå ¹ý¼± º¤Å͸¦ Æ÷ÇÔÇÑ´Ù
  • worldRefl; INTERNAL_DATA - Surface ShadersÀÌ o.Normal¿¡ ¾µ °æ¿ì ¿ùµå ¹Ý»ç º¤Å͸¦ Æ÷ÇÔÇÑ´Ù
  • worldNormal; INTERNAL_DATA - _Surface Shaders°¡ o.Normal¿¡ ¾²´Â °æ¿ì ¿ùµå ¹Ý»ç º¤Å͸¦ Æ÷ÇÔ
ÀÚ¼¼ÇÑ ¼³¸íÀº À¯´ÏƼ ¸Å´º¾óÀ» ÂüÁ¶ÇÑ´Ù
http://docs.unity3d.com/kr/current/Manual/SL-SurfaceShaders.html



ÂüÁ¶)
http://docs.unity3d.com/kr/current/Manual/SL-SurfaceShaders.html
http://docs.unity3d.com/kr/current/Manual/SL-SurfaceShaderLighting.html
http://openwiki.kr/unity/sl-surfaceshaders#surface_shader_input_structure
http://egloos.zum.com/chulin28ho/v/5498022
http://marupeke296.com/UNI_S_No3_SurfaceShader.html