Unity/ 셰이더/ Fixed Function Shader 기본 작성법

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
            }
        }
    }
}

참고 자료

[ssba]

The author

지성을 추구하는 디자이너/ suyeongpark@abyne.com

댓글 남기기

This site uses Akismet to reduce spam. Learn how your comment data is processed.