layer_shader 함수 설명
layer_shader 함수는 특정 레이어에 셰이더 리소스를 할당하여 해당 레이어가 그 셰이더를 사용하여 렌더링되도록 합니다. 이 함수는 레이어의 핸들이나 레이어 이름(문자열 형태)을 제공하고, 사용할 셰이더의 ID를 함께 전달해야 합니다. 셰이더는 미리 자산 브라우저에서 생성되어 있어야 하며, 셰이더 인덱스(셰이더 리소스의 이름)를 이 함수에 전달합니다.
할당된 레이어에 인스턴스가 추가되어 있는 경우, 셰이더는 인스턴스가 사용하는 모든 드로우 이벤트에 적용됩니다. 예를 들어, 인스턴스에 "Draw GUI Begin" 이벤트가 있다면, 셰이더가 자동으로 적용됩니다. 또한, 셰이더는 해당 레이어에 그려지는 다른 그래픽 요소(스프라이트 자산, 타일 맵, 파티클 시스템 등)에도 영향을 미칩니다.
이 함수는 드로우 이벤트나 스텝 이벤트에서 호출하는 것이 아니라, 방의 시작 시점인 Room Creation Code 또는 인스턴스의 Create Event/Room Start Event에서 호출해야 합니다.
문법
layer_shader(layer_id, shader)
인수 설명
| 인수 | 유형 | 설명 |
|---|---|---|
| layer_id | String 또는 Layer ID | 타겟 레이어의 핸들(또는 레이어 이름) |
| shader | Shader Asset | 레이어에 할당할 셰이더 인덱스 |
반환값
N/A
예제
var lay_id = layer_get_id("Instances");
layer_shader(lay_id, shd_Sepia);
위 코드는 주어진 레이어에 셰이더 리소스 shd_Sepia를 할당하여 모든 드로잉에 적용합니다.
활용 예제
- 기본 셰이더 적용
gml var lay_id = layer_get_id("Background"); layer_shader(lay_id, shd_Blur); - 특정 레이어에 셰이더 적용
gml var lay_id = layer_get_id("Foreground"); layer_shader(lay_id, shd_Grayscale); - 셰이더를 사용한 효과
gml var lay_id = layer_get_id("UI"); layer_shader(lay_id, shd_Negative); - 다양한 셰이더를 레이어에 적용 ```gml var lay_id1 = layer_get_id("Instances"); layer_shader(lay_id1, shd_Sepia);
var lay_id2 = layer_get_id("Background"); layer_shader(lay_id2, shd_Blur); ```
- 셰이더를 사용한 애니메이션 효과
gml var lay_id = layer_get_id("Effects"); layer_shader(lay_id, shd_Flicker);
이와 같은 방식으로 layer_shader 함수를 활용하여 다양한 그래픽 효과를 레이어에 적용할 수 있습니다.