Oi Bruno, tudo bem?
Tem bastante coisa envolvida neste assunto, daria para escrever um livro só sobre isso.
Mas vou tentar te dar uma clareada geral para você poder prosseguir.
O Unreal oferece diversos tipos de sombras para usar conforme cada situação, pois é pesado calcular todas as sombras em tempo real para valer, então, as luzes e os objetos são classificados como estáticos, estacionários ou móveis.
As luzes estáticas são as que possuem maior qualidade, mas só iluminam objetos estáticos e a iluminação delas é gerada fazendo o Bake, que acontece quando clica no botão Build, mas tem que configurar o Lightmass antes do Build.
1- O Lightmass fica no World Settings, se ele não estiver na sua interface é só abrir através do menu Window > World Settings.
A configuração é bem simples, como mostra a imagem 1 em anexo, basta colocar 5 no Num Indirect Lighting Bounces e Num Sky Lighting Bounces, além de desabilitar o Compress Lightmaps para ter mais qualidade, porém, isso deixará o Game mais pesado.
Quando os objetos são estáticos e as luzes também, aparece o escrito Preview nas sombras dos objetos, pois para ver a sombra real tem que fazer o Bake, também aparece uma mensagem em vermelho na Viewport avisando que precisa fazer o Build da cena.
O Bake calcula as sombras e o GI, que é o que cria mais realismo, dai guarda estas informações no segundo canal UV, pois o primeiro é usado pelas texturas dos materiais do objeto.
Por isso o mapeamento do segundo canal UV é muito importante para a qualidade das sombras, ele precisa ser o menos quebrado possível, ou seja, ter o menor número de ilhas e as ilhas devem ocupar a maior parte possível da área do UV para as sombras terem mais resolução.
A maioria dos objetos do cenário devem ser estáticos, assim como a maioria das luzes, apenas os objetos animados ou que podem ser movidos devem ser marcados como móveis.
2- Apesar de ser possível gerar o mapeamento do segundo canal UV na importação ou mesmo depois no Mesh Editor do Unreal, este mapeamento automático só fica bom em objetos quadradões como paredes, portas, janelas, pisos e tetos, não fica bom em objetos arredondados.
Neste caso é necessário fazer o mapeamento no próprio Blender e desabilitar a geração automática do Lightmap UV na importação para não substituir o que fez no Blender.
Eu não conheço o Blender para explicar como fazer o mapeamento do segundo canal UV, no 3ds max aplicamos o modificador Unwrap UVW e nele tem a opção de definir o número do canal UV.
No Unreal você pode ver se o objeto está com os dois canais UVs corretamente clicando no Mesh para abrir o Editor e dai tem o botão UV, clicando na setinha do lado dele pode escolher o UV que deseja exibir, tem que ter o canal zero e o canal 1 como mostra a imagem 2 em anexo.
O canal 1 é o mapeamento do Lightmap onde serão guardadas as sombras do objeto depois do Bake.
3- Como eu disse, a maioria das luzes num Game devem ser estáticas para não ter que calcular em tempo real, mas a luz do sol normalmente é marcada como estacionária (Stationary), como mostra a imagem 3 em anexo, pois assim ela gera sombras estáticas nos objetos estáticos e gera sombras Real-Time nos objetos móveis.
Continua sendo necessário o Bake, pois ela vai gerar o Lightmap dos objetos estáticos.
Porém, nos objetos móveis a sombra não terá tanta qualidade quanto nos objetos estáticos, já que a sombra Real-Time precisa ser otimizada, você nota a baixa qualidade principalmente na área de contato de um objeto com outro, como está marcado na imagem.
Tem duas formas de resolver, usando Contact Shadows ou Cascaded Shadows, você acessa o Contatc Shadows clicando na setinha na parte de baixo do painel Light, como mostra a imagem.
4- Basta aumentar um pouco o valor do Contact Shadow Length e a sombra na área de contato dos dois objetos será preenchida, como mostra a imagem 4 em anexo.
5- Para testar o Cascaded Shadows, desligue a Contact Shadows zerando o Contact Shadow Length.
Depois, encontre o painel Cascaded Shadow Maps mais abaixo no menu da luz e aumente o valor do Dynamic Shadow Distance Stationary, assim, verá que a sombra aparece na área de contato dos dois objetos, como mostra a imagem 5 em anexo.
6- Se a luz for marcada como móvel (Movable) ela vai gerar as sombras em tempo real para todos os objetos, os estáticos e os móveis, dai não precisa de Bake da iluminação e por consequência também não precisa do mapeamento do segundo canal UV usado pelo Lightmap, mas é a opção mais pesada de todas.
Neste caso a sombra precisa ser mais otimizada e ficará mais borrada, então, é necessário ligar o Contact Shadows para melhorar a sombra de contato entre os objetos, também pode ser necessário ajustar o Shadow Filter Sharpen, que fica logo acima do Contatct Shadow Length, ele permite diminuir o borrado da sombra.
Quando a luz for móvel o Cascaded Shadows fica habilitado por padrão, pois a sombra Real-Time é feita a partir de Shadow Map, ou seja, uma imagem da sombra que é projetada em cima dos objetos como se fosse um projetor de cinema.
Por padrão ele cria 3 imagens das sombras a cada Frame (Num Dynamic Shadow Cascades), por isso que chama Cascade de cascata, pois as imagens são projetadas uma depois da outra igual uma cascata, se diminuir para 2 ficará mais rápido, mas a sombra perde mais qualidade.
Você percebe pelo arredondamento da sombra nos cantos do Box, como está marcado na imagem 6 em anexo.
Todas as luzes perdem qualidade com a distância, até mesmo as estáticas, pois o Unreal otimiza a cena diminuindo a resolução das texturas e Lightmaps distantes, mas as sombras móveis além de perderem qualidade com a distância também somem completamente depois de certo ponto.
Esta distância é controlada nos dois primeiros parâmetros do painel Cascaded Shadow Maps, o primeiro controla a distância das sombras das luzes móveis e o segundo controla a distância nas luzes estacionárias como vimos mais acima.
7- Se aumentar para 4 Dynamic Shadow Cascades a sombra Real-Time ganha mais qualidade e os cantos do Box não ficam mais arredondados, como mostra a imagem 7 em anexo, mas deixa a cena mais pesada.
A sombra Real-Time de melhor qualidade é gerada através de Distance Fields, mas dai tem muitos outros detalhes envolvidos, precisa criar o Distance Field de cada Mesh, isso leva tempo e deixa o projeto bem maior em MB, pois tem que arquivar o Distance Field de todos os objetos.
Isso sem falar do Ray Tracing Real-Time, que dai tem a melhor sombra de todas, mas só roda em PC com placa RTX, é uma coisa para o futuro, daqui uns 5 anos mais ou menos.
Espero ter conseguido te dar uma luz neste assunto, se tiver dúvida sobre qualquer detalhe que mencionei, é só falar que explico melhor o ponto.
Abração e tudo de bom.
André Vieira