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 ±¸Á¶Ã¼¿¡ µé¾î °¥¼ö ÀÖ´Â ÆĶó¸ÞÅÍ¿¡ ´ëÇؼ ¾Ë¾Æ º¸ÀÚ.
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 |