Fixed Function Shader

고정 함수 셰이더. 이름 그대로 고정되어 있기 때문에 커스터마이징이 불가능하지만, 그 반대 급부로 처리 속도가 빠르고 낮은 성능의 기기에서도 잘 동작한다는 장점이 있다. 보다 정확한 특징은 아래 참조.

성능 상 좋지만 고급 효과를 구성하기에는 한계가 있으므로 보통은 잘 쓰지 않는다. 이 페이지에서는 간단한 내용만 이해하고 넘어가기로 한다.

Unity에서의 작성법

Shader "Tutorial/Basic" {
  Properties {
    _Color ("Main Color", Color) = (1,1,1,0.5)
    _MainTex ("Base (RGB)", 2D) = "white" { }
  }

  SubShader {
    Pass {
      Material {
        Diffuse [_Color] // _Color는 Properties에 등록된 변수
        Ambient [_Color]  // _Color는 Properties에 등록된 변수
      }
      Lighting On
      SetTexture [_MainTex]  // _MainTex는 Properties에 등록된 변수
    }
  }
}

작성법은 매우 간단하다. 재질의 Diffuse 등은 Material 블록 안에 작성하면 되고, Texture는 SetTexture를 이용하면 된다.

기본적인 Diffuse, Ambient, Texture 외에 여러 효과들이 지원되는데 상세한 내용은 아래 참조

Shader "Tutorial/Basic" {
  Properties {
    _Color ("Main Color", Color) = (1,1,1,0.5)
    _SpecColor ("Spec Color", Color) = (1,1,1,1)
    _Emission ("Emmisive Color", Color) = (0,0,0,0)
    _Shininess ("Shininess", Range (0.01, 1)) = 0.7
    _MainTex ("Base (RGB)", 2D) = "white" { }
  }

  SubShader {
    Pass {
      Material {
        Diffuse [_Color]
        Ambient [_Color]
        Shininess [_Shininess]
        Specular [_SpecColor]
        Emission [_Emission]
      }
      Lighting On
      SeparateSpecular On
      SetTexture [_MainTex] {
        constantColor [_Color]
        Combine texture * primary DOUBLE, texture * constant
      }
    }
  }
}

참고 자료