GLSL · 04 Attribute와 보간
단계: 셰이더 언어와 데이터 흐름 · 편집 가능한 예제 · 저장 ID: glsl-step-04
목표와 학습 후 역량
- 정점 데이터를 shader에 연결한다.
- 보간으로 생성되는 값을 설명한다.
선수 지식
3단위 결과물과 기록을 이어 사용합니다. Attribute와 보간 실험에 앞서 이전 입력과 기준 출력을 보관합니다.
핵심 개념과 설명
정점 입력
attribute는 buffer에서 정점별 값을 공급합니다. shader 위치와 vertexAttribPointer의 크기·stride·offset이 맞아야 합니다.
보간
vertex의 출력은 삼각형 내부 fragment로 보간됩니다. 정점에 없는 중간 색이 나타나는 이유를 이 데이터 흐름으로 설명할 수 있습니다.
실습 준비
예제 화면의 실행 범위 안내를 먼저 확인하세요. 다음은 과제를 별도 프로젝트로 확장할 때의 준비 환경입니다. 별도 localhost 프로젝트에서 WebGL2와 GLSL ES 3.00으로 직접 구현하는 문서 안내 실습입니다. 기존 예제의 GLSL 버전을 먼저 확인하고 1.00 문법을 혼용하지 않습니다.
연결된 예제는 출발점입니다. 아래 과제 전체가 완성된 코드는 아니며, 예제의 지원 범위를 넘는 작업은 별도 프로젝트에서 수행하세요.
실습 과제
- attributes.js에 위치와 RGB가 섞인 정점 세 개를 작성하세요.
- layout(location=0/1) in과 stride 20·offset 0/8을 연결하세요.
- vertex의 out color를 fragment in color로 받고 세 꼭짓점과 중심을 관찰하세요.
관찰할 변수
| 변수 | 기준 조건 | 바꿀 조건 | 예상할 변화·검증 가설 |
|---|---|---|---|
| 정점 색 | 모두 빨강 | 빨강·초록·파랑 | 삼각형 내부에 혼합색이 생길 것으로 예상합니다. |
표의 예상은 측정 결과가 아닙니다. 한 번에 한 조건만 바꾸고 실제 결과가 다르면 원인을 기록하세요.
완료 조건
- 정점 속성 byte offset 표를 작성한다.
- 세 꼭짓점과 중심의 기대 색을 설명한다.
자가 점검
- flat 보간을 사용하면 중심 색은 어떻게 바뀌나요?
- varying 이름만 같으면 타입은 달라도 되나요?
공식 참고
연결된 예제와 실행 범위
브라우저 WebGL ShaderMaterial 실행. 고정 640×360 비교이며 프레임 간격은 GPU 시간과 다릅니다.
원본 코드·기록은 자동으로 덮어쓰지 않습니다. 기존 예제를 초기화할 때도 필기는 유지됩니다.