경로추적
Path tracing경로추적은 컴퓨터 그래픽 몬테카를로(Monte Carlo) 방식으로 글로벌 조명이 현실에 충실하도록 3차원 장면의 이미지를 렌더링하는 방식이다.기본적으로 알고리즘은 물체의 표면의 단일 지점에 도달하는 모든 조도에 대해 통합하고 있다.이 조도는 표면 반사 기능(BRDF)에 의해 감소되어 어느 정도의 조도가 투시 카메라 쪽으로 갈 것인지를 결정한다.이 통합 절차는 출력 영상의 모든 픽셀에 대해 반복된다.물리적으로 정확한 표면 모델, 실제 광원의 정확한 모델(전구), 광학적으로 정확한 카메라와 결합하면 경로추적이 사진과 구별할 수 없는 스틸 이미지를 만들 수 있다.
경로 추적은 부드러운 그림자, 필드 깊이, 모션 블러, 가성, 주변 방해, 간접 조명 등 다른 방법(일반적인 광선 추적 또는 스캔라인 렌더링)에 특별히 추가해야 하는 많은 효과를 자연스럽게 시뮬레이션한다.이러한 효과를 포함하는 임대인의 구현은 그에 상응하여 더 간단하다.알고리즘의 확장 버전은 장면의 빛의 산란을 고려하는 체적 경로 추적을 통해 실현된다.
정확성, 편향되지 않은 특성, 알고리즘의 단순성 때문에 다른 렌더링 알고리즘의 품질을 테스트할 때 경로 추적을 사용하여 기준 영상을 생성한다.그러나 경로 추적 알고리즘은 상대적으로 비효율적이다. 노이즈 아티팩트가 없는 고품질 영상을 얻기 위해서는 매우 많은 수의 광선을 추적해야 한다.양방향 경로 추적, 체적 경로 추적, 메트로폴리스 광수송 등 많은 장면에 대해 원래의 알고리즘보다 더 효율적인 여러 변형이 도입되었다.
역사
렌더링 방정식과 컴퓨터 그래픽에서의 그것의 용도는 1986년 제임스 카지야에 의해 제시되었다.[1]경로 추적이 그 후 렌더링 방정식의 적분인 수적 해답을 찾기 위한 알고리즘으로 도입되었다.10년 후, 라포트네는 양방향 경로 추적을 포함한 많은 개선책을 제안했다.[2]
어려운 장면의 성능을 높이기 위해 이전에 발견했던 길을 혼란스럽게 만드는 방법인 메트로폴리스 경운기는 1997년 에릭 비치와 레오니다스 J. 기바스가 도입했다.
최근에는 CPU와 GPU가 이미지를 더 빨리 렌더링할 수 있을 정도로 강력해져 경로추적 알고리즘에 대한 관심이 더욱 확산되고 있다.Tim Purcell은 2002년에 GPU에서 작동하는 글로벌 조명 알고리즘을 처음 제시하였다.[3]2009년 2월, 엔비디아의 오스틴 로비슨은 GPU에서 실행되는 경로 추적기의 첫 번째 상업적 구현을 시연했으며, 2009년 8월 블라디미르 코일라조프의 그것과 같은 다른 구현이 뒤따랐다.[5] 이는 CUDA, OpenCL 등의 GPU 프로그래밍 툴킷과 OptiX 등의 GPU 레이 추적 SDK의 성숙에 힘입었다.
경로 추적은 영화 산업에서 중요한 역할을 해왔다.이전 영화들은 CG 시각 효과와 애니메이션을 제작하기 위해 스캔라인 렌더러에 의존했었다.1998년, 블루 스카이 스튜디오는 아카데미 상을 수상한 단편 영화 버니를 그들의 독점적인 CGI 스튜디오 경로 추적 렌더러와 부드러운 그림자와 간접적인 조명 효과를 특징으로 했다.소니 픽처스 이미지웍스의 몬스터 하우스는 2006년에 상업용 아놀드 렌더러를 사용하여 완전히 경로 추적기에 렌더링된 최초의 애니메이션 장편 영화였다.또한 월트 디즈니 애니메이션 스튜디오는 2014년 빅 히어로 6 제작 이후 하이페리온으로 알려진 자체 최적화된 경로 추적기를 사용해 왔다.[6]픽사 애니메이션 스튜디오는 또한 그것의 상업적인 렌더맨 렌더러를 위한 경로 추적을 채택했다.
설명
카지야의 렌더링 방정식은 광학의 세 가지 특정한 원리를 고수한다. 즉, 지구 조명의 원리, 균등성의 원리(반사된 빛은 방출된 빛과 동등하다), 방향의 원리(반사된 빛과 산란된 빛은 방향을 가진다)이다.
현실 세계에서는 물체와 표면이 빛을 반사하고 있다는 사실 때문에 눈에 띈다.이 반사된 빛은 차례로 다른 물체를 비춘다.그 단순한 관찰에서 두 가지 원칙이 따른다.
I. 주어진 실내 장면의 경우, 실내의 모든 물체는 다른 모든 물체에 조명을 제공해야 한다.
II. 둘째, 광원에서 방출되는 조명과 표면에서 반사되는 조명의 구별이 없다.
1984년에 발명된 라디오시티라는 다소 다른 방법은 두 가지 원칙에 충실했다.그러나 방사성은 표면에 떨어지는 총 조도와 표면에서 나가는 균일한 휘도를 가지고 관련된다.이로 인해 모든 표면은 램버트식 또는 "완전히 확산"될 수밖에 없었다.무선성은 그것의 발명에 많은 관심을 받았지만, 완전히 확산된 표면은 현실 세계에 존재하지 않는다.표면으로부터의 산란이 들어오는 방향과 나가는 방향 모두에 따라 달라진다는 깨달음은 양방향 반사분배함수(BRDF)의 핵심 원리다.이러한 방향 의존성은 방향을 고려하는 것이 항상 데스크탑 컴퓨터의 계산 시간의 급격한 증가를 초래했기 때문에 1990년대 내내 중요한 아이디어의 출판을 초래한 연구의 초점이었다.원칙 III는 다음과 같다.
III. 표면에서 나오는 조명은 도착하는 조명의 들어오는 방향과 샘플링되는 나가는 방향의 일부 기능인 특정 방향으로 산란되어야 한다.
가지야의 방정식은 이 세 가지 원리를 완전하게 요약한 것으로, 방정식의 해법에 근접한 경로추적은 그 구현에 충실하다.광학에는 카지야의 방정식의 초점이 아니므로 알고리즘에 의해 종종 어렵거나 부정확하게 시뮬레이션되는 다른 원리들이 있다.경로 추적은 세 가지 원리에 포함되지 않은 광학적 현상에 의해 혼동된다.예를 들면
알고리즘.
다음의 유사코드는 순진한 경로 추적을 수행하기 위한 절차다.TracePath 함수는 수집 경로만 고려되는 픽셀의 단일 샘플을 계산한다.
색 트레이스 경로(레이 광선을 치다, 수를 세다 깊이) { 만일 (깊이 >= 최대 깊이) { 돌아오다 블랙; // 충분히 튕겨졌다. } 광선을 치다.FindNeestObject(); 만일 (광선을 치다.뺑소니 == 거짓의) { 돌아오다 블랙; // 아무 것도 맞히지 않았다. } 재료 물질적 = 광선을 치다.팅크히트->물질적; 색 에밋턴스 = 물질적.에밋턴스; // 여기서 무작위 방향을 선택하고 계속 가십시오. 레이 뉴레이; 뉴레이.기원을 이루다 = 광선을 치다.PointWhereObjWas때리다; // 이것은 코사인 가중 분포가 아니다! 뉴레이.방향, = RandomUnitVectorInHemisphereOf(광선을 치다.normalWhereObjWas때리다); // newRay 확률 경시하다 둥둥 뜨다 p = 1 / (2 * PI); // 이 레이에 대한 BRDF 계산(Lambertian reflection) 둥둥 뜨다 cos_theta = 도트프로덕트(뉴레이.방향,, 광선을 치다.normalWhereObjWas때리다); 색 BRDF = 물질적.반사 / PI; // 반사 광원을 재귀적으로 추적한다. 색 들어오는 = 트레이스 경로(뉴레이, 깊이 + 1); // 여기에 렌더링 방정식을 적용한다. 돌아오다 에밋턴스 + (BRDF * 들어오는 * cos_theta / p); } 공허하게 하다 렌더(이미지 파이널이미지, 수를 세다 숫자샘플) { 앞을 내다 (화소 에 파이널이미지) { 앞을 내다 (i 에 숫자샘플) { 레이 r = 카메라로 찍다.generateRay(화소); 화소.색을 칠하다 += 트레이스 경로(r, 0); } 화소.색을 칠하다 /= 숫자샘플; // 평균 샘플. } } 그런 다음 모든 샘플의 평균을 산출하여 출력 색상을 얻는다.항상 정상의 반구에서 무작위 광선을 샘플링하는 이 방법은 완벽하게 확산되는 표면에서만 잘 작동한다는 점에 유의하십시오.다른 재료의 경우 일반적으로 중요도 샘플링을 사용해야 한다. 즉, BRDF의 분포에 따라 확률적으로 새 레이를 선택해야 한다.예를 들어, 새로운 광선이 광도가 반사되는 유일한 광선인 정확한 반사 광선이 될 확률은 0이기 때문에 위의 방법으로는 완벽하게 지정(거울) 재료가 작동하지 않을 것이다.이러한 상황에서 반사율을 몬테카를로 통합(위의 순진한 경우, 특별한 샘플링 방식이 없으므로 PDF는 1로 판명)에 따라 샘플링 방식의 확률밀도함수로 나누어야 한다.
에너지 보존을 보장하기 위해 고려해야 할 다른 고려사항이 있다.특히 순진한 경우, 확산 BRDF의 은 1㎛ {\을 초과해서는 안 되며, 그렇지 않으면 물체가 받는 것보다 더 많은 빛을 반사하게 된다(단, 이는 사용된 샘플링 방식에 따라 달라지며, 올바르게 하기 어려울 수 있다).
양방향 경로 추적
적분 표본 추출은 다음 두 가지 접근법 중 하나로 수행할 수 있다.
- 카메라에서 시작하여 광원과 마주칠 때까지 현장을 뛰어다니는 경로가 생성되는 Backward Path Tracking.카메라에서 출발하여 광원을 향해 이동하는 경로가 빛이 실제로 이동하는 방향과 반대이기 때문에 이를 "뒤로"라고 한다.모든 광학 시스템이 가역성이 있기 때문에 여전히 같은 결과를 산출한다.
- 광원으로부터 시작하여 카메라와 마주칠 때까지 장면 주위를 튕기는 경로가 생성되는 Light Tracking(또는 Forward Path Tracking)
두 경우 모두 다음 사건 추정이라는 기법을 사용하여 분산을 줄일 수 있다.이것은 우연히 부딪히는 경로를 기다리지 않고 중요한 특징(라이트 트레이싱의 경우 카메라, 역경로 트레이싱의 경우 광원)을 직접 샘플링하는 방식으로 작동한다.이 기법은 일반적으로 효과적이지만, 규격 또는 규격에 근접한 BRDF가 존재할 경우 유용성이 떨어진다.역방향 경로 추적의 경우, 이는 확산 표면과 상호작용하는 가성 경로에 대해 높은 분산을 만든 다음 광원에 도달하기 전에 지정 표면에서 튕겨 나온다.다음 사건 추정을 사용하여 이러한 경로를 확산 표면에서 직접 샘플링할 수 없다. 왜냐하면 규격 교호작용은 중간에 있기 때문이다.마찬가지로 빛이 튕길 수 있는 방향은 한 가지뿐이기 때문에 지정표면으로부터 경로를 샘플링하는 데 사용할 수 없다.라이트 트레이싱은 경로가 카메라와 충돌하기 전에 지정 표면과 상호 작용할 때도 이와 유사한 문제가 있다.이러한 상황은 훨씬 더 흔하고, 시끄러운(또는 완전히 검은) 유리 물체는 시각적으로 매우 파괴적이기 때문에, 실제로 단방향 경로 추적을 위해 사용되는 방법은 Backwards Path Tracking(역방향 경로 추적)뿐이다.
양방향 경로 추적은 두 접근법을 결합하는 알고리즘을 제공하며, 두 방법만 사용할 때보다 낮은 분산을 생성할 수 있다.각 표본에 대해 두 개의 경로를 독립적으로 추적한다. 하나는 광원에서 그리고 다른 하나는 카메라에서 사용한다.이것은 한 경로의 모든 꼭지점을 다른 경로의 모든 꼭지점에 직접 연결할 수 있는 가능한 샘플링 전략 세트를 생산한다.원래 라이트 트레이싱과 백워드 경로 트레이싱 알고리즘은 모두 이러한 전략의 특별한 경우다.Light Tracking의 경우 카메라 경로의 정점을 광 경로의 첫 번째 꼭지점에 직접 연결하는 것이다.Backward Path Tracking(후진 경로 추적)의 경우 광 경로의 정점을 카메라 경로의 첫 번째 꼭지점에 연결하는 것이다.게다가, 중간 정점이 연결되는 완전히 새로운 샘플링 전략이 몇 가지 있다.다중 중요도 샘플링을 사용하여 이러한 모든 샘플링 전략에 가중치를 부여하면 각 샘플에 대해 더 많은 작업이 필요하더라도 단방향 경로 추적보다 더 빠르게 수렴할 수 있는 새로운 샘플러가 생성된다.이는 주로 간접 조명을 통해 켜지는 가성이나 장면에 특히 잘 작동한다.
퍼포먼스
경로 추적기는 이미지의 픽셀을 연속적으로 샘플링한다.화소당, 아마도 100개 정도의 몇 개의 샘플만 지나면 영상이 인식되기 시작한다.그러나 이미지를 "전환"하고 노이즈를 허용 가능한 수준으로 낮추려면 대개 대부분의 이미지에 대해 약 5000개의 샘플이 필요하며, 병리학적 사례에 대해서는 더 많은 샘플이 필요하다.노이즈는 애니메이션에서 특히 문제가 되고, 일반적으로 원하지 않는 무작위 얼룩의 "필름그레인" 품질을 제공한다.
경로 추적의 중심 성능 병목현상은 레이를 주조하는 복잡한 기하학적 계산이다.중요도 샘플링은 표면 지점의 나가는 휘도로 정확하게 수렴하면서 장면을 통해 더 적은 양의 광선을 투사하도록 동기를 부여하는 기술이다.이것은 어차피 휘도가 더 컸을 방향에 더 많은 광선을 던짐으로써 이루어진다.특정 방향으로 주조되는 광선의 밀도가 해당 방향의 기여 강도와 일치하면 결과는 동일하지만 실제로 주조된 광선은 훨씬 적다.중요도 샘플링은 램버트의 코사인 법칙과 레이 밀도를 일치시키기 위해 사용되며, BRDF를 일치시키는 데도 사용된다.
메트로폴리스 광수송은 더 적은 샘플로 저소음 이미지를 만들 수 있다.이 알고리즘은 카메라가 보고 있는 장면 부분에 도달하기 위해 빛이 홀수 복도나 작은 구멍을 통과해야 하는 장면에서 더 빠른 수렴을 얻기 위해 만들어졌다.또한 병리학적 상황을 가성비로 올바르게 렌더링할 수 있는 가능성을 보여주었다.무작위 경로를 생성하는 대신 새로운 샘플링 경로가 기존 경로를 약간 변형하여 생성된다.이런 의미에서 알고리즘은 광원에서 카메라에 이르는 성공적인 경로를 "기억"한다.
산란 분포 함수
표면의 반사 특성(양, 방향 및 색상)은 BRDF를 사용하여 모델링한다.전송된 빛(물체를 통과하는 빛)에 해당하는 것은 BSDF이다.경로 추적기는 물체의 외관("컴퓨터 그래픽 용어로 재료", "혼합물" 또는 "쉐이딩")을 제어하는 복잡하고 신중하게 모델링되거나 측정된 분포 기능을 최대한 활용할 수 있다.
참고 항목
- 아놀드(소프트웨어)
- 블렌더(소프트웨어) – GPU 가속 렌더링 엔진 경로를 추적하는 Cycles를 통합한 3D 프로그램
- 옥탄렌더
- 픽사 렌더맨
- 룩스코어렌더
메모들
- ^ Kajiya, J. T. (1986). "The rendering equation". Proceedings of the 13th annual conference on Computer graphics and interactive techniques. ACM. CiteSeerX 10.1.1.63.1402.
- ^ Lafortune, E, Matical Models 및 물리 기반 렌더링을 위한 몬테카를로 알고리즘(PhD 논문), 1996.
- ^ Purcell, T J; Buck, I; Mark, W; 및 Hanrahan, P, "프로그램 가능한 그래픽 하드웨어에 대한 Ray Tracking", Proc. 시그그래프 2002, 703 – 712.스트림 프로세서(PhD 논문), 2004의 Purcell, T, Ray 추적을 참조하십시오.
- ^ Robison, Austin, "GPU 및 NVIRT 개요 상의 인터액티브 Ray Tracking", 슬라이드 37, I3D 2009.
- ^ Vray 데모; 다른 예로는 옥탄렌더, 아리온, 룩스렌더가 있다.
- ^ Seymour, Mike. "Disney's new Production Renderer 'Hyperion' – Yes, Disney!". fxguide. Retrieved 16 September 2017.
- ^ Veach, E, Guibas, L. J. Metropolitanes 경운수.SIGGRAPH'97(1997년 8월), 페이지 65-76.
- SmallPt는 Kevin Beason의 교육 경로 추적자 입니다.C++ 99줄(장면 설명 포함)을 사용한다.이 페이지에는 이 기법에서 비롯되는 소음의 좋은 예가 수록되어 있다.