Qual é a diferença entre PBR e SSR?

11

Eu sou muito novo no desenvolvimento de jogos e tenho tentado entender a diferença entre Reflexão no Espaço da Tela e Renderização Baseada em Física.

Eu li sobre o PBR e, pelo que entendi, ele tenta imitar como a luz reflete na vida real, que geralmente é dividida em dois componentes, especular e difusa, dependendo do tipo de material.

Quanto ao SSR, pls me corrija se eu estiver errado, é como os reflexos ficam na superfície.

Se meu entendimento do SSR está correto, eles não são iguais? Quero dizer, não é como a aparência dos reflexos em uma superfície depende da rugosidade da superfície e etc. Isso afetará a quantidade de luz especularmente refletida e a quantidade difusa de refletida. Mais uma vez, por favor me corrija em qualquer lugar que esteja errado.

Kumaresan Sandran
fonte

Respostas:

17

Renderização com base física

Você está no caminho certo quando diz "ele tenta imitar como a luz reflete na vida real, que geralmente é dividida em dois componentes, especular e difusa, dependendo do tipo de material".

Mas modelamos materiais com especular e difusa em jogos e computação gráfica há muito tempo. O truque é que costumávamos lidar com essas coisas como completamente independentes - alterar a especularidade não mudou a difusão:

Exemplo de sombreamento Phong comumente usado em jogos

Este é um exemplo de sombreamento Phong do wiki do Blender . Você pode ver que ele oferece dois parâmetros de intensidade especular e dureza especular, e esses parâmetros alteram apenas a parte esbranquiçada da reflexão. O reflexo difuso azul não muda.

A maneira como os jogos usariam isso é que um artista seria encarregado de ajustar manualmente esses valores para cada material até que "parecesse certo". Como a "dureza especular" não é uma propriedade física real dos materiais que podemos medir com precisão, tinha que ser feita a olho nu.

Este método é um pouco quebradiço. À medida que você altera a iluminação (por exemplo, um objeto dinâmico que se move por diferentes áreas ou em um ambiente com hora do dia e clima), pode parecer sutilmente errado - muito claro ou muito escuro -, pois as condições de visualização não são as mesmas que as os seus parâmetros especulares foram ajustados.

Entre na Renderização com Base Física, que é uma tentativa de fundamentar nossas descrições de materiais em propriedades mais objetivas e mensuráveis ​​de superfícies reais. Uma das propriedades mais aparentes é a conservação de energia - uma superfície mais áspera dispersa a luz de maneira difusa, e uma superfície mais lisa / mais metálica reflete a luz mais diretamente, mas é o mesmo conjunto de luz de onde ambos estão tirando. Portanto, outras coisas são iguais, à medida que tornamos um material mais brilhante, o componente difuso deve ficar mais escuro:

Exemplo de aumento da refletividade com um albedo constante

Este exemplo é de um artigo do Marmoset que explica o PBR compartilhado originalmente por Syntac_

Há mais na renderização baseada em física do que em conservação de energia, mas este é provavelmente o sinal mais revelador de que você está trabalhando com um sistema baseado em física.

Ao manter os modelos de reflexão semelhantes à maneira como os materiais funcionam na vida real, reduzimos a necessidade de fatores de falsificação e subjetividade do artista para obter um material do mundo real, como madeira, concreto ou couro, para parecer real sob uma ampla variedade de condições de iluminação.

Observe que outra resposta descreveu isso em termos de iluminação indireta da luz refletida em outros objetos na cena. Embora muitos sistemas de iluminação que usam modelos físicos também incluam ferramentas para modelar isso, geralmente é conhecido sob um nome separado de Iluminação Global . Este é o efeito que faz com que um lado da cabeça difusa nesta imagem pareça verde, iluminado pela luz que ricocheteia na parede verde:

Exemplo de uma cena típica de teste de iluminação global

Imagem deste artigo sobre iluminação global

Reflexão no espaço da tela

Enquanto o PBR tenta modelar como o material reflete a luz, o Screenspace Reflection tenta capturar o que está sendo refletido - especificamente, para uma superfície brilhante e parecida com um espelho, o que devo ver no reflexo?

Novamente, esta é uma técnica de renderização relativamente recente, provavelmente mais clara de entender, em contraste com a forma como os jogos fizeram isso antes:

Renderização invertida - comum para aviões aquáticos ou espelhos planos, literalmente renderizamos toda a geometria refletida uma segunda vez espelhada no plano da superfície refletiva. Isso fornece reflexões de alta qualidade (detalhes completos, objetos em contato com a superfície alinhados com seus reflexos), mas só funciona corretamente para superfícies planas. Quanto mais ondulada ou esburacada for uma superfície, menos ela se comportará como reflexões reais, que devem distorcer ou desfocar de maneiras complexas.

Mapas de cubo - vamos armazenar a cor que seria vista por qualquer raio de vista que irradiasse do ponto central. Ao renderizar mapas de cubo dinamicamente a partir de pontos selecionados na cena, podemos estimar que cor deve ser refletida em qualquer superfície curvada arbitrariamente. O problema aqui é que o mapa do cubo só está completamente correto no seu ponto central - quando o ponto em que estamos simulando a reflexão se move ao redor da cena, ele deve ver alguma paralaxe, que não está presente no mapa do cubo. Isso significa que os objetos não tendem a se alinhar com seus reflexos.

A reflexão do espaço na tela tenta solucionar essas limitações usando a própria cena renderizada como fonte de informações de reflexão. Ele marca um raio de vista refletido, usando a profundidade da cena, até cruzar algo na cena renderizada.

Slide que descreve as reflexões do espaço na tela com um diagrama de vista lateral

Aqui está um slide de uma apresentação do EA DICE sobre sua abordagem às reflexões no mecanismo Frostbite .

Isso significa que (com algum trabalho algorítmico inteligente) podemos obter reflexões com precisão razoavelmente semelhante ao traçado de raios de superfícies arbitrárias em jogos, tendo o alinhamento correto das superfícies em contato, distorção e desfoque, desde que a parte refletida da superfície esteja visível no -screen (ou seja, não fora da tela ou obstruído por outra coisa). Onde a reflexão não pode ser determinada com precisão pelo raymarching, geralmente é aproximada usando amostras próximas ou um mapa de cubo de fallback representando a cena ao lado / atrás da visão da câmera.

Exemplo de projeto usando reflexão de espaço na tela

Você pode ver neste exemplo de reflexão do espaço na tela , a impressão pode ser muito convincente, embora pequenos erros sejam perceptíveis (veja o reflexo da parte de baixo dos cubos, que não são visíveis no quadro renderizado e, portanto, basta manchar e repetir pixels adjacentes, ou os orifícios no reflexo da cortina verde direita, ao lado do vaso de flores e na parte inferior da tela, onde o raymarching não conseguiu encontrar os pixels refletidos à direita). É comum usar esta técnica para superfícies moderadamente brilhantes / levemente ásperas para ajudar a tornar o erro ocasional menos visível.

DMGregory
fonte
Muito obrigado pela resposta. Era exatamente isso que eu queria saber.
Kumaresan Sandran
Para os curiosos, há um artigo de 2015 sobre um método semi-avançado, mas intuitivo, para resolver o problema "veja o reflexo da parte de baixo dos cubos": Procure o artigo: "Iluminação global em
várias escalas
1

Eles não são realmente relacionados.

Este documento do Marmoset explica bem o PBR sem chamar muita matemática.

As reflexões do espaço da tela, por outro lado, são uma técnica de espaço da tela pós-processo usada para renderizar reflexões em tempo real. Geralmente é muito mais barato do que renderizar mapas de cubo em cada quadro, mas pode parecer menos preciso e não permite que objetos fora da tela sejam refletidos.

Syntac_
fonte
1
Só vim aqui para atualizar o link, para quem visita a partir de 2018 ... marmoset.co/posts/basic-theory-of-physically-based-rendering
SWS
Felicidades atualizadas @sws.
Syntac_