O que é Ray Marching? Sphere Tracing é a mesma coisa?
31
Muitas demos do ShaderToy compartilham o algoritmo Ray Marching para renderizar a cena, mas geralmente são escritas com um estilo muito compacto e não consigo encontrar exemplos ou explicações diretas.
Então, o que é Ray Marching? Alguns comentários sugerem que é uma variação do rastreamento de esferas. Quais são as vantagens computacionais dessa abordagem?
Eles pertencem à mesma família de solucionadores, onde o rastreamento de esferas é um método de marchar com raios, que é o nome da família.
Raymarching uma definição
Raymarching é uma técnica parecida com o raytracing tradicional, em que a função da superfície não é fácil de resolver (ou impossível sem métodos iterativos numéricos). No rastreamento de raios, basta olhar para a interseção dos raios, enquanto na marcha dos raios você marcha para frente (ou para frente e para trás) até encontrar o cruzamento, tem amostras suficientes ou o que você está tentando resolver. Tente pensar nisso como um método de Newton-Raphson para encontrar superfícies ou somar para integrar uma função variável.
Isso pode ser útil se você:
Precisa renderizar volumetria que não seja uniforme
Renderizando funções implícitas, fractais
Renderização de outros tipos de superfícies paramétricas em que a interseção não é conhecida antecipadamente, como o mapeamento paralax
Etc
Imagem 1 : Raio tradicional marchando para encontrar superfície
O rastreamento de esferas é um possível algoritmo de marcha de raios. Nem todos os raymarching usam benefícios desse método, pois eles não podem ser convertidos nesse tipo de esquema.
O rastreamento de esfera é usado para renderizar superfícies implícitas . Superfícies implícitas são formadas em algum nível de uma função contínua. Em essência, resolver a equação
F(X,Y,Z) = 0
Por causa de como essa função pode ser resolvida em cada ponto, pode-se avançar e estimar a maior esfera possível que pode se encaixar na etapa atual da marcha (ou se não for exatamente razoavelmente segura). Você sabe que a distância da próxima marcha é pelo menos tão grande. Dessa forma, você pode ter etapas de marcha de raios adaptáveis que aceleram o processo.
Imagem 2 : Rastreamento da esfera * em ação, observe como o tamanho da etapa é adaptável
A marcha de raio é um teste de interseção de raio iterativo, no qual você caminha ao longo de um raio e testa interseções, normalmente usadas para encontrar interseções com geometria sólida , onde os testes internos / externos são rápidos.
Um tamanho de etapa fixo é bastante comum se você realmente não tem idéia de onde uma interseção pode ocorrer, mas, às vezes, métodos de localização de raiz, como uma pesquisa binária ou secante, são usados. Geralmente, um tamanho de etapa fixo é usado para encontrar a primeira interseção, seguida por uma pesquisa binária. Encontrei raios-marchas pela primeira vez em técnicas de mapeamento de deslocamento por pixel. O mapeamento de relevo de detalhes de superfície sem campo de altura é uma boa leitura!
É comumente usado com salto espacial, uma técnica de aceleração em que algum pré-processamento oferece uma distância de segurança que você pode mover ao longo do raio sem cruzar a geometria, ou melhor ainda, sem cruzar e deixar a geometria para que você perca. Por exemplo, mapeamento de etapas de cone e mapeamento de etapas de cone relaxado.
O rastreamento de esfera pode se referir a um teste implícito de interseção de esfera de raio, mas também é o nome de uma técnica de salto espacial de John Hart, como o @joojaa menciona, e usado por William Donnelly ( mapeamento de deslocamento por pixel com funções de distância ), onde A textura 3D codifica os raios das esferas nas quais não existe geometria.
Ha, lá está, tirar fotos de outras pessoas é mais eficiente do que desenhá-las você mesmo.
Joojaa
@joojaa Sim, mais rápido se você se lembrar de onde eles estavam, mas sem esse sentimento gratificante de fazê-lo: P. Também tenho esse bug estúpido de renderização de sub-pixel no chrome, para que o texto seja todo colorido.
jozxyqk
11
Bem, essa renderização de subpixel é algo que não foi solicitado. Ainda.
A marcha de raio é um teste de interseção de raio iterativo, no qual você caminha ao longo de um raio e testa interseções, normalmente usadas para encontrar interseções com geometria sólida , onde os testes internos / externos são rápidos.
Imagens da geometria de renderização com texturas de relevo
Um tamanho de etapa fixo é bastante comum se você realmente não tem idéia de onde uma interseção pode ocorrer, mas, às vezes, métodos de localização de raiz, como uma pesquisa binária ou secante, são usados. Geralmente, um tamanho de etapa fixo é usado para encontrar a primeira interseção, seguida por uma pesquisa binária. Encontrei raios-marchas pela primeira vez em técnicas de mapeamento de deslocamento por pixel. O mapeamento de relevo de detalhes de superfície sem campo de altura é uma boa leitura!
É comumente usado com salto espacial, uma técnica de aceleração em que algum pré-processamento oferece uma distância de segurança que você pode mover ao longo do raio sem cruzar a geometria, ou melhor ainda, sem cruzar e deixar a geometria para que você perca. Por exemplo, mapeamento de etapas de cone e mapeamento de etapas de cone relaxado.
O rastreamento de esfera pode se referir a um teste implícito de interseção de esfera de raio,mas também é o nome de uma técnica de salto espacial de John Hart, como o @joojaa menciona, e usado por William Donnelly ( mapeamento de deslocamento por pixel com funções de distância ), onde A textura 3D codifica os raios das esferas nas quais não existe geometria.fonte