SlideShare a Scribd company logo
1 of 60
Download to read offline
진화하는 컴퓨터 하드웨어와
게임 개발 기술의 발전
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를 이용한 데이터 압축 처리로 데이터 이동 속도를 두배로 향상시
킨다.
• 샘플러 피드백 스트리밍은 실시간으로 텍스처의 필요한 부분만 메모리에 로드하여 메모리의
가용성을 향상시킨다.

More Related Content

What's hot

리플렉션과 가비지 컬렉션
리플렉션과 가비지 컬렉션리플렉션과 가비지 컬렉션
리플렉션과 가비지 컬렉션
QooJuice
 
김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019
김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019
김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019
devCAT Studio, NEXON
 
게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013
게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013
게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013
영욱 오
 
임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012
devCAT Studio, NEXON
 
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
devCAT Studio, NEXON
 
Ndc2010 전형규 마비노기2 캐릭터 렌더링 기술
Ndc2010 전형규   마비노기2 캐릭터 렌더링 기술Ndc2010 전형규   마비노기2 캐릭터 렌더링 기술
Ndc2010 전형규 마비노기2 캐릭터 렌더링 기술
henjeon
 
송창규, unity build로 빌드타임 반토막내기, NDC2010
송창규, unity build로 빌드타임 반토막내기, NDC2010송창규, unity build로 빌드타임 반토막내기, NDC2010
송창규, unity build로 빌드타임 반토막내기, NDC2010
devCAT Studio, NEXON
 
NDC16 - 화성에서 온 사업팀 금성에서 온 개발팀 : 성공적인 라이브 서비스를 위해 필요한 것들
NDC16 - 화성에서 온 사업팀 금성에서 온 개발팀 : 성공적인 라이브 서비스를 위해 필요한 것들NDC16 - 화성에서 온 사업팀 금성에서 온 개발팀 : 성공적인 라이브 서비스를 위해 필요한 것들
NDC16 - 화성에서 온 사업팀 금성에서 온 개발팀 : 성공적인 라이브 서비스를 위해 필요한 것들
Young Keun Choe
 

What's hot (20)

GameInstance에 대해서 알아보자
GameInstance에 대해서 알아보자GameInstance에 대해서 알아보자
GameInstance에 대해서 알아보자
 
리플렉션과 가비지 컬렉션
리플렉션과 가비지 컬렉션리플렉션과 가비지 컬렉션
리플렉션과 가비지 컬렉션
 
김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019
김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019
김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019
 
게임프로젝트에 적용하는 GPGPU
게임프로젝트에 적용하는 GPGPU게임프로젝트에 적용하는 GPGPU
게임프로젝트에 적용하는 GPGPU
 
게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013
게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013
게임에서 흔히 쓰이는 최적화 전략 by 엄윤섭 @ 지스타 컨퍼런스 2013
 
언리얼4 플레이어 컨트롤러의 이해.
언리얼4 플레이어 컨트롤러의 이해.언리얼4 플레이어 컨트롤러의 이해.
언리얼4 플레이어 컨트롤러의 이해.
 
GPGPU(CUDA)를 이용한 MMOG 캐릭터 충돌처리
GPGPU(CUDA)를 이용한 MMOG 캐릭터 충돌처리GPGPU(CUDA)를 이용한 MMOG 캐릭터 충돌처리
GPGPU(CUDA)를 이용한 MMOG 캐릭터 충돌처리
 
Voxelizaition with GPU
Voxelizaition with GPUVoxelizaition with GPU
Voxelizaition with GPU
 
실시간 게임 서버 최적화 전략
실시간 게임 서버 최적화 전략실시간 게임 서버 최적화 전략
실시간 게임 서버 최적화 전략
 
임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012
 
NDC 2018 '야생의 땅: 듀랑고' 초반 플레이 변천사
NDC 2018 '야생의 땅: 듀랑고' 초반 플레이 변천사 NDC 2018 '야생의 땅: 듀랑고' 초반 플레이 변천사
NDC 2018 '야생의 땅: 듀랑고' 초반 플레이 변천사
 
NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현
 
[NDC 2009] 행동 트리로 구현하는 인공지능
[NDC 2009] 행동 트리로 구현하는 인공지능[NDC 2009] 행동 트리로 구현하는 인공지능
[NDC 2009] 행동 트리로 구현하는 인공지능
 
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
 
Ndc2010 전형규 마비노기2 캐릭터 렌더링 기술
Ndc2010 전형규   마비노기2 캐릭터 렌더링 기술Ndc2010 전형규   마비노기2 캐릭터 렌더링 기술
Ndc2010 전형규 마비노기2 캐릭터 렌더링 기술
 
라이트,라이트맵,라이트프로브,누가가장가볍고이쁠까
라이트,라이트맵,라이트프로브,누가가장가볍고이쁠까라이트,라이트맵,라이트프로브,누가가장가볍고이쁠까
라이트,라이트맵,라이트프로브,누가가장가볍고이쁠까
 
[Kgc2012] deferred forward 이창희
[Kgc2012] deferred forward 이창희[Kgc2012] deferred forward 이창희
[Kgc2012] deferred forward 이창희
 
송창규, unity build로 빌드타임 반토막내기, NDC2010
송창규, unity build로 빌드타임 반토막내기, NDC2010송창규, unity build로 빌드타임 반토막내기, NDC2010
송창규, unity build로 빌드타임 반토막내기, NDC2010
 
게임서버프로그래밍 #7 - 패킷핸들링 및 암호화
게임서버프로그래밍 #7 - 패킷핸들링 및 암호화게임서버프로그래밍 #7 - 패킷핸들링 및 암호화
게임서버프로그래밍 #7 - 패킷핸들링 및 암호화
 
NDC16 - 화성에서 온 사업팀 금성에서 온 개발팀 : 성공적인 라이브 서비스를 위해 필요한 것들
NDC16 - 화성에서 온 사업팀 금성에서 온 개발팀 : 성공적인 라이브 서비스를 위해 필요한 것들NDC16 - 화성에서 온 사업팀 금성에서 온 개발팀 : 성공적인 라이브 서비스를 위해 필요한 것들
NDC16 - 화성에서 온 사업팀 금성에서 온 개발팀 : 성공적인 라이브 서비스를 위해 필요한 것들
 

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

테슬라 도조 프로젝트 (What is Tesla's Dojo Supercomputer?)
테슬라 도조 프로젝트 (What is Tesla's Dojo Supercomputer?)테슬라 도조 프로젝트 (What is Tesla's Dojo Supercomputer?)
테슬라 도조 프로젝트 (What is Tesla's Dojo Supercomputer?)
BoanLabDKU
 
Ndc2012 최지호 텍스쳐 압축 기법 소개
Ndc2012 최지호 텍스쳐 압축 기법 소개Ndc2012 최지호 텍스쳐 압축 기법 소개
Ndc2012 최지호 텍스쳐 압축 기법 소개
Jiho Choi
 
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
devCAT Studio, NEXON
 
Optimizing the graphics_pipeline_
Optimizing the graphics_pipeline_Optimizing the graphics_pipeline_
Optimizing the graphics_pipeline_
ozlael ozlael
 

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

모바일 게임 최적화
모바일 게임 최적화 모바일 게임 최적화
모바일 게임 최적화
 
Ndc12 이창희 render_pipeline
Ndc12 이창희 render_pipelineNdc12 이창희 render_pipeline
Ndc12 이창희 render_pipeline
 
테슬라 도조 프로젝트 (What is Tesla's Dojo Supercomputer?)
테슬라 도조 프로젝트 (What is Tesla's Dojo Supercomputer?)테슬라 도조 프로젝트 (What is Tesla's Dojo Supercomputer?)
테슬라 도조 프로젝트 (What is Tesla's Dojo Supercomputer?)
 
CUDA를 게임 프로젝트에 적용하기
CUDA를 게임 프로젝트에 적용하기CUDA를 게임 프로젝트에 적용하기
CUDA를 게임 프로젝트에 적용하기
 
Ndc2012 최지호 텍스쳐 압축 기법 소개
Ndc2012 최지호 텍스쳐 압축 기법 소개Ndc2012 최지호 텍스쳐 압축 기법 소개
Ndc2012 최지호 텍스쳐 압축 기법 소개
 
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능인자 이해하기
 
Direct x 11 입문
Direct x 11 입문Direct x 11 입문
Direct x 11 입문
 
프론트엔드 개발자를 위한 크롬 렌더링 성능 인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능 인자 이해하기프론트엔드 개발자를 위한 크롬 렌더링 성능 인자 이해하기
프론트엔드 개발자를 위한 크롬 렌더링 성능 인자 이해하기
 
2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)
2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)
2015 제2회 동아리 해커 세미나 - 병렬컴퓨팅 소개 (16기 김정현)
 
프론트엔드 개발자를 위한 Layer Model
프론트엔드 개발자를 위한 Layer Model프론트엔드 개발자를 위한 Layer Model
프론트엔드 개발자를 위한 Layer Model
 
[2016 데이터 그랜드 컨퍼런스] 2 1(빅데이터). 티맥스 빅데이터시대,더욱중요해진dw를위한어플라이언스전략
[2016 데이터 그랜드 컨퍼런스] 2 1(빅데이터). 티맥스 빅데이터시대,더욱중요해진dw를위한어플라이언스전략[2016 데이터 그랜드 컨퍼런스] 2 1(빅데이터). 티맥스 빅데이터시대,더욱중요해진dw를위한어플라이언스전략
[2016 데이터 그랜드 컨퍼런스] 2 1(빅데이터). 티맥스 빅데이터시대,더욱중요해진dw를위한어플라이언스전략
 
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...
 
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
 
KGC 2007 소프트웨어 렌더러 개발
KGC 2007  소프트웨어 렌더러 개발KGC 2007  소프트웨어 렌더러 개발
KGC 2007 소프트웨어 렌더러 개발
 
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
 
[Kgc2013] 모바일 엔진 개발기
[Kgc2013] 모바일 엔진 개발기[Kgc2013] 모바일 엔진 개발기
[Kgc2013] 모바일 엔진 개발기
 
쿠키런 1년, 서버개발 분투기
쿠키런 1년, 서버개발 분투기쿠키런 1년, 서버개발 분투기
쿠키런 1년, 서버개발 분투기
 
SQream DB, GPU-accelerated data warehouse
SQream DB, GPU-accelerated data warehouseSQream DB, GPU-accelerated data warehouse
SQream DB, GPU-accelerated data warehouse
 
Theano 와 Caffe 실습
Theano 와 Caffe 실습 Theano 와 Caffe 실습
Theano 와 Caffe 실습
 
Optimizing the graphics_pipeline_
Optimizing the graphics_pipeline_Optimizing the graphics_pipeline_
Optimizing the graphics_pipeline_
 

More from Sukwoo Lee

More from Sukwoo Lee (10)

Data-Oriented Design과 유니티 DOTS
Data-Oriented Design과 유니티 DOTSData-Oriented Design과 유니티 DOTS
Data-Oriented Design과 유니티 DOTS
 
Cascade Shadow Mapping
Cascade Shadow MappingCascade Shadow Mapping
Cascade Shadow Mapping
 
행동 트리
행동 트리행동 트리
행동 트리
 
Bump Mapping
Bump MappingBump Mapping
Bump Mapping
 
포인트 셰도우
포인트 셰도우포인트 셰도우
포인트 셰도우
 
2018.12.22 깊이 버퍼 그림자 매핑
2018.12.22 깊이 버퍼 그림자 매핑2018.12.22 깊이 버퍼 그림자 매핑
2018.12.22 깊이 버퍼 그림자 매핑
 
2018.02.03 이미지 텍스처링
2018.02.03 이미지 텍스처링2018.02.03 이미지 텍스처링
2018.02.03 이미지 텍스처링
 
리얼타임 렌더링 - 조명 입문편 -
리얼타임 렌더링 - 조명  입문편 -리얼타임 렌더링 - 조명  입문편 -
리얼타임 렌더링 - 조명 입문편 -
 
2017 12 09_데브루키_리얼타임 렌더링_입문편(3차원 그래픽스[저자 : 한정현] 참조)
2017 12 09_데브루키_리얼타임 렌더링_입문편(3차원 그래픽스[저자 : 한정현] 참조)2017 12 09_데브루키_리얼타임 렌더링_입문편(3차원 그래픽스[저자 : 한정현] 참조)
2017 12 09_데브루키_리얼타임 렌더링_입문편(3차원 그래픽스[저자 : 한정현] 참조)
 
Component-Based Entity System과 Data-oriented Design
Component-Based Entity System과 Data-oriented DesignComponent-Based Entity System과 Data-oriented Design
Component-Based Entity System과 Data-oriented Design
 

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

  • 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를 이용한 데이터 압축 처리로 데이터 이동 속도를 두배로 향상시 킨다. • 샘플러 피드백 스트리밍은 실시간으로 텍스처의 필요한 부분만 메모리에 로드하여 메모리의 가용성을 향상시킨다.