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
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
광원에서 빛이 방사되어 물체에 부딪히고 이 빛이 다시 반사되어 카메라 렌즈에 들어오면 우리가 보는 물체의 색이 된다.
즉, 우리는 눈에 보이는 장면 속 물체들의 색만 알면 되기 때문에 카메라 위치와 픽셀 위치를 기준으로 레이트레이싱하면
색을 구할 수 있다.
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에 따라 쓰레드 개수를 조절하여 병목 현상을 줄인다.
• 다만 무조건 다 그려야 한다면 기존 파이프라인이 더 빠를 것이다.
43. Variable Rate Shading
• 기존에는 모든 픽셀에서 쉐이더를 호출해야 했지만 이제는 영역마다 쉐이더 호출 회
수를 조절할 수 있다.
모든 픽셀에서 쉐이더 호출
총 쉐이더 호출 횟수 : 256
픽셀 16개마다 쉐이더 호출
총 쉐이더 호출 횟수 : 16
59. Direct Storage와 SFS
• 오픈 월드 게임은 방대한 맵의 고해상도 텍스처를 요구하므로 다이렉트 스토리지와
SFS가 필수적이다.
• 또한 대부분의 게임에서 두 기술을 적용한 엑스박스의 로딩 속도가 PS5보다 십초 이
상 빠르다고 한다.
60. 정리
• 그래픽카드의 레이트레이싱 하드웨어 지원으로 게임에서 전역 조명 지원이 가능해졌다.
• 텐서 코어를 이용한 DLSS는 업스케일링 기술로 FHD를 UHD로 출력하여 약 2배 정도의 프레
임 향상을 기대할 수 있다.
• 메쉬 쉐이더는 동적 LOD 계산을 통해 방대한 폴리곤 처리를 가능하게 해준다.
• VRS는 개념적으로 스크린을 분할하여 각 영역마다 다른 해상도를 적용하여 쉐이딩하는 기술
이다. 눈에 보이는 퀄리티 하락은 최소화하면서 프레임을 향상시킬 수 있다.
• Direct Storage API는 GPU를 이용한 데이터 압축 처리로 데이터 이동 속도를 두배로 향상시
킨다.
• 샘플러 피드백 스트리밍은 실시간으로 텍스처의 필요한 부분만 메모리에 로드하여 메모리의
가용성을 향상시킨다.