2 분 소요

1) 변환 파이프라인

  • 파이프라인 :
    • 입력된 값들이 연결된 ‘파이프라인’이라는 관을 통해서 출력되는 일련의 과정을 나타낸다.
    • 주된 기능으로는 가상카메라, 3차원 객체, 광원, 조명 처리 모델, 텍스처등이 주어 졌을때 그것으로 부터 2차원 이미지를 만들어 내는것이다.

image

  • 변환 파이프라인 : 정점이 픽셀로 변환되는 과정을 말한다.
    • 목적: 하나의 이미지를 만들고 게임 화면에 보여주기 위한 과정이다.

image image image

월드 변환(TM 적용)

image

카메라(뷰) 좌표계

  • 카메라의 위치를 원점(0,0,0)으로 이동한 경우 모든 오브젝트의 카메라 변환 행렬을 통해 재배치 된다.

image image 오브젝트들은 카메라와 반대 방향으로 이동해야하기 때문에 -를 붙인다.

image

투영 좌표계

  • 원근 투영 좌표계 : 오브젝트와의 거리에 따라 원근감을 보여준다. (카메라와 멀어지면 작게 보이고, 가까이서 찍으면 크게 보인다.)

image

  • 직교 투영 좌표계 : 거리와 무관하면서 항상 같은 크기로 보여준다.
    • 에디터나 툴을 만들 때 사용한다.

image

원근 투영 변환

  • 피라미드 형테인 접두체를 정육면체 형태인 투영좌표계로 변환한다.
  • 투영 좌표계에 벗어난 오브젝트는 보여지지 않는다.

image

뷰포트 변환

  • 투영좌표계에 있는 오브젝트들을 화면에 다시 그려주는 과정

image

2) 렌더링 파이프라인

  • 응용 단계, 기하 단계, 래스터화 단계의 3단계로 구성한다.
  • 랜더링 속도는 가장 속도가 낮은 단계에서 결정한다.
  • 응용 단계
    • 응용단계는 응용프로그램에 의해 동작
      • 소프트 웨어로 구성
      • 충돌검출, 가속화 알고리즘.애니메이션 등
  • 기하 단계
    • 소프트 웨어 또는 하드웨어로 구현
      • 기하변환, 투영, 조명 처리
      • 무엇, 어떻게, 어디에 그려질지 결정
  • 레스터화 단계
    • 이전단계에서 생성된 데이터들을 이용하여 이미지를 만들어 내는 단계

응용 단계

  • 응용단계는 소프트웨어로 실행
  • 응용단계 종단에서 렌더링될 기하구조가 렌더링 파이프 라인의 다음단계로 공급
    • 기하구조 : 화면에 그려지게 될 점, 선, 삼각형과 같은 렌더링 기본요소를 말한다.
  • 충돌하는 물체를 검출하며, 키보드, 마우스 가상현실 헬멧과 같은 다양한 입력값을 처리한다.
  • 텍스처 에니메이션, 변환을 통한 에니메이션, 기하 모핑, 그외의 각종 프로세스들을 처리한다.
  • 시각 절두체 선별등과 같은 가속화 알고리즘

기하 단계

  • 다각형 단위의 조작이나 정점 단위의 조작을 주로 담당한다.

image

  • 모델 변환과 시야 변환
    • 물체의 좌표는 모델 좌표라고 불리며, 모델 변환이 적용되면, 월드 좌표계 또는 월드 공간에 위치한다고 말한다.
    • 투영과 클리핑을 위해 카메라와 모든 물체들은 시야 변환에 의해 변환한다.
    • 더욱 정교한 변환이 이 단계에서 일어날 수도 있음.
    • 강체들을 부드럽게 연결하기 위해 정점 혼합(vertex blendint)방법을 적용할 수도 있다.
      • 정점 혼합(vertex blendint) : 정점에 적용되는 변환 행렬에 대해 가중치를 주는 방법
    • 정점 셰이더에 의해 적용되는 변환도 표면의 기하 구조를 바꿀 수 있다.
  • 조명처리와 셰이딩 image

  • 투영
    • 조명처리를 하고나면 렌더링 시스템은 투영을 한다.
    • (-1,-1,-1)과 (1,1,1)의 좌표를 가지는 단위를 정육면체로 변환한다.
    • 직교투영과 원근투영의 두 종류가 있다.
      • 원근 투영 : 오브젝트와의 거리에 따라 원근감을 보여준다.
      • 직교 투영 : 거리와 무관하면서 항상 같은 크기로 보여준다.
    • 투영 변환 후 모델은 “정규화된 장치 좌표계에 놓여 있다.” 라고 한다.
  • 클리핑 (clipping)
    • 전체 또는 일부가 시야 영역에 포함되는 기하 요소들 만이 래스터화 단계로 전달 되어야 한다.
    • 단위 정육면체에 걸쳐 있는 삼각형 들은 잘려나가고 새로운 정점으로 대치된다.
  • 화면 매핑 (Screen Mapping)
    • 시야 영역의 안쪽에 있는 기하 요소들 만이 화면 매핑 단계로 전달.
    • 이 단계에 진입할 때 까지 좌표는 3차원이다.
    • 하나의 장면은 (x1, y1) (x2, y2)를 최대 모서리로 가지는 윈도우 내에 렌더링되어야 하며 z좌표는 이 매핑에 영향을 받지 않는다.

래스터화 단계

  • 목적 : 이미지를 올바르게 만들어내기 위해 픽셀에 정확한 색상을 지정하는 것이다.
  • 기하 요소들이 래스터화 되어 화면으로 보내지는 과정을 관측자가 볼 수 없도록 하기 위해 더블 버퍼링(Double Buffering) 기법을 사용한다.
  • 더블 버퍼링(Double Buffering) 기법
    • 사용 이유: 이미지를 그리는 데 시간이 소요되므로 이미지의 출력이 잦을수록 깜빡거리는 현상이 심해지는데, 이를 해결해준다.
    • 버퍼 역할을 해줄 메모리 장치 컨텍스트(보이지 않는 화면)를 하나 더 사용하여 그곳에 이미지를 그리고, 이미지가 완성되면 실제 화면 장치 컨텍스트로 한꺼번에 베껴 그리는 것이다.

image

업데이트: