레이 행진이란 무엇입니까? Sphere Tracing도 같은 것입니까?


31

많은 ShaderToy 데모는 장면을 렌더링하기 위해 Ray Marching 알고리즘을 공유하지만 종종 매우 컴팩트 한 스타일로 작성되었으며 간단한 예제 나 설명을 찾을 수 없습니다.

레이 마칭이란 무엇입니까? 일부 의견은 그것이 구형 추적의 변형이라고 제안합니다. 그러한 접근 방식의 계산상의 이점은 무엇입니까?

답변:


34

TL; DR

그것들은 구 추적이 레이 마칭의 한 방법 인 가족 이름 인 동일한 솔버 패밀리에 속합니다.

정의 레이 마칭

레이 마칭은 표면 기능을 쉽게 해결할 수없는 (또는 숫자 반복 방법 없이는 불가능한) 전통적인 레이트 레이싱과 비슷한 기술입니다. 레이트 레이싱에서는 광선 교차점 만 살펴 보는 반면, 광선 행진에서는 교차점을 찾거나 충분한 샘플 또는 해결하려는 항목이있을 때까지 앞뒤로 행진합니다. 표면 검색을위한 뉴턴-그래프 슨 방법 또는 다양한 기능을 통합하기위한 합산으로 생각하십시오.

다음과 같은 경우에 유용 할 수 있습니다.

  • 균일하지 않은 체적을 렌더링해야 함
  • 암시 적 함수, 프랙탈 렌더링
  • 시차 매핑과 같이 교차점이 미리 알려지지 않은 다른 종류의 파라 메트릭 표면 렌더링
  • 기타

전통적인 레이 마칭

이미지 1 : 표면 조사를위한 전통적인 광선 행진

관련 게시물:

구 추적

구 추적은 가능한 레이 마칭 알고리즘 중 하나입니다. 이러한 방식으로 변환 할 수 없으므로 모든 레이 마칭이이 방법에서 이점을 얻는 것은 아닙니다.

구 추적은 암시 적 표면 을 렌더링하는 데 사용됩니다 . 암시 적 표면은 일정한 수준의 연속 기능으로 형성됩니다. 본질적으로 방정식을 해결

F(X,Y,Z) = 0

이 기능이 각 지점에서 어떻게 해결 될 수 있는지에 따라, 현재 행진 단계에 맞을 수있는 (또는 정확하게 합리적이지 않은 경우) 가능한 가장 큰 구를 추정 할 수 있습니다. 그러면 다음 행진 거리가 최소한이 거리라는 것을 알고 있습니다. 이렇게하면 적응 형 레이 행진 단계를 통해 프로세스 속도를 높일 수 있습니다.

영역 추적에는 적응 단계 크기가 있습니다

이미지 2 : 구면 추적 *의 실제 단계 크기 조정 방법

자세한 내용은 다음을 참조하십시오.

* 아마도 2D에서는 원 추적이라고해야합니다 :)


1
자세한 설명을 위해 Scratchapixel의이 기사를 추천합니다. scratchapixel.com/lessons/advanced-rendering/…
user18490

Scratchapixel에 @ user18490의 링크로 이동 한 scratchapixel.com/lessons/advanced-rendering/... . 나머지 사이트 ( scratchapixel.com/index.php )도 유용하게 보입니다.
WillC

15

레이 마칭은 반복적 인 광선 교차 테스트로 광선을 따라 밟고 교차점을 테스트합니다. 일반적으로 내부 / 외부 테스트가 빠른 솔리드 형상의 교차점을 찾는 데 사용됩니다 .

여기에 이미지 설명을 입력하십시오
릴리프 텍스처 가있는 렌더링 형상의 이미지

교차점이 발생할 수있는 위치를 모르는 경우 고정 된 스텝 크기가 일반적이지만 이진 또는 시컨트 검색과 같은 루트 찾기 방법이 대신 사용됩니다. 고정 된 스텝 크기가 첫 번째 교차점을 찾은 다음 이진 검색을 찾는 데 사용됩니다. 픽셀 당 변위 매핑 기술에서 광선 행진을 처음으로 겪었습니다. 비 높이 필드 표면 세부 사항의 릴리프 매핑을 잘 읽어보십시오!

여기에 이미지 설명을 입력하십시오

일반적으로 일부 전처리는 형상을 교차하지 않고 광선을 따라 이동할 수 있고, 형상을 교차하지 않고 놓아 두지 않고 놓칠 수있는 안전 거리를 제공하는 가속 기법 인 공간 도약과 함께 사용됩니다. 예를 들어, 원뿔 단계 매핑 및 완화 된 원뿔 단계 매핑입니다.

구체 추적을 암시 광선 영역의 교차 테스트를 참조 할 수 있습니다, 하지만 @joojaa 언급으로도 존 하트에 의해 기술을 뛰어 드는 공간의 이름이고, (윌리엄 도넬리에 의해 사용되는 거리 함수와 픽셀 당 변위 매핑 곳)을 3D 텍스처는 지오메트리가없는 구 반경을 인코딩합니다.


하, 당신은 간다. 다른 사람들로부터 이미지를 찍는 것이 직접 그리는 것보다 효율적입니다.
joojaa

@joojaa 네, 당신이 어디에 있었는지 기억한다면 더 빠르지 만, 스스로하는 느낌이 들지 않습니다. : P. 또한 크롬 에이 어리석은 서브 픽셀 렌더링 버그 가 있으므로 텍스트가 모두 다채 롭습니다.
jozxyqk

1
서브 픽셀 렌더링은 요청되지 않은 것입니다. 아직.
joojaa

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.