렌더링은 컴퓨터 그래픽에서 3D 이미지를 만드는 마지막 단계로, 원시 모델, 텍스처 및 조명을 완성된 이미지로 변환하는 작업입니다. 게임과 인터랙티브 미디어의 기존 오프라인 렌더링과 실시간 렌더링 모두에서 렌더링 파이프라인은 핵심적인 역할을 합니다. 오프라인 렌더링은 높은 충실도를 우선시하고 속도에 덜 신경 쓰는 반면, 실시간 렌더링 파이프라인은 시각적 품질과 성능 간의 균형을 맞추는 것을 목표로 합니다. 두 파이프라인의 작동 방식을 이해하면 아티스트, 테크니컬 디렉터 또는 개발자가 3D 렌더링의 잠재력을 최대한 활용하는 데 도움이 됩니다.
렌더링 파이프라인은 모델, 텍스처, 조명, 카메라 파라미터로 구성된 3D 데이터를 2D 이미지로 변환하는 프로세스입니다. 이 워크플로우는 오프라인 렌더링과 실시간 렌더링 모두에 필수적이지만 그 목표는 다릅니다. 영화, 애니메이션, 사전 렌더링된 컷신에 사용되는 오프라인 렌더링은 시간에 구애받지 않고 최고의 품질을 추구합니다. 반면 실시간 렌더링은 특히 비디오 게임이나 VR과 같은 어플리케이션에서 품질과 속도 사이의 균형을 유지하는 것을 목표로 합니다.
두 경우 모두 파이프라인은 복잡한 작업을 관리 가능한 단계로 세분화하여 GPU와 CPU가 대량의 데이터를 효율적으로 처리할 수 있도록 합니다. 이 순서에는 3D 모델 변환, 조명 적용, 텍스처 처리, 최종 이미지 표시가 포함됩니다.
다음 영상에서는 기술적인 부분에 관심이 있는 분들을 위해 Clickety Clack가 매우 포괄적으로 설명합니다:
렌더링 파이프라인의 목적은 렌더링 프로세스를 체계화하여 지오메트리부터 조명까지 씬의 모든 측면이 논리적인 순서로 처리되도록 하는 것입니다. 이러한 모듈식 접근 방식을 사용하면 각 단계에서 최적화할 수 있으므로 수백만 개의 폴리곤과 텍스처가 포함된 복잡한 씬도 렌더 할 수 있습니다.
속도보다 품질이 더 중요한 기존 오프라인 렌더링에서는 파이프라인을 통해 사실적인 그림자와 반사를 위한 레이 트레이싱과 같은 효과를 구현할 수 있습니다. 실시간 렌더링 파이프라인은 z-buffering, 백페이스 컬링, LOD(레벨 오브 디테일) 등의 기술을 사용하여 시각적 품질 저하 없이 계산 부하를 줄이면서 속도에 최적화되어 있습니다.
사용 중인 렌더러나 게임 엔진에 따라 구체적인 단계는 다를 수 있지만 핵심 단계는 비슷합니다:
비디오 게임과 같은 실시간 어플리케이션이든 영화 제작과 같은 오프라인 시나리오이든 렌더링은 원시 3D 데이터를 최종 시각적 출력으로 처리하는 일련의 단계를 따릅니다. 이 렌더링 파이프라인의 각 단계는 렌더링의 전반적인 품질과 효율성에 기여합니다. 이러한 단계를 자세히 살펴보면서 실시간 파이프라인과 오프라인 파이프라인의 주요 차이점, 특히 래스터화와 오프라인 렌더링에 사용되는 다른 기술의 차이점을 중점적으로 살펴보겠습니다.
지오메트리 처리의 핵심은 3D 오브젝트를 모델 공간에서 카메라 공간으로 변환하는 것입니다. 이 프로세스는 3D 씬을 2D 화면에 투사할 수 있는 형태로 변환하는 모델-뷰 및 프로젝션 매트릭스와 같은 몇 가지 주요 매트릭스 변환을 통해 이루어집니다.
실시간 및 오프라인 파이프라인 모두에서 z-buffering은 중요한 역할을 합니다. 이 뎁스 버퍼링 기술은 카메라와의 거리에 따라 최종 렌더링에서 어떤 오브젝트를 표시할지 결정하는 데 도움이 됩니다.
래스터화는 주로 삼각형과 같은 지오메트리 데이터를 2D 화면의 조각(잠재적 픽셀)으로 변환하는 프로세스입니다. 그러나 래스터화의 구현 방식과 의존도는 실시간 렌더링과 오프라인 렌더링 간에 큰 차이가 있습니다.
레이 및 패스 트레이싱에 대해 자세히 알아보려면 Branch Education에서 제작한 다음 동영상을 참고하십시오:
셰이딩은 오브젝트의 표면 속성과 씬의 조명을 기반으로 각 조각 또는 픽셀의 최종 색상을 계산하는 것입니다. 여기서 빛이 표면과 상호 작용하는 방식을 결정하는 작은 프로그램인 셰이더가 등장합니다.
씬의 지오메트리가 처리되고 각 조각에 음영과 조명을 적용하면 최종 이미지가 구성됩니다. 이 단계에서는 표시될 최종 2D 이미지로 모든 데이터를 조합합니다.
실시간 및 오프라인 렌더링 파이프라인 모두 동일한 기본 단계를 따르지만 접근 방식과 초점은 크게 다릅니다. 실시간 렌더링은 속도와 효율성을 강조하며 래스터화 및 광원 근사화 같은 기술을 사용하여 높은 프레임 속도로 시각적으로 만족스러운 결과를 얻습니다. 반면 오프라인 렌더링은 정확성과 디테일을 우선시하며, 높은 수준의 사실감을 제공하는 레이 트레이싱과 같은 기술을 위해 속도를 포기하는 경우가 많습니다.
기술이 발전함에 따라 두 파이프라인 간의 격차는 서서히 좁혀지고 있습니다. 실시간 레이 트레이싱이 널리 보급되면서 실시간 어플리케이션에서 보다 정확한 조명과 반사를 구현할 수 있게 되었지만, 오프라인 렌더링의 충실도에는 아직 미치지 못합니다. 두 접근 방식은 계속해서 발전하고 있으며, 각자의 분야에서 가능한 한계를 뛰어넘고 있습니다.
OpenGL은 리얼타임 렌더링 파이프라인의 훌륭한 예시를 제공합니다:
오프라인 렌더링에서는 이 파이프라인을 레이 트레이싱으로 확장할 수 있지만, 실시간 컨텍스트에서 OpenGL은 속도에 더 중점을 둡니다.
셰이더는 버텍스, 조각, 픽셀을 처리하는 방법을 정의하는 작은 프로그램입니다. 오프라인 및 실시간 파이프라인 모두에서 셰이더를 사용하면 아티스트와 개발자가 고도로 맞춤화된 효과를 만들 수 있습니다.
오프라인 렌더링에서 셰이더는 복잡한 재질, 표면 하부 산란 또는 고급 조명 모델에 사용할 수 있습니다. 실시간 어플리케이션에서 프래그먼트 셰이더는 텍스처, 색상, 조명 효과를 고속으로 렌더링하는 데 중추적인 역할을 하며, 성능 저하 없이 적절한 품질을 얻기 위해 단순화된 근사치를 사용하는 경우가 많습니다.
이전 렌더링 시스템에서는 일련의 작업(버텍스 변환, 조명 등)이 하드코딩된 고정 함수 파이프라인을 사용했습니다. Vulkan 및 Direct3D와 같은 최신 API는 개발자가 커스텀 셰이더를 작성하여 렌더링 프로세스의 모든 단계를 제어할 수 있는 프로그래밍 가능한 파이프라인을 제공하므로 유연성과 시각적 품질이 향상됩니다.
기존 오프라인 렌더링에서는 프로그래머블 파이프라인을 통해 피부부터 유리까지 모든 것을 시뮬레이션할 수 있는 복잡한 커스텀 셰이더를 만들 수 있습니다. 실시간 파이프라인에서는 성능과 품질 간의 균형을 더욱 세밀하게 제어할 수 있습니다.
렌더링 파이프라인은 3D 씬을 화면에 보이는 2D 이미지로 변환하는 일련의 단계입니다. 고급 시각 효과 및 애니메이션의 오프라인 렌더링에 사용하든 비디오 게임의 실시간 렌더링에 사용하든 기본 프로세스는 비슷하지만, 최대한 사실감을 구현하는 데 중점을 두는지 아니면 원활한 상호작용을 위해 프레임을 충분히 빠르게 제공하는지에 따라 접근 방식이 달라집니다.
이 프로세스는 정점, 에지, 면으로 구성된 모델과 텍스처, 조명 정보, 카메라 배치 등 원시 3D 데이터로 시작합니다. 이러한 3D 모델은 모델 공간에 존재하며, 이는 기본적으로 각 오브젝트가 자체와 관련하여 어디에 위치하는지를 수학적으로 정의한 것입니다. 이 3D 데이터를 평면 2D 화면에 표시하려면 일련의 변환이 필요합니다. 이 단계에서는 매트릭스 연산을 사용하여 3D 세계에서 각 버텍스의 위치를 화면 공간(2D 좌표)으로 변환하는 작업이 포함됩니다. 이러한 작업에는 카메라의 위치에 따라 씬의 방향을 바꾸는 뷰잉 변환과 멀리 있는 오브젝트를 작게 보이게 하여 원근감을 모방하는 투영이 포함됩니다.
3D 모델을 2D 좌표로 변환한 다음 중요한 단계는 조명과 셰이딩으로, 여기서 빛과 표면의 상호작용을 계산합니다. 결과에 따라 표면이 빛을 반사하는 방식, 그림자가 드리워지는 방식, 조명 환경에 따라 텍스처와 재질이 표시되는 방식이 결정됩니다. 오프라인 렌더링에서는 이 프로세스가 매우 정밀하게 처리됩니다. 패스 트레이싱과 같은 기술은 일반적으로 레이가 씬의 오브젝트에 반사되는 레이를 추적하여 반사, 굴절, 확산 조명과 같은 미묘한 상호작용을 포착하여 사실적인 조명을 시뮬레이션하는 데 사용됩니다. 이 방법은 계산 비용이 많이 들고 한 프레임을 렌더링하는 데 몇 시간 또는 며칠이 걸리는 경우가 많지만, 그 결과 사실적인 이미지를 얻을 수 있습니다. 반면 실시간 렌더링은 속도를 강조합니다. 비디오 게임과 같은 인터랙티브 어플리케이션의 성능 요구 사항을 충족하기 위해 조명 계산은 다양한 근사치에 의존합니다.
보이는 데이터를 기반으로 반사를 시뮬레이션하는 화면 공간 반사, 조명을 미리 계산하여 저장하는 베이킹 된 라이팅과 같은 기술을 사용하면 처리 속도를 높일 수 있습니다. 이러한 방법은 오프라인 렌더링에서 얻을 수 있는 사실감을 일부 희생하지만, 시스템에서 높은 프레임 속도를 유지할 수 있습니다. 최근 실시간 레이 트레이싱과 같은 GPU 기술의 발전으로 이 격차가 좁혀지면서 오프라인 렌더링과 같은 수준은 아니지만 프레임 속도를 관리 가능한 수준으로 유지하면서 더욱 사실적인 조명 효과를 구현할 수 있게 되었습니다.
파이프라인의 다음 단계는 래스터화라는 프로세스를 통해 2D 화면 좌표를 실제 픽셀로 전환하는 것입니다. 여기에서는 씬의 지오메트리 모양(주로 삼각형)이 조각 또는 픽셀 데이터로 변환됩니다. 그런 다음 화면의 각 픽셀은 텍스처, 색상, 반사율과 같은 3D 오브젝트의 재질 속성과 빛의 상호 작용 방식에 따라 '컬러링'됩니다. 간단히 말해, 이 단계에서는 오브젝트 표면의 위치와 조명이 해당 표면과 상호 작용하는 방식에 따라 최종 이미지의 각 픽셀이 어떻게 보일지 결정합니다.
오프라인 렌더링에서는 씬이 래스터화되면 여러 렌더링 패스가 수행될 수 있습니다. 이러한 패스는 이미지를 각각 반사, 그림자 또는 조명과 같은 서로 다른 요소에 초점을 맞춘 별도의 레이어로 분리하며, 나중에 포스트 프로덕션 소프트웨어에서 개별적으로 미세 조정합니다. 이 레이어 방식은 고도의 제어가 가능하기 때문에 아티스트가 놀라운 수준의 디테일과 사실감을 구현할 수 있습니다. 예를 들어, 한 패스는 직접 조명을 캡처하고 다른 패스는 간접광의 반사광에 집중하여 가장 부드러운 그림자와 미묘한 조명 효과까지 정확하게 표현할 수 있습니다.
그러나 실시간 렌더링은 초당 60프레임의 부드러운 프레임 속도를 유지하려면 전체 파이프라인을 1초 이내에 완료해야 합니다(일반적으로 16밀리초 미만). 이러한 시간 제약으로 인해 실시간 엔진은 여러 번의 패스를 거치는 사치를 누릴 수 없습니다. 대신 모션 블러나 블룸과 같은 포스트 프로세싱 효과를 한 번의 패스로 빠르게 적용하여 성능을 유지하면서 시각적 품질을 향상시킵니다.
렌더링 파이프라인은 궁극적으로 원시 3D 데이터를 화면에 표시되는 최종 이미지로 변환합니다. 오프라인 렌더링과 실시간 렌더링의 주요 차이점은 정확도와 속도 사이의 균형에 있습니다. 오프라인 렌더링은 레이 트레이싱 및 패스 트레이싱과 같은 기술에 중점을 두어 뛰어난 사실감을 제공하는 반면, 실시간 렌더링은 인터랙티브한 사용을 위해 이미지를 충분히 빠르게 생성하기 위한 최적화와 근사치에 중점을 둡니다. 특히 GPU 기반 실시간 레이 트레이싱의 혁신 등 기술이 발전함에 따라 이 두 접근 방식 간의 격차는 계속 좁혀지고 있으며, 실시간 어플리케이션에 더 큰 사실감을 선사하고 있습니다.
예를 들어 Unity에서 개발자는 성능에 최적화된 유니버설 렌더 파이프라인(URP)과 고급 셰이더 및 렌더링 기술을 사용하여 가능한 최고 품질을 구현하는 데 중점을 둔 고해상도 렌더 파이프라인(HDRP) 중에서 선택할 수 있습니다. HDRP는 볼류메트릭 라이팅 및 레이 트레이싱과 같은 기능을 제공하여 오프라인 렌더러에 가까운 퀄리티를 제공하지만, 영화나 애니메이션과 같이 사전 렌더링된 씬의 디테일 수준에는 아직 미치지 못합니다.
Unity 사용자나 추가 궁금점이 있는 분들을 위해 다음 브렌든 디킨슨의 동영상에서 소프트웨어가 제공하는 다양한 렌더 파이프라인을 살펴봅니다:
레이 트레이싱, 글로벌 조명, 물리 기반 렌더링(PBR)과 같은 고급 기술이 오프라인 렌더링을 지배하며 실제와 구분할 수 없는 이미지를 만들어냅니다. 실시간 렌더링은 디퍼드 셰이딩 및 실시간 레이 트레이싱과 같은 기술을 따라잡고 있지만, 오프라인 파이프라인에서 구현되는 충실도에 비하면 아직 초기 단계에 머물러 있습니다.
오프라인 렌더링에서 파이프라인은 시간을 거의 고려하지 않고 품질을 우선시하므로 글로벌 조명, 커스틱스, 복잡한 셰이더 계산과 같은 효과를 구현하는 데 몇 시간이 걸리는 계산이 필요합니다. 실시간 렌더링에서는 단순화된 조명 모델과 근사치에 의존하여 성능을 우선시하도록 파이프라인이 고도로 최적화됩니다.
머신러닝과 AI 강화 렌더링이 부상하면서 오프라인 및 실시간 파이프라인 모두 노이즈 감소와 최적화의 개선으로 혜택을 받고 있습니다. 또한 실시간 레이 트레이싱은 계속해서 실시간 렌더링의 경계를 넓히며 오프라인 방식과의 격차를 서서히 좁혀가고 있습니다.
오프라인 및 실시간 렌더링 모두에서 복잡한 씬을 효율적으로 관리하려면 최적화가 핵심입니다. 클리핑, LOD, 셰이더 레벨 세부 정보와 같은 기술은 실시간 파이프라인을 최적화하는 데 도움이 되며, 샘플링과 적응형 세분화는 오프라인 렌더링에 매우 중요합니다.
픽사와 같은 영화 스튜디오부터 에픽게임즈와 같은 게임 개발사에 이르기까지 다양한 업계에서 고급 렌더링 파이프라인을 사용하여 멋진 비주얼을 제작합니다. 영화는 디테일하고 사실적인 이미지를 위해 오프라인 렌더링에 크게 의존하는 반면, 게임 개발자는 빠르고 반응이 빠른 성능에 최적화된 실시간 파이프라인을 사용합니다.
3D 아티스트와 개발자는 기존 오프라인 렌더링과 실시간 파이프라인의 복잡성을 이해함으로써 프로젝트의 시각적 및 성능 목표를 달성하는 데 적합한 툴과 기법을 선택할 수 있습니다.