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

참고 자료