최근 수정 시각 : 2018-07-14 20:13:08

렌더링

1. 일반적 의미2. 컴퓨터 그래픽에서의 의미
2.1. 방식
2.1.1. 와이어프레임 렌더링2.1.2. Local Illumination2.1.3. Global Illumination

1. 일반적 의미

Render의 기본 의미는 무엇인가를 지금과는 다른 어떤 상태로 만든다는 뜻.

음악에서 연주자가 악보에 있는 기록된 음악을 연주자 자신만의 기술과 감성으로 표현(연주)하는 것을 렌더링이라고 부른다. 마찬가지로 작곡 프로그램에서 화면 상 악보에 기보된 대로 실제 들을 수 있는 음악을 추출하는 작업도 렌더링이라고 부른다. 일반적으로는 잘 쓰이지 않는 단어지만 음악하는 사람들에게 아주 친숙한 용어.

요리에서 동물의 지방에서 기름을 추출하는 것도 렌더링이라고 부른다.

농림축산 분야에서는 가축사체기계에 넣어 분쇄 및 열처리해 최종적으로 가루 형태의 산출물(비료, 또는 사료로 사용 가능)로 만들어내는 것을 렌더링이라 한다. 즉, 재활용 처리하는 것을 렌더링이라고 한다.

2. 컴퓨터 그래픽에서의 의미


렌더링이 왜 아래처럼 불리는지(?) 에 대한 픽사의 간단한 설명. 자막無
3D분야의 최종보스

또는 2차원 또는 3차원 장면을 바탕으로 컴퓨터를 이용해 사진이나 영상을 만들어내는 과정 또는 그러한 기법을 말하기도 한다. 보통 '3D 렌더링'과 같이 3D 이미지/영상과 깊은 관련을 맺고 있으며, 기술적 발전도 이곳에서 주로 이루어진다. 건물 설계, 게임, 애니메이션 등에 주로 사용된다. 이 문서에서는 3D 렌더링을 주로 다루고 있다.

해외에서는 영화 촬영과 동시에 레이트레이싱 렌더링이 이루어지는 기법을 적용한 단편 영화가 나왔다. 제작 영상. VRay를 이용했는데, 실시간 레이트레이싱 뷰포트는 프로그램 자체가 지원하는 경우가 있으므로 별로 신기할 것은 없으며,[1] 보통 그 뷰포트는 보통 미리보기로만 쓰인다. 실제 렌더링은 이후에 오랜 시간을 걸쳐 이루어진다. 광선 추적을 적게 하면 출력에 노이즈가 생기며, 당장 영상 속 카메라를 보아도 화면에 자글자글한 점들이 보인다. 그래서 노이즈를 없애려면 광선의 개수를 높여야 하는데, 이렇게 되면 사진 하나를 렌더링하는 데에도 고사양 CPU나 쿼드로급 GPU에서 수 분에서 수십 분이 걸리는 경우가 많다. 제대로 된 영화급이면 프레임당 수십시간이 걸리기도 한다. 이것이 영화와 게임 사이에 그래픽 차이가 생기는 이유이기도 하다. 게임은 부드럽게 하려면 최소 초당 30번 렌더링해야 하지만,[2] 영화는 시간이 게임보다 주어진 시간이 엄청나게 차이가 나고, 수천대의 컴퓨터로 렌더팜을 구성하여 병렬 렌더링을 하기 때문이다.

관련분야 : 멀티미디어

2.1. 방식

2.1.1. 와이어프레임 렌더링

파일:external/upload.wikimedia.org/Icosahedron_t0_A2.png
이름 그대로 골격만 렌더링하는 방식이다. 모양만을 보여주고 렌더링에 걸리는 시간도 빠르기 때문에 주로 작업용으로 쓰인다.

참고로 1972년에 이 방식을 이용해서 최초의 단편 애니메이션을 만들기도 했다.

위 사진은 보이지 않는 면에 대해서도 선이 보인다. 이러한 선들을 제거하는 기술이 바로 은선 제거 기술이다.

2.1.2. Local Illumination

파일:external/upload.wikimedia.org/Phong-shading-sample.jpg
주로 게임에서 쓰이는 방식으로[3] 위의 와이어프레임의 면에 색을 입힌 것이 Local Illumination이다. 이를 이용해서 드디어 실제와 유사한 모양의 사진을 만들 수 있다.

와이어프레임에 그대로 색만 입혔기 때문에 렌더링하면 왼쪽(Flat Shading)과 같이 투박한 모양이 나온다. 여기에 그림자 등을 추가하여 실제와 유사한 모양으로 바꾸는 것이 셰이딩이며, 오른쪽은 Phong Shading 기법을 사용하여 나온 결과물이다.[4] 셰이더에는 Phong 셰이딩 말고도 여러가지 셰이더가 있으며, 게임에서 가장 많이 쓰이는 것 중 하나는 SSAO가 있다.[5] 로컬 일루미네이션의 근본적 한계로 색을 입히고 셰이딩을 하여 현실적으로 만드는 것이기 때문에 반사와 산란, 간접광에 취약하다. 로컬 일루미네이션에서는 빛의 반사와 산란이 일어나지 않아 게임 개발 등지에서는 거울이나 간접광을 만들 때 반사 텍스쳐나 간접광을 일일이 배치해야 한다. 수준 높은 게임엔진은 그 과정을 한번에 할 수 있게 하겠지만, 기본적으로는 저 과정이 모두 들어가 있다. 물론 이런 단점이 있는데도 왜 쓰는가 하면, 아래 항목에 비하면 연산량이 없다고 봐도 무방하기 때문.

그리고 그 외에도, 카툰렌더링과 같은 현실적이지 않은 특정한 스타일을 원할 때도 쓰일 수 있다.

2.1.3. Global Illumination

http://madebyevan.com/webgl-path-tracing/
해당 방식을 이용하는 기법은 대표적으로 Ray Tracing이 있으며, 이외에도 Path Tracing, Photon Mapping, Radiosity, 복셀을 이용한 VXGI(Voxel Global Illumination) 등의 기법도 Global Illumination 방식에 속한다.
픽셀 하나하나를 통과하는 광선들이 있다 가정하고 그 광선을 추적하는 방식으로 당연히 현실에 가장 가까우며 셰이더의 필요성이 위 방식에 비해 현저히 낮다. 셰이더 자체가 Path Tracing을 할 수 없는 로컬 일루미네이션에 현실감을 주기 위해 많이 쓰이기 때문.[6] 대신 픽셀 하나하나를 통과하는 광선이 있다 생각하기 때문에, 연산량이 하늘을 찌른다. 게다가 광선의 산란이나 반사를 추적하기 위해서는 한 픽셀에 여러 번 연산을 해야 하는데[7] 이 정도의 연산은 GPU가 엄청난 발전을 거듭한 현재에도 실시간 렌더링이 필요하지 않는 영화에서나 쓰이며 1080p의 해상도는 아득히 높고 540p에 지포스 GTX 1080을 4개 SLI해도 노이즈 없이 60프레임을 달성하려면 갈 길이 멀다.


레이 트레이싱을 이용한 게임 엔진이 개발중이다. 해당 영상은 GTX TITAN 2장[8]으로 찍은 것이며 그럼에도 불구하고 이동중에는 노이즈가 엄청나게 많이 생긴다. 정지 화면에서는 괜찮지만 게임 엔진 특성상 정지 화면에서만 잘 나오는 것은 큰 문제다.

디즈니의 '하이페리온' 렌더링 기술이 이 방법을 쓴다. 현재 애니메이션이나 영화 CG는 대부분 이 기술 기반이다.


언리얼 엔진에서 1080p 24fps로 실시간 레이트레이싱을 구현한 영상을 공개했다. 노이즈는 보이지 않으며, 연산 장비는 V100 4개를 사용하였다고 한다.[9] 마이크로소프트의 DirectX Raytracing API를 사용하고, ILMxLAB, NVIDIA와 협력하여 제작하였다고 한다.

설명 영상에 따르면 완전히 레이트레이싱만으로 화면을 만들어내는 것이 아닌, 낮은 해상도를 레이트레이싱으로 렌더링 한 뒤에 AI를 이용해 화면을 합성해 결과물을 만들어내는 것으로 보인다. 레이트레이싱의 무식한 연산량을 우회한 셈.

사실 이번 GDC2018을 보면 언리얼 엔진과 엔비디아만 이 기술을 개발한 것이 아니다. AMD 또한 레이 트레이싱 기술을 개발했다고 발표했으며 EA사의 SEED 프로젝트 팀 또한 레이 트레이싱 기술 데모를 선보였다. 하지만 EA의 그것은 언리얼과는 의미가 조금 다른데, 언리얼이 영화 산업을 위한 렌더링 기법을 개발했다면 EA는 게임 산업에 접목시킬 기술을 개발했다는 것이다.[10][11] 위에서 소개한 언리얼 엔진과 같이 마이크로소프트의 DirectX Raytracing API에 기반하고 있다.

또한 이 레이 트레이싱 기법은 해상도를 줄이다보니 자연스레 광선 추적량이 줄어들게 된다. 또한, 언리얼 엔진의 테크 데모를 보면 알겠지만, 상당히 적은 오브젝트를 배치했고, 유리 굴절같은것은 보이지 않고, 사람의 맨살이 드러나지 않고 있다. 즉, 완전히 기존 영화 산업의 렌더링 기법과 퀄리티면에서 완벽할 수 없다는 것이다. 하지만 그럼에도 불구하고 기존의 렌더링 비용을 비롯한 여러가지 자원을 절약한다는 면에서 획기적인 신기술임은 확실하다고 볼 수 있다.

여담이지만, 언리얼엔진은 스타워즈: 로그원 CG 제작에도 참여했다고 한다. 하지만 정확히 어떤 형식으로 구현된건지는 밝히지 않아 자세한 정보는 알기 어렵지만, 렌더링 시간을 줄였다는 표현을 비추어보아 실시간 렌더링을 했음을 알 수 있다.

[1] 대표적으로 Blender.[2] 게다가 게임은 접근성을 위해 사양 조절도 해야 한다. 부품 능력은 곧 돈으로 나타나기 때문이다. 누구나 i9, TITAN V를 쓰진 않으니까.[3] 초기에는 수만 프레임을 렌더링하므로 작업량이 많은 애니메이션에서도 이 방식이 쓰였다. 그 당시에는 Global Illumination 방식이 너무 느렸기 때문이다. 그러나 하드웨어와 Global Illumination 기법이 발전하며 GI를 대신 쓰게 되었다.[4] 참고로 퐁 쉐이딩은 화소별로 색을 계산하여 컬러와 하이라이트를 표현할 수 있지만 계산 시간이 Flat Shading보다는 훨씬 오래 걸린다.[5] 2016년 기준으로는 그림자를 더 정확히 연산하는 HBAO나, 아예 복셀로 연산하는 셰이더도 있다. 둘 다 SSAO에 비해 더 많은 연산이 필요하며, 복셀 연산은 특히 더 그렇다.[6] 물론 후처리에 뭔가를 합성한다든지 하는 것들에도 쓸 수 있다.[7] 반투명한 물체에서는 10의 광선 중 5의 광선이 산란되고 5의 광선만 통과하는 등의 변수가 있으며, 산란의 경우 방향이 모두 다르다. 이런 이유로 연산이 적을수록 노이즈가 많다.[8] 지포스 GTX TITAN 하나가 GTX 970보다 낮으며 GTX 1080 성능의 약 2/3이다.[9] 한화로 약 6000만 정도의 가치가 있다고 한다.[10] 엔비디아 측이 볼타 아키텍처부터 이 기술을 지원한다고 했으나 기본적으로 AI 연산이 필요하다보니 게이밍 그래픽 카드 시리즈인 지포스가 레이 트레이싱 기술을 지원할 지는 의문이다. 출시 이후 서술 바람.[11] TITAN V의 경우에는 AI 연산을 지원한다. EA사의 SEED 프로젝트 또한 TITAN V 3장을 이용해서 렌더링한 것이다.