기본 콘텐츠로 건너뛰기

차세대 그래픽의 기준 레이 트레이싱(Ray Tracing)과 GeForce RTX

    목차
최근 게임 그래픽 기술의 발달로 날이 갈 수록 게임의 그래픽은 발달하고 있었습니다.
하지만 어느정도까지 올라오자 점점 한계에 부딪쳤고, 새로운 그래픽 기술이 필요로 하던 중 NVIDIA에서 새로운 그래픽카드인 GeForce RTX시리즈를 발표했습니다.



그래픽의 재창조(Graphics Reinvented)라는 타이틀을 달고 등장한 RTX시리즈는 기존의 엔비디아 그래픽 카드와는 달리 갑자기 2000번대로 뛰었고, 브랜드도 GTX에서 RTX로 변경되었습니다.
RTX 시리즈는 1000번대보다 성능 향상에 더불어 Ray-Tracing과 DLSS라는 새로운 그래픽 기법이 사용 가능하다고 발표했습니다. 그래서 이름도 Ray-Tracing의 R을 따와 RTX로 지었습니다.

기존의 3D 그래픽 기술은 플레이어의 눈을 속이는 것에 중점을 두었습니다. 하지만 레이 트레이싱은 가장 간단하지만 가장 정확한 방식의 렌더링입니다. 레이 트레이싱이라는 기술은 전역 조명(Global Illuminatuin)의 표현 기법 중 하나로,  1980년 미국의 'Turner Whitted'가 'An improved illumination model for shaded display'라는 논문에서 처음 발표했습니다. 그래서 대부분의 레이 트레이싱 기법을 'Whitted'스타일의 레이 트레이싱이라고도 합니다.

레이 트레이싱이란 말 그대로 광선(Ray)를 추적(Tracing)하는 기술입니다. 이는 픽셀 하나하나를 통과하는 광선을 역으로 추적하는 방식으로 현실과 가장 비슷한 렌더링 기법입니다.
하지만 이 기법은 픽셀 하나하나의 광선을 계산해야 하기 때문에 연산량이 매우 높았습니다.
기존의 기술로 레이 트레이싱을 구현 해보면 매우 심한 프레임 드랍과 노이즈가 발생하였습니다.
그래서 실시간으로 상황이 변하고 연산량이 매우 높은 게임 환경에선 사용이 불가능했고, 흔히들 말하는 스타워즈 스톰 트루퍼의 갑옷 등 렌더링 시간에 제약이 없는 영화에서 많이 사용을 했었습니다.


하지만 최근 출시된 엔비디아의 튜링 RTX시리즈는 기존의 GTX시리즈와는 차별화된 RT코어와 텐서 코어라는 프로세서가 추가되었습니다.
이 RT코어라는 것이 레이 트레이싱 가속기 역할을 해서 드디어 게임에서도 레이 트레이싱 기술을 조금이나마 구현이 가능하게 되었습니다.

기존의 GI 기술들은 화면 안에 있는 객체들만 한정적으로 계산을 했다면 레이 트레이싱이 실현되자 게임 상의 모든 객체들에 빛 반사 등의 렌더리을 할 수 있게 되었고, 정말 획기적인 그래픽 발전이 이루어질 수 있었습니다.




▲배틀필드 V : 지포스 RTX 트레일러


그렇게 '배틀필드V', '앤썸', '섀도우 오브 툼 레이더' 등레이 트레이싱이 적용된 게임들이 출시되었고, 게임의 그래픽이 한단계 발전하게 될 발판이 만들어졌습니다.
하지만 역시 한정적인 레이 트레이싱을 구현했기 때문에 정말 획기적인 그래픽의 변화를 기대할 순 없지만, 그래도 기존의 게임들과는 확연히 '다른'느낌을 받을 수 있었습니다.

엔비디아가 AMD에게 점점 점유율을 빼앗기자 완성이 덜 된 기술을 서둘러 출시했다고 하는 말도 있고,
RTX시리즈의 매우 비싼 가격, 그래픽 카드 사망 이슈 등 많은 논란거리가 있지만 이번의  GeForce RTX 시리즈는 점점 정체되어있던 게임 그래픽 기술에 새로운 방향을 제시했다는 의의가 있다고 생각합니다.



▲언리얼 엔진에서 공개한 Ray-Tracing 데모 영상



댓글

이 글도 관심 있으실 것 같아요!

놀이의 4대 요소 (Agon(아곤), Mimicry(미미크리), Ilinx(일링크스), Alea(알레아))

네덜란드의 고전 학자인 '요한 하위징아'의 저서인 「호모 루덴스 」에서 인간을 '유희의 인간'이라고 칭했습니다. 프랑스의 '로제 카유아'라는 학자는 「호모 루덴스 」의 이론을 발전시켜 그의 저서인 「놀이와 인간」 (원제 「 Man, plays and games 」) 에서 ‘놀이의 4대 요소’를 말했습니다. 저자는 그것을 아곤, 미미크리, 알레아, 일링크스로 소개했습니다. 이 네 가지 놀이의 요소는 인간의 모든 유희, 놀이에서 발전되어 현대의 비디오 게임에서도 매우 중요한 이론으로 알려져있습니다. 먼저, 아곤(Agon), 경쟁 아곤은 놀이의 주체와 객체간의 경쟁을 의미합니다. 사람들은 경쟁에서 승리함으로써 성취감을 얻고, 우월감을 느끼게 합니다. 이 아곤을 현대의 게임에 대입 시켜보면 경쟁은 최근 가장 많이 플레이 하는 게임 중 하나인 ‘배틀 그라운드’나 ‘리그 오브 레전드’같은 게임들도 경쟁에 기반이 되어있고, 혼자 플레이 하는 게임에서도 자기 자신과의 경쟁, AI와의 경쟁 등이 포함되어있습니다. 예를 들어, 슈퍼 마리오 같은 게임에서도 플레이어들은 어떻게 이 게임을 더 빨리 클리어하기 위해 경쟁하고, 더 많은 점수를 받기 위해 노력합니다. 또한 비교적 MMR시스템이 잘 짜여져있는 '리그 오브 레전드'같은 AOS게임에서도 플레이어의 등급을 결정하는 랭크 게임 시스템이 중점적으로 돌아가고 있고, '오버워치'의 경쟁전 등 많은 게임에서 이런 경쟁을 유도하는 시스템을 만들어 놓았습니다. 게임을 계속 플레이하게 만드는 가장 큰 요소가 아곤입니다. 많은 게임에서 플레이어의 경쟁을 어떻게 잘 이끌어 나갔느냐에 따라서 그 게임의 성공이 나뉠 수도 있습니다. 미미크리(Mimicry), 역할 미미크리는 역할을 의미합니다. 사람들은 실제 세계에서 하지 못하는 일들을 놀이에서 느끼면서 큰 기쁨을 느낄 수 있습니다. 이 역할은 롤플레...

FastAPI 실시간 영상 스트리밍 OpenCV

  FastAPI와 OpenCV를 활용한 실시간 영상 스트리밍 Permalink 실시간 영상을 스트리밍 하는 방법을 찾던 중 파이썬 FastAPI를 활용한 방법을 시도 해보았다. 필수 라이브러리 Permalink 필요한 것은 Python3.9버전 (애플 M1칩셋 맥북에어에서 3.8 버전으로 시도 해보니 OpenCV라이브러리 설치에서 문제가 발생했었다) FastAPI uvicorn OpenCV 정도면 될 것 같다. 라이브러리들은 모두 설치 되었다고 가정 하고, 예제 코드 Permalink # main.py # 라이브러리 import # StreamingResponse를 가져와야함 from fastapi import FastAPI from fastapi.responses import StreamingResponse # cv2 모듈 import from cv2 import get_stream_video # FastAPI객체 생성 app = FastAPI () # openCV에서 이미지 불러오는 함수 def video_streaming (): return get_stream_video () # 스트리밍 경로를 /video 경로로 설정. @ app . get ( "/video" ) def main (): # StringResponse함수를 return하고, # 인자로 OpenCV에서 가져온 "바이트"이미지와 type을 명시 return StreamingResponse ( video_streaming (), media_type = "multipart/x-mixed-replace; boundary=frame" ) # cv2.py import cv2 def get_stream_video (): # camera 정의 cam = cv2 . VideoCapture ( 0 ) while True : ...

Python FastAPI 알아보고 설치하고 초기 설정 해보기

  Python FastAPI, 설치하고 초기 설정 해보기 Permalink 파이썬 웹 서버를 만들어야 하는 일이 생겼늗데, 최대한 빠르고 안정적인 서버를 선택 해야했다. 그래서 기존에 사용하던 Flask보다 훨씬 빠르다고 하는 FastAP를 사용해보기로 했다. ❓ FastAPI란? Permalink 👉 FastAPI 공식 한국어 페이지  https://fastapi.tiangolo.com/ko/ FastAPI는 현대적이고, 빠르며(고성능), 파이썬 표준 타입 힌트에 기초한 Python3.6+의 API를 빌드하기 위한 웹 프레임워크입니다. FastAPI는 파이썬에서 사용 가능한 웹 프레임워크 중 하나인데, Flask나 Django보가 훨씬 빠른 속도를 보여준다고 하고, 확인 해봐야 하겠지만 Go언어와도 비슷한 속도를 보여준다고 한다. 또, 쉽고 간결한 코드, 200% ~ 300% 까지 증가하는 개발 속도를 기대할 수 있다고 하는데, 시작 해보자! 👏 Permalink FastAPI 설치 Permalink 먼저 공식 사이트에선 pip를 이용해 설치 하라고 나와있는데, 나는 anaconda를 이용해서 설치를 했다. bash $ pip install fastapi anaconda 사용 시 $ conda install fastapi 그리고 ASGI서버도 필요해서 같이 설치하라고 하는데, Univorn을 설치 해보자. bash $ pip install uvicorn[standard] anaconda 사용 시 $ conda install uvicorn FastAPI 예제 Permalink 설치가 완료되면 이렇게 vscode에서 FastAPI() 클래스가 자동 완성 되는걸 확인할 수 있다. 그리고 정말 간단히 API를 만들 수 있는데, main.py 파일을 만든 후에 from typing import Optional from fastapi import FastAPI app = FastAPI () @ app . get ( "/"...