Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

컴퓨터 하드웨어의 눈부신 발전과 달라진 게임 개발 기술에 대해 설명한다.

  • Be the first to comment

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

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

×