- 프래그먼트 쉐이더
- OpenGL 그래픽스 파이프라인에서 마지막으로 프로그래밍 가능한 스테이지
- 각 프래그먼트의 색상을 결정하여 framebuffer - window 에 그려지도록 한다.
- 프래그먼트 쉐이더의 수행으로 결정된 색상은 최종 픽셀이 아닐수도 있음.
- depth test, stencil, blending, multi sampling 등 다른 많은 효과에 영향을 받기 때문.
- Example
- #version 430 core
out vec4 color;
void main(void)
{
color = vec4(sin(gl_FragCoord.x * 0.25) * 0.5 + 0.5, ~);
} - gl_FragCoord
- 프래그먼트 쉐이더 내장 변수 중 하나
- 윈도우 안에서의 프래그먼트 위치를 가지고 있음
- 다른 스테이지들은 OpenGL이 입력값을 렌더링되는 프리미티브에 따라 보간한다. (ex. color)
70P
- 프레임버퍼 동작
- OpenGL 그래픽스 파이프라인의 마지막 스테이지
- 화면에 보이는 영역
- 색상 이외에도 픽셀당 값을 저장하기 위해 사용되는 여러 추가적인 메모리 영역
- 운영체제가 소유하나, off-screen 영역에 대해 직접 프레임버퍼 생성 가능픽
- 픽셀 오퍼레이션
- scissor test
- 사용자가 정의한 사각형의 내부에 대해서만 테스트 진행
- stencil test
- depth test
- 프래그먼트의 z 좌표와 깊이 버퍼의 내용을 비교
- 각 픽셀당 하나의 값(픽셀의 깊이)을 가짐
- 깊이 버퍼는 보통 (0~1) 사이다.
- 0에서 1으로 갈 수록 가까운 점에서 멀어지는 곳으로 이동
- 동일 위치에 이미 렌더링 된 다른 프레그먼트보다 가까운지 결정.
이미 렌더링 된 프래그먼트 보다 멀면 그리지 않는다. - blending
72P
- 컴퓨트 쉐이더
- 다른 그래픽스 관련 스테이지와는 별개로 동작하는 파이프라인.
- 그래픽스 프로세서의 계산 파워를 사용하는 방법
- 단일 스테이지 파이프라인
- work item(아이템) - local work group(그룹)
- GL_COMPUTE_SHADER 타입으로 쉐이더 생성하는 것 외에는 일반 쉐이더와 동일한 방식으로 사용한다.
댓글 없음:
댓글 쓰기