반응형
셰이더가 무엇인가?
셰이더(Shader)는 그래픽 처리 장치(GPU)에서 실행되는 프로그램이다. 3D 장면의 렌더링 과정에서 빛, 그림자, 색상 등 시각적 효과를 계산하고 조절하여 사실적인 렌더링을 구현한다. 셰이더는 버텍스 셰이더(Vertex Shader, 위치 계산)와 프래그먼트 셰이더(Fragment Shader, 픽셀)로 나뉜다. 이를 통해 빛의 반사, 표면 질감 표현, 물결 효과 등 다양한 시각 효과를 만드는데 사용된다.
왜 셰이더가 필요한가?
GPU는 CPU처럼 일반 명령어를 실행하는 구조가 아니다. WebGL은 GPU 파이프라인에 셰이더 프로그램(vertex + fragment)을 올려놓고, 데이터를 버퍼에 넣어 GPU에 전달한다. CPU는 "데이터를 GPU에 넘기고 > 어떤 방식으로 처리할지(셰이더 코드) > 언제 그릴지"만 결정한다. 결국 GPU가 이해할 수 있는 건 셰이더 코드뿐이다.
WebGL 파이프라인의 기본 구성 요소
WebGL에서 가장 기본적인 파이프라인은 다음과 같이 나눠진다.
Vertex Shader
- 입력: 각 버텍스(vertex) 좌표, 속성(색상, 텍스처 좌표 등)
- 출력: 화면 공간 좌표(clip space)
- matrix 인자를 여기서 곱해 projection/view 변환을 처리합니다.
Fragment Shader
- 입력: vertex shader에서 보간된 값
- 출력: 픽셀 색상 (최종적으로 화면에 보이는 결과)
최소 셰이더 예시 (GLSL)
// Vertex Shader (단순 좌표 변환)
attribute vec2 a_position;
uniform mat4 u_matrix;
void main() {
gl_Position = u_matrix * vec4(a_position, 0.0, 1.0);
}
// Fragment Shader (단색 출력)
precision mediump float;
void main() {
gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0); // 빨간색
}
Reference
반응형
'Dev Stories > 프론트엔드(Front-End)' 카테고리의 다른 글
필수로 사용되는 React 라이브러리 (0) | 2025.08.25 |
---|---|
ECMA, ECMAScript란? (0) | 2025.06.11 |
gyp: Xcode or CLT version detected! (0) | 2025.06.11 |