Corner ID 사용을 위한 셰이더 설정
이 문서는 셰이더에서 코너 ID를 사용하는 방법에 대해 설명합니다. 이 기능은 모든 셰이더에서 사용되는 전역 상태를 설정하며, 활성화되면 셰이더가 입력 색상 값에서 2비트를 "가로챕니다". 이 비트는 빨간색 색상 값의 가장 낮은 비트와 파란색 색상 값의 가장 낮은 비트에서 가져옵니다. 이렇게 가져온 값은 셰이더에서 복구하여 어떤 정점(즉, 어떤 코너)을 다루고 있는지 확인하는 데 사용됩니다.
주의: 이 기능은 정점 버퍼와 프리미티브를 사용할 때는 작동하지 않습니다. 각 정점의 색상 데이터는 사용자가 처리해야 합니다.
코너 ID 계산
파란색 구성 요소의 가장 낮은 비트는 가장 중요한 비트를 저장하고, 빨간색 구성 요소의 가장 낮은 비트는 가장 덜 중요한 비트를 저장합니다. 정점 셰이더에서 코너 ID를 계산하는 방법은 다음과 같습니다:
vec2 rem = mod(in_Colour.rb * 255., 2.);
int corner_id = int(dot(vec2(1., 2.), rem));
코너 ID와 위치
아래 표는 가능한 값과 해당하는 코너 위치를 나열합니다:
| Shader Corner ID | Red Lowest Bit | Blue Lowest Bit | Corner ID | Position |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | Top-left |
| 1 | 1 | 0 | 1 | Top-right |
| 2 | 0 | 1 | 2 | Bottom-right |
| 3 | 1 | 1 | 3 | Bottom-left |
함수 문법
shader_enable_corner_id(enable);
인수 설명
| 인수 | 유형 | 설명 |
|---|---|---|
| enable | Boolean | 이 기능을 활성화(true) 또는 비활성화(false)합니다. |
반환값
- 해당 없음
활용 예제
다음은 코너 ID 기능을 활성화하는 예제입니다:
shader_enable_corner_id(true);
위 코드는 모든 셰이더에서 코너 ID를 위한 색상 비트를 사용할 수 있도록 활성화합니다.
추가적인 활용 예제:
// 코너 ID를 사용하여 특정 정점에 대한 작업 수행
if (corner_id == 0) {
// Top-left 코너에 대한 로직
}
// 다른 코너에 대한 조건문
if (corner_id == 1) {
// Top-right 코너에 대한 로직
}
// 셰이더에서 코너 ID를 활용하여 색상 변경
if (corner_id == 2) {
out_Color = vec4(1, 0, 0, 1); // Bottom-right를 빨간색으로
}
// 코너 ID에 따라 다른 텍스처 적용
if (corner_id == 3) {
out_Color = texture(sampler, in_TextureCoord);
}
이러한 예제들은 코너 ID를 활용하여 다양한 그래픽 효과를 구현하는 데 도움이 됩니다.