Search
Duplicate

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에 등록된 변수 } } }
GLSL
복사
작성법은 매우 간단하다. 재질의 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 } } } }
GLSL
복사

참고 자료