33.jpg
55.jpg

KAIST부설 한국과학영재학교 온라인 과학매거진 코스모스

  • 블랙 페이스 북 아이콘
  • 블랙 인스 타 그램 아이콘

레이 트레이싱(Ray Tracing)과 빛의 물리학

9월 18 업데이트됨

레이 트레이싱(Ray Tracing) 기법은 게임을 좋아하는 사람이라면 한 번쯤 들어봤을 것입니다. ‘RTX 2080Ti’ 같이 그래픽 카드 이름에 들어있는 ‘RT’가 바로 Ray Tracing의 약자이죠. 게임 내에서 그래픽을 구현하는 렌더링에 요즘 흔히 쓰이는 기법인 레이 트레이싱은, 말 그대로 광선을 픽셀 단위로 추적해서 게임 내의 화면을 구현합니다. 예전에는 컴퓨터의 연산 능력이 부족해 잘 쓰이지 않았지만, 최근부터는 컴퓨터의 성능이 발전하면서 레이 트레이싱이 각종 게임에 깊이 있게 활용되고 있습니다. 레이 트레이싱이 얼마나 정교한지 한 번 감상해보시죠.

공들 사이에 상호 반사까지 묘사되어 있다.
마인크래프트에 레이 트레이싱을 적용한 사진

이 기사에서는 이러한 레이 트레이싱이 어떻게 작동하는지, 그리고 그 안에 어떤 물리학적 원리들이 있는지 살펴보겠습니다.

레이 트레이싱 이전의 렌더링

레이 트레이싱이 등장하기 이전에는 여러 가지 형태의 셰이딩이 사용되었습니다(엄밀하게는 레이 트레이싱도 셰이딩의 일종이지만, 여기선 구분하여 쓰겠습니다). 플랫 셰이딩, 고러드 셰이딩, 퐁 셰이딩 등이 존재하는데 뒤로 갈수록 조금 더 발전된 형태라고 생각해도 좋습니다. 이러한 ‘셰이딩’도 광선을 추적하긴 추적하지만, 딱 한 단계, 즉 광원에서 빛이 나와서 물체에 반사되어 눈에 들어오는 단계만 수학적으로 계산합니다. 이때 눈에 얼마나 많은 빛이 들어오는지 계산하는 방정식이 존재하는데, 이를 이용해 물체에 직접 색을 칠합니다. 따라서, 셰이딩이 얼마나 실제와 가깝게 표현을 하는지는 illuminance equation, 또는 반사 과정에서 조도를 계산하는 방정식이 얼마나 정확한가에 거의 전적으로 의존합니다. 특히 퐁 셰이딩에 사용되는 퐁 반사 모델은 실험적 모델이지만 현실을 정말 정확하게 묘사해서, 레이 트레이싱 방법에도 사용되기도 합니다. 이는 중요한 물리적 모델이기 때문에 뒤에서 다시 설명하겠습니다.

하지만 이렇게 간단한 셰이딩은, 연산 속도 측면에서 확실히 좋긴 하지만 많은 광학적 효과들을 제대로 보여주지 못합니다. 거울 같은 물체가 존재하여 반사가 두 물체 사이에서 일어나거나, 굴절 또는 산란이 발생할 경우 셰이딩은 이를 하나도 반영하지 못합니다. 그래서 과거 게임 개발을 할 때는 반사 텍스처나 간접광을 일일이 배치해야 하고, 물체마다 적절한 효과를 수작업으로 넣는 일을 해야만 했습니다. 이러한 단점들을 모두 해결할 수 있는 획기적인 방법이 바로 레이 트레이싱이 되겠습니다.

레이 트레이싱

레이 트레이싱은 하나의 연산으로 끝나지 않고, 광선을 따라 끝없이 나아가면서 빛의 밝기를 계산합니다. 그런데 여기서 특이한 점은, 우리가 일반적으로 받아들이는 물리학에서의 빛의 방향과 레이 트레이싱에서의 빛의 방향은 정반대입니다. 현실에서 빛은 광원에서 나와, 물체에 반사되고, 우리 눈에 들어옵니다. 하지만 만약 이런 방식으로 프로그래밍을 할 경우, 불필요한 연산을 무한히 많이 하게 되는 문제가 발생합니다. 예를 들어, 태양에서 나오는 빛을 모두 계산한다면, 그 빛의 일부는 뉴욕에도 갈 것이고, 아마존에도 갈 것이며, 태평양 한가운데에도 갈 것인데 이러한 빛들은 절대로 내 눈에 들어올 리가 없습니다. 따라서 이것들을 계산하는 것은 정말 무의미한 일로 그냥 자원의 낭비가 됩니다. 그래서 레이 트레이싱은 거꾸로, 일종의 ‘어둠의 빛’을 내 눈에서 출발시켜서 그 빛이 여러 물체를 만나며 굴절과 반사를 반복하며 나아가다 최종적으로 광원에 도달하면 그걸 실제 존재하는 빛이라고 판단하는 방식을 사용합니다. 이렇게 하면 순수하게 내 눈에 들어오는 빛만을 계산할 수 있게 되죠.

그렇다면 그 빛이 나아가는 걸 어떻게 모델링하고 추적하냐, 이 질문이 나올 수 있습니다. 여기에 바로 물리학적 지식이 활용되기 시작합니다. 빛이 직진하며 나아가다 물체에 도달하면, 그 빛은 항상 흡수, 반사, 굴절, 형광 4가지 일 중 하나를 겪게 됩니다. 우선 흡수는 말 그대로 빛이 그 물체에 흡수된다는 것으로, 이 경우 물론 출발한 빛은 완전히 사라지게 됩니다. 따라서 처리가 꽤 간단합니다. 반면 반사는 많이 복잡한 일로, 앞서 언급한 퐁 반사 모델 같은 모델이 이러한 반사를 처리하는 데에 사용됩니다. 반사가 일어나면 반사가 일어나 다시 튀어나온 빛까지 연쇄적으로 계산해야 하므로 시간이 오래 걸립니다.

세 번째는 굴절입니다. 굴절은 잘 알다시피, 빛이 서로 다른 두 매질 사이를 통과할 때 생기는 빛이 꺾이는 현상입니다. 셀로판지 같은 반투명한 물질을 빛이 투과하는 것도 일종의 흡수가 가미된 굴절이라고 생각할 수 있겠습니다(색이 변하므로). 이 굴절은 다음 스넬의 법칙으로 표현됩니다.


굴절 이후에도 굴절광이 나아가므로, 굴절 역시 이후 연쇄적인 계산이 필요합니다.

마지막은 형광인데, 형광은 게임에서 잘 포함되진 않지만, 분명 이것도 빛이 물체와 상호작용하는 방법 중 하나입니다. 이때 빛은 물체에 흡수되었다가, 잠시 뒤 다시 방출됩니다. 형광에 대해서는 여기서 굳이 더 자세히 다루진 않겠습니다.

이렇게 빛은 4가지 형태로 물체와 상호작용할 수 있는데, 여기서 유의할 점은 넷 중 하나로만 작용하는 것이 아니라 혼합된 형태로도 충분히 상호작용할 수 있다는 것입니다. 예를 들어, 빛이 물을 지나갈 경우 80% 정도만 굴절되고 20% 정도는 반사될 수 있습니다. 그러면 계산을 할 때 굴절광과 반사광을 합성해서 결과를 내게 됩니다.


퐁 반사 모델

이 글에서는 셰이딩과 레이 트레이싱 모두에 있어 중요한 물리학적 기법 중 하나인 퐁 반사 모델에 대해서 조금 더 자세히 알아보겠습니다. 퐁 반사 모델은 광원에서 나온 빛이 물체에 반사되어 나올 때, 그 조도가 어느 정도가 되는지를 구하는 데에 잘 활용되는 실험적인 모델입니다. 반사라는 건 생각보다 구현하기 정말 어려운 개념입니다. 별로 안 어렵지 않냐고요? 여러분이 생각하는 반사는 보통 아래와 같습니다.


그런데 반사는 이렇게 입사각과 반사각이 같다는 데에서 끝나는 게 아닙니다. 완벽한 거울이 아니라면, 반사에는 난반사와 정반사가 있습니다. 그리고 환한 낮이라면, 주변에 공기 중에서 산란된 빛이 있을 것이고, 광택이 나는 물질 같은 경우에는 그런 특성도 묘사할 필요가 있습니다. 그래서 퐁 반사 모델은 조도를 구할 때 하나의 식으로 완성하지 않고, 반사의 특성에 따라 세 가지로 분류를 해서 조도를 계산하게 됩니다. 그 세 가지는 영어로 ambient lighting, diffuse lighting, 그리고 specular lighting입니다. 이 세 가지 요소를 합쳐 적은 퐁 모델의 수식은 다음과 같습니다.

Phong Reflection Model의 수식

대문자 I와 소문자 i가 illuminance 즉 얼마나 밝은지를 나타내는데, 유의할 점은 이것이 일종의 vector equation이라는 것입니다. 흔히 컴퓨터에서 색은 RGB 값으로 나타내는데, 이 R값, G값, B값이 모두 별개로 위의 식을 만족하게 됩니다. 그래서 사실은 식이 3개 존재하는 것이죠.

Phong Reflection Model의 단계별 그림

이제 각각의 요소가 무얼 의미하는지를 알아봅시다. 먼저 ambient lighting은 밝은 낮 어두운 그늘에 들어가도 물체가 보이는 것처럼, 공기 중에 산란되어 존재하는 빛으로 인해 물체가 밝아지는 것을 묘사합니다. 그래서 위의 그림처럼, 물체의 색이 균일하게 밝아집니다. 그다음 diffuse lighting은 난반사의 역할을 담당합니다. 난반사를 표현하는 게 엄청나게 어렵다고 생각할지도 모르겠습니다. 하지만 평균적으로 봤을 때, 난반사된 빛의 세기는 아래 그림처럼 꽤 간단하게 표현할 수 있습니다.


광선과 물체 표면이 비스듬할수록, 단위 면적 당 들어오는 광선의 수가 적다는 논리로 얻어지는 간단한 결과이죠. 이렇게 diffuse lighting까지 적용하고 나면, 광원을 마주보는 면은 밝게, 광원에서 비스듬한 면한 어둡게 표현되면서 꽤 그럴듯한 셰이딩이 형성됩니다. 여기서 마지막에 첨가되는 것이 specular lighting입니다. Specular lighting은 거울처럼 매끈한 면에서 일어나는 정반사를 담당하는데, 위의 그림에서 하얀색이 몇 군데 찍히는 것이 바로 이 때문입니다. 이렇게 세 가지 lighting을 모두 종합하고, 물체의 재질을 알려주는 상수들인 k들을 집어넣으면 처음에 언급한, 퐁 반사 모델의 식이 등장하게 됩니다. 사실 위의 식은 셰이딩에서 사용하는 식이고, 만약 레이 트레이싱에서 퐁 반사 모델을 사용한다면 뒤쪽에 항 두 개가 더 붙게 됩니다.

맨 뒤의 두 항은 반사광과 굴절광으로, 새롭게 뻗어나가는 빛을 재귀적으로 계산한다는 의미입니다.

새로운 렌더링 방법?

레이 트레이싱 방법은 광선 하나하나를 추적하는 방식이기 때문에, 겉보기에는 완벽한 방법처럼 보이기도 합니다. 사실 게임 내부에서 바라는 정도의 그래픽은 충분히 구현하기 때문에 현재에도 폭넓게 사용되는 것이겠지요. 하지만 레이 트레이싱에는 여전히 많은 단점이 존재합니다. 우선 연산 능력이 너무 많이 필요합니다. 최근 그래픽 카드 기술이 발전하면서 어느 정도 해결된 문제이긴 합니다만, 여전히 이 수행 시간을 줄여야 한다는 필요성은 제기되고 있습니다. 또 다른 문제는 렌더링에 적용되는 방정식이 완벽하지는 않다는 것입니다. 퐁 반사 모델을 이 글에서 중점적으로 다루었는데, 사실 이 모델도 완벽하다곤 말할 수 없습니다. 그래서 최근에는 photon mapping이나, path tracing 같은 새로운 렌더링 방법들이 제시되고 있으며, 이러한 기법들은 조금 더 현실 세상에 가까운 렌더링을 제공합니다. 앞으로 다가올 미래에 얼마나 더 현실에 가까운 3D 렌더링이 가능해질지는 기대해 볼만 하겠습니다.

참고자료

[1] 위키피디아 – Ray tracing(graphics)

[2] 위키피디아 – Phong reflection model

[3] http://www.cs.utexas.edu/~bajaj/graphics2012/cs354/lectures/lect14.pdf

[4] https://terms.naver.com/entry.nhn?docId=3481591&cid=58439&categoryId=58439


첨부 이미지 출처

[1], [3] https://en.wikipedia.org/wiki/Ray_tracing_(graphics)

[7] https://en.wikipedia.org/wiki/Phong_reflection_model

[8] http://www.cs.utexas.edu/~bajaj/graphics2012/cs354/lectures/lect14.pdf

[2], [4], [5], [표지] Google Image

KOSMOS PHYSICS 지식더하기

작성자│여승현

발행호│2020년 봄호

키워드#빛 #광학 #렌더링 #레이트레이싱


조회 890회
Picture4.jpg
워터마크_white.png

KOSMOS는 KSA Online Science Magazine of Students의 약자로,

KAIST부설 한국과학영재학교 학생들이 만들어나가는 온라인 과학매거진 입니다.

​본 단체와 웹사이트는 KAIST부설 한국과학영재학교의 지원으로 운영되고 있습니다.

저작물의 무단 전재 및 배포시 저작권법 136조에 의거 최고 5년 이하의 징역 또는 5천만원 이하의 벌금에 처하거나 이를 병과할 수 있습니다. 

© 2018 한국과학영재학교 온라인 과학매거진 KOSMOS. ALL RIGHTS RESERVED. Created by 김동휘, 윤태준.

운영진 연락처