ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Unity] Rendering Pipeline : 렌더링 순서
    Unity 2024. 12. 6. 07:39

    1. 오브젝트 데이터 받아오기

    • 그래픽 카드는 버텍스(Vertex, 쉽게 말해서 점)으로만 이루어진 물체의 데이터 값을 받아온다.
    • 아직 화면에는 아무것도 존재하지 않고, 값으로만 존재한다.
    • Vertex가 가지고 있는 정보
      • Index number
      • Position : 위치
      • Normal : 면에서 수직인 단위 벡터
      • Color
      • UV(Texcoord) : 텍스처 좌표를 정의하는 2D 좌표
      • 접선 (Tangent) 등

    → Vertex 들을 이어 붙여 삼각형을 생성하여 면을 만듬.

    2. 정점(Vertex) 셰이더

    1. 로컬(Local) 좌표계
      • 물체가 가지고 있는 자기 중심적인 위치값
      • 오브젝트 별로 자신의 pivot 값이 0,0,0 인 상태 (중심값)
      • 유니티에서는 로컬 좌표계를 오브젝트(Object) 좌표계라고도 부른다.
    2. 월드(모델) 좌표계
      • 월드 좌표계 : 절대 좌표인 월드 좌표의 중심점으로부터 각 버텍스의 상대적 위치값. 0,0,0이 중심점
      • Vertex(로컬 좌표계) * 월드 변환행렬(월드 좌표계) = 절대적인 월드 값으로 나타냄
      • 유니티에서는 월드 좌표계를 모델이라고 부른다.
    3. 카메라 (뷰/ 시선) 좌표계
      • 이전까지 오브젝트는 존재했지만, 카메라가 없기 때문에 보이지 않았다.
      • Vertex(로컬 * 월드) * 카메라 행렬 = 카메라의 중심점으로부터 상대적 거리
      • 물체들은 화면에 보일 수 있게 되지만, 원근감은 고려되지 않음
      • 카메라 행렬은 뷰(View)라고보도 부르며, 오토그래픽 프로젝션(Orthographic Projection)으로 부르기도 함
    4. 프로젝션(Projection) 좌표계
      • Vertex(로컬 * 월드 * 카메라) * 프로젝션 행렬 = 카메라에서 부터 느껴지는 원근감
      • 먼 곳은 좁혀진 것처럼 버텍스 위치를 조정
      • 카메라가 Perspective Projection 일 경우에만 일어나는 순서. Orthographic Projection일 경우엔 생략.
     💡 3D 오브젝트가 생성 됐지만, 픽셀 셰이더를 거치지 않아서 화면에 출력되지는 않음

    3. 레스터라이져(Rasterizer)

    • 3D 오브젝트가 화면에 보이는 부분만 픽셀로 찍어 보여주는 것을 레스터화(Raster) 라고 한다.
    • 이제 모니터에 출력 됨. 매 프레임마다 이 작업이 이루어지며, 픽셀 셰이더가 버텍스 셰이더보다 무겁다.
    • 최근 Direct X 에서는 여기에 여러가지 셰이더가 추가로 들어간다. Hull Sahder, Tessellator, Domain Shader, Geometry Shader, Compute Shader …

    4. 픽셀 셰이더(Pixel Shader)/ 프레그먼트 셰이더(Fragment Shader)

    • 조명과 텍스쳐, 그림자와 각종 특수효과 등 연산
    • 연산 과정 : 정점 데이터 → GPU [ 버텍스 셰이더 (정점 좌표변환) -정점위치→ 레스터라이저 -픽셀위치→ 픽셀셰이더(픽셀 색상 결정) ] → 픽셀 색상
    • 유니티 셰이더 그래프의 마스터 스택(Master Stack) 도 이 파이프라인 개념 순서대로 만들어져 있음.

    마스터 스택

     

    반응형
Designed by Tistory.