Graphics/OpenGL
GLSL
va95
2023. 12. 28. 23:54
- GLSL에서 사용 가능한 data type
- 기본 타입: int, float, double, uint, bool
- 벡터 타입:
- vecX: float형 벡터
- bvecX: bool형 벡터
- ivecX: int형 벡터
- uvecX: uint형 벡터
- dvecX: double형 벡터
- 행렬 타입:
- matX: float형 행렬
- bmatX: bool형 행렬
- imatX: int형 행렬
- umatX: uint형 행렬
- dmatX: double형 행렬
- 벡터 원소 접근
- .x, .y, .z, .w 인덱스를 사용
- .rgba, .stpq도 동일한 방식으로 사용 가능
- swizzling 가능
- 얻어오고 싶은 인덱스를 연속으로 쓰기
- .xyz => vec3
- Vertex shader
- 각 정점 별로 설정된 vertex attribute를 입력받는다
- 몇 번째 attribute를 입력받을지에 대한 추가적인 설정을 할 수 있음
- layout (location = n)
- 반드시 정점의 출력 위치 gl_Position값을 계산해줘야 함
- Rasterization
- Vertex shader의 출력값을 primitive에 맞게 보간하여 픽셀별 값으로 변환 (Rasterization)
- Fragment shader
- Rasterization 과정을 거쳐 픽셀별로 할당된 vertex shader의 출력값이 입력됨
- 각 픽셀의 실제 색상 값이 출력되어야 함
Uniform
- GLint glGetUniformLocation( GLuint program, const GLchar *name);
- glUseProgram
- glUniformXX(GLint location, ...