Muito show saber como as sombras são renderizadas. Eu vejo falar muito sobre os diversos tipos de sombras, principalmente as do Unreal, mas ninguém explica como o Unreal renderiza aquelas sombras, e você foi o primeiro que eu vi falar sobre esse Cascade. Uma coisa que eu sempre quis saber também é, no Blender e no Unity (pelo menos nas versões antigas, fazem anos que eu não uso Unity) as sombras são duras, ou o objeto está no sol ou na sombra, e se eu quisesse fazer uma cena interna eu precisaria adicionar a luz ambiente, que matava as sombras mais densas, me fazendo depender de oclusão de ambiente pra mascarar isso. Talvez tivesse alguma forma de criar sombras mais realistas, como uma sombra mais densa para um objeto numa área que já está sombreada, como o Unreal faz por padrão, mas eu nunca soube como fazer isso. Como motores como o Unreal geram essas sombras mais "volumétricas", mais densas, com diferenças entre si, sem ser aquela coisa binária? Seria legal um vídeo falando sobre isso do jeito que você fez nesse vídeo.
Legal saber que você gostou desse tipo de conteúdo, pois sempre estudo técnicas como essa e seria um prazer compartilhá-las. Sobre sua pergunta, posso elaborar alguma coisa sobre isso sim! Mas o que exatamente você quer dizer com sombras densas? Eu acredito que o unreal resolve isso com IBL (image Based lighting) e também com a iluminação global.
@UnidayStudio eu não sei explicar de forma técnica, mas, no Unity 4, se eu criasse uma cena de interior, uma casa por exemplo, dentro da casa não existia sombra alguma porque a casa já estava em abrigo da luz do sol, e se eu não adicionasse uma luz ambiente, o interior da casa ficava preto. No mundo real existe sombra sobre sombra, exemplo, dentro da casa com a luz apagada a gente tem a luz ambiente, mas os objetos ainda exibem sombras mesmo já estando em abrigo do sol. Pra simular sombras nos cantos dos objetos as pessoas usam oclusão de ambiente, mas isso não é sombra de fato, e no Unity 4 as sombras eram duras, ou o objeto está na sombra ou na luz, sem níveis de sombra. Eu citei o Unreal porque por padrão ele já não apresenta esse problema, sem mexer em nada as sombras dele já simulam essa sombra sobre sombra que eu disse, não é essa coisa binária. Eu queria saber como o Unreal faz isso, porque alguns motores não entregam isso por padrão, e eu nunca consegui fazer uma cena de interior decente com outros motores.
Guilherme, incrível sua engine e sua explicação. Estou começando em C++ para um jogo antigo e gostaria de saber se você recomenda algum material que talvez foi importante durante essa sua jornada para conseguir criar e implementar tantas coisas complexas na sua engine, tal qual essa renderização de sombras. Abraços!
véi, eu vim na brisa de que seria só um vídeo de curiosidade, mas acaba que essa de colocar o sol em paralelo a câmera é uma que faz todo sentido e eu nunca tinha pensado, mesmo tando na cara
A impressao q dá é q vc implementa as coisas muito rapido kkk a proposito, seria bom msm a Cave ter o sistema de terreno, até hj a Godot ainda precisa de plugins pra isso..
Sim, o terreno vai chegar em breve! O meu tempo de implementação de recursos geralmente é rápido mesmo, girando em torno de uma semana, mas claro que isso varia com a complexidade. Tmj
uma vez perguntei sobre a api de renderização, alguém me respondeu usar opengl , vocês pretende usar outras backends de renderização como dx12, ou até uma abstração como bgfx, e quanto ao gerenciador de janelas usa sdl2 ou glfw.
e como posso criar shaders para cave posso usar glsl ou hlsl, que projeto magnifico fico muito feliz de ter uma engine de respeito br sei que não é facil criar uma então digo de coração mesmo meus parabéns.
a sua engine e feita em phyton ou em C++? acho q vc ja falou sobre isso mas n lembro, e que eu to qurendo fazer um jogo do zero, ai queria fazer ele inteiro em phyton, seria um jogo com graficos simples e iluminação simples
Mano, faz um videozin falando de como as engines são feitas, fiquei curioso agora, ce fez a cave toda do zero? pra mim criar engines eram coisas de grandes empresas e equipes gigantes
Achava que as engines modernas usavam um raycasting de sombras. Pegando cada pixel do depth pass e checando se não tinha nenhum objeto entre ele e as lâmpadas. Assim sombras sempre teriam a melhor resolução e não renderizaria pixels que não se vê na imagem final.
Isso é uma técnica de screen space shadows usando ray marching. É usada em alguns títulos para sombras menores, porem isso não é eficiente e muito menos preciso em casos mais genéricos.
Como a sombra do prédio do fudo se mexia, então isso é feito a cada frame, tambem tem tecnicas que geram diretamente na mesh sei-la, porque numa framework que eu usava eu fazia apenas um update da sombra e esta sombra ficava para sempre diretamente no objeto, mas nao sei o nome desta tecnica
Existem dois tipos de sombras: as pre renderizadas (baked) e as em tempo real. A diferença é que as pre renderizadas como você disse, nunca atualizam (obviamente), então se passar um personagem na frente ou algo se mover, esse objeto não terá sombras.
@@UnidayStudio SE ELE É CALCULADO POR FRAME, por exemplo ele gera uma imagem monocromatica e ai tem a camera que vai analizar o pixel que que não esta na imagem, e quanto maior esse campo de perspectiva do sol mais processamento dessa imagem, eu quero saber se isso acontrece, em tempo real, ou é sempre que essa perspectiva detecta uma mudança na renderização monocromatica que ela processa a sombra na camera. se não é bem custoso na minha visão. mesmo aplicando essas tecnicas
engine como a source engine, ou gold src usa essa técnica de tick rate, para ajuste de frequência do motor pois muitos dos cálculos da engine usam como referencia o frame rate, porém o fps não é uma constante, então usa o tick rate para loop e demais funções de atualização ou update, um exemplo clássico, é gta vice city que em maquinas que tem um fps alto buga a física; diferente do frame limiter, acho que o max estuda a source engine pois ela usa uma técnica de sombreamento usando um lod mesmo, não sei explicar exatamente como esse shader funciona mas também ele usa o ângulo da luz para seu calculo.
Muito show saber como as sombras são renderizadas. Eu vejo falar muito sobre os diversos tipos de sombras, principalmente as do Unreal, mas ninguém explica como o Unreal renderiza aquelas sombras, e você foi o primeiro que eu vi falar sobre esse Cascade.
Uma coisa que eu sempre quis saber também é, no Blender e no Unity (pelo menos nas versões antigas, fazem anos que eu não uso Unity) as sombras são duras, ou o objeto está no sol ou na sombra, e se eu quisesse fazer uma cena interna eu precisaria adicionar a luz ambiente, que matava as sombras mais densas, me fazendo depender de oclusão de ambiente pra mascarar isso.
Talvez tivesse alguma forma de criar sombras mais realistas, como uma sombra mais densa para um objeto numa área que já está sombreada, como o Unreal faz por padrão, mas eu nunca soube como fazer isso.
Como motores como o Unreal geram essas sombras mais "volumétricas", mais densas, com diferenças entre si, sem ser aquela coisa binária? Seria legal um vídeo falando sobre isso do jeito que você fez nesse vídeo.
Legal saber que você gostou desse tipo de conteúdo, pois sempre estudo técnicas como essa e seria um prazer compartilhá-las. Sobre sua pergunta, posso elaborar alguma coisa sobre isso sim! Mas o que exatamente você quer dizer com sombras densas? Eu acredito que o unreal resolve isso com IBL (image Based lighting) e também com a iluminação global.
@UnidayStudio eu não sei explicar de forma técnica, mas, no Unity 4, se eu criasse uma cena de interior, uma casa por exemplo, dentro da casa não existia sombra alguma porque a casa já estava em abrigo da luz do sol, e se eu não adicionasse uma luz ambiente, o interior da casa ficava preto. No mundo real existe sombra sobre sombra, exemplo, dentro da casa com a luz apagada a gente tem a luz ambiente, mas os objetos ainda exibem sombras mesmo já estando em abrigo do sol. Pra simular sombras nos cantos dos objetos as pessoas usam oclusão de ambiente, mas isso não é sombra de fato, e no Unity 4 as sombras eram duras, ou o objeto está na sombra ou na luz, sem níveis de sombra.
Eu citei o Unreal porque por padrão ele já não apresenta esse problema, sem mexer em nada as sombras dele já simulam essa sombra sobre sombra que eu disse, não é essa coisa binária. Eu queria saber como o Unreal faz isso, porque alguns motores não entregam isso por padrão, e eu nunca consegui fazer uma cena de interior decente com outros motores.
ver isso na Cave é incrivel, eu sempre quis que a Upbge tivesse essa tecnica de sombras.
Eu também! Hehe
Mano, que conteúdo foda. E traz mais vídeos desse para nós 🙏🏻 de como as coisas funcionam
Que bom que gostou, vou tentar trazer mais vídeos como esse!
show muito boa a explicação ! >
Tmj!
Guilherme, incrível sua engine e sua explicação. Estou começando em C++ para um jogo antigo e gostaria de saber se você recomenda algum material que talvez foi importante durante essa sua jornada para conseguir criar e implementar tantas coisas complexas na sua engine, tal qual essa renderização de sombras. Abraços!
véi, eu vim na brisa de que seria só um vídeo de curiosidade, mas acaba que essa de colocar o sol em paralelo a câmera é uma que faz todo sentido e eu nunca tinha pensado, mesmo tando na cara
A impressao q dá é q vc implementa as coisas muito rapido kkk a proposito, seria bom msm a Cave ter o sistema de terreno, até hj a Godot ainda precisa de plugins pra isso..
Sim, o terreno vai chegar em breve!
O meu tempo de implementação de recursos geralmente é rápido mesmo, girando em torno de uma semana, mas claro que isso varia com a complexidade. Tmj
Como fizeste o paralax nos predios?
Cara que legal saber como funciona essa parte das sombras
Massa, né?
Seria interessante um jogo com dinâmica igual Minecraft onde um mundo gigante e infinito executado na Cave Engine
caramba muito massa bem interessante essa questão dos mapas de sombreamento
É um recurso que faz a diferença!
uma vez perguntei sobre a api de renderização, alguém me respondeu usar opengl , vocês pretende usar outras backends de renderização como dx12, ou até uma abstração como bgfx, e quanto ao gerenciador de janelas usa sdl2 ou glfw.
e como posso criar shaders para cave posso usar glsl ou hlsl, que projeto magnifico fico muito feliz de ter uma engine de respeito br sei que não é facil criar uma então digo de coração mesmo meus parabéns.
RDR2, a maior obra prima dos games até agora ❤
Rdr2 é um clássico!
a sua engine e feita em phyton ou em C++? acho q vc ja falou sobre isso mas n lembro, e que eu to qurendo fazer um jogo do zero, ai queria fazer ele inteiro em phyton, seria um jogo com graficos simples e iluminação simples
Foi feita inteiramente em C++
gui, poderia fazer um video sobre cross-plataform no cave meu rei? tipo pc e android/mobile
A cave não é cross platform para mobile. Mas vai ser para web em breve!
e a sombra suave, ou tendo outros pontos de luz ? o que acontece ? ele interpola o valor da cor do ultimo pixel naquela sombra ?
Tem que estudar um pouco melhor essas técnicas em particular, mas eu acredito que é uma espécie de pcf.
Mano, faz um videozin falando de como as engines são feitas, fiquei curioso agora, ce fez a cave toda do zero? pra mim criar engines eram coisas de grandes empresas e equipes gigantes
É um grande desafio! 💪 Mas sim, fiz ela praticamente toda do zero, desde meados de 2015.
Achava que as engines modernas usavam um raycasting de sombras. Pegando cada pixel do depth pass e checando se não tinha nenhum objeto entre ele e as lâmpadas. Assim sombras sempre teriam a melhor resolução e não renderizaria pixels que não se vê na imagem final.
Isso é uma técnica de screen space shadows usando ray marching. É usada em alguns títulos para sombras menores, porem isso não é eficiente e muito menos preciso em casos mais genéricos.
Como a sombra do prédio do fudo se mexia, então isso é feito a cada frame, tambem tem tecnicas que geram diretamente na mesh sei-la, porque numa framework que eu usava eu fazia apenas um update da sombra e esta sombra ficava para sempre diretamente no objeto, mas nao sei o nome desta tecnica
Existem dois tipos de sombras: as pre renderizadas (baked) e as em tempo real. A diferença é que as pre renderizadas como você disse, nunca atualizam (obviamente), então se passar um personagem na frente ou algo se mover, esse objeto não terá sombras.
é um lod de sombras , mas ele faz todo esse processo por tick ?
Como assim por tick?
@@UnidayStudio SE ELE É CALCULADO POR FRAME, por exemplo ele gera uma imagem monocromatica e ai tem a camera que vai analizar o pixel que que não esta na imagem, e quanto maior esse campo de perspectiva do sol mais processamento dessa imagem, eu quero saber se isso acontrece, em tempo real, ou é sempre que essa perspectiva detecta uma mudança na renderização monocromatica que ela processa a sombra na camera. se não é bem custoso na minha visão. mesmo aplicando essas tecnicas
engine como a source engine, ou gold src usa essa técnica de tick rate, para ajuste de frequência do motor pois muitos dos cálculos da engine usam como referencia o frame rate, porém o fps não é uma constante, então usa o tick rate para loop e demais funções de atualização ou update, um exemplo clássico, é gta vice city que em maquinas que tem um fps alto buga a física; diferente do frame limiter, acho que o max estuda a source engine pois ela usa uma técnica de sombreamento usando um lod mesmo, não sei explicar exatamente como esse shader funciona mas também ele usa o ângulo da luz para seu calculo.
A Cave está ficando simplesmente sensacional 💪
Tmj
falta sistema de criação de terreno e agua arvores tambem
Terreno vai ter também, eu comento no vídeo. 🙏🏻
Muito da hora ver como é feito
Valeeu