ݺߣ

ݺߣShare a Scribd company logo
진화하는 컴퓨터 하드웨어와
게임 개발 기술의 발전
2020-11-07 제 552회 데브루키 스터디
발표자 : 이석우
• 그동안 게임 개발에서 왜 레이트레이싱 이용한 GI를 사용하지 못했던 걸까?
당연한 걸 왜 물어봐?
계산량 많으니까
그렇지~
기존의 그래픽카드의 발전 방향
• 코어의 클럭 속도는 정체된 반면, 코어 수 Up, Vram 용량 Up.
• 더 많은 병렬 처리가 가능하지만 코어 하나의 처리 속도 정체됨.
• 기존의 발전 방향으론 픽셀쉐이더에서 계산이 많은 연산은 힘들다.
NVIDIA RTX의 등장
• 기존 그래픽 카드 : 하나의 코어에서 모든 작업을 병렬 처리
• RTX : 작업에 따라 코어의 역할을 분리하여 병렬처리
Task
Task Task
• A: 하나의 대규모 프로그래밍 팀이 모든 일을 떠맡는다.
• B: 데브옵스, 컨텐츠, 엔진 팀을 따로 만들고, 각 팀에 알맞게 인원을 대치하고 작업한다.
• 어느 것이 더 효율적일까?
Team
Task
Task
Task
Task
Task
Engine
Dev-
Ops
Conte
nts
Task
Task
Task
Task
Task
Task
Task
Task
TaskTask
Task
Tas
k
RTX GPU
RTX GPU Architecture Stream Multiprocessor
RTX GPU SM
Pascal SM Ampere SM
Hardware Raytracing
• RTX 그래픽 카드는 RT Core를 이용한 Hardware Raytracing을 지원한다.
Typical Scene Rendering
Render G-Buffer
Objects
조명 계산
Scene
Color Buffer Depth Buffer
G-Buffer
Normal Map Specular property
그렇게 하면
안돼요!
자! 여기서 퀴즈!
멘마짱은 왜 안된다고
했을까요?
음 . . .
레이트레이싱도 G-버퍼 이용해서
조명 계산하면 되겠지?
Ray Tracing
• G버퍼는 카메라에서 보이는 객체들의 데이터만 저장된다.
• 하지만 레이트레이싱을 하기 위해선 씬의 안보이는 객체의 데이터도 필요하다.
카메라 공간
Ray Tracing
• 광원이 빛을 방사하는 것은 일종의 레이캐스팅라고 볼 수 있다.
• 반면 빛이 도달한 위치에서 반대로 광원까지의 위치를 추적하는 것을 레이트레이싱
이라고 한다.
Raycasting
Raytracing
왜 레이캐스팅이 아닌 레이트레이싱으로 전역 조명을 구현할까?
Ray Tracing
광원에서 빛이 방사되어 물체에 부딪히고 이 빛이 다시 반사되어 카메라 렌즈에 들어오면 우리가 보는 물체의 색이 된다.
즉, 우리는 눈에 보이는 장면 속 물체들의 색만 알면 되기 때문에 카메라 위치와 픽셀 위치를 기준으로 레이트레이싱하면
색을 구할 수 있다.
Ray Tracing
• 광원에 도달하기 할 때까지 레이트레이싱은 재귀적으로 동작한다.
1 2
3
한마디로 GPU에서 물리 연산을 해야 된다는 것….
Bounding Volume Hierarchy
• 다행인 것은 RT Core에서 BVH를 지원하여 계산을 최소한 한다.
Directx Raytracing
이런 변화에 맞춰 DirectX에서도 레이트레이싱 쉐이더를 지원한다.
Ray Tracing On/Off
아무리 하드웨어 RT를 쓴다 해도 계산이 많아 느린 건 변함없다.
Ray Traced Shadow On / Off
모니터의 발전
• 그래픽 카드가 발전하는 만큼 모니터 성능도 발전한다.
• 처리해야할 픽셀도 많아지고 프레임도 144 프레임 이상 나와야 한다.
기술적 딜레마
그래픽 카드 성능
이 올랐는가?RT Off
모니터 성능이
올랐는가?
Yes
No
Yes
RT On
No
그래픽 카드 성능이 향상되면 모니터 성능도 발전해서
최신 모니터에 적용할 수 없는 상황이 계속 이어진다.
이 문제를 해결하기 위해 내가 왔다
DLSS
• 저해상도 이미지로 고해상도 이미지를 출력하는 이미지 업스케일링 기술의 일종이다.
DLSS
FHD
UHD
DLSS
• Deep Learning Super Sampling
Nvidia Super Computer
AI Model
64x 슈퍼 샘플링 이미지저해상도 이미지
DLSS
• 우선 엔비디아 슈퍼컴퓨터의 AI에게 저해상도 이미지와 고해상도 이미지를 준다.
Nvidia Super Computer
AI Model
DLSS
• 그 다음 AI에게 저해상도 이미지를 고해상도 이미지로 만드는 훈련을 시킨다.
AI Model
DLSS
• 이를 통해 저해상도 이미지를 고해상도 이미지로 업스케일링 하는 AI 모델을 만든다.
AI Model
DLSS
• 우리는 AI Model을 드라이버를 통해 제공 받아 개인 PC에서 DLSS를 적용할 수 있다.
드라이버
Nvidia Super Computer
AI Model
개인 PC
DLSS 적용
Tensor Core
DLSS
• DLSS를 적용하면 약 1.5 ~ 2배 정도의 프레임 향상을 볼 수 있다고 한다.
아하! 그러면 FHD에서 RT를 적용하고 DLSS로 업스케일링 하면
UHD에서 레이트레이싱한 효과를 볼 수 있는 거구나!
FHD
RT 적용
FHD
DLSS 적용
8K Monitor DLSS On/Off
DLSS의 장점
• AI가 슈퍼샘플링을 흉내 내서 업스케일링이 가능하다.
• 슈퍼샘플링에 비해 계산량과 메모리 소비가 현저히 적다.
DLSS의 문제점
• 프레임 이득을 본 만큼 선명도가 떨어질 수 있다.
DLSS의 문제점
• 모션이 있을 때 외곽선이 일그러지고, 주변 디테일이 깨지는 현상이 있다.
https://www.youtube.com/watch?v=YWIKzRhYZm4&t=302s
DLSS의 진화
• 그래도 문제점들이 AI 모델의 학습으로 개선되고 있다.
Directx 12 Ultimate
Mesh Shader
• 기존 쉐이더를 대체하는 새로운 쉐이더
• 동적으로 LOD 계산이 가능하여 많은 폴리곤을 처리하는 데 효율적이다.
협력 쓰레드 모델
기존에는 단일 쓰레드 모델을
사용했다.
따라서 GS나 TS 처리를 할 때
특정 쓰레드에서 병목 현상이
발생한다.
반면 메쉬 쉐이더는 협력 쓰
레드 모델을 사용하므로 이러
한 문제가 발생하지 않는다.
Graphics Pipeline
Vertex
Shader
Hull Shader
Geometry
Shader
Tessellation Pixel ShaderRaterization
Current Graphics Pipeline
New Graphics Pipeline with Mesh Shader
Task Shader Mesh Shader
Domain
Shader
Mesh
Generation
Raterization Pixel Shader
Culling
기존 파이프라인에서는 필요 없는 버텍스라도 GS나 PS 단계까지는 진행해야 했다.
그러나 새로운 파이프라인은 Task Shader에서 필요없는 버텍스를 사전에 버릴 수 있다.
Culling
• 하이폴리곤의 메쉬는 Meshlet이라는 버텍스 집합으로 분할시킬 수 있다.
• Meshlet으로 묶어 한 번의 테스트로 Meshlet 전체를 Culling 할 수 있다.
Dynamic LOD
• 이러한 특성을 이용해 동적으로 LOD를 조절하는 게 가능하다.
• Task Shader에서 Bbox를 이용한 Frustum Culing, Mesh Shader에서는 Meshlet에 대한
Frustum Culling을 하여 불필요한 작업을 최소화 한다.
• 협력 쓰레드 모델을 사용하여 LOD에 따라 쓰레드 개수를 조절하여 병목 현상을 줄인다.
• 다만 무조건 다 그려야 한다면 기존 파이프라인이 더 빠를 것이다.
Mash Shader 적용
https://www.youtube.com/watch?v=CRfZYJ_sk5E https://www.youtube.com/watch?v=qC5KtatMcUw&t=313s
Unreal Engine 5 ShowcaseAsteroids Mesh Shader Demo
Variable Rate Shading
• 스크린의 모든 영역을 16x16 픽셀 크기로 분할하여 각 영역마다 쉐이딩 처리 비율
다르게 설정한다.
Variable Rate Shading
• 기존에는 모든 픽셀에서 쉐이더를 호출해야 했지만 이제는 영역마다 쉐이더 호출 회
수를 조절할 수 있다.
모든 픽셀에서 쉐이더 호출
총 쉐이더 호출 횟수 : 256
픽셀 16개마다 쉐이더 호출
총 쉐이더 호출 횟수 : 16
Motion Adaptive Rendering
• 객체의 속도에 따라 VRS를 다르게 한다. 16 x 16 pxs
Content Adaptive Rendering
• 그냥 벽은 Shading 처리 횟수를 줄이고 계기판이 있는 곳은 올린다.
VRS off
VRS on
Foveated rendering
• VR 게임에서 아이트래킹을 통해 VRS를 다르게 한다.
https://developer.nvidia.com/blog/vrs-wrapper/
VRS On / Off
https://www.youtube.com/watch?v=HnvlM2i7VHw
RTX IO
• 스토리지에 저장된 데이터를 GPU Memory로 옮기면서 생기는 병목 현상을 줄이는 기술
기존의 데이터 이동
• 스토리지에서 먼저 시스템 메모리로 옮긴 후 다시 GPU Memory로 옮긴다.
기존의 데이터 이동
• 이때 스토리지의 속도가 가장 느리므로 병목 현상이 발생한다.
현재 가장 빠른 스토리지의 읽기 속도는 7GB/s다.
데이터 압축
• 이 병목의 한계를 넘을려면 데이터를 압축해서 이동시켜야 한다.
• 그러나 데이터를 압축 푸는 단계가 추가된다.
이 방식으로 2배 정도 효과를 보려면 CPU 코어 24개나 필요하다.
RTX IO
• RTX IO는 Direct Storage api를 이용하여 스토리에서 압축된 데이터를 다이렉트로 받
아오고 GPU를 이용하여 데이터 압축을 해제한다.
GPU는 병렬 처리에 특화되어 압축 푸는 데 별다른 문제가 없다.
RTX IO
• CPU에서의 로드가 줄어들고 스토리지에서 데이터를 압축된 형태로 이용하여 I/O 성
능을 2개까지 향상시킨다.
기존의 텍스처 로드
• 기존에는 그래픽 카드에 텍스처를 가져올 때 밉맵의 모든 텍스처를 로드한다.
SSD VRAM
기존의 텍스처 로드
• 이 방식은 지금 사용하지 않는 레벨의 텍스처도 로드하므로 비효율적이다.
SSD VRAM
Sampler Feedback Streaming
• 샘플러 피드백 스트리밍은 현재 사용중인 텍스처의 필요한 부분만 로드한다.
SSD VRAM
샘플러 피드백 스트리밍의 작동 원리
https://w.namu.la/s/c61aefddbbac795ddd72e1fd9e557621cd9f84df8092b03ea72e9a6eb7704ad8
21ed45c6a71e43fe537e03f39b6d569b579da232194fcbd700618f6a3220e88b57fddbcdd2c76bea2c
b3a74c4b4f5709cf299cf632cb01324bf868793980b846
Direct Storage와 SFS
• 오픈 월드 게임은 방대한 맵의 고해상도 텍스처를 요구하므로 다이렉트 스토리지와
SFS가 필수적이다.
• 또한 대부분의 게임에서 두 기술을 적용한 엑스박스의 로딩 속도가 PS5보다 십초 이
상 빠르다고 한다.
정리
• 그래픽카드의 레이트레이싱 하드웨어 지원으로 게임에서 전역 조명 지원이 가능해졌다.
• 텐서 코어를 이용한 DLSS는 업스케일링 기술로 FHD를 UHD로 출력하여 약 2배 정도의 프레
임 향상을 기대할 수 있다.
• 메쉬 쉐이더는 동적 LOD 계산을 통해 방대한 폴리곤 처리를 가능하게 해준다.
• VRS는 개념적으로 스크린을 분할하여 각 영역마다 다른 해상도를 적용하여 쉐이딩하는 기술
이다. 눈에 보이는 퀄리티 하락은 최소화하면서 프레임을 향상시킬 수 있다.
• Direct Storage API는 GPU를 이용한 데이터 압축 처리로 데이터 이동 속도를 두배로 향상시
킨다.
• 샘플러 피드백 스트리밍은 실시간으로 텍스처의 필요한 부분만 메모리에 로드하여 메모리의
가용성을 향상시킨다.
Ad

Recommended

[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
MinGeun Park
Deferred decal
Deferred decal
민웅 이
스크린 스페이스 데칼에 대해 자세히 알아보자(워햄머 40,000: 스페이스 마린)
스크린 스페이스 데칼에 대해 자세히 알아보자(워햄머 40,000: 스페이스 마린)
포프 김
[Kgc2012] deferred forward 이창희
[Kgc2012] deferred forward 이창희
changehee lee
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
김혁, <드래곤 하운드>의 PBR과 레이트레이싱 렌더링 기법, NDC2019
devCAT Studio, NEXON
프레임레이트 향상을 위한 공간분할 및 오브젝트 컬링 기법
프레임레이트 향상을 위한 공간분할 및 오브젝트 컬링 기법
YEONG-CHEON YOU
모바일 게임 최적화
모바일 게임 최적화
tartist
[Unite2015 박민근] 유니티 최적화 테크닉 총정리
[Unite2015 박민근] 유니티 최적화 테크닉 총정리
MinGeun Park
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
Ki Hyunwoo
Parallel Futures of a Game Engine (v2.0)
Parallel Futures of a Game Engine (v2.0)
repii
LOD and Culling Systems That Scale - Unite LA
LOD and Culling Systems That Scale - Unite LA
Unity Technologies
Masked Software Occlusion Culling
Masked Software Occlusion Culling
Intel® Software
Real-time lightmap baking
Real-time lightmap baking
Rosario Leonardi
[Ndc11 박민근] deferred shading
[Ndc11 박민근] deferred shading
MinGeun Park
제노블레이도 2 ray marching을사용한 구름 표현
제노블레이도 2 ray marching을사용한 구름 표현
민웅 이
Brdf기반 사전정의 스킨 셰이더
Brdf기반 사전정의 스킨 셰이더
동석 김
Tips and experience of DX12 Engine development .
Tips and experience of DX12 Engine development .
YEONG-CHEON YOU
파이썬 생존 안내서 (자막)
파이썬 생존 안내서 (자막)
Heungsub Lee
The Rendering Technology of 'Lords of the Fallen' (Game Connection Europe 2014)
The Rendering Technology of 'Lords of the Fallen' (Game Connection Europe 2014)
Philip Hammer
Unity Visual Effect Graph
Unity Visual Effect Graph
Phuong Hoang Vu
Technical Deep Dive into the New Prefab System
Technical Deep Dive into the New Prefab System
Unity Technologies
SNAPDRAGON SoC Family and ARM Architecture
SNAPDRAGON SoC Family and ARM Architecture
Abdullaziz Tagawy
[1023 박민수] 깊이_버퍼_그림자_1
[1023 박민수] 깊이_버퍼_그림자_1
MoonLightMS
Introduction to DirectX 12 Programming , Ver 1.5
Introduction to DirectX 12 Programming , Ver 1.5
YEONG-CHEON YOU
Parallel Graphics in Frostbite - Current & Future (Siggraph 2009)
Parallel Graphics in Frostbite - Current & Future (Siggraph 2009)
repii
Frostbite on Mobile
Frostbite on Mobile
Electronic Arts / DICE
Motion blur
Motion blur
changehee lee
NDC2011 - 절차적 지형과 트렌드의 추적자들
NDC2011 - 절차적 지형과 트렌드의 추적자들
Jubok Kim
유니티 게임 그래픽스 아트 개발 사례 분석
유니티 게임 그래픽스 아트 개발 사례 분석
SangYun Yi
Game Visual Art Technologies
Game Visual Art Technologies
SangYun Yi

More Related Content

What's hot (20)

NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
Ki Hyunwoo
Parallel Futures of a Game Engine (v2.0)
Parallel Futures of a Game Engine (v2.0)
repii
LOD and Culling Systems That Scale - Unite LA
LOD and Culling Systems That Scale - Unite LA
Unity Technologies
Masked Software Occlusion Culling
Masked Software Occlusion Culling
Intel® Software
Real-time lightmap baking
Real-time lightmap baking
Rosario Leonardi
[Ndc11 박민근] deferred shading
[Ndc11 박민근] deferred shading
MinGeun Park
제노블레이도 2 ray marching을사용한 구름 표현
제노블레이도 2 ray marching을사용한 구름 표현
민웅 이
Brdf기반 사전정의 스킨 셰이더
Brdf기반 사전정의 스킨 셰이더
동석 김
Tips and experience of DX12 Engine development .
Tips and experience of DX12 Engine development .
YEONG-CHEON YOU
파이썬 생존 안내서 (자막)
파이썬 생존 안내서 (자막)
Heungsub Lee
The Rendering Technology of 'Lords of the Fallen' (Game Connection Europe 2014)
The Rendering Technology of 'Lords of the Fallen' (Game Connection Europe 2014)
Philip Hammer
Unity Visual Effect Graph
Unity Visual Effect Graph
Phuong Hoang Vu
Technical Deep Dive into the New Prefab System
Technical Deep Dive into the New Prefab System
Unity Technologies
SNAPDRAGON SoC Family and ARM Architecture
SNAPDRAGON SoC Family and ARM Architecture
Abdullaziz Tagawy
[1023 박민수] 깊이_버퍼_그림자_1
[1023 박민수] 깊이_버퍼_그림자_1
MoonLightMS
Introduction to DirectX 12 Programming , Ver 1.5
Introduction to DirectX 12 Programming , Ver 1.5
YEONG-CHEON YOU
Parallel Graphics in Frostbite - Current & Future (Siggraph 2009)
Parallel Graphics in Frostbite - Current & Future (Siggraph 2009)
repii
Frostbite on Mobile
Frostbite on Mobile
Electronic Arts / DICE
Motion blur
Motion blur
changehee lee
NDC2011 - 절차적 지형과 트렌드의 추적자들
NDC2011 - 절차적 지형과 트렌드의 추적자들
Jubok Kim
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
Ki Hyunwoo
Parallel Futures of a Game Engine (v2.0)
Parallel Futures of a Game Engine (v2.0)
repii
LOD and Culling Systems That Scale - Unite LA
LOD and Culling Systems That Scale - Unite LA
Unity Technologies
Masked Software Occlusion Culling
Masked Software Occlusion Culling
Intel® Software
[Ndc11 박민근] deferred shading
[Ndc11 박민근] deferred shading
MinGeun Park
제노블레이도 2 ray marching을사용한 구름 표현
제노블레이도 2 ray marching을사용한 구름 표현
민웅 이
Brdf기반 사전정의 스킨 셰이더
Brdf기반 사전정의 스킨 셰이더
동석 김
Tips and experience of DX12 Engine development .
Tips and experience of DX12 Engine development .
YEONG-CHEON YOU
파이썬 생존 안내서 (자막)
파이썬 생존 안내서 (자막)
Heungsub Lee
The Rendering Technology of 'Lords of the Fallen' (Game Connection Europe 2014)
The Rendering Technology of 'Lords of the Fallen' (Game Connection Europe 2014)
Philip Hammer
Technical Deep Dive into the New Prefab System
Technical Deep Dive into the New Prefab System
Unity Technologies
SNAPDRAGON SoC Family and ARM Architecture
SNAPDRAGON SoC Family and ARM Architecture
Abdullaziz Tagawy
[1023 박민수] 깊이_버퍼_그림자_1
[1023 박민수] 깊이_버퍼_그림자_1
MoonLightMS
Introduction to DirectX 12 Programming , Ver 1.5
Introduction to DirectX 12 Programming , Ver 1.5
YEONG-CHEON YOU
Parallel Graphics in Frostbite - Current & Future (Siggraph 2009)
Parallel Graphics in Frostbite - Current & Future (Siggraph 2009)
repii
NDC2011 - 절차적 지형과 트렌드의 추적자들
NDC2011 - 절차적 지형과 트렌드의 추적자들
Jubok Kim

Similar to 진화하는 컴퓨터 하드웨어와 게임 개발 기술의 발전 (20)

유니티 게임 그래픽스 아트 개발 사례 분석
유니티 게임 그래픽스 아트 개발 사례 분석
SangYun Yi
Game Visual Art Technologies
Game Visual Art Technologies
SangYun Yi
09_Voxel rendering
09_Voxel rendering
noerror
2017 12 09_데브루키_리얼타임 렌더링_입문편(3차원 그래픽스[저자 : 한정현] 참조)
2017 12 09_데브루키_리얼타임 렌더링_입문편(3차원 그래픽스[저자 : 한정현] 참조)
Sukwoo Lee
니시카와젠지의 3 d 게임 팬을 위한 ps4
니시카와젠지의 3 d 게임 팬을 위한 ps4
민웅 이
언리얼엔진4를 활용한 레이트레이싱 리얼타임 영상 제작하기
언리얼엔진4를 활용한 레이트레이싱 리얼타임 영상 제작하기
YOUNGJO CHO
Direct x 11 입문
Direct x 11 입문
Jin Woo Lee
[14.10.21] Far Cry and DX9 번역(shaderstudy)
[14.10.21] Far Cry and DX9 번역(shaderstudy)
[KGC2014] DX9에서DX11로의이행경험공유
[KGC2014] DX9에서DX11로의이행경험공유
Hwan Min
멀티스레드 렌더링 (Multithreaded rendering)
멀티스레드 렌더링 (Multithreaded rendering)
Bongseok Cho
10강최적화 가속화
10강최적화 가속화
JP Jung
Optimizing the graphics_pipeline_
Optimizing the graphics_pipeline_
ozlael ozlael
[Kgc2013] 모바일 엔진 개발기
[Kgc2013] 모바일 엔진 개발기
changehee lee
[0312 조진현] good bye dx9
[0312 조진현] good bye dx9
진현 조
Direct x 12 초기화
Direct x 12 초기화
QooJuice
[1106 조진현] if you( batch rendering )
[1106 조진현] if you( batch rendering )
진현 조
Unity3D 엔진을 활용한 게임환경 분석 및 3D 그래픽스 기술 /제작 사례
Unity3D 엔진을 활용한 게임환경 분석 및 3D 그래픽스 기술 /제작 사례
SangYun Yi
[IGC 2017] 에픽게임즈 최용훈 - 밤낮으로 부수고 짓고 액션 빌딩 게임 만들기 - 포트나이트
[IGC 2017] 에픽게임즈 최용훈 - 밤낮으로 부수고 짓고 액션 빌딩 게임 만들기 - 포트나이트
강 민우
Modern gpu optimize
Modern gpu optimize
ozlael ozlael
Modern gpu optimize blog
Modern gpu optimize blog
ozlael ozlael
유니티 게임 그래픽스 아트 개발 사례 분석
유니티 게임 그래픽스 아트 개발 사례 분석
SangYun Yi
Game Visual Art Technologies
Game Visual Art Technologies
SangYun Yi
09_Voxel rendering
09_Voxel rendering
noerror
2017 12 09_데브루키_리얼타임 렌더링_입문편(3차원 그래픽스[저자 : 한정현] 참조)
2017 12 09_데브루키_리얼타임 렌더링_입문편(3차원 그래픽스[저자 : 한정현] 참조)
Sukwoo Lee
니시카와젠지의 3 d 게임 팬을 위한 ps4
니시카와젠지의 3 d 게임 팬을 위한 ps4
민웅 이
언리얼엔진4를 활용한 레이트레이싱 리얼타임 영상 제작하기
언리얼엔진4를 활용한 레이트레이싱 리얼타임 영상 제작하기
YOUNGJO CHO
[14.10.21] Far Cry and DX9 번역(shaderstudy)
[14.10.21] Far Cry and DX9 번역(shaderstudy)
[KGC2014] DX9에서DX11로의이행경험공유
[KGC2014] DX9에서DX11로의이행경험공유
Hwan Min
멀티스레드 렌더링 (Multithreaded rendering)
멀티스레드 렌더링 (Multithreaded rendering)
Bongseok Cho
10강최적화 가속화
10강최적화 가속화
JP Jung
Optimizing the graphics_pipeline_
Optimizing the graphics_pipeline_
ozlael ozlael
[Kgc2013] 모바일 엔진 개발기
[Kgc2013] 모바일 엔진 개발기
changehee lee
[0312 조진현] good bye dx9
[0312 조진현] good bye dx9
진현 조
Direct x 12 초기화
Direct x 12 초기화
QooJuice
[1106 조진현] if you( batch rendering )
[1106 조진현] if you( batch rendering )
진현 조
Unity3D 엔진을 활용한 게임환경 분석 및 3D 그래픽스 기술 /제작 사례
Unity3D 엔진을 활용한 게임환경 분석 및 3D 그래픽스 기술 /제작 사례
SangYun Yi
[IGC 2017] 에픽게임즈 최용훈 - 밤낮으로 부수고 짓고 액션 빌딩 게임 만들기 - 포트나이트
[IGC 2017] 에픽게임즈 최용훈 - 밤낮으로 부수고 짓고 액션 빌딩 게임 만들기 - 포트나이트
강 민우
Ad

More from Sukwoo Lee (9)

Data-Oriented Design과 유니티 DOTS
Data-Oriented Design과 유니티 DOTS
Sukwoo Lee
Cascade Shadow Mapping
Cascade Shadow Mapping
Sukwoo Lee
행동 트리
행동 트리
Sukwoo Lee
Bump Mapping
Bump Mapping
Sukwoo Lee
포인트 셰도우
포인트 셰도우
Sukwoo Lee
2018.12.22 깊이 버퍼 그림자 매핑
2018.12.22 깊이 버퍼 그림자 매핑
Sukwoo Lee
2018.02.03 이미지 텍스처링
2018.02.03 이미지 텍스처링
Sukwoo Lee
리얼타임 렌더링 - 조명 입문편 -
리얼타임 렌더링 - 조명 입문편 -
Sukwoo Lee
Component-Based Entity System과 Data-oriented Design
Component-Based Entity System과 Data-oriented Design
Sukwoo Lee
Data-Oriented Design과 유니티 DOTS
Data-Oriented Design과 유니티 DOTS
Sukwoo Lee
Cascade Shadow Mapping
Cascade Shadow Mapping
Sukwoo Lee
2018.12.22 깊이 버퍼 그림자 매핑
2018.12.22 깊이 버퍼 그림자 매핑
Sukwoo Lee
2018.02.03 이미지 텍스처링
2018.02.03 이미지 텍스처링
Sukwoo Lee
리얼타임 렌더링 - 조명 입문편 -
리얼타임 렌더링 - 조명 입문편 -
Sukwoo Lee
Component-Based Entity System과 Data-oriented Design
Component-Based Entity System과 Data-oriented Design
Sukwoo Lee
Ad

진화하는 컴퓨터 하드웨어와 게임 개발 기술의 발전

  • 1. 진화하는 컴퓨터 하드웨어와 게임 개발 기술의 발전 2020-11-07 제 552회 데브루키 스터디 발표자 : 이석우
  • 2. • 그동안 게임 개발에서 왜 레이트레이싱 이용한 GI를 사용하지 못했던 걸까? 당연한 걸 왜 물어봐? 계산량 많으니까 그렇지~
  • 3. 기존의 그래픽카드의 발전 방향 • 코어의 클럭 속도는 정체된 반면, 코어 수 Up, Vram 용량 Up. • 더 많은 병렬 처리가 가능하지만 코어 하나의 처리 속도 정체됨. • 기존의 발전 방향으론 픽셀쉐이더에서 계산이 많은 연산은 힘들다.
  • 4. NVIDIA RTX의 등장 • 기존 그래픽 카드 : 하나의 코어에서 모든 작업을 병렬 처리 • RTX : 작업에 따라 코어의 역할을 분리하여 병렬처리
  • 5. Task Task Task • A: 하나의 대규모 프로그래밍 팀이 모든 일을 떠맡는다. • B: 데브옵스, 컨텐츠, 엔진 팀을 따로 만들고, 각 팀에 알맞게 인원을 대치하고 작업한다. • 어느 것이 더 효율적일까? Team Task Task Task Task Task Engine Dev- Ops Conte nts Task Task Task Task Task Task Task Task TaskTask Task Tas k
  • 6. RTX GPU RTX GPU Architecture Stream Multiprocessor
  • 7. RTX GPU SM Pascal SM Ampere SM
  • 8. Hardware Raytracing • RTX 그래픽 카드는 RT Core를 이용한 Hardware Raytracing을 지원한다.
  • 9. Typical Scene Rendering Render G-Buffer Objects 조명 계산 Scene Color Buffer Depth Buffer G-Buffer Normal Map Specular property
  • 10. 그렇게 하면 안돼요! 자! 여기서 퀴즈! 멘마짱은 왜 안된다고 했을까요? 음 . . . 레이트레이싱도 G-버퍼 이용해서 조명 계산하면 되겠지?
  • 11. Ray Tracing • G버퍼는 카메라에서 보이는 객체들의 데이터만 저장된다. • 하지만 레이트레이싱을 하기 위해선 씬의 안보이는 객체의 데이터도 필요하다. 카메라 공간
  • 12. Ray Tracing • 광원이 빛을 방사하는 것은 일종의 레이캐스팅라고 볼 수 있다. • 반면 빛이 도달한 위치에서 반대로 광원까지의 위치를 추적하는 것을 레이트레이싱 이라고 한다. Raycasting Raytracing 왜 레이캐스팅이 아닌 레이트레이싱으로 전역 조명을 구현할까?
  • 13. Ray Tracing 광원에서 빛이 방사되어 물체에 부딪히고 이 빛이 다시 반사되어 카메라 렌즈에 들어오면 우리가 보는 물체의 색이 된다. 즉, 우리는 눈에 보이는 장면 속 물체들의 색만 알면 되기 때문에 카메라 위치와 픽셀 위치를 기준으로 레이트레이싱하면 색을 구할 수 있다.
  • 14. Ray Tracing • 광원에 도달하기 할 때까지 레이트레이싱은 재귀적으로 동작한다. 1 2 3
  • 15. 한마디로 GPU에서 물리 연산을 해야 된다는 것….
  • 16. Bounding Volume Hierarchy • 다행인 것은 RT Core에서 BVH를 지원하여 계산을 최소한 한다.
  • 17. Directx Raytracing 이런 변화에 맞춰 DirectX에서도 레이트레이싱 쉐이더를 지원한다.
  • 18. Ray Tracing On/Off 아무리 하드웨어 RT를 쓴다 해도 계산이 많아 느린 건 변함없다. Ray Traced Shadow On / Off
  • 19. 모니터의 발전 • 그래픽 카드가 발전하는 만큼 모니터 성능도 발전한다. • 처리해야할 픽셀도 많아지고 프레임도 144 프레임 이상 나와야 한다.
  • 20. 기술적 딜레마 그래픽 카드 성능 이 올랐는가?RT Off 모니터 성능이 올랐는가? Yes No Yes RT On No 그래픽 카드 성능이 향상되면 모니터 성능도 발전해서 최신 모니터에 적용할 수 없는 상황이 계속 이어진다.
  • 21. 이 문제를 해결하기 위해 내가 왔다
  • 22. DLSS • 저해상도 이미지로 고해상도 이미지를 출력하는 이미지 업스케일링 기술의 일종이다. DLSS FHD UHD
  • 23. DLSS • Deep Learning Super Sampling Nvidia Super Computer AI Model 64x 슈퍼 샘플링 이미지저해상도 이미지
  • 24. DLSS • 우선 엔비디아 슈퍼컴퓨터의 AI에게 저해상도 이미지와 고해상도 이미지를 준다. Nvidia Super Computer AI Model
  • 25. DLSS • 그 다음 AI에게 저해상도 이미지를 고해상도 이미지로 만드는 훈련을 시킨다. AI Model
  • 26. DLSS • 이를 통해 저해상도 이미지를 고해상도 이미지로 업스케일링 하는 AI 모델을 만든다. AI Model
  • 27. DLSS • 우리는 AI Model을 드라이버를 통해 제공 받아 개인 PC에서 DLSS를 적용할 수 있다. 드라이버 Nvidia Super Computer AI Model 개인 PC DLSS 적용 Tensor Core
  • 28. DLSS • DLSS를 적용하면 약 1.5 ~ 2배 정도의 프레임 향상을 볼 수 있다고 한다. 아하! 그러면 FHD에서 RT를 적용하고 DLSS로 업스케일링 하면 UHD에서 레이트레이싱한 효과를 볼 수 있는 거구나! FHD RT 적용 FHD DLSS 적용
  • 29. 8K Monitor DLSS On/Off
  • 30. DLSS의 장점 • AI가 슈퍼샘플링을 흉내 내서 업스케일링이 가능하다. • 슈퍼샘플링에 비해 계산량과 메모리 소비가 현저히 적다.
  • 31. DLSS의 문제점 • 프레임 이득을 본 만큼 선명도가 떨어질 수 있다.
  • 32. DLSS의 문제점 • 모션이 있을 때 외곽선이 일그러지고, 주변 디테일이 깨지는 현상이 있다. https://www.youtube.com/watch?v=YWIKzRhYZm4&t=302s
  • 33. DLSS의 진화 • 그래도 문제점들이 AI 모델의 학습으로 개선되고 있다.
  • 35. Mesh Shader • 기존 쉐이더를 대체하는 새로운 쉐이더 • 동적으로 LOD 계산이 가능하여 많은 폴리곤을 처리하는 데 효율적이다.
  • 36. 협력 쓰레드 모델 기존에는 단일 쓰레드 모델을 사용했다. 따라서 GS나 TS 처리를 할 때 특정 쓰레드에서 병목 현상이 발생한다. 반면 메쉬 쉐이더는 협력 쓰 레드 모델을 사용하므로 이러 한 문제가 발생하지 않는다.
  • 37. Graphics Pipeline Vertex Shader Hull Shader Geometry Shader Tessellation Pixel ShaderRaterization Current Graphics Pipeline New Graphics Pipeline with Mesh Shader Task Shader Mesh Shader Domain Shader Mesh Generation Raterization Pixel Shader
  • 38. Culling 기존 파이프라인에서는 필요 없는 버텍스라도 GS나 PS 단계까지는 진행해야 했다. 그러나 새로운 파이프라인은 Task Shader에서 필요없는 버텍스를 사전에 버릴 수 있다.
  • 39. Culling • 하이폴리곤의 메쉬는 Meshlet이라는 버텍스 집합으로 분할시킬 수 있다. • Meshlet으로 묶어 한 번의 테스트로 Meshlet 전체를 Culling 할 수 있다.
  • 40. Dynamic LOD • 이러한 특성을 이용해 동적으로 LOD를 조절하는 게 가능하다. • Task Shader에서 Bbox를 이용한 Frustum Culing, Mesh Shader에서는 Meshlet에 대한 Frustum Culling을 하여 불필요한 작업을 최소화 한다. • 협력 쓰레드 모델을 사용하여 LOD에 따라 쓰레드 개수를 조절하여 병목 현상을 줄인다. • 다만 무조건 다 그려야 한다면 기존 파이프라인이 더 빠를 것이다.
  • 41. Mash Shader 적용 https://www.youtube.com/watch?v=CRfZYJ_sk5E https://www.youtube.com/watch?v=qC5KtatMcUw&t=313s Unreal Engine 5 ShowcaseAsteroids Mesh Shader Demo
  • 42. Variable Rate Shading • 스크린의 모든 영역을 16x16 픽셀 크기로 분할하여 각 영역마다 쉐이딩 처리 비율 다르게 설정한다.
  • 43. Variable Rate Shading • 기존에는 모든 픽셀에서 쉐이더를 호출해야 했지만 이제는 영역마다 쉐이더 호출 회 수를 조절할 수 있다. 모든 픽셀에서 쉐이더 호출 총 쉐이더 호출 횟수 : 256 픽셀 16개마다 쉐이더 호출 총 쉐이더 호출 횟수 : 16
  • 44. Motion Adaptive Rendering • 객체의 속도에 따라 VRS를 다르게 한다. 16 x 16 pxs
  • 45. Content Adaptive Rendering • 그냥 벽은 Shading 처리 횟수를 줄이고 계기판이 있는 곳은 올린다. VRS off VRS on
  • 46. Foveated rendering • VR 게임에서 아이트래킹을 통해 VRS를 다르게 한다. https://developer.nvidia.com/blog/vrs-wrapper/
  • 47. VRS On / Off https://www.youtube.com/watch?v=HnvlM2i7VHw
  • 48. RTX IO • 스토리지에 저장된 데이터를 GPU Memory로 옮기면서 생기는 병목 현상을 줄이는 기술
  • 49. 기존의 데이터 이동 • 스토리지에서 먼저 시스템 메모리로 옮긴 후 다시 GPU Memory로 옮긴다.
  • 50. 기존의 데이터 이동 • 이때 스토리지의 속도가 가장 느리므로 병목 현상이 발생한다. 현재 가장 빠른 스토리지의 읽기 속도는 7GB/s다.
  • 51. 데이터 압축 • 이 병목의 한계를 넘을려면 데이터를 압축해서 이동시켜야 한다. • 그러나 데이터를 압축 푸는 단계가 추가된다.
  • 52. 이 방식으로 2배 정도 효과를 보려면 CPU 코어 24개나 필요하다.
  • 53. RTX IO • RTX IO는 Direct Storage api를 이용하여 스토리에서 압축된 데이터를 다이렉트로 받 아오고 GPU를 이용하여 데이터 압축을 해제한다. GPU는 병렬 처리에 특화되어 압축 푸는 데 별다른 문제가 없다.
  • 54. RTX IO • CPU에서의 로드가 줄어들고 스토리지에서 데이터를 압축된 형태로 이용하여 I/O 성 능을 2개까지 향상시킨다.
  • 55. 기존의 텍스처 로드 • 기존에는 그래픽 카드에 텍스처를 가져올 때 밉맵의 모든 텍스처를 로드한다. SSD VRAM
  • 56. 기존의 텍스처 로드 • 이 방식은 지금 사용하지 않는 레벨의 텍스처도 로드하므로 비효율적이다. SSD VRAM
  • 57. Sampler Feedback Streaming • 샘플러 피드백 스트리밍은 현재 사용중인 텍스처의 필요한 부분만 로드한다. SSD VRAM
  • 58. 샘플러 피드백 스트리밍의 작동 원리 https://w.namu.la/s/c61aefddbbac795ddd72e1fd9e557621cd9f84df8092b03ea72e9a6eb7704ad8 21ed45c6a71e43fe537e03f39b6d569b579da232194fcbd700618f6a3220e88b57fddbcdd2c76bea2c b3a74c4b4f5709cf299cf632cb01324bf868793980b846
  • 59. Direct Storage와 SFS • 오픈 월드 게임은 방대한 맵의 고해상도 텍스처를 요구하므로 다이렉트 스토리지와 SFS가 필수적이다. • 또한 대부분의 게임에서 두 기술을 적용한 엑스박스의 로딩 속도가 PS5보다 십초 이 상 빠르다고 한다.
  • 60. 정리 • 그래픽카드의 레이트레이싱 하드웨어 지원으로 게임에서 전역 조명 지원이 가능해졌다. • 텐서 코어를 이용한 DLSS는 업스케일링 기술로 FHD를 UHD로 출력하여 약 2배 정도의 프레 임 향상을 기대할 수 있다. • 메쉬 쉐이더는 동적 LOD 계산을 통해 방대한 폴리곤 처리를 가능하게 해준다. • VRS는 개념적으로 스크린을 분할하여 각 영역마다 다른 해상도를 적용하여 쉐이딩하는 기술 이다. 눈에 보이는 퀄리티 하락은 최소화하면서 프레임을 향상시킬 수 있다. • Direct Storage API는 GPU를 이용한 데이터 압축 처리로 데이터 이동 속도를 두배로 향상시 킨다. • 샘플러 피드백 스트리밍은 실시간으로 텍스처의 필요한 부분만 메모리에 로드하여 메모리의 가용성을 향상시킨다.