Renderizando trilhões de "átomos" em vez de polígonos?


9

Acabei de ver um vídeo sobre o que os editores chamam de "próximo grande passo após a invenção do 3D". Segundo a pessoa que fala, eles usam uma quantidade enorme de átomos agrupados em nuvens, em vez de polígonos, para atingir um nível de detalhes ilimitados .

Eles fizeram o possível para tornar o vídeo compreensível para pessoas sem conhecimento de nenhuma técnica de renderização e, portanto, ou para outros fins, deixaram de fora todos os detalhes de como o mecanismo funciona.

O nível de detalhe em seu vídeo parece bastante impressionante para mim.

  • Como é possível renderizar cenas usando átomos personalizados em vez de polígonos no hardware atual? (Velocidade, memória)
  • Se isso é real, por que ninguém mais pensou nisso até agora?

Como desenvolvedor de OpenGL, estou realmente confuso com isso e gostaria muito de ouvir o que os especialistas têm a dizer. Portanto, também não quero que isso pareça um anúncio barato e incluirei o link do vídeo somente se solicitado, na seção de comentários.


7
Bem, eles inventaram a coisa mais revolucionária desde o início da computação gráfica, mas não sabem quantos milímetros cabem em uma polegada, o que isso diz a você.

2
Eles são tão limitados em detalhes (perdoe o trocadilho) sobre sua tecnologia que a discussão é difícil. Pelo que entendi no vídeo, são 20fps em software. Vejo muita geometria estática, várias instâncias e não sei quanto dos dados são pré-computados ou gerados em tempo real. Ainda interessante. Eu não gostaria de chamar completamente de bobagem. Não com o financiamento adquirido, embora isso não signifique muito.
Bart

8
É sempre suspeito que alguém faça alegações fantásticas e apenas mostre cenas de algo totalmente não relacionado (como o Crysis). Ainda mais se houver afirmações como "tecnologia usada na medicina / viagem espacial" e misturar várias coisas que não têm nada a ver uma com a outra. Certamente é possível produzir (quase) infinitos detalhes processualmente e é certamente possível renderizá-los. Então, o que, toda demo de mandelbrot de 1984 poderia fazer isso. No entanto, a alegação é que eles renderizam objetos como aquele elefante em detalhes infinitos. E isso é apenas besteira, porque eles não podem.

8
"Seus gráficos estão prestes a melhorar por um fator de 100.000 vezes". Reivindicações extraordinárias requerem evidências extraordinárias.
Brad Larson

11
Notch escreveu duas postagens no blog sobre este vídeo.
Kevin Yap

Respostas:


11

É fácil fazer isso. Usando um Octtree, você simplesmente divide o mundo em pedaços progressivamente menores até atingir o nível de detalhe necessário. Pode ser do tamanho de um grão de areia, por exemplo. Pense Minecraft levado ao extremo.

O que você renderiza então? Se os detalhes forem pequenos o suficiente, considere a possibilidade de renderizar blocos - os nós das folhas da árvore octológica. Outras opções incluem esferas ou mesmo primitivas geométricas. Uma cor e um normal podem ser armazenados em cada nó e, para um LOD reduzido, é possível armazenar informações compostas em níveis mais altos da árvore.

Como você pode gerenciar tantos dados? Se a árvore é uma estrutura de dados real, você pode fazer com que vários ponteiros façam referência às mesmas subárvores, como reutilizar uma textura, mas também inclui geometria. O truque é obter o máximo de reutilização possível em todos os níveis. Por exemplo, se você conectar 4 octantes em arranjo tetraédrico ao mesmo nó filho em todos os níveis, poderá criar um fractal 3d sierpinsky muito grande usando quase nenhuma memória. A cena real será muito maior, é claro.

O problema é que ele funcionará apenas para geometria estática, porque a animação real exigiria a manipulação de todos os dados a cada quadro. A renderização, no entanto, especialmente com a variável LOD, não é problema.

Como renderizar uma coisa dessas? Sou um grande fã de ray tracing e lida com esse tipo de coisa muito bem com e sem uma GPU.

Tudo isso é especulação, é claro. Não tenho informações específicas sobre o caso de que você está falando. E agora, algo relacionado, mas diferente:

Uma enorme quantidade de dados renderizados

EDIT E aqui está uma que eu fiz, mas alterei deliberadamente as normais para tornar as caixas mais aparentes:

Stanford bunny em voxels

Essa taxa de quadros estava em um único núcleo IIRC. Dobrar a profundidade da árvore geralmente diminui a taxa de quadros pela metade, enquanto o uso de múltiplos núcleos aumenta de tamanho. Normalmente mantenho primitivas (triângulos e coisas assim) em minha árvore oculta, mas, para sorrisos, decidi renderizar os nós das folhas da própria árvore nesse caso. Melhor desempenho pode ser obtido se você otimizar um método específico, é claro.

Em algum lugar da ompf há um carro feito com voxels que é realmente fantástico - exceto que é estático. Não consigo encontrá-lo agora ...


Eu concordo com esta avaliação: acabei de assistir ao vídeo e fiquei impressionado com a estática de suas cenas (engraçadas quando se comparam à grama poligonal; pelo menos está soprando no vento, enquanto a delas claramente não está).
timday

11
Infelizmente os links estão inoperantes.
Joachim Sauer

11
@JoachimSauer De fato, o fórum do OMPF caiu há algum tempo. Uma substituição direta está disponível aqui, mas não sei se algum conteúdo foi migrado.
1624 Bart Bart

Não parece. Procurar por "bunny" nesse fórum não mostra resultados para mim.
Joachim Sauer

o primeiro link abre pop-ups e alerta a caixa -1
NimChimpsky 16/05

6
  • Como é possível renderizar cenas usando átomos personalizados em vez de polígonos no hardware atual? (Velocidade, memória)

Ao assistir ao vídeo, nada indica para mim que algum hardware especial foi usado. De fato, afirma-se que isso é executado em software a 20fps, a menos que eu tenha perdido alguma coisa.

Talvez você se surpreenda ao saber que houve muitos desenvolvimentos na renderização em tempo real usando uma variedade de tecnologias como traçado de raios, renderização de voxel e respingos de superfície. É difícil dizer o que foi usado neste caso. (Se você estiver interessado, consulte http://igad2.nhtv.nl/ompf2/ para obter um ótimo fórum de rastreamento de raios em tempo real ou http://www.atomontage.com/ para obter um mecanismo voxel interessante. Google "splatting de superfície" para obter ótimos links sobre esse tópico)

Se você olhar para o filme, perceberá que toda a geometria é estática e, embora detalhada, existe bastante repetição de objetos, o que pode sugerir instâncias.

E provavelmente haverá muitos abates agressivos, níveis de detalhe e particionamento de espaço acontecendo.

Se você observar a qualidade visual (não a complexidade geométrica), ela não parecerá tão impressionante. De fato, parece bastante plano. A sombra mostrada pode ser agrupada nos dados e não ser avaliada em tempo real.

Eu adoraria ver uma demonstração com geometria animada e iluminação dinâmica.

  • Se isso é real, por que ninguém mais pensou nisso até agora?

A menos que eu esteja completamente errado (e não seria a primeira vez que estou), minha primeira resposta sugeriria um uso (talvez muito inteligente) da tecnologia existente, talvez otimizada e estendida para criar esta demonstração. Torná-lo um mecanismo de jogo real, com todas as outras tarefas além de renderizar a geometria estática que isso inclui, é um jogo totalmente diferente.

Claro que tudo isso é pura especulação (o que me torna muito divertido). Tudo o que estou dizendo é que isso não é necessariamente falso (na verdade, acho que ainda não estou impressionado), mas provavelmente não é tão inovador quanto parece.


5

Na verdade, esses átomos não são tão mágicos / especiais / estranhos ao hardware gráfico atual. É apenas um tipo de renderização baseada em nuvem de pontos ou voxel. Então, em vez de triângulos, eles renderizam pontos ou caixas, nada inatingível no hardware atual.

Já foi e já foi feito e não é a super invenção, mas talvez eles tenham criado uma maneira mais eficiente de economizar tempo e memória. Embora pareça e pareça bastante interessante, você deve gravar este vídeo com um pouco de sal. A renderização de 100.000 pontos em vez de um polígono totalmente texturizado (que já ocupa apenas alguns pixels na tela) não melhora a qualidade dos seus gráficos por um fator de 100.000.

E, a propósito, ouvi dizer que o software de identificação também está testando a renderização voxel acelerada por GPU, mas tenho um pouco mais de confiança em John Carmack do que no alto-falante deste vídeo :)


2

Isso foi uma farsa de investimento.

Quanto à ideia, não é viável no hardware não dedicado atual. A quantidade de pontos que você precisaria para evitar lacunas ao olhar para algo mais próximo está muito além da quantidade de pontos que você poderia disparar na RAM de hoje. Mesmo assim, não conheço nenhuma estrutura de dados ou algoritmo de pesquisa que renderia algo próximo ao desempenho mostrado na demonstração. E mesmo que , de alguma maneira, fosse possível pesquisar esses pontos em tempo real, falhas de cache e largura de banda de memória garantiriam que você não pudesse.

Não duvido que essas imagens não possam ser obtidas em tempo real, apenas não com o método apresentado. Meu palpite é que as demos foram renderizadas com voxels, que são usados ​​há décadas e já podem produzir detalhes bastante altos em tempo real: http://www.youtube.com/watch?v=BKEfxM6girI http://www.youtube .com / watch? v = VpEpAFGplnI


2
"Isso foi uma farsa de investimento" ... em que você baseia isso? Especialmente considerando o financiamento adquirido recentemente e os vídeos enviados hoje?
Bart

11
Quais vídeos? Eles não são atualizados há mais de um ano.
Hannesh

11
youtube.com/user/EuclideonOfficial, conforme publicado pelo OP nos comentários.
Bart

1

Pelo que vi, parece que eles estão usando formas paramétricas em vez de formas poligonais simples - em outras palavras, elas alteram a geometria de acordo com a resolução necessária.

Isso pode ser feito usando técnicas como sombreadores de geometria e ruído permanente.

Outra possibilidade é usar o GPGPU (por exemplo, CUDA) para renderizar cenas incluindo não polígonos e executar o rastreamento de raios (para ordem z e sombras). Outra possibilidade é um hardware personalizado que renderiza fórmulas em vez de triângulos


0

Penso em todas as suas alegações, a compressão da memória parece um exagero, eu poderia entender algo como a compressão RLE tendo um grande impacto. No final, acho que esse sistema terá muitos "profissionais", mas muitos "contras", como rastreamento de raios ou renderização iso-superficial com cubos em marcha.

Tanto quanto render "trilhões" de átomos; Eu não acho que eles estão dizendo isso. O que eles estão fazendo é procurar átomos W * H, ou seja, um átomo por pixel na tela. Isso poderia ser realizado de várias maneiras lentas e difíceis. Algumas maneiras de acelerar isso são as árvores KD e árvores BSP, Octrees etc. No entanto, no final, muitos dados estão sendo classificados e o fato de que sua demonstração aparentemente classifica 1440x720 átomos, mais de uma vez por quadro, por causa das sombras / reflexões em sua demo, é incrível. Então, elogios!


-1

o modo como funciona é muito mais simples do que você imagina: em vez de pré-carregar, digamos, no nível do jogo, ele carrega apenas uma única tela, um ou alguns átomos por pixel na tela, nada mais, o jogo / mecanismo prediz o que o os próximos quadros são e essa é a única coisa carregada, apenas a parte do objeto visível é renderizada, não o objeto inteiro em si. PRÓS: quanto definição e resolução o monitor puder suportar, baixo uso de memória CONTRAS: a taxa de leitura do disco é bastante grande e pode levar a uma baixa taxa de quadros.


este não parece oferecer nada substancial sobre pontos feitos e explicado em anteriores 7 respostas
mosquito
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.