웹지엘 용어
웹지엘을 공부할 때 필수적으로 알아야 할 용어를 정리해 본다.
1. 기본 용어
버텍스(vertex)
- 3D 객체의 꼭지점 혹은 정정
- 하나의 정점은 3차원 좌표계로 구성(x, y, z)
- 실수형(float type)
- 위치 좌표, 색상, 법선, 텍스쳐 좌표에 연관
인덱스(index)
- 버텍스의 접근자
- 정수형(integer type)
기하(geometry)
- 버텍스로 구성하는 도형
- 3개의 버텍스로 이루어진 하나 이상의 삼각형으로 구성
텍스처(texure)
- 주로 물체의 표면의 질감을 나타내는 2차원 사진 데이터 저장에 사용
- 텍스처 좌표는 S(x), T(y) 2차원 좌표로 구성 (DirectX는 UV로 표현)
- 사진은 픽셀(pixel, picture element)로 구성
- 텍스처는 텍셀(texel, texture element)로 구성
- 텍스처는 샘플러 변수(sampler variable)로 표시(sampler2D)
프래그먼트(fragment)
- 웹지엘에서 픽셀을 프래그먼트로 표현
- 버텍스로 구성된 삼각형에 색상/텍스처 등을 할당
버퍼(buffer)
- 메모리 저장소
- 버텍스/인덱스/컬러 정보/텍스처 좌표 등을 저장
타입드어레이(typed array)
- 자바스크립트 배열로 8종 (Int8/16/32Array, Uint8/16/32Array, Float32/64Array)
- 바이너리 데이터 접근으로 기하 처리 성능 향상
- bufferData 소스로 사용
버텍스 버퍼 오브젝트(VBO, Vertex Buffer Object)
- 웹지엘용 버텍스 버퍼 객체
- 버텍스 좌표로 구성된 기하 데이터 저장
- 데이터는 자바스크립트 배열 사용(Float32Array, typed array)
인덱스 버퍼 오브젝트(IBO, Index Buffer Object)
- 웹지엘용 인덱스 버퍼 객체
- 데이터는 자바스크립트 배열 사용(Uint16Array, typed array)
- 16비트 정수형으로 제한(65,535개)
2. 셰이더 용어
GLSL(OpenGL Shading Language, 오픈지엘 셰이딩 언어)에 대한 이해가 필요하다.
버텍스 셰이더(vertex shader)
- 버텍스 애트리뷰트에 대한 연산 기술
- 정점 셰이더, 버텍스 마다 호출
- 기하 데이터(버텍스 좌표, 텍스처 좌표 등) 처리
프래그먼트 셰이더(pragment shader)
- 레스터화 단계에서 프래그먼트의 처리
- 각 픽셀(프래그먼트)의 색상 계산 처리
셰이더 프로그램(shader program)
- 컴파일한 버텍스/프래그먼트 셰이더를 링크하여 GPU에 전달
- 두 개 셰이더를 링크 하는 순간 동일한 이름으로 선언된 베이링 변수 연결
애트리뷰트(attribute)
- 버텍스 셰이더와 웹지엘 간의 버텍스 데이터 연결
- 버텍스 세이더에서 사용하는 입력 변수
- 버텍스 좌표/색상, 텍스쳐 좌표, 법선 벡터(vertex normal) 등 처리
유니폼(uniform)
- 버텍스/프래그먼트 셰이더 양쪽에서 사용하는 읽기 전용 변수
- 광원 등 처리
- gl.unifomMatix#fv()를 통해 자바스크립트에서 셰이더로 전달
- gl.uniformMatrix4fv는 실수형 벡터를 사용하는 4x4 행렬 의미
- gl.uniform3fv는 3개의 실수형 벡터 의미 (3차원 좌표, vec3)
베어링(varing)
- 버텍스 세이더에서 프래그먼트 세이더로 값을 전달할 때 사용하는 변수
- 양쪽 셰이더에서 동일한 변수명으로 선언해야 변수 공유 가능
- 버텍스 셰이더에서는 읽기/쓰기 가능하지만 프래그먼트 셰이더에서는 읽기 전용
상수(const)
- 컴파일타임(compile-time) 상수
타입(type)
- void: 반환값 없는 함수
- bool: 조건형
- int: 부호가 있는 정수형(signed integer)
- float: 실수형
- vec#: #개의 실수형 벡터(vec2, vec3, vec4)
- bvec#: #개의 조건형 벡터(bvec2, bvec3, bvec4)
- ivec#: #개의 정수형 벡터(ivec2, ivec3, ivec4)
- mat#: #X# 실수형 행렬(mat2, mat3, mat4)
- sampler2D: 2D 텍스처 핸들
- samplerCube: 큐브맵 텍스처 핸들
attribute vec3 aVertexPosition;
varying vec4 vColor;
varying vec2 vTextureCoord;
varying vec3 vVertexNormal;
uniform sampler2D uSampler;
uniform samplerCube uCubeSampler;
Written on January 5, 2016