Lançamento da Fase 2 do projeto Future is Bright

Olá desenvolvedores, @BRDevelopers

Nós temos o prazer de anunciar para vocês que o nosso projeto Future Is Bright Fase 2, também conhecido como Technology.ShadowMap, agora está habilitado em plataformas desktop (Windows e MacOS usando DX11, Metal, Vulkan) para todos os desenvolvedores usarem. O suporte para Windows 10 e Xbox virá muito em breve, aguarde! Queremos primeiramente agradecer à nossa equipe que trabalhou duro para fazer tudo isso acontecer! Foi um longo caminho, mas finalmente conseguimos! Um grande agradecimento a @zeuxcg, @Qiblox, @ConvexRumbler, @Homeomorph, @NeoBuilder101, @vrtblox.

O que há de novo?

Nós adicionamos o Shadow Map, que agora suporta o mecanismo de luzes de voxel. Agora, todos os objetos da cena suportarão sombras. No entanto, por enquanto, apenas o sol e a lua podem transmitir sombra; nós (ainda) não podemos transmitir sombras de objetos locais por causa de algumas limitações com voxels, mas temos isso planejado para a Fase 3. Aguardem!

Como posso utilizá-lo?

Existem várias novas opções:

Nova tecnologia de iluminação -> ShadowMap:

Nova Propriedade -> Suavidade da Sombra (Shadow Softness) que permite especificar o quão borradas as sombras serão:

Agora você também pode controlar se um objeto transmitirá uma sombra com a nova propriedade “CastShadow”. Essa propriedade também afeta as sombras do voxel.

Como isso funciona?

O shadow mapping é uma maneira comum de criar sombras em um jogo. Nossa tarefa é, para cada pixel da tela, determinar se esse pixel é visível ou não do ponto de vista da luz; Em outras palavras, devemos resolver o problema da visibilidade. Para resolver este problema de visibilidade, podemos renderizar a cena do ponto de vista da luz em uma textura fora da tela (Shadow map). Para cada pixel dessa textura, armazenaremos a distância da luz até a sombra mais próxima.

Então, para cada pixel da tela, podemos comparar a distância atual com a fonte de luz com a distância que registramos no Shadow map. Se a distância do pixel for maior que a distância armazenada, esse pixel estará na sombra, caso contrário o pixel ficará iluminado.

É claro que essa descrição é simplificada demais e há vários detalhes e otimizações diferentes. Mas espero que vocês entendam que, para os shadow maps, nós devemos fazer a cena pelo menos duas vezes; a primeira vez para gerar o próprio shadow map e a segunda vez para renderizar uma cena.

É por isso que, do ponto de vista do desempenho, é crucial fazer o menor número de objetos possível. Aqui estão algumas dicas para melhorar a performance:

  • Nós nunca devemos desenhar objetos no Shadow Map com a propriedade CastShadow desativada; essa é uma excelente maneira de economizar algum desempenho. Por exemplo, se o seu jogo tiver muitos meshes de grama, você provavelmente desejará desativar a sombra para eles.

  • Vamos também tentar não renderizar os objetos estáticos. Se o seu objeto não se mover, isso economizará desempenho.

  • Infelizmente, quando a direção do sol muda, devemos invalidar nossos Shadow Maps armazenados em cachê. Quanto menos o sol se move, melhor para o desempenho. Tente não alterar a hora do dia com frequência; você pode querer considerar mover o sol em rajadas curtas, como alguns jogos fazem (Skyrim).

O que podemos esperar para o futuro?

Já trabalhamos duro na Fase 2 para plataformas móveis iOS e dispositivos Android Vulkan. Nós estamos trabalhando ainda mais para a fase 2.5 que introduzirá um dispositivo físico mais realista com materiais e imagens à base de luz.

Também esperamos implementar mais otimização de performance para computadores menos potentes, para que as sombras funcionem melhor.

Por enquanto, não planejamos oferecer suporte a shadow maps para OpenGL ou Direct3D 9. Se você usar o OpenGL intencionalmente no estúdio, altere para Automático ou Vulkan/Metal, dependendo da plataforma.

Estamos muito felizes e esperamos ver muito em breve os seus jogos que usarão esse novo recurso.

Bugs conhecidos

Nós já estamos cientes de alguns bugs e eles serão corrigidos em breve. Vamos atualizar esta postagem quando esses bugs forem consertados:

  • Imagens em um objeto com CastShadow=False ainda transmitem sombras.
  • No celular, o ShadowMap se torna Legacy ao invés de Voxel (RESOLVIDO EM 15/05/2019).


Não esqueçam de nos seguir no twitter: @robloxdevrelptb.

Obrigado,
Equipe de Relacionamento com Desenvolvedores Roblox

Artigo Original: Future Is Bright: Phase 2 Released

8 Likes

Incrivel, isso vai ser muito util

1 Like

Isso é maravilhoso! Tão belo como a vida real