Shader "Hwanggoon/2Textures SemiTrans"
{
    Properties
    {
        _Color ("Main Color", COLOR) = (1,1,1,1)
        _MainTex("Texture", 2D)   = "white" {}
        _SubTex ("Texture", 2D)   = "white" {}
    }
   
 SubShader
 {
  Tags { "Queue" = "Transparent" }
  // Queue 태그는 렌더링 순서를 결정하는 데에 사용하는 태그
  // 반투명은 랜더링 순서에 따라 정상적으로 보이지 않을 수 있음
  
  // 랜더링 순서
  // 1) Background 1000
  // 2) Geometry (디폴트) 2000
  // 3) AlphaTest 2450
  // 4) Transparent 3000
  // 5) Overlay 4000
  
  // Queue 는 임의 수로도 적용 가능
  // Tags { "Queue" = "Geometry+1" }
  // 이렇게 정의하면 오브젝트는 2001번 랜더 Queue 에 속하게 됨
  // 랜더링 순서를 마음대로 조절가능
  
  // Pass에도 Tags가 있으니 주의
  
  Pass
  {
   Blend SrcAlpha OneMinusSrcAlpha
   // Blend 기본 구문 : Blend SrcFactor DstFactor
   // (이제 나올 결과 색상값 x SrcFactor) + (이미 스크린(버퍼)에  존재하는 색상값 x DstFactor)
   
   // SrcFactor DstFactor 외에 들어 올 수 있는 속성들
   // One, Zero, 
    // SrcColor, SrcAlpha,
    // DstColor, DstAlpha,  
    // OneMinusSrcColor, OneMinusSrcAlpha, 
    // OneMinusDstColor, OneMinusDstAlpha
   
   // 알파값이 0.6 이라고 한다면, SrcAlpha = 0.6 이고 OneMinusSrcAlpha = 0.4 이므로
   // 오브젝트 색상과 배경 색상은 60% 대 40% 비율로 섞여서 반투명 처리됨
   
   
   SetTexture [_MainTex]
   {
    Combine texture
   }
                        
   SetTexture [_SubTex]
   {
    ConstantColor[_Color]
    // ConstantColor : 색을 상수로 받음
    
            Combine texture lerp(texture) previous, constant
            // , : 색상과 알파를 각기 적용하하기 위함
            // constant : ConstantColor로 받은 상수를 의미함
            // , 뒤에 오는 상수는 알파만을 의미 해서 ConstantColor의 알파만을 사용
   }
  }
 }
}

 

'Shader > Unity Shader 공부' 카테고리의 다른 글

Unity Shader) 07_CG_ex  (0) 2014.04.30
Unity Shader) 06_2Textures SemiTrans  (2) 2014.04.30
Unity Shader) 05_2Textures_Alpha  (0) 2014.04.23
Unity Shader) 04_2Textures  (0) 2014.04.23
Unity Shader) 03_VertexLit_Simple  (0) 2014.04.23
Unity Shader) 02_VertexLit_White  (0) 2014.04.23
Posted by 황군 Hwanggoon

댓글을 달아 주세요

  1. 2016.08.18 14:05  댓글주소  수정/삭제  댓글쓰기

    쉐이더로 머리 쥐뜯던 아트생입니다
    이글이 이해하는데 많은 도움이 되었습니다 감사합니다!