최근 수정 시각 : 2018-11-26 08:32:19

렌더링

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

1. 일반적 의미

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

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

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

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

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


렌더링이 왜 아래처럼 불리는지(?) 에 대한 픽사의 간단한 설명. 자막無

또는 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년에 이 방식을 이용해서 최초의 단편 애니메이션을 만들기도 했다.

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

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/
빛은 어떤 사물에 닿았을 때 반사가 이뤄진다. 이때 빛이 어느 정도의 강도로 반사되느냐를 결정하는 것으로 정반사와 난반사가 있다. 정반사된 빛은 사물의 질감을 표현하며 난반사된 빛은 사물의 색을 표현한다. 또한 정반사가 옅어지며 난반사로 변하게 된다. Illumination이란 이런 과정을 수학적으로 계산하여 표현하는 모델이다. Global Illumination은 소위 GI 라고 부르는 것으로, 특정 장면에 있는 모든 물체의 질감과 색, 빛을 통틀어 계산하여 표현하는 것이다. GI 는 엄청난 자원이 소모되기 때문에 그만큼 렌더링 시간이 오래 걸린다. 해당 방식을 이용하는 기법은 대표적으로 레이 트레이싱(Ray Tracing)이 있으며, 이외에도 패스 트레이싱(Path Tracing), 포톤 맵핑(Photon Mapping), 라디오서티(Radiosity), 복셀을 이용한 VXGI(Voxel Global Illumination) 등의 기법도 Global Illumination 범주에 속한다.

대표적으로 레이 트레이싱이라는 것은 1980년 Turner Whitted가 An improved illumination model for shaded display 논문에서 발표한 기법으로 이미지의 픽셀 하나하나를 통과하는 광선들이 있다 가정하고 그 광선(Ray)을 역추적(Trace)하는 방식이다. 당연히 현실에 가장 가까우며 셰이더의 필요성이 위 방식에 비해 현저히 낮다. 셰이더 자체가 Path Tracing을 할 수 없는 로컬 일루미네이션에 현실감을 주기 위해 많이 쓰이기 때문.[6] 대신 픽셀 하나하나를 통과하는 광선이 있다 생각하기 때문에, 연산량이 하늘을 찌른다. 게다가 광선의 산란이나 반사를 추적하기 위해서는 한 픽셀에 여러 번 연산을 해야 하는데[7] 이 정도의 연산은 GPU가 엄청난 발전을 거듭한 현재에도 실시간 렌더링이 필요하지 않는 영화에서나 쓰이며 1080p의 해상도는 아득히 높고 540p에 지포스 GTX 1080을 4개 SLI해도 노이즈 없이 60프레임을 달성하려면 갈 길이 멀다. 그러나 GeForce 20의 튜링 아키텍쳐가 지원하는 RTX가 등장함으로서 어느정도는 흉내를 낼 수 있게 되었다.


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

현재 애니메이션이나 영화 CG는 대부분 이 기술 기반이다.


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

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

사실 이번 GDC 2018에서 시연된 언리얼 엔진 기반의 실시간 레이 트레이싱 구현 영상을 보면 에픽게임즈와 NVIDIA만 이 기술을 발표한 것이 아니다. 이는 레이트레이싱이 2018년에 새로 나온 기술이 아니기 때문이다.컴퓨터에 입문한지 얼마 되지 않은 사람들은 잘 모르겠지만, 10년전인 2008년에 인텔이 컴퓨팅 그래픽 연구용으로 울펜슈타인에 레이 트레이싱을 적용시켜서 데모를 시연했던적도 있었다. 이렇듯 레이트레이싱은 예전부터 좋긴 하고 미래에 꼭 하긴 해야겠는데 지금은 컴퓨터 성능이 못받쳐주네? 이런 분위기였다. 그러다 2018년 엔비디아에서 마침내 레이트레이싱 전용 ASIC인 RT코어를 잔뜩 탑재한 그래픽카드를 출시했기 때문에 2018년에 다시 한번 이슈가 된 것이다. 렌더팜에서는 예전부터 엔비디아나 AMD에서 제공하는 레이트레이싱 렌더러를 사용하거나, PowerVR 만드는 그 이미지네이션에서 제공했었던 전용 가속장치나 기타 회사에서 나오는 솔루션을 사용해 제한적으로 레이트레이싱을 적용해 렌더링을 돌렸다. AMD 또한 레이 트레이싱 기술을 재발표했으며[10] EA사의 SEED 프로젝트 팀 또한 레이 트레이싱 기술 데모를 선보였다. 하지만 EA의 그것은 에픽게임즈와는 의미가 조금 다른데, 언리얼이 영화 산업을 위한 렌더링 기법을 개발했다면 EA는 게임 산업에 접목시킬 기술을 개발했다는 것이다.[11][12] 위에서 소개한 언리얼 엔진과 같이 마이크로소프트의 DirectX Raytracing API에 기반하고 있다.

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

현재로서 GPU 실시간 레이 트레이싱의 상용화를 가로막는 것은 VFX 스튜디오에서 납득할 만한 가격의 그래픽카드의 GPU의 램 용량과, [13] 기존 렌더러들의 포팅인데, 전자는 한참 멀어보이고 후자는 카오스그룹, 솔리드앵글 등에 의하여 빠르게 이루어지고 있다. 옥테인이나 사이클스 같은 렌더러들은 이미 GPU 연산을 지원하고 있다. VFX에서 이 정도이니 게임은 한참 멀었다고 봐도 된다.

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

배틀필드 VFIFA 19에 사용된 2018년 버전의 프로스트바이트 엔진부터는 레이 트레이싱 기능을 지원한다.

현재까지 실시간 레이트레이싱은 지포스 RTX2080TI로도 제대로 구현하기 힘들만큼 무리가 많다는 것이 대부분의 평가이다. 제대로 레이트레이싱을 적용하면 흔히 말하는 화면 지글거림 (텍스쳐면이 지글거리면서 깨지는 현상)이 일어난다. 게임에서 적용하는 것은 이런 지글거림을 최소화하며 프레임유저도 간신히 맞추어 가는 수준의 최적화일뿐 현세대로서는 무리라는 의견이 많다. 최소 7nm공정세대정도는 되어야 어느정도 제대로된 레이트레이싱을 기대할 수 있는 수준이다.[14] 엔비디아에서 아직 하드웨어 구현으로 제대로 완성도 안된 레이트레이싱을 가져온 것은 그간 그래픽카드에 점점 성능이 평준해져가서[15] 시장에 경쟁력을 확보하기 위해 새로운 무기로서 AMD가 제대로 준비하기 힘든 분야의 비밀무기로 내놓았다는 의견이 많다. 이는 ATi 시절때도 있던 전통 때문인데, ATi는 개발할때 GPU를 적은 모델만 출시해서 소프트웨어 적으로 모딩을 해 파이어프로 파이어GL 라데온 파이어CL 등의 여러 모델에 같은 GPU를 돌려쓰는 특성에서 기인한다. AMD가 엔비디아마냥 레이트레이싱 ASIC을 스트림프로세서 만큼 박아서 출시하면 당장에 게임은 잘 될 것이다. 그런데 레이트레이싱 용 ASIC을 도입해 얻는 레이트레이싱 성능의 향상은 여러 제품군 중 가장 수익성이 떨어지는 일반소비자용에서나 장점으로 통할 성능이기 때문이다. 가장 수익률이 높은 축에 속하는 GPGPU 시장을 예로 들면, 머신러닝 연산돌릴때 레이트레이싱이 필요할까 생각해보자. 별로 필요없는 레이트레이싱 성능은 오르지만 면적이 2배로 증가해 가격이 폭등함과 수율이 저조해져서 오는 공급부족, 생산비용 증가로 인해 수익성 높은 시장에서의 경쟁력을 제 발로 차버리는 꼴이 되는것이다. 수익률이 상대적으로 부족한 시장에서의 약진을 위해 팔기만 하면 현금이 돈다발로 들어오는 GPGPU 시장에서의 경쟁력을 포기한다는 것은 배보다 배꼽이 큰 격이다. 당장 베가와 GCN만 봐도 게임성능과 FP32 연산성능의 괴리를 보면 무슨 말을 하는지 이해할 수 있을 것이다. 게다가 ATi는 전통적으로 미들코어 전략을 고수해왔기에, 700mm2급의 다이가 출현하게 되는 제품은 기존 ATi 제품의 철학과 정면으로 대비되는 일이다. AMD가 준비를 못하는게 아니라 그냥 안하는거다. 애초에 지포스 20 시리즈도 별다른 거 없다. 단지 레이 트레이싱 전용 ASIC을 기존 GPU 다이에 SM(스트림 멀티프로세서)마다 1개씩 통합시켰을 뿐. 덕분에 RTX 2080 Ti의 다이 사이즈는 754mm2다. 더 골때리는건 CUDA, 텍스처 유닛 등 전통적인 영역의 코어 면적이 300mm2급인데, 새로 추가된 RTX용 ASIC인 RT코어가 차지하는 면적도 300mm2급이다. 쉽게 말하면,범용 코어의 갯수는 많이 증가하지 않았는데, 레이 트레이싱 전용의 연산기능을 하는 RT코어라는 ASIC을 범용 코어랑 같은 수준으로 달아놓은 것이다. 일반적으로 사용하는 기능도 아니고... 한정된 곳에서만 사용되는 ASIC을 저 정도 수준으로 달아놓아도 60프레임 고정이 어려운 것을 보면 게임에서의 실시간 레이트레이싱 적용이 얼마나 어려운지 실감할 수 있는 대목이다. 참고로, 연산 및 전문가 타겟으로 나온 타이탄 V가 무려 815mm2로 나왔고, 일반 게이밍용 카드에서는 지포스 20 시리즈가 나오기 전까진 NVIDIA 지포스 GTX 980 Ti에 사용된 GM200과 AMD 라데온 FURY X에 사용된 Fiji가 공정은 2012년 지포스 600 시리즈, 라데온 HD 7000 시리즈부터 적용된 28nm 그대로인데 세대를 거듭하면서 스펙 상향으로 다이가 점점 커지게 되자 이른바 역대 일반 게이밍용 GPU 중 가장 큰 빅칩으로 소문났던 GPU들이었는데 이들의 면적이 각각 601mm2, 596mm2로 끽해야 600mm2 내외 수준이였다.


[1] 대표적으로 Blender.[2] 게다가 게임은 접근성을 위해 사양 조절도 해야 한다. 부품 능력은 곧 돈으로 나타나기 때문이다. 누구나 2990WX, TITAN V를 쓰진 않으니까.[3] 초기에는 수만 프레임을 렌더링하므로 작업량이 많은 애니메이션에서도 이 방식이 쓰였다. 그 당시에는 Global Illumination 방식이 너무 느렸기 때문이다. 그러나 하드웨어와 Global Illumination 기법이 발전하며 GI를 대신 쓰게 되었다.[4] 참고로 퐁 쉐이딩은 화소별로 색을 계산하여 컬러와 하이라이트를 표현할 수 있지만 계산 시간이 Flat Shading보다는 훨씬 오래 걸린다.[5] 2016년 기준으로는 그림자를 더 정확히 연산하는 HBAO나, 아예 복셀로 연산하는 셰이더도 있다. 둘 다 SSAO에 비해 더 많은 연산이 필요하며, 복셀 연산은 특히 더 그렇다.[6] 물론 후처리에 뭔가를 합성한다든지 하는 것들에도 쓸 수 있다.[7] 반투명한 물체에서는 10의 광선 중 5의 광선이 산란되고 5의 광선만 통과하는 등의 변수가 있으며, 산란의 경우 방향이 모두 다르다. 이런 이유로 연산이 적을수록 노이즈가 많다.[8] 2013년 2월에 출시된 케플러 아키텍처 기반의 지포스 GTX TITAN으로, 카드 1장 기준으로는 GTX 970보다 낮은 성능이며, GTX 1080 성능의 절반에 가까운 수준이다.[9] 한화로 약 6000만 정도의 가치가 있다고 한다.[10] 레이 트레이싱 렌더러가 FireRays 라는 이름으로 거진 2016년부터 등장했으며, 그 모태는 2008년에도 있었다.[11] 엔비디아 측이 적은 광선 추적량을 커버하기 위한 AI 연산이 필요하므로 텐서 코어가 탑재된 볼타 아키텍처부터 이 기술을 지원한다고 언급했으며, 게이밍 그래픽 카드인 지포스에서는 텐서 코어에다가 레이 트레이싱 가속 장치인 RT 코어까지 탑재된 튜링 아키텍처부터 지원한다.[12] TITAN V의 경우에는 먼저 나온 테슬라 V100과 같은 볼타 아키텍처 기반의 그래픽카드로써 텐서 코어를 통해 고속 AI 연산을 지원한다. EA사의 SEED 프로젝트 또한 TITAN V 3장을 이용해서 렌더링한 것이다.[13] 신에 따라서 마야 등에서 신을 여는 데만 몇 십 분이 걸리기도 한다.[14] 애초 7nm 되도 힘들 공산이 크다...[15] 그간 테셀레이션을 이용해서 재미를 보았지만 이젠 한계까지 왔다는 관측이 많다. 그덕분에 어느정도 중급에서도 높은 프레임이 나올만큼 성능이 올라가기에 사용자에겐 새로운 그래픽카드를 구입할 이유가 적어졌기 때문이다.