많은 ShaderToy 데모는 장면을 렌더링하기 위해 Ray Marching 알고리즘을 공유하지만 종종 매우 컴팩트 한 스타일로 작성되었으며 간단한 예제 나 설명을 찾을 수 없습니다.
레이 마칭이란 무엇입니까? 일부 의견은 그것이 구형 추적의 변형이라고 제안합니다. 그러한 접근 방식의 계산상의 이점은 무엇입니까?
많은 ShaderToy 데모는 장면을 렌더링하기 위해 Ray Marching 알고리즘을 공유하지만 종종 매우 컴팩트 한 스타일로 작성되었으며 간단한 예제 나 설명을 찾을 수 없습니다.
레이 마칭이란 무엇입니까? 일부 의견은 그것이 구형 추적의 변형이라고 제안합니다. 그러한 접근 방식의 계산상의 이점은 무엇입니까?
답변:
그것들은 구 추적이 레이 마칭의 한 방법 인 가족 이름 인 동일한 솔버 패밀리에 속합니다.
레이 마칭은 표면 기능을 쉽게 해결할 수없는 (또는 숫자 반복 방법 없이는 불가능한) 전통적인 레이트 레이싱과 비슷한 기술입니다. 레이트 레이싱에서는 광선 교차점 만 살펴 보는 반면, 광선 행진에서는 교차점을 찾거나 충분한 샘플 또는 해결하려는 항목이있을 때까지 앞뒤로 행진합니다. 표면 검색을위한 뉴턴-그래프 슨 방법 또는 다양한 기능을 통합하기위한 합산으로 생각하십시오.
다음과 같은 경우에 유용 할 수 있습니다.
이미지 1 : 표면 조사를위한 전통적인 광선 행진
관련 게시물:
구 추적은 가능한 레이 마칭 알고리즘 중 하나입니다. 이러한 방식으로 변환 할 수 없으므로 모든 레이 마칭이이 방법에서 이점을 얻는 것은 아닙니다.
구 추적은 암시 적 표면 을 렌더링하는 데 사용됩니다 . 암시 적 표면은 일정한 수준의 연속 기능으로 형성됩니다. 본질적으로 방정식을 해결
F(X,Y,Z) = 0
이 기능이 각 지점에서 어떻게 해결 될 수 있는지에 따라, 현재 행진 단계에 맞을 수있는 (또는 정확하게 합리적이지 않은 경우) 가능한 가장 큰 구를 추정 할 수 있습니다. 그러면 다음 행진 거리가 최소한이 거리라는 것을 알고 있습니다. 이렇게하면 적응 형 레이 행진 단계를 통해 프로세스 속도를 높일 수 있습니다.
이미지 2 : 구면 추적 *의 실제 단계 크기 조정 방법
자세한 내용은 다음을 참조하십시오.
* 아마도 2D에서는 원 추적이라고해야합니다 :)
레이 마칭은 반복적 인 광선 교차 테스트로 광선을 따라 밟고 교차점을 테스트합니다. 일반적으로 내부 / 외부 테스트가 빠른 솔리드 형상의 교차점을 찾는 데 사용됩니다 .
교차점이 발생할 수있는 위치를 모르는 경우 고정 된 스텝 크기가 일반적이지만 이진 또는 시컨트 검색과 같은 루트 찾기 방법이 대신 사용됩니다. 고정 된 스텝 크기가 첫 번째 교차점을 찾은 다음 이진 검색을 찾는 데 사용됩니다. 픽셀 당 변위 매핑 기술에서 광선 행진을 처음으로 겪었습니다. 비 높이 필드 표면 세부 사항의 릴리프 매핑을 잘 읽어보십시오!
일반적으로 일부 전처리는 형상을 교차하지 않고 광선을 따라 이동할 수 있고, 형상을 교차하지 않고 놓아 두지 않고 놓칠 수있는 안전 거리를 제공하는 가속 기법 인 공간 도약과 함께 사용됩니다. 예를 들어, 원뿔 단계 매핑 및 완화 된 원뿔 단계 매핑입니다.
구체 추적을 암시 광선 영역의 교차 테스트를 참조 할 수 있습니다, 하지만 @joojaa 언급으로도 존 하트에 의해 기술을 뛰어 드는 공간의 이름이고, (윌리엄 도넬리에 의해 사용되는 거리 함수와 픽셀 당 변위 매핑 곳)을 3D 텍스처는 지오메트리가없는 구 반경을 인코딩합니다.