게임/알고 싶다

RTX란? 2편

jhnambi 2022. 11. 19.
주의 :  이 글의 목적은 자기계발 용도와 게임에서 쓰이는 각종 그래픽스, 그래픽카드 관련 단어 (안티엘리어싱, 셰이더, 텍스쳐 품질등) 들이 처음 보는 사람에게는 굉장히 생소하고 어려워 보이기 때문에 해당 부분에 대한 이해를 쉽게 하기 위해 작성되었습니다.

주의 : 해당분야는 전문적인 분야이며 그리고 실시간 발전되는 기술입니다. 지금도 새로운 기술들이 나오고 있어 틀린 부분이 있을 수도 있습니다. 

 

 

 

1편에서 말했듯이 현재 레이트레이싱(RTX)를 지원하는 게임들은 크게 4가지 그림자, 반사, 글로벌일루미네이션, 엠비언트 오클루전 4가지 기술을 지원하는데 통상적인 그래픽 기술과 레이트레이싱 기술 사이에 어떤 차이가 있는지 살펴보자.

 

 

1. 그림자

그림자는 통상적인 그래픽 기술에서는 보통 섀도우 매핑(Shadow Mapping)을 사용하는 방식으로 그림자를 구현한다.

좀 더 셰이더 언어쪽으로 궁금하신 분이면 오다기리박님의 아래 정리 내용을 참고하시면 좋을 것 같다.

(https://wjdgh283.tistory.com/entry/10-%EA%B7%B8%EB%A6%BC%EC%9E%90%EB%A7%A4%ED%95%91)

 

[셰이더 프로그래밍 입문] 10. 그림자매핑

10. 그림자매핑그림자 생성단계:렌더링 결과(빛을 가로막는 첫 번째 물체의 깊이)를 저장할 렌더타깃을 정해준다.카메라를 광원의 위치에 두고 물체들을 그린다.픽셀셰이더에서 빛으로부터 현

wjdgh283.tistory.com

 

섀도우 매핑 미적용

 

섀도우 매핑 적용

 

 

섀도우 매핑이란 말이 되게 생소할텐데 간단하게 설명하면 광원 위치에 카메라를 두고 물체를 내려다보면서 물체의 깊이를 그려주는 기술이다.

 

광원시점 그림자가 없을 시점에서 두번째  사진 처럼 깊이 정보가 담긴 사진을 저장한다.
플레이어 시점에서 깊이정보가 담긴 사진과 어둡게 칠했을때 우리가 게임에서 보는 그림자가 구현이 된다.

 

 

섀도우 매핑은 우리가 게임화면을 본다고 가정할때, 게임화면에서 플레이어 시점이 아닌 광원시점에서 먼저 그려준다. 광원시점에서 물체를 그려주기 때문에 화면에서 그려주는 그림자는 단 하나도 없다.  그래서 이 시점에 깊이 정보가 담긴 사진을 저장한다. 그 이후 플레이어 시점에서 이 이미지를 어둡게 칠하면 우리가 아는 그림자가 구현된다.

 

하지만 깊이 정보가 이미지로 저장되는 만큼 이미지 해상도에 따라 그림자 해상도가 떨어진다. 그리고 실제로 그림자처럼 끝으로 갈 수록 그림자가 흐려지는 모습도 구현이 힘들기 대문에 섀도우 필터 메소드(PCF, PCSS등) 를 필요로 한다.

 

그림자 끝이 흐려보이지 않고 선명함

 

 

하지만 레이트레이싱은 빛이 작동하는 방식을 구현한 기술이기 때문에 특정 지점이 빛을 얼마나 받았는지 계산이 가능하다. 그래서 다양한 조명에 의해 혼합되는 그림자 등 현실적인 그림자 구현이 가능하다. 레스터라이제이션은 현실적으로 만들기 위해 엄청난 다양한 도구와 기법들이 필요하지만 RTX는 그렇지 않은 것이다.

 

출저 코어오브 아이디어

 

조명에 의해 혼합되는 빛 그림자도 RTX에서는 구현이 가능

 

 

2. 반사

통상적으로 게임에서 반사 기술은 큐브맵 반사와 화면공간 반사 기법을 주로 사용한다.(Cube Map, Screen Space Reflection)

 

 

큐브맵 반사 예시

 

큐브맵 반사 : 특정 지점에서 360° 사진을 찍고 해당 사진정보를 활용해 반사효과를 구현

 

화면 공간 반사 : 화면에 구현된 정보만을 사용해 비교적 고품질 반사를 구현

 

 

화면 공간 반사 적용시 (좌 -> 우)

 

 

통상적인 큐브맵, 화면공간 반사 기법도 나쁘진 않느지만 큐브맵 반사는 미리 저장된 이미지를 사용하기 때문에 동적인 장면 반사가 되지 않고 화면 공간 반사는 화면 밖에 있으면 반사가 사라지는 단점이있다.

 

움직이는 NPC들이 반사되지 않는 큐브맵 반사기법

 

그려지고 있는 화면이 안보이니 반사가 사라지는 화면공간반사 기법

 

 

그러나 레이트레이싱 기술이 적용된다면 품질 향상 뿐만이 아니라 동적 화면 반사도 구현되며 화면에 담기지 않는 장면들도 모두 반사가 되서 정말 현실적인 반사를 구현한다.

 

 

출저 : 코어오브 아이디어 유튜브

 

싸이버펑크2077

 

반사는 플레이어 입장에서 직관적으로 알아 보기도 쉬운 기술이라고 생각도 된다. 갑자기 지금 당장 사이버펑크2077에 RTX 적용해서 엣지러너 노래를 듣고 싶어 질 정도로 엄청난 현실감이다.

 

3. 글로벌일루미네이션(GI)

 

유리 금속에서만 빛반사가 이루어 지는 것은 아니다. 바닥, 벽에서도 무수히 많은 빛 반사가 이루어지면서 방이 은은하게도 비춰지는데 이 현상을 구현한 기술이 글로벌 일루미네이션 기술이다.(줄여서 GI라기도 한다)

 

 

하지만 이 기술은 굉장히 많은 연산을 사용하기 때문에 보통 게임에서는 모든 부분을 동일하게 빛내는 주변광을 설치하거

나 미리 계산된 GI정보를 게임 화면속에 적용하기도 한다.

 

주변광 설치, 미리 계산된 GI 정보

 

 

미리 계산된 정보이기 떄문에 광원, 장면의 변화를 반영하지 못하거나 연산 시간에 너무 오래 걸리기 때문에 오픈월드에서는 보통 제한적으로 사용한다.

 

하지만 레이트레이싱 기술에서의 GI는 이런 한계와 상관 없이 실시간으로 GI 구현이 가능하다. 레이트레이싱은 실제 빛의 동작방식을 구현한 기술 이기 때문에 광활한 오픈월드에서도 태양광에 반사된 물체의 빛이 주변에 실시간으로 영향을 줄 수 있다.

 

레이트레이싱 GI 적용 전 후 비교

 

 

반사에 비해 GI라고 하면 생소한 단어이기도 하고 엄청 눈에 띄는 부분이 없어서 플레이어 입장에서는 그냥 넘어 갈 수도 있지만 현실적인 그래픽을 구현하기 위해선 무엇보다 중요한 기술이다.

 

 

4. 엠비언트 오클루전 (ambient occlusion = AO)

빛이 닿지 않는 부분을 어둡게 하는 기술로 위 GI와 반대되는 역할을 하는 기술이다.

 

빛이 반사되어 은은하게 빛나는 주변광을 구현하는 기술이 GI라면

 

빛이 잘 들어오지 않아(빛이 안들어와서) 어두워 지는 부분을 구현한 것이 AO이다.

 

 

 

AO 적용

 

 

위 그림자, 반사같은 경우에 실제 현실과 같은 빛이 동작하는 방식으로 구현 된 기술이지만 본질적으로는 AO는  현실에 존재 하지 않는 현상을 구현하는 기술이다. 그럼 여기서 문득 의문이 든다. RTX는 현실의 빛 동작을 구현한 기술인데 왜 AO같은 기술이 필요할까?

 

 

GI기술이 완벽할 경우에 AO기술이 의미가 없을 수도 있지만 아직 레이트레이싱 기술은 완성형도 아니고 결국 2D 스크린으로 구현이 되는 게임 그래픽은 우리가 실제 두 눈으로 보는 3차원 현실 세계 보다 당연히 입체감이 떨어지기 때문에 빛을 받지 못하는 모서리, 물체 접촉부분을 어둡게해 입체감을 효과적으로 표현하는 AO 기술이 필요하다.

 

그래서 우리가 3D게임에서 그래픽관련 옵션에서 AO 여러가지 기술을 볼 수 있다.

(SSAO, HDAO, HDAO+ ... 진짜 많다)

 

 

 

 

 

위 기술들의 차이는 화면에 어떤 부분이 어느정도를 차폐 되는지 계산하는 차이다.

대충 SSAO(Scenn Screnn AO는 오직 화면에 있는 정보만을 사용해서 입체감을 보여주지만 물체에 가려진 부분을 구현하지 못한다.

 

 

물체의 외곽선이 생긴거마냥 어두운 부분이 생김

 

 

하지만 역시 레이트레이싱 AO는 특정 부분이 얼마나 차폐되어있는지, 물체에 가려진 부분까지 계산이 가능하기 때문에 정확한 음영표현이 가능해진다.

 

 

움영 차이가 확실하게 보인다

 

 

현재 레이트레이싱은 아직 발전하는 단계에 있으며 주로 게임 그래픽스에서는 레스터라이제이션과 레이트레이싱을 혼합해서 사용하는 하이브리드 렌더링을 주로 사용하는 것으로 알고 있다. 

 

 

레스터 + 레이트레이싱 하이브리드 렌더링 물체 밑그림은 동일하지만 색칠을 레이트레이싱으로 진행

 

아직 게임단계에서 레이트레이싱은 실제 CG에 사용되는 레이트레이싱과는 큰 품질 차이가 있지만 아직 고려해야 할 점은 레이트레이싱 기술은 RTX 기술이 나오기전까지 게임에서 사용할 생각을 할 수 없을정도로 엄청난 연산량을 요구했지만 이제슬슬 RTX가 나온지 4년이 넘었고 DLSS  기술의 발전으로 하드웨어 성능의 발전이 되면서 게임 그래픽 발전에 큰 변화가 올 것이라는 생각이든다.

 

예전부터는 확실하게 둠 부터 서든어택, 크라이시스 등 얼마나 색칠 기술이 발달해서 게임 그래픽 기술의 비약적인 발전이 보여졌다면 최근에 나오는 AAA게임들은 거진 그래픽이 정말 뛰어나고 여기에 얼마나 디테일하게 레이트레이싱을 적용했는가 그 차이가 보여지는 것 같다. 앞으로의 하드웨어와 게임 그래픽의 발전을 기대하며 필자는 글카를 위해 돈을 열심히 모을 것이다.

'게임 > 알고 싶다' 카테고리의 다른 글

게임 엔진이란?  (2) 2022.12.03
물리엔진이란?  (2) 2022.11.27
다이렉트X 란?  (0) 2022.11.20
테셀레이션(tessellation) 란?  (0) 2022.11.20
RTX란? 1편  (0) 2022.11.17

댓글