Optimizing Next Generation Cloud Gaming Platforms
Younji Kim / August 2022
Optimizing next-generation cloud gaming platforms
with planar map streaming and distributed rendering
렌더링(rendering)이란?
- 렌더링(rendering) 또는 이미지 합성(image synthesis)은 컴퓨터 프로그램을 사용하여 모델 또는 이들을 모아놓은 장면인 씬 파일(scene file)로부터 영상을 만들어내는 과정이다.
- 3차원 공간의 객체(Object)를 2차원 화면인 하나의 장면(Scene)에 바꾸어 표현하는 것을 말한다. 즉 2차원에 표시된 물체를 3차원 물체처럼 보이게 하는 것이다.
클라우드 게임(= 게임 스트리밍)이란?
데이터 센터에 있는 원격 서버를 통해 플레이할 수 있는 온라인 게이밍 서비스를 의미한다. 게임에서 필요한 연산을 클라우드(서버)에서 하고, 클라이언트는 결과물(이미지, 사운드)만 받는 것이다. 고성능의 게임을 저성능의 컴퓨터에서 할 수 있는 서비스이다.
지포스 나우, XBOX GAME PASS 등.. 월 요금제로 게임 서비스를 제공한다.
메쉬 토폴로지(mesh topology)란?
Topology = 오브젝트들의 와이어프레임. 와이어프레임 = 선이 만나 형성하는 모든 정점(vertice), 두 개의 연결된 정점으로 구성된 선인 가장자리(edge), 2-3개의 가장자리를 가지는 면으로 구성.
적절한 토폴로지를 갖는 것은 컴퓨터(렌더링 시간 단축) 및 애니메이션(UV 매핑 같은 프로세스)에 큰 도움이 된다.
안티 에일리어싱(Anti-Aliasing)이란?
에일리어싱(Aliasing)은 고해상도의 사진을 저해상도의 화면에서 볼 때, 또는 저해상도의 사진을 고해상도의 화면에서 볼 때 원본 이미지에 비해 사물이나 개체의 테두리 부분에서 패턴이 깨지는 현상(계단 현상)을 말한다. 부자연스러울 정도로 명암이 뚜렷한 테두리를 흐리게 만들어 자연스럽게 보이도록 하는 기능이 안티 에일리어싱이다.
포비티드 렌더링(foveated rendering)이란?
VR 분야에서 가장 많이 쓰이고 있는 렌더링 기법이다.
사용자가 응시하고 있는 부분은 고화질로, 그 외 부분은 저화질로 처리하는 기술이다. 시선 추적을 이용하여 디스플레이에서 사람이 실제 물체를 볼 때와 같은 원리를 구현할 수 있다.
우리의 눈은 물체의 거리에 따라 근육을 이완 또는 수축하여 보고자 하는 물체에 초점을 맞춘다. 빛이 반사되어 눈에 들어오면 망막에 상을 맺고 이 정보를 시신경을 통해 뇌로 전달한다. 망막의 중심에는 중심시를 담당하는 작은 부위가 있는데 이를 황반(Fovea)라고 부른다. 사람이 어떤 것을 볼 때 중심시 이외의 부분은 비교적 흐릿하게 보이기 때문에 중심시가 향하지 않는 부분은 선명하게 볼 수 없다.
화면 전체를 고화질로 채우는 것보다 훨씬 연산 부하가 적게 든다. 또한 플레이어로 하여금 눈의 피로도를 줄여주고 멀미 현상도 줄일 수 있다.
셰이딩(shading)이란?
3차원 오브젝트의 표면을 처리할 때 조명의 위치와 물체의 기울기, 색깔, 밝기에 반응하여 오브젝트에 음영을 주는 것이다.
동적 데이터(dynamic data) VS 정적 데이터(static data)
동적 데이터는 서버에서 실시간으로 변환되어 적용되어지는 데이터이다.
정적 데이터는 메모리에 데이터를 올려놓은 상태(적재된 상태)이므로, 필요할 때마다 데이터를 호출하여 사용하는 데이터이다.
준-정적 데이터에 대한 확실한 개념은 국내 검색엔진에서는 찾을 수 없지만, 일부만 서버에서 실시간으로 변하고, 대부분은 메모리에 적재된 상태 그대로 가져다 쓰면 되는 데이터들을 말하는 듯 하다.
Draw Call이란?
말 그대로 그려달라는 요청이다. 하나의 오브젝트를 화면에 그리기 위해 CPU가 GPU에게 화면에 그려달라고 요청하는 게 draw call이다. draw call이 많아질 수록 게임의 성능은 낮아지기 때문에 draw call을 줄이는 게 매우 중요하다.
표본화(Sampling)와 양자화(Quantization)란?
이 두 개념은 모두 아날로그 신호를 디지털화하는 방법이다.
표본화는 시간 축의 디지털화라고 할 수 있다. 아날로그 신호를 일정한 간격으로 점을 찍어 그 순간적인 값을 1 또는 0으로 변환한다.
양자화는 진폭 값의 디지털화라고 할 수 있다. 연속적이었던 신호를 5, 4, 3, 2, 1, 0, -1, -2, -3, -4, -5 등 정수로 바꾸는 것을 의미한다.
즉 스칼라 양자화란 샘플링된 아날로그 신호를 하나의 대표값으로 바꾸는 방법을 의미한다. 반면 벡터 양자화는 일련의표본들을 특성화시켜 나온 여러 대표값들을 함께 양자화시키는 방법이다.
엔트로피 코딩(Entropy Coding)과 산술 부호화(Arithmetic coding)
엔트로피란 ‘무질서도’ 혹은 ‘불확실성’을 가리킨다. 정보의 양을 중요시하는 정보공학적 관점에서는 ‘평균 정보량’을 엔트로피라고 한다.
심볼이 발생한다는 뜻은 해당 데이터 심볼과 예측값이 같다는 뜻이다. (데이터 심볼과 적중!) 엔트로피가 낮다면 특정한 심볼이 발생할 확률이 높고(예측 가능), 엔트로피가 높다면 심볼들이 무작위로 발생할 확률이 높고 중복성이 줄어든다.
엔트로피 코딩이란 데이터 심볼이 발생할 확률에 따라 각각의 심볼이나 연속된 심볼을 적절한 길이로 부호화하여 표현하는 것이다. 데이터 심볼들이 발생할 확률에 따라 엔트로피(=심볼당 평균 정보량)가 결정된다. 따라서 심볼당 평균 부호 길이가 엔트로피에 가까워지도록 부호를 할당하여 압축 효율을 높이는 것이 엔트로피 코딩의 목적이며, 엔트로피 코딩은 압축할 데이터의 특성을 고려하지 않고 모든 데이터에 대해 통계적인 방식으로 압축을 진행하므로 무손실 압축을 할 수 있다.
산술 부호화(Arithmetic coding)는 엔트로피 코딩의 한 종류로, 여러 심볼들을 묶은 가변길이 심볼열을 고정길이 부호로 표현하는 방식으로, 심볼열의 발생확률이 거의 일정하게 유지되도록 묶는다. 이것보다 허프만 코딩이 더욱 대중적이다.
무게중심 좌표란?
한 삼각형에는 하나의 무게중심 좌표가 있다. 좌표를 찍으면 그 삼각형의 내부는 세 개의 삼각형으로 나뉘게 되고, 각각의 삼각형의 무게중심 좌표를 또 찍으면 그 무게중심 좌표들은 겹치지 않는다. 그래서 컴퓨터 그래픽에서 도형의 내부를 균일하게 칠할 때 무게중심
출처
메쉬 토폴로지 (https://psychology.as.uky.edu/blogs/tlha222/computer-graphics-topology)
포비티드 렌더링 (https://visual.camp/ko/05-vr%EC%8B%9C%EC%84%A0%EC%B6%94%EC%A0%81%EA%B8%B0%EC%88%A0-foveated-rendering/)
표본화와 양자화 (http://www.ktword.co.kr/test/view/view.php?m_temp1=4399&id=138)
엔트로피 코딩 (https://suyeon96.tistory.com/10) 산술 부호화 (https://himbopsa.tistory.com/43)
게임 렌더링에서 1ms가 의미하는 것은 무엇인가 (https://pineoc.github.io/blog/2020/11/03/what-is-meaning-1ms/)