오다기리 박의 알고리즘 노트

그래픽 렌더링 파이프라인이란? 본문

컴퓨터 그래픽스/그래픽스 파이프라인

그래픽 렌더링 파이프라인이란?

오다기리 박 2021. 8. 11. 17:17

그래픽 렌더링 파이프라인


  • 파이프라인의 주된 기능 : 가상 카메라, 3차원 객체, 광원, 조명 처리 모델, 텍스처 등이 주어졌을 때 그것으로부터 2차원 이미지를 만들어내는 것, 즉 렌더링 하는 것

  • 물체의 위치와 모양 : 그들의 기하 정보, 환경 내에서의 카메라 배치, 환경의 특성에 결정

  • 물체의 외양 : 재질 속성, 광원, 텍스처, 조명 모델의 영향


  1. 아키텍처

    1. 응용 단계

      1. 소프트웨어로 실행됨. 개발자는 이 단계에서 모든 것을 통제 가능 (ex. 렌더링될 삼각형 개수 줄이기)

      2. 이 단계에서 일반적으로 구현되는 프로세스 : 충돌 검출 프로세스, 텍스처 애니메이션, 변환을 통한 애니메이션, 기하 모핑, 각종 계산 프로세스, hierarchocal view frustum culling 같은 가속화 알고리즘...

      3. 키보드, 마우스, 가상현실 헬멧 같은 입력 소스로부터 들어온 입력값을 처리

    2. 기하 단계

다각형 단위 / 정점 단위 조작 담당

부하가 큰 업무를 수행한다. (단일 광원만으로 구성된 경우에도 각각의 정점들에 약 100개의 고정밀도 부동 소수점 연산 필요)

      1. 모델 변환과 시야 변환

        1. 최종적으로 화면에 그려지기까지 하나의 모델은 여러 개의 다른 공간 또는 좌표계로 변환된다.

        2. 동일한 모델에 대해서 기본적인 기하 구조를 복제하지 않고도 서로 다른 위치, 방향, 크기를 가지는 인스턴스를 만들 수 있도록 해줌.

        3. 모델 변환에 의해 변형되는 대상 : 정점, 법선 벡터

        4. 모델 좌표 ->(모델 변환) -> 월드 좌표

        5. 시야 변환 : 카메라를 시야 좌표계의 원점에 위치시키는 것

      2. 조명 처리와 셰이딩

        1. 모델이 좀 더 현실감 있게 보이도록 하기 위해 장면에 광원을 집어 넣음

        2. 각 정점의 색 : 광원의 위치와 속성, 정점의 위치와 법선 벡터, 정ㅈ머을 포함하고 있는 물체의 특성(물성)을 이용하여 계산

        3. 삼각형의 각 정점들에서의 색상은 화면상에 렌더링되는 시점에서 삼각형 위의 모든 점들로 보간됨. -> Gouraud 셰이딩

      3. 투영

        1. 시야 영역을 단위 정육면체(정규 시야 영역)로 변환하는 과정

        2. 직교 투영(평행 투영)

          1. 직사각형 상자 모양의 시야 영역 -> (직교 투영) -> 단위 정육면체

          2. 4x4행렬로 구성

          3. 변환 후 모델은 정규화된 장치 좌표계(normalized device coordinate)에 놓여 있다.

          4. z-좌표는 Z-버퍼에 저장

        3. 원근 투영

          1. 절두체 -> (원근 투영) -> 단위 정육면체

          2. 4x4행렬로 구성

          3. 변환 후 모델은 정규화된 장치 좌표계(normalized device coordinate)에 놓여 있다.

          4. z-좌표는 Z-버퍼에 저장

      4. 클리핑

        1. 시야 영역에 포함되는 기하 요소들만 래스터화 단계로 전달되어야 하고 래스터화 단계에서 그것들을 화면에 그려준다.

        2. 시야 영역 내에 부분적으로 포함되는 기하 요소들에 대해서는 클리핑이 필요.

      5. 화면 매핑

        1. 시야 영역 안에 있는 클리핑된 기하 요소들만 화면 매핑 단계로 전달됨.

        2. 이 단계 지입 전까지 좌표는 아직 3차원.

        3. 투영 변환 후에 단위 정육면체에 놓인 기하 요소들의 화면상 좌표를 찾아낸다.

    1. 래스터화 단계

      1. scan conversion이라고도 함.

      2. 변환되고 투영된 정점과 색상, 텍스처 좌표가 주어졌을 때, 이미지를 올바르게 만들어내기 위해 각 픽셀에 정확한 색상을 지정하는 것.

      3. 더블 버퍼링 사용 : 기하 요소들이 래스터화되어 화면으로 보내지는 과정을 숨김.

      4. 텍스처와 연관된 기하 요소들은 거기에 적용된 텍스처와 함께 렌더링된다

      5. 가시성은 Z-버퍼 알고리즘으로 검사한다.


  1. 정리

    1. 응용 단계 : 사용자는 장면에 들어 있는 모델들을 조작하고 결과를 받아볼 수 있음. 카메라는 미리 정해진 경로를 따라 움직이고, 카메라의 위치, 관측 방향과 같은 카메라 매개변수 들이 응용프로그램에 의해 갱신됨.

    2. 기하 단계 : 시야 변환 + 모델 변환을 이용하여 모델의 정점들과 법선 벡터들을 변환하며, 결과적으로 모델은 시야 공간으로 들어간다. 정점에서의 조명 효과는 재질, 텍스처, 광원의 속성을 이용하여 계산되며, 모델은 투영 변환에 의해 단위 정육면체로 변환됨. 이 정육면체의 바깥쪽에 있는 모든 기하 요소들은 제거됨. 정점들은 화면상의 윈도우로 매핑되고, 이러한 모든 다각형 단위 조작이 이루어지고 나면 결과데이터는 래스터화 단계로 넘어간다.

    3. 래스터화 단계 : 모든 기하요소들이 래스터화된다. 즉, 윈도우상의 픽셀들로 변환된다. 텍스처와 연관된 기하 요소들은 거기에 적용된 텍스처와 함께 렌더링된다. 가시성은 Z-버퍼 알고리즘으로 검사한다.