3-[1,2] Shader로 데이터 전달, 스테이지간 데이터 전달
- Vertex shader
- 유일한 필수 스테이지
- 첫 번째 프로그래밍 가능한 스테이지
- 입력 제공을 위해 고정 함수 스테이지(버텍스 패칭 또는 버텍스 풀링)이
먼저 실행됨
- <in>
- vertex shader의 입력
- Shader Example
- #version 430 core
layout (location = 0) in vec4 offset;
void main(void)
{
gl_Position = offset;
}
- 변수에 값을 넣는 방법?
- glVertexAttrib
void glVertexAttrib4fv(
GLuint index, const GLfloat *v)
;
- https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glVertexAttrib.xhtml
- index
- shader에서 offset 선언 시
"location = x" 의 x와 동일하다.
- 매 프레임마다 vertex attrib 갱신 가능.
- 스테이지 간 데이터 전달
- Vertex shader
- #version 430 core
layout (location = 0) in vec4 color;
out vec4 vs_color;
void main(void)
{
vs_color = color;
}
- Fragment shader
- #version 430 core
in vec4 vs_color;
out vec4 color;
void main(void)
{
color = vs_color;
}
- 인터페이스 블록
- 여러 변수를 하나의 interface block 으로 그룹화
- Vertex shader
- layout (location=0) in vec4 color;
out VS_OUT
{
vec4 color;
} vs_out;
void main(void)
{
vs_out.color = color;
}
- Fragment shader
- in VS_OUT
{
vec4 color;
} fs_in;
out vec4 color;
void main(void)
{
color = fs_in.color;
}
댓글 없음:
댓글 쓰기