셰이더 프로그래밍 입문 1~2장

라코마코·2023년 5월 19일

셰이더 란?

화면에 출력할 픽셀의 위치와 색상을 계산하는 함수

GPU에서 돌아간다.

(GPU 파이프라인)

이 파이프라인에서 Vertex Shader(정점 쉐이더) Fragment Shader( 픽셀 쉐이더 )에 대해서 공부한다.

정점 쉐이더

정점 쉐이더는 각 정점의 공간을 변환한다. (물체 -> 월드 -> 뷰 -> 투영 )

픽셀 쉐이더

최종적으로 화면에 그릴 색을 결정한다.

전역 변수

각 쉐이더에서 공유하는 변수 glsl에서는 uniform 타입

3D 공간변환

  1. 물체 공간

"물체" 기준의 공간, 물체 하나만있고 x,y,z축이 있음 영어로는 object space, local space로 부른다.

물체공간에선 물체 자신만의 좌표계를 가지고 있으므로 다른물체를 그리기 어렵다.

  1. 월드 공간

물체가 존재하는 공간 쉽게 말해 우리가 살고있는 현실의 공간이라고 부른다 세계 공간이라고도 부른다.

world space만의 다른 x,y,z축을 가지고 있다.

  1. 뷰 공간

월드 공간에 카메라의 공간도 포함시킨 개념

  1. 투영 공간 (Projection Space)

3d 공간 (뷰공간) 을 화면에 투영시킨 공간이다.

정리

  1. 물체 공간
  2. 월드 공간
  3. 뷰 공간
  4. 투영 공간

이렇게 4가지 공간이 존재한다.

각 공간으로의 이동은 월드 행렬을 곱하여 진행한다. 파이프라인에선 대략

물체공간 -> x월드 행렬 연산 -> 월드 공간 -> 뷰 행렬 연산 -> 뷰 공간 -> 투영 행렬 연산 -> 투영 공간 순으로 진행된다.

연산에 필요한 행렬은 렌더몽키에서 전역변수로 제공하고 있어 mul 함수를 사용해 곱하기만 하면 된다.

월드 공간 참고 :http://www.codinglabs.net/article_world_view_projection_matrix.aspx

0개의 댓글