렌더링

 

1. 일반적 의미
2. 컴퓨터 그래픽스에서의 의미
2.1. 셰이딩의 종류
2.1.1. 지역 조명 방식 (Local Illumination)
2.1.1.1. 플랫 셰이딩 (Flat Shading)
2.1.1.2. 고러드 셰이딩 (Gouraud Shading)
2.1.1.3. 퐁 셰이딩 (Phong Shading)
2.1.1.4. 스킨 셰이딩 (Skin Shading)
2.1.1.5. 앰비언트 오클루젼 (Ambient Occlusion)
2.1.1.6. 기타
2.1.2. 전역 조명 방식(Global Illumination)
2.1.2.1. 레이 트레이싱 (Ray Tracing)
2.1.2.1.1. 패스 트레이싱 (Path Tracing)
2.1.2.2. 포톤 매핑 (Photon Mapping)
2.1.2.3. 라디오시티 (Radiosity)
2.1.2.4. VXGI (Voxel Global Illumination)
2.2. 매핑의 종류
2.2.1. 텍스처 매핑 (Texture Mapping)
2.2.2. 솔리드 텍스처 매핑 (Solid Texture Mapping)
2.2.3. 범프 매핑 (Bump Mapping)
2.2.4. 노말매핑 (Normal Mapping)
2.2.5. 불투명 매핑 (Opacity Mapping)
2.2.6. 밉맵 (Mipmap)
2.2.7. 지형 매핑 (Height Mapping)
2.2.8. 패럴랙스 오클루전 매핑 (Parallax Occlusion Mapping)
2.2.9. 디스플레이스먼트 매핑 (Displacement Mapping)
2.2.10. 반사 매핑 (Reflection Mapping)
2.2.10.1. 정반사 매핑 (Specular Mapping)
2.2.10.2. 큐브 매핑
2.3. 관련 문서


1. 일반적 의미


Render의 기본 의미는 무엇인가를 지금과는 다른 어떤 상태로 만든다는 뜻.
음악에서 연주자가 악보에 있는 기록된 음악을 연주자 자신만의 기술과 감성으로 표현(연주)하는 것을 렌더링이라고 부른다. 마찬가지로 작곡 프로그램에서 화면 상 악보에 기보된 대로 실제 들을 수 있는 음악을 추출하는 작업도 렌더링이라고 부른다. 일반적으로는 잘 쓰이지 않는 단어지만 음악하는 사람들에게 아주 친숙한 용어.
요리에서 동물의 지방에서 기름을 추출하는 것도 렌더링이라고 부른다.
농림축산 분야에서는 가축사체기계에 넣어 분쇄 및 열처리해 최종적으로 가루 형태의 산출물(비료, 또는 사료로 사용 가능)로 만들어내는 것을 렌더링이라 한다. 즉, 재활용 처리하는 것을 렌더링이라고 한다.

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



렌더링이 왜 아래처럼 불리는지(?) 에 대한 픽사의 간단한 설명. 자막無
3D 형상 제작 과정
모델링(Modeling)
렌더링(Rendering)
투영(Projection)
클리핑(Clipping)
은면처리(Hidden Surface)
셰이딩(Shading)
매핑(Mapping)
컴퓨터 그래픽스 분야에서는 2차원 또는 3차원 장면을 바탕으로 컴퓨터를 이용해 사진이나 영상을 만들어내는 과정 또는 그러한 기법을 말한다. 보통 '3D 렌더링'과 같이 3D 이미지/영상과 깊은 관련을 맺고 있으며, 기술적 발전도 이곳에서 주로 이루어진다. 건물 설계, 게임, 애니메이션 등에 주로 사용된다. 이 문서에서는 3D 렌더링을 주로 다루고 있다.
엄밀히 나누면 3D 형상 제작 과정은 모델링과 렌더링 과정으로 나뉜다. 모델링이 기본적인 골격을 만드는 과정이라면, 랜더링은 그 골격 표면을 처리하는 과정이라 할 수 있다. 물론 렌더링 과정을 거치지 않고 모델링 과정에서 마치는 경우도 있지만, 보통 영상이나 게임분야에서는 렌더링 과정도 거친다. 랜더링에는 투영(Projection), 클리핑(Clipping), 은면처리(Hidden Surface), 셰이딩(Shading), 매핑(Mapping) 과정이 포함된다. 각 과정의 역할은 다음과 같다.
투영(Projection): 3차원 오브젝트를 2차원 스크린에 비추는 과정.
클리핑(Clipping): 디스플레이 밖(모니터 또는 윈도우 창에 나오지 않는 부분)의 오브젝트 부분(보이지 않는 부분)을 처리하는 과정.[1]
은면처리(Hidden Surface): 오브젝트의 보이는 부분과 보이지 않는 부분을 처리하는 과정.
셰이딩(Shading): 음영, 조명 빛, 광원의 빛, 반사광, 투명한 효과 등을 처리하는 과정.[2]
매핑(Mapping): 오브젝트의 표면에 텍스처 등을 씌워 질감과 반사된 풍경 등을 처리하는 과정.[3]
이중 셰이딩과 매핑은 그 특성상 서로 겹치는 경우가 많다.
해외에서는 영화 촬영과 동시에 레이트레이싱 렌더링이 이루어지는 기법을 적용한 단편 영화가 나왔다. 제작 영상. VRay를 이용했는데, 실시간 레이트레이싱 뷰포트는 프로그램 자체가 지원하는 경우가 있으므로 별로 신기할 것은 없으며,[4] 보통 그 뷰포트는 보통 미리보기로만 쓰인다. 실제 렌더링은 이후에 오랜 시간을 걸쳐 이루어진다. 광선 추적을 적게 하면 출력에 노이즈가 생기며, 당장 영상 속 카메라를 보아도 화면에 자글자글한 점들이 보인다. 그래서 노이즈를 없애려면 광선의 개수를 높여야 하는데, 이렇게 되면 사진 하나를 렌더링하는 데에도 고사양 CPU나 쿼드로급 GPU에서 수 분에서 수십 분이 걸리는 경우가 많다. 제대로 된 영화급이면 '''프레임당 수십시간'''이 걸리기도 한다. 이것이 영화와 게임 사이에 그래픽 차이가 생기는 이유이기도 하다. 게임은 부드럽게 하려면 최소 초당 30번 렌더링해야 하지만,[5] 영화와 게임은 주어진 시간이 엄청나게 차이가 나고, 수천대의 컴퓨터로 렌더팜을 구성하여 병렬 렌더링을 하기 때문이다.

2.1. 셰이딩의 종류


셰이딩의 경우 조명에 의한 구현 방식에 따라 크게 지역 조명 방식(Local Illumination)과 전역 조명 방식(Global Illumination)으로 나뉜다.
참고로 쉐이딩, 쉐이더라 적는 경우가 많은데 영어 외래어 표기법 세칙에 따르면 [ʃ]는 뒤따르는 모음에 따라 '샤', '섀', '셔', '셰', '쇼', '슈', '시'로 적는다. 셰이딩, 셰이더의 원형인 셰이드는 국제음성기호상 [ʃeɪd]로 표기하므로 섀이딩 또는 셰이딩으로 적는게 맞다. 항목 참고.

2.1.1. 지역 조명 방식 (Local Illumination)


주로 게임에서 쓰이는 방식으로[6] 빛 하나를 환경광, 난반사광, 정반사광으로 나누어 각각 계산한 다음 한 장면으로 출력한다.
[image]

2.1.1.1. 플랫 셰이딩 (Flat Shading)

가장 단순한 셰이딩 방식이다. 그냥 폴리곤 그대로 다각형 면을 채운다 보면 된다. 와이어프레임에 그대로 색만 입혔기 때문에 렌더링하면 왼쪽(Flat Shading)과 같이 투박한 모양이 나온다. 단순하기 때문에 렌더링 속도는 빠르지만 사실적이진 않아서 주로 프로토타입 작업에나 쓰인다.

2.1.1.2. 고러드 셰이딩 (Gouraud Shading)

플랫 셰이딩보다는 발전된 방식이다. 빛이 비춰지는 면들의 평균적인 명암을 계산해서 부드럽게 적용시켜준다. 플랫 셰이딩처럼 각져보이진 않지만 퐁 셰이딩처럼 하이라이트나 반사광을 표현하진 못해 표면이 밋밋해 보이는 단점이 있다. 렌더링 속도도 플랫과 퐁 사이 중간 정도다.

2.1.1.3. 퐁 셰이딩 (Phong Shading)

베트남계 미국인인 부이 투옹 퐁(Bui Tuong Phong)이 개발했기에 퐁 셰이딩이라 부른다. 게임 과는 관련 없다. 퐁 셰이딩은 화소별로 색을 계산하여 하이라이트와 반사광를 표현할 수 있지만 계산 시간이 고러드 셰이딩보다는 거의 2배 이상 걸릴 정도로 오래 걸린다.

2.1.1.4. 스킨 셰이딩 (Skin Shading)

사람의 피부에 가까운 효과를 내는 셰이딩 방식이다. 반투명한 효과를 위해 표면 밑 산란(Sub-Surface Scattering) 기술을 이용한다.

2.1.1.5. 앰비언트 오클루젼 (Ambient Occlusion)

앰비언트 오클루젼의 종류는 SSAO등 여러가지가 있다.[7] 지역 조명 방식의 근본적 한계로 색을 입히고 셰이딩을 하여 현실적으로 만드는 것이기 때문에 반사와 산란, 간접광에 취약하다. 지역 조명 방식에서는 빛의 반사와 산란이 일어나지 않아 게임 개발 등지에서는 거울이나 간접광을 만들 때 반사 텍스처나 간접광을 일일이 배치해야 한다. 수준 높은 게임 엔진은 그 과정을 한번에 할 수 있게 하겠지만, 기본적으로는 저 과정이 모두 들어가 있다. 물론 이런 단점이 있는데도 왜 쓰는가 하면, '''레이 트레이싱에 비하면 연산량이 없다고 봐도 무방하기 때문.'''

2.1.1.6. 기타

그리고 그 외에도, 스무스 셰이딩(Smooth Shading), 애니소트로픽 셰이딩(Anisotropic Shading), 블린 셰이딩(Blinn Shading), 메탈 셰이딩(Metal Shading), 카툰 셰이딩(Cartoon Shading)같은 여러 지역 조명 방식 기반의 셰이딩 방식들이 있다.

2.1.2. 전역 조명 방식(Global Illumination)


http://madebyevan.com/webgl-path-tracing/
빛은 어떤 사물에 닿았을 때 반사가 이뤄진다. 이때 빛이 어느 정도의 강도로 반사되느냐를 결정하는 것으로 정반사와 난반사가 있다. 정반사된 빛은 사물의 질감을 표현하며 난반사된 빛은 사물의 색을 표현한다. 또한 정반사가 옅어지며 난반사로 변하게 된다. 조명 방식(Illumination)이란 이런 과정을 수학적으로 계산하여 표현하는 모델이다. 전역 조명 방식(Global Illumination)은 줄여서 GI라고도 부르는 것으로, 특정 장면에 있는 모든 물체의 질감과 색, 빛을 통틀어 계산하여 표현하는 것이다. GI 는 엄청난 자원이 소모되기 때문에 그만큼 렌더링 시간이 오래 걸리며, 대부분의 게임에서는 비실시간 구현을 통한 성능 최적화 등을 통해 적당히 쓴다. 반면 전역 조명을 실시간으로 제대로 구현하는 기법은 대표적으로 '''레이 트레이싱'''(Ray Tracing)이 있다. 자세한 것은 글로벌 일루미네이션과 후술할 레이 트레이싱을 참고.

2.1.2.1. 레이 트레이싱 (Ray Tracing)


블러 스튜디오의 레이 트레이싱 프리 렌더링 영상모음
'''게임엔진 3사[8][9]의 '''실시간''' 레이 트레이싱(Ray-Tracing) 데모'''
[동영상]




현재 영화, 광고, 각종 영상물 및 게임의 프리 렌더링 CGI 대부분 이 기술 기반이다.
1980년 Turner Whitted가 An improved illumination model for shaded display 논문에서 발표한 기법으로 이미지의 픽셀 하나하나를 통과하는 광선들이 있다 가정하고 그 광선(Ray)을 역추적(Trace)하는 방식이다. 당연히 현실에 가장 가까우며 셰이더의 필요성이 위 방식에 비해 현저히 낮다. 그러나 광원이 아닌 시점으로부터 추적하는 방식은 터미네이터 등의 문제를 가져 왔다. (IEEE Computer Graphics and Applications 1999년 9월 21페이지) 셰이더 자체가 Path Tracing을 할 수 없는 로컬 일루미네이션에 현실감을 주기 위해 많이 쓰이기 때문.[10] 대신 픽셀 하나하나를 통과하는 광선이 있다 생각하기 때문에, '''요구 연산량이 하늘을 찌른다.''' 게다가 광선의 산란이나 반사를 추적하기 위해서는 한 픽셀에 여러 번 연산을 해야 하는데[11] 실시간 연산은 아주 간단한 렌더링이 아닌 이상 엄청난 연산이 요구되어 실시간 렌더링이 필요하지 않는 프리 렌더링 영상(영화, 광고, 드라마 등에서 쓰이는 CGI 등)에서는 이미 90년대 부터 쓰였으나 2010년대 후반까지만 해도 실시간 렌더링은 몇몇 실험적이거나 간단한 렌더링이 아니라면 실현되지 않았다.
이 정도의 연산은 80년대에 비해서 GPU가 엄청난 발전을 거듭 했음에도 2018년부터 일부 게임에서 사용하기 시작했다. 한 때 1080p의 해상도는 아득히 높고 540p에 '''지포스 GTX 1080을 4개 SLI해도 노이즈 없이 60FPS을 달성할 수 없었다.''' 그러나 튜링 마이크로아키텍처를 기반으로 한 지포스 RTX 20 시리즈가 등장함으로서 어느 정도까지는 구현이 가능할 수 있게 되었다. RTX 2080 Ti로 돌릴 경우 1080p 60FPS, RTX 최적화를 거치면 RTX 2080으로 1440p 60FPS까지 뽑을 수 있다.

레이 트레이싱을 이용한 게임 엔진이 개발중이다. 해당 영상은 GTX TITAN 2개 SLI[12]로 찍은 것이며 그럼에도 불구하고 이동중에는 노이즈가 엄청나게 많이 생긴다. 정지 화면에서는 괜찮지만 게임 엔진 특성상 정지 화면에서만 잘 나오는 것은 큰 문제다. 대신 저화질과 노이즈 문제가 많은 화면임에도 화려한 테크니컬 데모 영상들이 보여주던 미묘하게 그래픽스러웠던 느낌이 없어졌다. 장점이 워낙에 특출나서 치명적인 단점들로도 가려지지 않는다는 소리. 수 많은 개발사들이 실시간 레이트레이싱에 집착하는 이유가 엿보이는 영상으로도 볼 수 있다. 현재 제작자에게 문의한 결과, RTX 2080 Ti에서 4K 60FPS로 구동 가능하다고 한다.

언리얼 엔진에서 1080p 24FPS로 실시간 레이 트레이싱을 구현한 영상을 공개했다. 노이즈는 보이지 않으며, 연산 장비는 볼타 마이크아키텍처 기반의 테슬라 V100 4개를 사용하였다고 한다.[13] 마이크로소프트DirectX Raytracing API를 사용하고, ILMxLAB, NVIDIA와 협력하여 제작하였다고 한다.
설명 영상에 따르면 완전히 레이 트레이싱만으로 화면을 만들어내는 것이 아닌, 낮은 해상도를 레이 트레이싱으로 렌더링 한 뒤에 AI를 이용해 화면을 합성해 결과물을 만들어내는 것으로 보인다. 레이 트레이싱의 무식한 연산량을 우회한 셈.
사실 이번 GDC 2018에서 시연된 언리얼 엔진 기반의 실시간 레이 트레이싱 구현 영상을 보면 에픽게임즈와 NVIDIA만 이 기술을 발표한 것이 아니다. 이는 레이 트레이싱이 2018년에 갑자기 툭 튀어 나온 새로운 기술이 아니기 때문이다. 컴퓨터 그래픽스에 입문한지 얼마 되지 않은 사람들은 잘 모르겠지만, 10년 전인 2008년에 인텔이 컴퓨팅 그래픽 연구용으로 울펜슈타인에 레이 트레이싱을 적용시켜서 데모를 시연했던 적도 있었다. 이렇듯 레이 트레이싱은 1990년대, 2000년대에도 '''좋긴 하고 미래에 꼭 하긴 해야겠는데 지금은 컴퓨터 성능이 못 받쳐주네?''' 이런 분위기였다. 그러다 2018년 NVIDIA에서 마침내 '''레이 트레이싱 전용 ASIC인 RT 코어를 SM(스트림 멀티프로세서)당 1개씩 잔뜩 탑재한 그래픽 카드'''를 출시했기 때문에 2018년에 다시 한번 이슈가 된 것이다. 렌더팜에서는 예전부터 엔비디아나 AMD에서 제공하는 레이 트레이싱 렌더러를 사용하거나, PowerVR 만드는 그 이미지네이션에서 제공했었던 전용 가속장치나 기타 회사에서 나오는 솔루션을 사용해 제한적으로 레이 트레이싱을 적용해 렌더링을 돌렸다. AMD 또한 레이 트레이싱 기술을 재발표했으며[14] EA사의 SEED 프로젝트 팀 또한 레이 트레이싱 기술 데모를 선보였다. 하지만 EA의 그것은 에픽게임즈와는 의미가 조금 다른데, 언리얼이 '''영화 산업'''을 위한 렌더링 기법을 개발했다면 EA는 '''게임 산업'''에 접목시킬 기술을 개발했다는 것이다.[15][16] 위에서 소개한 언리얼 엔진과 같이 마이크로소프트의 DirectX Raytracing이라는 API에 기반하고 있다.
또한 이 레이 트레이싱 기법은 해상도를 줄이다보니 자연스레 광선 추적량이 줄어들게 된다. 또한, 언리얼 엔진의 테크 데모를 보면 알겠지만, 상당히 적은 오브젝트를 배치했고, 유리 굴절 같은 것은 보이지 않고, 사람의 맨살을 비롯한 난반사 재질이 드러나지 않고 있다. 즉, 완전히 기존 영화 산업의 렌더링 기법과 퀄리티면에서 완벽할 수 없다는 것이다.(하이브리드) 하지만 그럼에도 불구하고 기존의 렌더링 비용을 비롯한 여러가지 자원을 절약한다는 면에서 획기적인 신기술임은 확실하다고 볼 수 있다.
현재로서 GPU 실시간 레이 트레이싱의 상용화를 가로막는 것은 VFX 스튜디오에서 납득할 만한 가격의 그래픽카드의 GPU의 램 용량과, [17] 기존 렌더러들의 포팅인데, 전자는 한참 멀어보이고 후자는 카오스그룹, 솔리드앵글 등에 의하여 빠르게 이루어지고 있다. 옥테인이나 사이클스 같은 렌더러들은 이미 GPU 연산을 지원하고 있다. VFX에서 이 정도이니 게임은 한참 멀었다고 봐도 된다.
여담이지만, 언리얼 엔진은 스타워즈: 로그원 CG 제작에도 참여했다고 한다. 하지만 정확히 어떤 형식으로 구현된 건지는 밝히지 않아 자세한 정보는 알기 어렵지만, 렌더링 시간을 줄였다는 표현에 미루어 보아 어느 정도 가속에 사용한 것으로 추정된다. [18]
배틀필드 VFIFA 19에 사용된 2018년 버전의 프로스트바이트 엔진부터는 레이 트레이싱 기능을 지원한다.
실시간 레이 트레이싱은 지포스 RTX 2080 Ti로도 제대로 구현하기 힘들만큼 무리가 많다는 것이 대부분의 평가이다. 제대로 레이 트레이싱을 적용하면 흔히 말하는 화면 지글거림 (Jittering Artifacts, 텍스처면이 지글거리면서 깨지는 현상)이 일어난다. 게임에서 적용하는 것은 이런 지글거림을 최소화하며 프레임유저도 간신히 맞추어 가는 수준의 최적화일뿐 현세대로서는 무리라는 의견이 많다. 일반적으로 사용할 수 있는 기능도 아니고 한정된 곳에서만 사용되는 ASIC을 달아놓아도 60FPS 고정이 어려운 것을 보면 게임에서의 실시간 레이 트레이싱 적용이 얼마나 어려운지 실감할 수 있는 대목이다. 최소 7nm 공정이 일반화 될 정도는 되어야 어느 정도 제대로된 레이 트레이싱을 기대할 수 있는 수준이다. 엔비디아에서 아직 제대로 완성되지 않은 레이 트레이싱을 선보인 것은, 그간 그래픽카드의 성능이 점차 평준화되었기에[19] 시장 경쟁력을 확보할 새로운 무기로 AMD가 준비하기 힘든 분야를 선택했다는 의견이 많다.
하지만 이는 AMD한테 인수되기 이전인 ATi 시절에도 있었던 전통이다. 당시 ATi는 같은 GPU 마이크로아키텍처에 파생 GPU를 적게 내놓아서 소프트웨어로 모딩을 하여 파이어프로 파이어 GL, 라데온 파이어 CL 등 여러 모델에 동일한 GPU를 돌려쓰는 경향이 있었다. AMD가 nVidia마냥 레이 트레이싱 ASIC을 스트림 프로세서만큼 박아서 출시하면 당장 게임은 잘 될 것이다. 하지만 레이 트레이싱 용 ASIC을 도입해 얻는 레이 트레이싱 성능의 향상은 여러 제품군 중 가장 수익성이 떨어지는 일반 소비자용에서나 장점으로 통할 성능이다. 수익률이 높은 축에 속하는 GPGPU 시장을 예로 들면, 머신러닝 연산을 돌릴 때 레이 트레이싱 기술이 과연 필요한지에 대해 생각해보자. 즉, 특정 분야에서 쓸모가 없는 레이 트레이싱 성능은 오르지만, 면적이 2배로 증가해 가격이 폭등함과 동시에 수율 저조로 인한 공급량 부족, 생산 단가 증가로 인해 수익성 높은 시장에서의 경쟁력을 제 발로 차버리는 꼴이 되는것이다.
수익률이 상대적으로 부족한 시장에서의 약진을 위해 팔기만 하면 현금이 돈다발로 들어오는 GPGPU 시장에서의 경쟁력을 포기한다는 것은 배보다 배꼽이 큰 격이다. 당장 ROP보단 스트림 프로세서에 몰빵된 GCN 마이크로아키텍처만 봐도 게임 성능과 FP32 연산 성능의 괴리를 보면 무슨 말을 하는지 이해할 수 있을 것이다. 게다가 AMD는 전통적으로 미들 체급의 전략을 고수해왔기에, 600mm2이 넘는 거대한 다이가 출현하게 되는 제품은 기존 AMD 제품의 철학과 정면으로 대비되는 일이다. AMD가 준비를 못 하는게 아니라 그냥 안 하는거다.
그래서 AMD는 레이 트레이싱 전용 ASIC를 탑재하는 것은 2018~2019년 시점에서는 GPU를 이용하는 시장 전체적으로 아직 보장되지 않은 수익성과 절대적인 성능 미달이라고 생각했기에 범용 코어인 스트림 프로세서로 처리하는 방법으로 고려하고 있었으나 엔비디아 때문에 RT 코어를 사용하는 하드웨어 방식, 스트림 프로세서를 사용하는 GPGPU 방식, 라이젠 CPU을 이용한 소프트웨어 방식 중 하나를 택해야 하는 갈림길에 놓이게 되었다. 2020년에 출시될 9세대 콘솔 게임기인 PS5엑스박스 시리즈 X에 사용될 AMD의 GPU가 하드웨어 레이 트레이싱을 지원하는 RDNA 2 마이크로아키텍처 기반의 커스텀 GPU일 것으로 알려지고, AMD가 최근 GPU 로드맵에서도 RDNA 2 마이크로아키텍처부터 하드웨어 레이 트레이싱을 지원할 예정으로 재차 강조함으로써 레이 트레이싱의 엄청난 요구 연산량을 스트림 프로세서만으로는 감당할 수 없다고 판단한 듯 하다.
참고로 레이 트레이싱 전용 ASIC가 도입된 NVIDIA의 지포스 RTX 2080 Ti는 TU102 컷칩이 사용된 그래픽 카드로 '''754mm2'''라는 거대한 다이 사이즈로 알려져 있는데, 이전 세대인 GTX 1080 Ti에 사용된 GP102의 471mm2보다 무려 60%나 더 큰 사이즈이다. 한때 RT 코어의 면적 비중이 매우 클지도 모른다는 여론이 있었으나, 실제로는 TU102 풀칩 기준으로 72개의 RT 코어가 차지하는 총 면적이 전체의 겨우 '''3.8%'''(28.8mm2) 정도로 생각보다 매우 작다. 2배 증가된 L2 캐시 메모리 용량이 지목된 적이 있었지만 그래봤자 전체의 겨우 11% 남짓으로 비중이 역시 크지 않으며, 없던게 새로 나온 RT 코어와 L2 캐시 메모리의 증가 면적만 합쳐도 9~10% 정도밖에 안 되는 셈이다. 나머지 50%는 CUDA 코어 안에 포함되어 있던 FP32 연산 유닛과 INT32 연산 유닛의 독립화, 텐서 코어의 추가, 내부 L1 캐시 메모리의 증설 등으로 비대해진 GPC가 주 요인일 가능성이 높다.
연산 특화 및 전문가 타겟으로 나온 쿼드로 GP100과 TITAN V가 모두 RT 코어가 없지만 FP64(배정밀도) 부동소수점 연산 코어가 FP32(단정밀도) 부동소수점 연산이 주력인 CUDA 코어의 1/2만큼이나 탑재된 것 때문에 다이 사이즈가 각각 610mm2, 815mm2로 나왔는데, [20] 특히 TITAN V에 사용된 GV100이랑 A100에 사용된 GA100이 포토 마스크가 원샷으로 다이를 만들 수 있는 최대 사이즈인 858mm2 즉, 가공에 필요한 사이즈를 고려하면 사실상 한계에 가까운 빅칩이고,[21] 일반 게이밍용 카드에서는 지포스 20 시리즈가 나오기 전까진 NVIDIA 지포스 GTX 980 Ti에 사용된 GM200과 AMD 라데온 R9 FURY X에 사용된 Fiji가 공정은 2012년 지포스 600 시리즈, 라데온 HD 7000 시리즈부터 적용된 28nm 그대로인데 스펙 상향으로 다이가 점점 커지게 되자 이른바 역대 일반 게이밍용 GPU 중 가장 큰 빅칩으로 소문났던 GPU들이었는데 이들의 면적이 각각 601mm2, 596mm2로 끽해야 600mm2 내외 수준이였다.
GPU 기반 실시간 패스트레이싱/ 레이 트레이싱 퀘이크 2 데모 Raylgun 영상
2019년 1월에 Vulkan API를 이용해서 지포스 RTX 2080 Ti로 1440p 60FPS으로 구동된 영상

2019년 3월에 위의 Q2VKT 버전을 개발한 개발자의 도움으로 NVIDIA가 직접 구현한 영상.

반사, 그림자, 전역 조명 방식 모두 레이 트레이싱을 사용했다고 한다. 연식이 연식인지라 3D 모델의 적은 폴리곤 수에 따른 물체의 낮은 세밀함은 어쩔 수 없지만 광원 처리에 있어서 20여년 전 게임이라고 생각되지 않을 향상된 그래픽을 보여준다.
2020년 3월 17일부터 Vulkan API에서도 레이 트레이싱을 지원하기 시작했다.
여담으로, 객관적으로 레이 트레이싱을 사용한 쪽의 그래픽 품질이 높은 경우에도 반대로 불호를 표하는 경우도 있다. 사이버펑크 2077의 예시 #1, #2 빛 산란 효과만 봐도 RT off 쪽은 화면 전체에 필터를 걸어놓은 것처럼 표현하는 반면, RT on 쪽은 그 자체가 광원이 되어서 오히려 과하지 않게 잘 표현하고 있다.
이에 대한 분석으론, 과도한 성능 요구로 기본값에 들어가지 못함으로 인해 생긴 디자인 측면의 문제라는 지적이 있다. RT가 없는 상태를 기본으로 사이버펑크스러운 배경으로 만들고 거기에 RT를 추가로 적용하다보니 상황에 따라선 오히려 너무 화려해 보이는 경우도 나오게 된 거라는 얘기.
  • 이는 상술한 퀘이크 2마인크래프트 같은 게임들의 레이 트레이싱 만족도가 (화려한 그래픽을 내세우는 AAA급 대작들에 비해) 오히려 높은 점을 잘 설명하는 관점이기도 하다. 현 시점에서 그래픽 사양 요구를 걱정할 게임이 아니기 때문에 걱정없이 RT를 들이부어 그 효과를 제대로 보여줄 수 있다는 것. 반면 AAA급 대작들은 RT on과 off쪽의 그래픽 표현과 최적화를 모두 챙겨야 하는 부담이 있다.
  • 그런 측면[22]에서는 GPU 가속 PhysX를 떠올리게 만들기도 하나, 전체 상황을 보면 전혀 다르다고 할 수 있다. GPU 가속 PhysX 몰락의 최대 원인은, 라데온측 GPU 가속 물리 엔진 개발이 모두 이런저런 이유로 흐지부지되어 GPU 가속 물리 엔진 자체가 게임 콘솔이나 라데온에서 사용 불가능한, 지포스를 장착한 데스크탑 PC에서만 가능한 기술로 고립되었기 때문이다. 반면 레이 트레이싱은 9세대 게임 콘솔들과 라데온에서도 성능이 떨어질 뿐 지원하는 기술이다. 따라서 최악의 경우라도 게임 콘솔이나 라데온에서 감당 가능한 수준의 소극적 RT는 비교적 근시일 내에 보급될 가능성이 높다. 거기에 게임에 따라서 지포스 하이엔드의 성능을 요구하는 추가 옵션을 제공하는 식의 흐름은 현재 상황을 조금만 상식적으로 분석해도 쉽게 예측 가능한 사안이다.

2.1.2.1.1. 패스 트레이싱 (Path Tracing)


블러 스튜디오의 패스 트레이싱 프리 렌더링 영상 모음
[image]
화면 전체의 광선을 추적하는 형태로 기존 레이 트레이싱보다 한단계 높은 연산이 필요해 2020년대 까지만 해도 프리 렌더링에서 사용하고 있다. NVIDIA는 2035년 까지 실시간 패스 트레이싱 렌더링을 실현시키겠다고 선언 했다.

2.1.2.2. 포톤 매핑 (Photon Mapping)

광원으로부터 광선을 추적하고, 추적한 빛의 데이터를 객체의 표면에 생성된 수 많은 광자(Photon)들에 저장하여 간접광을 구현하는 전역 조명 방식. 카메라가 객체를 비출 때, 해당 광자들이 가진 간접광의 근사치 데이터들이 계산되고 배치된다. 고품질의 이미지를 얻을 수 있으며, 보통 레이트레이싱과 함께 사용하여 효과를 극대화 한다. 이 때 레이트레이싱은 파이널 개더링 (FG)[23] 시 적용되어 결과물을 출력한다.

2.1.2.3. 라디오시티 (Radiosity)


2.1.2.4. VXGI (Voxel Global Illumination)

복셀을 이용한 전역 조명 방식.

2.2. 매핑의 종류


컴퓨터 그래픽 업계에서는 텍스처를 맵이라고 부르는 경우가 많다. 자세한 내용은 텍스처 참고.

2.2.1. 텍스처 매핑 (Texture Mapping)



2.2.2. 솔리드 텍스처 매핑 (Solid Texture Mapping)



2.2.3. 범프 매핑 (Bump Mapping)


1978년 제임스 블린이 도입한 방식으로, 텍스처 표면에 요철 효과를 부여한다고 해서 붙여진 이름이기도 하다. 게임에서 노말 매핑이 대중화되기 전까지 사실적인 텍스처 재질감 표현은 거진 범프 매핑으로 구현되었다고 보면 된다.

2.2.4. 노말매핑 (Normal Mapping)


하이폴리곤의 셰이딩을 로우폴리곤에 적용시키기 위한 기법으로, 범프 매핑의 하위 방식이다. 노말 매핑의 노말이 법선 벡터를 따온 용어이기 때문에 법선 매핑이라고도 부른다.

2.2.5. 불투명 매핑 (Opacity Mapping)


알파나 디더링을 통해 반투명, 혹은 투명으로의 애니메이션 구현에 사용되는 기법.

2.2.6. 밉맵 (Mipmap)


여러 해상도의 텍스처를 준비하여 먼 거리에 있을 때는 저해상도의 텍스처를 보여주고 가까이 다가가면 고해상도의 텍스처로 대체하는 방식을 말한다.

2.2.7. 지형 매핑 (Height Mapping)


범프 오프셋 (패럴랙스) 매핑. Height map를 이용해 노말 매핑보다 더욱 깊이감 있게 보이게 하는 기술이다. 지형 제작에 사용된다.

2.2.8. 패럴랙스 오클루전 매핑 (Parallax Occlusion Mapping)


줄여서 POM이라고도 한다. 범프 오프셋 매핑보다 깊이감을 더욱 현실적으로 구현하는 기술이다. 노말 매핑과 범프 오프셋은 사양을 잘 타지 않는 반면, POM은 사양을 많이 탄다. 관련 문서

2.2.9. 디스플레이스먼트 매핑 (Displacement Mapping)


변위 매핑이라고도 부르며, 텍스처 매핑의 끝판왕 격의 기법. 노말 매핑이나 POM처럼 눈속임을 이용하는 다른 매핑과는 다르게 텍스처 내부의 텍셀 데이터 상태에 따라 정점(vertex)의 실제 좌표가 달라져(변위가 발생하여) 폴리곤이 생성되는 특징을 가지고 있다.
정점의 실제 좌표가 변동된 것이므로 시야에 따른 왜곡이 없고 세밀한 그래픽 구현이 가능하다는 장점이 있지만, 없던 폴리곤이 새로 생성되므로 매우 높은 사양을 요구하는 단점이 있다. 단순하고 넓은 면적의 로우폴리곤이 이 기법을 적용한 순간, 면적당 폴리곤의 개수가 많은 하이폴리곤으로 바뀌기 때문.
폴리곤을 쪼개서 정교한 모델을 구현할 수 있는 테셀레이션과 함께 이용하기도 하지만, 요구 사양이 하늘을 찌를만큼 더 높아지기 때문에 당대 극강의 그래픽 퀄리티를 노리는 AAA 게임이 아니면 잘 활용되지 않는다. DirectX 9.0c 시절부터 활용된 기술이지만 2000년대 말까지의 AAA 게임들도 당시 하드웨어 성능의 한계 때문에 변위 매핑과 테셀레이션이 함께 적용된 사례는 드물었으며, 2010년대에 들어서야 본격적으로 많아지기 시작했지만 어디까지나 고퀄리티 그래픽 타겟의 AAA 게임들 한정이고, 그 정도까지 요구하지 않는 중저사양 타겟의 게임들은 여전히 잘 사용되지 않는다.
사실 AAA급 게임들에서도 디테일의 표현이 중요시되는 컷 씬이나 인게임 상의 지형지물 등 일부 오브젝트들에 활용이 한정된다. 활용 예시로 크라이시스 2가 유명하며,[24] 정말로 엄청난 연산 리소스를 잡아먹기 때문에 중저사양 게임들의 적용은 모딩이 아닌 이상 전무하다고 봐도 무방하다. CryEngine 기술로 만들어진 아마존의 Lumberyard에서도 테셀레이션과 디스플레이스먼트 맵 적용을 위해서는 엔진 스캘러빌리티를 Very High로 설정할 것을 권장하고 있다.

2.2.10. 반사 매핑 (Reflection Mapping)



2.2.10.1. 정반사 매핑 (Specular Mapping)

정반사(specular)란 거울처럼 매끈한 면에서 일어나는 반사를 말한다.

2.2.10.2. 큐브 매핑

실시간 렌더링에서 반사를 표현할 때 주로 쓰이며, 텍스처는 6장이 사용되며, 반사될 대상을 상하전후좌우에서 본 것 같은 모양을 하고 있다. 마인크래프트의 블럭을 생각하면편하다. 영문판 위키백과 참조

2.3. 관련 문서



[1] 가끔 카메라를 지나치게 가까이 벽이나 캐릭터에 대면 벽이 뚫려 보이거나 캐릭터 안구가 보이는 경우가 있는데 이는 클리핑이 제대로 안돼서 발생하는 것이다.[2] Ambient Occlusion이나 레이트레이싱이 과정이다.[3] 노말매핑이 바로 이 매핑 중의 하나이다.[4] 대표적으로 Blender.[5] 게다가 게임은 접근성을 위해 사양 조절도 해야 한다. '''부품 능력은 곧 돈으로 나타나기 때문이다'''. 누구나 i9-9900K, 지포스 RTX 2080 Ti를 쓰진 않으니까.[6] 초기에는 수만 프레임을 렌더링하므로 작업량이 많은 애니메이션에서도 이 방식이 쓰였다. 그 당시에는 전역 조명 방식이 너무 느렸기 때문이다. 그러나 하드웨어와 기술이 발전하여 전역 조명 방식이 서서히 도입되기 시작했다.[7] 2016년 기준으로는 그림자를 더 정확히 연산하는 HBAO나, 아예 복셀로 연산하는 셰이더도 있다. 둘 다 SSAO에 비해 더 많은 연산이 필요하며, 복셀 연산은 특히 더 그렇다.[8] 유니티 엔진 - 언리얼 엔진 - 크라이엔진 순이다.[9] 크라이엔진은 자체 API 레이 트레이싱 구현도 지원한다. 즉 RTX처럼 DirectX Raytracing API를 지원하는 카드가 아니더라도 레이 트레이싱을 구현 시킬 수 있다는 뜻이다.[10] 물론 후처리에 뭔가를 합성한다든지 하는 것들에도 쓸 수 있다. 단 이 얘기는 고정 파이프라인을 쓰던 2000년대 초반까지 일부 연산에만 셰이더를 사용했던 시절의 얘기다. 지금은 OpenGL 이나 DirectX 나 셰이더가 필수가 되어 아예 처음부터 렌더링 파이프라인을 셰이더 코드로 스스로 만들어야 한다. 물론 지금의 대부분의 개발자는 상용 엔진을 쓰므로 실제로 바닥부터 셰이더를 전부 코딩하는 일은 없다.[11] 반투명한 물체에서는 10의 광선 중 5의 광선이 산란되고 5의 광선만 통과하는 등의 변수가 있으며, 산란의 경우 방향이 모두 다르다. 이런 이유로 연산이 적을수록 노이즈가 많다.[12] 2013년 2월에 출시된 케플러 마이크로아키텍처 기반의 지포스 GTX TITAN으로, 당시에는 최강의 성능을 지녔으나 2019년 카드 1장 기준으로는 GTX 970보다 낮은 성능이고, GTX 1080의 절반에 가까운 성능이며, RTX 2080 Ti의 1/3에 가까운 성능이다.[13] 한화로 약 6000만 정도의 가치가 있다고 한다. 테슬라 V100은 RTX3080의 53퍼센트의 성능이다. 4-WAY SLI는 일반적으로 단일 카드 대비 2.7~ 3배 정도의 성능을 낸다. 3080의 1.5배 정도로 볼 수 있으나, 기술 최적화에 따라 직접적으로 비교하기 어려운 부분도 많으니 참고만 하는 것이 좋다.[14] 레이 트레이싱 렌더러가 FireRays 라는 이름으로 거진 2016년부터 등장했으며, 그 모태는 2008년에도 있었다. [15] NVIDIA 측이 적은 광선 추적량을 커버하기 위한 AI 연산이 필요하므로 텐서 코어가 탑재된 볼타 아키텍처부터 이 기술을 지원한다고 언급했으며, 게이밍 그래픽 카드인 지포스에서는 텐서 코어에다가 레이 트레이싱 전용 가속 장치인 RT 코어까지 탑재된 지포스 RTX 20 시리즈부터 지원한다.[16] TITAN V의 경우에는 먼저 나온 테슬라 V100과 같은 볼타 마이크로아키텍처 기반의 그래픽카드로써 텐서 코어를 통해 고속 AI 연산을 지원한다. EA사의 SEED 프로젝트 또한 TITAN V 3장을 이용해서 렌더링한 것이다.[17] 장면에 따라서 마야 등에서 장면을 여는 데만 몇 십 분이 걸리기도 한다.[18] 정확히는 전체 CG 씬의 가속 등이 아닌, 작중 등장하는 캐릭터인 'K-2SO'의 렌더링 과정 전체와 등장 씬들에 언리얼 엔진이 사용되었다. 레이 트레이싱이 적용된 리얼타임 CG로 구현되어 결과물 체크 등을 위한 렌더링 타임을 절약했고, 이는 촬영 과정 중의 이터레이션을 크게 줄인 것으로 알려져 있다.[19] 그간 테셀레이션을 이용해서 재미를 보았지만 이젠 한계까지 왔다는 관측이 많다. 그 덕분에 어느 정도 중급에서도 높은 프레임이 나올만큼 성능이 올라갔기에 사용자에겐 새로운 그래픽카드를 구입할 이유가 적어졌기 때문이다.[20] 쿼드로 GP100과 같은 체급인 지포스 GTX 1080 Ti에 사용된 GP102는 FP64 연산 코어가 CUDA 코어의 1/32로 비중이 매우 작아서 다이 사이즈가 471mm2로 면적이 GP100 대비 크게 감소되었다.[21] HBM 계열을 이용한 GPU는 무려 1000mm2이 넘는 인터포저 사이즈까지 고려해야 해서, 어차피 858mm2가 한계인 포토 마스크로는 원샷이 불가능한 사이즈이다.[22] "과도한 성능 요구로 기본값에 들어가지 못함으로 인해 생긴 디자인 측면의 문제"[23] 포톤 맵에 의한 간접광과, 광원으로부터의 직접광에 기인한 빛 정보 데이터들을 모으는 GI 작업의 최종 데이터 수집 과정[24] 물론 크라이시스 2에 적용된 테셀레이션은 플레이어가 잘 눈에 띄지 않는 곳까지 불필요하게 적용해서 테셀레이션 성능이 라데온보다 높은 지포스를 일부러 밀어주려는게 아니냐는 의혹이 있었다. 안 그래도 DirectX 11 초기에는 테셀레이션을 지원하는 게임들의 그래픽 카드 성능을 비교할 때 테셀레이션이 비활성화된 옵션 기준의 성능 비교를 메인으로 두고, 테셀레이션까지 모두 적용된 풀옵션 기준의 성능 비교를 번외 자료로 취급했었다.