광선 추적(ray tracing) 및 불칸(Vulkan) API를 활용한 고성능 센서 모델

2021-04-05

고성능 센서 모델은 인식 시스템의 테스트 및 검증 시 매우 중요합니다. 최신 광선 추적 API를 사용하게 되면 성능의 저하 없이 더 높은 정확도의 센서 시뮬레이션이 가능해집니다. 이는 조명 및 반사(다중 경로)의 광자 횡단(photon traversal)과 같은 명백한 영역뿐만 아니라 회전식 라이다(lidar)의 롤링 셔터(rolling shutter) 또는 능동 센서에 일반적으로 존재하는 간섭과 같은 모델링 아티팩트(artifact)에도 적용됩니다. 

불칸은 리눅스 및 윈도우의 새로운 저수준 그래픽 API로 기존 API에 비해 효율적인 멀티 스레드 렌더링(multi-threaded rendering), 광선 추적 및 전반적으로 증가한 처리량을 지원합니다. 최신 GPU를 효율적으로 사용하며 병목 현상 제거 및 보다 직접적인 GPU 액세스를 통해 그래픽 정확도와 성능을 향상시킵니다. Applied Intuition는 가능한 모든 이점을 활용하는 방식으로 불칸렌더링 기능을 개발에 적극 도입하고 있습니다. 

이 게시물에서는 기존 접근 방식의 한계와 불칸및 광선 추적이 센서 모델의 정확도와 성능을 향상시키는 방식에 대해 설명합니다. 

센서 데이터 생성에 대한 접근 방식

이전 게시물에서는 기록 재시뮬레이션, 부분 합성 시뮬레이션, 완전 합성 시뮬레이션 등 인식 시뮬레이션의 세 가지 주요 방법에 관해 논의했습니다. 이 게시물은 완전 합성 센서 데이터 부분에 중점을 둘 것이지만 광선 추적은 부분 합성 접근 방법에도 적용될 수 있습니다.

컴퓨터 그래픽에는 센서 데이터를 생성하기 위한 몇 가지 일반적인 렌더링 방법이 있습니다. 이 방법 중 두 가지와 적합한 기술 선택의 중요성에 대해 자세히 논의하고자 합니다. 이러한 접근 방식은 다음과 같습니다. 

  • 래스터라이제이션(Rasterization)은 센서의 관점에서 최종 픽셀 값을 계산하는 기존의 접근 방식입니다. 매우 효율적이며 많은 경우 물리적으로 정확한 결과값을 생성할 수 있지만 반사 및 전역 조명과 같은 복잡한 효과를 구현하는 것에 어려움이 있습니다. 이 두 가지 문제 모두 근사적인 해결책이 있지만 시각적으로 또는 실험적으로 면밀히 살펴보면 여러 문제가 나타납니다.
  • 광선 추적은 광자가 실제 세계에서 반사되는 방식(확산/전반사 방식의 반사)을 모방하는 렌더링 방법입니다. 광선 추적은 광선을 여러 번 반사해 정확한 반사, 동적 전역 조명 및 기존 방법으로 정확하게 시뮬레이션 하거나 근사할 수 없는 기타 복잡한 효과를 가능하게 한다는 점에서 다른 렌더링 방법과 차별성이 있습니다. 하지만 최근까지는 실행 속도가 매우 느렸습니다.

래스터라이제이션의 한계

표준 래스터라이제이션 접근 방식은 큐브 맵 및 화면 공간 효과와 같은 근사치에 의존하기 때문에 기본 물리적 프로세스의 정확한 모델링이 어려울 수 있습니다. 

큐브 맵 반사

추후 사용을 위해 이미지 데이터를 텍스처(큐브 맵)로 인코딩 하는 경우 공간의 단일 지점에서 큐브 맵 반사가 생성됩니다. 카메라에서 반사를 렌더링 하기 위해 주어진 픽셀의 표면 법선(normal)을 사용하여 큐브 맵에서 픽셀의 색상을 검색합니다. 일반적으로 이 방법은 잘 작동하지만 정확한 캡처 지점이 아닌 다른 지점에서 렌더링 하는 경우 공간 검색이 부정확하고 잘못된 반사위치를 가지게 됩니다. 반사가 적절하게 보일수 있지만 실제로는 정확하지 않습니다.

또한 큐브 맵 반사는 큰 곡면을 처리할 때 해상도 부족으로 인한 어려움이 있을 수 있고 동적 요소를 포함하지 않으며 모든 프레임에 대해 매번 다시 계산되어야 합니다(고비용 작업).

면 공간 반사

화면 공간 반사는 화면에 동적으로 표시되는 개체에 적합하며 장면 전체에서 움직이는 액터를 캡처할 수 있습니다. 반사의 기하 구조는 정확하지만 반사할 위치가 화면 밖에 있는 경우 시스템은 큐브 맵 렌더링에 의존해야 합니다. 이로 인해 렌더링 된 뷰 뒤에 있는 개체와 같이 화면 공간 반사 데이터가 없는 경우 이미지 테두리에 아티팩트(artifact)가 생길 수 있습니다.

광선 추적: 동작 방법

광선 추적을 사용하면 일정량의 에너지가 있는 광원에서 광선을 추적합니다. 광선이 광원에서 카메라로 장면을 횡단하면 장면의 체적 모델 및 표면과 상호작용합니다. 그림 1은 산란광의 2차 반사가 최종 장면 조명에 어떻게 영향을 미칠 수 있는지를 보여줍니다. 

그림 1: 광선이 방출되어 장면을 가로지른 후 카메라 센서에 도달합니다.

표면 경계에서의 상호작용의 경우 광자/광선은 에너지 보존 법칙을 따릅니다. 에너지의 일부는 물질에 흡수되고 일부는 투과하고 나머지는 센서 뷰와 교차될 수 있는 장면으로 산란됩니다. 광선이 표면과 상호작용하는 방식의 특정 동작은 이방성 반사율 분포함수(BRDF)에 의해 정의되며 실질적으로는 재료 유형에 따라 크게 달라질 수 있습니다.

그림 2는 표면이 더 매끄러울수록 반사된 광선의 공간 간섭성(spatially coherent)이 더 크다(또는 거울과 같다)는 것을 보여줍니다. 여기에서 광선 추적은 더욱 중요해집니다. 

그림 2: 광선이 거친 표면과 매끄러운 표면에서 반사되는 방식. 

그림 3은 금속 재료의 거칠기에 따라 전체 정반사에서 부분 확산 반사로 변하는 것을 보여줍니다. 

그림 3: 다양한 거칠기를 가진 금속 재료(출처: Vectary).

광선 추적을 활용한 정밀한 센서 모델링

그림 4는 광선 추적 유무에 따른 렌더링 예시를 보여줍니다. 두 이미지의 차이점과 한 이미지가 다른 이미지보다 뛰어난 이유에 관해 살펴보겠습니다.

그림 4: 광선 추적이 없는 반사(왼쪽) 및 광선 추적이 있는 반사(오른쪽). 

전체적인 조명과 반사를 비교해 보면 광선 추적의 장점은 분명합니다. 왼쪽(광선 추적 없음)의 경우 유조 트럭은 반사가 매우 심한 것처럼 보이며 라이다 리턴은 더 작은 지표각에서 실제로 약해지게 됩니다. 그러나 환경의 정확한 반사를 보여주지는 못합니다(그림 5).

  1. 광선 추적을 사용하는 경우 프레임을 벗어난 빨간색 차량이 반사에 표시됩니다. 
  2. 광선 추적을 사용하는 경우 가스 펌프에 가려진 아이가 반사에 표시됩니다. 
  3. 광선 추적을 사용하는 경우 흰색 차량의 반사가 제대로 렌더링 됩니다.
  4. 광선 추적을 사용하는 경우 유조 트럭 위의 주유소 지붕 지지대가 늘어난 것처럼 보이지 않고 올바르게 보입니다.
  5. 광선 추적을 사용하는 경우 림이 빛나는 것처럼 보이지 않고 검은색 표면이 반사되도록 어두운 정도를 정확하게 표시합니다.
  6. 광선 추적을 사용하는 경우 지붕의 검은색 박스 주위의 미묘한 반사를 올바르게 보여줍니다.
그림 5: 광선 추적은 환경의 정확한 반사를 보여줍니다.

이러한 수준 차이는 극단적인 사례이지만 이 비교는 자율 주행 시스템의 검증을 위한 광선 추적의 이점을 보여줍니다. 광선 추적을 사용하는 경우 반사 내 차량 인식 오류(광선 추적 없이는 정확하게 시뮬레이션 할 수 없음)와 같은 복잡한 문제의 재현 역시 가능합니다. 

능동 센서의 다중 경로 및 고스트 타겟 생성

광선 추적의 중요성은 능동 감지 시스템에서 고스트 감지를 생성할 수 있는 상황을 모델링 하는 경우에도 명확합니다. 적절한 기하 구조 및 재료 특성을 사용하는 경우 센서에서 나오는 복사가 센서로 돌아가기 전 직접 경로보다 더 오래 걸릴 수 있으며 이로 인해 표면까지의 거리가 뚜렷하게 늘어나게 됩니다(그림 6). 이러한 유형의 효과는 기존 렌더링 기술로는 직접 모델링 할 수 없습니다(이전에 논의된 인식 시스템의 검증 및 확인에 관한 문제).

그림 6: 물웅덩이의 반사로 감지된 표면까지의 거리가 증가할 수 있습니다.

이 예시는 감지 대상이 센서의 1차 뷰(primary view)에 없는 경우로도 확장 가능합니다. 일반적으로 센서 뒤쪽에 있는 개체의 2차 또는 3차 반사가 이에 해당됩니다. 이는 센서 시야 바깥에 있거나 다른 개체에 의해 가려지거나 뷰 프러스텀(view frustum) 외부에 있는 모든 기하 구조를 제거하는 기존 렌더링 엔진을 사용하는 경우 구현이 어렵습니다. 그림 7은 주어진 계산에서는 고려되지 않았을 다수의 잠재적 복사체를 보여줍니다.

그림 7: 기존의 가려진 개체(출처: Epic Games).

광선 추적이 뛰어난 렌더링 방법임에도 불구하고 오늘날 널리 채택되지 않는 이유는 무엇일까요? 광선 추적 사용의 가장 큰 제한 요소는 하드웨어 요건으로 인한 높은 비용입니다. 광선 추적은 최근 하드웨어 부분에서 지원을 받았으나 시뮬레이션 확장(특히 클라우드의 경우)에 문제가 있을 수 있습니다. 또한 광선 추적은 일반적으로 기존 래스터라이제이션보다 실행 속도가 느립니다. 이러한 기능을 제품화하는 것이 센서 시뮬레이션의 최첨단 기술입니다.

불칸을 활용한 Applied Intuition의 제안

Applied Intuition는 광선 추적을 지원하기 위해 불칸 용 맞춤형 API를 개발하고 있습니다. 이를 통해 완전 맞춤형 스캔 패턴, 롤링 셔터 효과 및 일반적으로 캡처할 수 없는 기타 중요 반사가 가능합니다. 광선 추적 렌더링에 대한 저희 접근 방식의 자세한 내용이 궁금하시다면 엔지니어 팀으로 문의하세요!