O Maravilhoso Mundo do Global Ilumination
2 participantes
Página 1 de 1
O Maravilhoso Mundo do Global Ilumination
Recentemente descobri sobre o G.I. e tudo esta belo e bonito mas foram surgindo muitas duvidas.
Primeiro :
Cara o GI é mesmo tão pesado assim?
Tipo eu to no PC e meu jogo roda em torno de 62 FPS.
Fiz tudo do GI e ficou 62 FPS. (Mesma coisa)
Chego no celular fica a 20 FPS. Em um celular bom (Redmi Not7), sendo que ele rodava tranquilamente o jogo a 60 FPS.
Claro que eu adicionei uns efeito de camera (Post Processing) o que da pra baixar de graça da propria unity.
E agr to na duvida, da pra usar Global Ilumination em android?
Eu poderia até deixar tudo no baked pra ficar mais leve, mas apenas o Ligh no Mixed(da luz) ja ficou 70MB kkkk
Eu até entendo que essas coisas seriam pesadas mesmo, mas tipo meu jogo tem 18 Cenas.
Se cada uma custasse 70MB pra gerar luzes o jogo ia pesar 1.260 GB (Só de bak de luz kk).
Coloquei realTime na Ligh da cena e adivinha? 20 Fps.
Lembrando que a cena não é complexa, tirando o personagens todos os objetos da cena são cubos sem textura (com pouquissimos Mesh).
Como não entendo mt de Gi vou botar oq mudei aqui e oq vcs precisarem vão me falando, ou ja digam logo "Esquece cara GI é muito pesado pra android".
Luz : Real Time , intensidade 1 e indirect 1.
Soft Shadows.
Objetos : Todos estáticos menos o player, Scale in LithMap 2
Efeitos na Camera :
AntiAliasing
Ambient Oclusion
Bloom
Color Grading
Vignette
Ambiente Mode do Light - RealTime.
É isso gente, queria saber oque ta comendo meu FPS e algum jeito de arrumar. Tentei o Profiler mas não adianta pq em uma cena com GI ta usando lá uns 50% da CPU e em uma cena limpa e sem nada usa a mesma coisa.
Primeiro :
Cara o GI é mesmo tão pesado assim?
Tipo eu to no PC e meu jogo roda em torno de 62 FPS.
Fiz tudo do GI e ficou 62 FPS. (Mesma coisa)
Chego no celular fica a 20 FPS. Em um celular bom (Redmi Not7), sendo que ele rodava tranquilamente o jogo a 60 FPS.
Claro que eu adicionei uns efeito de camera (Post Processing) o que da pra baixar de graça da propria unity.
E agr to na duvida, da pra usar Global Ilumination em android?
Eu poderia até deixar tudo no baked pra ficar mais leve, mas apenas o Ligh no Mixed(da luz) ja ficou 70MB kkkk
Eu até entendo que essas coisas seriam pesadas mesmo, mas tipo meu jogo tem 18 Cenas.
Se cada uma custasse 70MB pra gerar luzes o jogo ia pesar 1.260 GB (Só de bak de luz kk).
Coloquei realTime na Ligh da cena e adivinha? 20 Fps.
Lembrando que a cena não é complexa, tirando o personagens todos os objetos da cena são cubos sem textura (com pouquissimos Mesh).
Como não entendo mt de Gi vou botar oq mudei aqui e oq vcs precisarem vão me falando, ou ja digam logo "Esquece cara GI é muito pesado pra android".
Luz : Real Time , intensidade 1 e indirect 1.
Soft Shadows.
Objetos : Todos estáticos menos o player, Scale in LithMap 2
Efeitos na Camera :
AntiAliasing
Ambient Oclusion
Bloom
Color Grading
Vignette
Ambiente Mode do Light - RealTime.
É isso gente, queria saber oque ta comendo meu FPS e algum jeito de arrumar. Tentei o Profiler mas não adianta pq em uma cena com GI ta usando lá uns 50% da CPU e em uma cena limpa e sem nada usa a mesma coisa.
lesgoy- Mestre
- PONTOS : 3489
REPUTAÇÃO : 49
Respeito as regras :
Re: O Maravilhoso Mundo do Global Ilumination
O Redmi Note 7 é um baita smartphone, se teu jogo tá suando pra rodar a 20 FPS nele, a imensa maioria dos usuários android não vai conseguir sequer abrir teu jogo.
Vamos por partes:
Realtime GI não é recomendado nem pra placas de vídeo mais modestas, quem dirá pra celular, a regra de mobile é fazer bake em tudo que der, você pode e deve usar GI no seu projeto, mas use baked pros objetos estáticos, e adicione Light probes para capturar a iluminação e transferir para os objetos dinâmicos, com isso você já vai desafogar muito sua GPU.
Luz realtime é o mesmo esquema, pra você conseguir sombras decentes assim, vai precisar subir muito a resolução do Shadow Map, e eu tenho certeza que você tá usando cascades, resumindo, tua cena tá sendo enviada pra calcular profundidade e shadow map pelo menos quatro vezes, fora o render comum da câmera, isso são 5 renders da cena por frame, delícia demais.
Em cima disso tudo, você tá fazendo 5 operações extra por pixel, tô realmente admirado com esse Redmi Note 7 conseguir 20 Fps com isso tudo.
Bora otimizar, não sei como é seu jogo, mas creio que tenha objetos que são inacessíveis pro player, ou que são coisas que ficam bem longes da câmera, esses, você diminui a escala no lightmap.
Coloque como static lightmap apenas objetos como predios, ruas, coisas grandes e sem muitos detalhes.
Objetos pequenos, não muito importantes, ou coisas como arvores você seta a escala no lightmap pra 0, assim elas contribuem para o bounce de luz em outros objetos, mas não fazem parte do lightmap em si, nesse caso a Unity entende que você quer que esse objeto receba iluminação via light probe. Fazendo essas duas coisas o consumo de memória e o tempo do Bake já irá diminuir horrores.
Se você tem mais de uma lampada na cena, deixe a principal como "important" e as outras como não importante, assim a iluminação por pixel será calculada apenas na luz principal, fazendo as outras serem calculadas por vértice, o que já vai liberar muuuuitas operações por pixel no teu render.
Se tiver até 3 lampadas, use Forward no modo de render da Câmera, mais que isso recomendo Deferred.
Sei que o post processing faz os olhinhos brilharem, mas esqueça isso pra mobile, ou coloque apenas como opção pra tem um celular mais parrudo e queira se aventurar, desses efeitos, a maioria dá pra ser substituido por um mais leve.
Ambient Occlusion dá pra ser gravado na textura do lightmap.
Bloom tem uns bem leves na asset store, otimizados pra mobile.
Color grading é recomendado fazer via LUT, exporte um frame do seu jogo, faça o grading no photoshop e exporte o grading na forma de LUT, é bem mais leve.
Vignette dá pra usar uma textura simulando, tá, vai adicionar uma camada de transparência no render mas ainda é mais leve que o efeito via post.
Fazendo metade disso aí, ao menos no Redmi vai rodar a 60fps, mas tem muita coisa que dá pra fazer que um tópico só não cobriria. O meu conselho é que nivele por baixo, fazer um jogo tendo como parâmetro um celular assim exclui muitos possiveis jogadores no futuro, arruma um emprestado ou pede pra um amigo que tenha um mais fraquinho testar, recomendo pelo menos um celular mid de uns 3 anos atrás, pra ter suporte a uma boa base de usuários.
Iluminação Global é realmente linda, mas tem que ter pé no chão pra usar. Desculpa pela parede de texto, e boa sorte!
Vamos por partes:
Realtime GI não é recomendado nem pra placas de vídeo mais modestas, quem dirá pra celular, a regra de mobile é fazer bake em tudo que der, você pode e deve usar GI no seu projeto, mas use baked pros objetos estáticos, e adicione Light probes para capturar a iluminação e transferir para os objetos dinâmicos, com isso você já vai desafogar muito sua GPU.
Luz realtime é o mesmo esquema, pra você conseguir sombras decentes assim, vai precisar subir muito a resolução do Shadow Map, e eu tenho certeza que você tá usando cascades, resumindo, tua cena tá sendo enviada pra calcular profundidade e shadow map pelo menos quatro vezes, fora o render comum da câmera, isso são 5 renders da cena por frame, delícia demais.
Em cima disso tudo, você tá fazendo 5 operações extra por pixel, tô realmente admirado com esse Redmi Note 7 conseguir 20 Fps com isso tudo.
Bora otimizar, não sei como é seu jogo, mas creio que tenha objetos que são inacessíveis pro player, ou que são coisas que ficam bem longes da câmera, esses, você diminui a escala no lightmap.
Coloque como static lightmap apenas objetos como predios, ruas, coisas grandes e sem muitos detalhes.
Objetos pequenos, não muito importantes, ou coisas como arvores você seta a escala no lightmap pra 0, assim elas contribuem para o bounce de luz em outros objetos, mas não fazem parte do lightmap em si, nesse caso a Unity entende que você quer que esse objeto receba iluminação via light probe. Fazendo essas duas coisas o consumo de memória e o tempo do Bake já irá diminuir horrores.
Se você tem mais de uma lampada na cena, deixe a principal como "important" e as outras como não importante, assim a iluminação por pixel será calculada apenas na luz principal, fazendo as outras serem calculadas por vértice, o que já vai liberar muuuuitas operações por pixel no teu render.
Se tiver até 3 lampadas, use Forward no modo de render da Câmera, mais que isso recomendo Deferred.
Sei que o post processing faz os olhinhos brilharem, mas esqueça isso pra mobile, ou coloque apenas como opção pra tem um celular mais parrudo e queira se aventurar, desses efeitos, a maioria dá pra ser substituido por um mais leve.
Ambient Occlusion dá pra ser gravado na textura do lightmap.
Bloom tem uns bem leves na asset store, otimizados pra mobile.
Color grading é recomendado fazer via LUT, exporte um frame do seu jogo, faça o grading no photoshop e exporte o grading na forma de LUT, é bem mais leve.
Vignette dá pra usar uma textura simulando, tá, vai adicionar uma camada de transparência no render mas ainda é mais leve que o efeito via post.
Fazendo metade disso aí, ao menos no Redmi vai rodar a 60fps, mas tem muita coisa que dá pra fazer que um tópico só não cobriria. O meu conselho é que nivele por baixo, fazer um jogo tendo como parâmetro um celular assim exclui muitos possiveis jogadores no futuro, arruma um emprestado ou pede pra um amigo que tenha um mais fraquinho testar, recomendo pelo menos um celular mid de uns 3 anos atrás, pra ter suporte a uma boa base de usuários.
Iluminação Global é realmente linda, mas tem que ter pé no chão pra usar. Desculpa pela parede de texto, e boa sorte!
SteveRogers- Instrutor
- PONTOS : 2673
REPUTAÇÃO : 156
Respeito as regras :
Re: O Maravilhoso Mundo do Global Ilumination
O pior é que o jogo deveria ser extremamente leve kkk Por isso pensei que poderia usar mais efeitos ja que a cena em si é super levinha.
Em fim, vou fazer todas essas mudanças e mais tarde volto com o resultado.
E quanto ao tamanho? Se eu usar tudo no baked não vai ficar muito pesado? Como eu disse são muitas fases e seria inviavel .1.30GB só de bakes :/
Em fim, vou fazer todas essas mudanças e mais tarde volto com o resultado.
E quanto ao tamanho? Se eu usar tudo no baked não vai ficar muito pesado? Como eu disse são muitas fases e seria inviavel .1.30GB só de bakes :/
lesgoy- Mestre
- PONTOS : 3489
REPUTAÇÃO : 49
Respeito as regras :
Re: O Maravilhoso Mundo do Global Ilumination
Ok, voltei kkk
Tenho um conjunto de objetos que estão como estatico.
Como eu faria esse metade realTime metade baked?Mixed no DirectionalLight seria suficiente?
Tenho um conjunto de objetos que estão como estatico.
Como eu faria esse metade realTime metade baked?Mixed no DirectionalLight seria suficiente?
lesgoy- Mestre
- PONTOS : 3489
REPUTAÇÃO : 49
Respeito as regras :
Re: O Maravilhoso Mundo do Global Ilumination
Sinceramente, não vejo nada demais nessa cena pra justificar 70Mb de lightmaps. Acho que daria pra reduzir tranquilamente pra 4~8Mb por cena e fazendo rodar a 60Fps em praticamente qualquer celular mid de 2015 pra cá.
Sim, eu deixaria uma única Directional Mixed.
Sim, eu deixaria uma única Directional Mixed.
SteveRogers- Instrutor
- PONTOS : 2673
REPUTAÇÃO : 156
Respeito as regras :
Re: O Maravilhoso Mundo do Global Ilumination
Detalhe :
Com algumas compilações descobri que o causador de problemas era o ambiente oclusion.
Pois quando desativei ele o jogo voltou a rodar bem.
Entendo que em outros celulares ele pode não funcionar assim e por isso vou fzr a otimização que vc me recomendou.
Em fim, só quis passar pra deixar registrado minha descoberta .
Obrigado pela ajuda !
Com algumas compilações descobri que o causador de problemas era o ambiente oclusion.
Pois quando desativei ele o jogo voltou a rodar bem.
Entendo que em outros celulares ele pode não funcionar assim e por isso vou fzr a otimização que vc me recomendou.
Em fim, só quis passar pra deixar registrado minha descoberta .
Obrigado pela ajuda !
lesgoy- Mestre
- PONTOS : 3489
REPUTAÇÃO : 49
Respeito as regras :
Re: O Maravilhoso Mundo do Global Ilumination
Desculpa pelo incomodo mas fiz oque você disse e como era de se esperar o projeto ficou com sombras falsas.
O player e os outros objetos que podem ser movidos tão com uma sombra bem fraquinha mas qnd o jogador entra debaixo de uma sobra ele não fica escuro.
Não tem como colocar sombras ?
Detalhe : O bake com Mixed ficou 26MB
O player e os outros objetos que podem ser movidos tão com uma sombra bem fraquinha mas qnd o jogador entra debaixo de uma sobra ele não fica escuro.
Não tem como colocar sombras ?
Detalhe : O bake com Mixed ficou 26MB
lesgoy- Mestre
- PONTOS : 3489
REPUTAÇÃO : 49
Respeito as regras :
Re: O Maravilhoso Mundo do Global Ilumination
É aí que entram as light probes, tem que saber onde colocar pra simular direitinho a penumbra real.
SteveRogers- Instrutor
- PONTOS : 2673
REPUTAÇÃO : 156
Respeito as regras :
Re: O Maravilhoso Mundo do Global Ilumination
Então eu teria que criar uma LighProbe e deixar como filha do player?
E ai colocar um pra cada objeto que se meche? Como aquelas 2 caixas?
E ai colocar um pra cada objeto que se meche? Como aquelas 2 caixas?
lesgoy- Mestre
- PONTOS : 3489
REPUTAÇÃO : 49
Respeito as regras :
Re: O Maravilhoso Mundo do Global Ilumination
A light probe é estática. Ela serve pra capturar a iluminação do cenário bake e passar esses dados de luz para os objetos dinâmicos, seu player e similares.
SteveRogers- Instrutor
- PONTOS : 2673
REPUTAÇÃO : 156
Respeito as regras :
Re: O Maravilhoso Mundo do Global Ilumination
Quando você disse que daria para reduzir a 4MB o Bake oque eu teria que fzr?
Pq ainda ta 26 :/
Pq ainda ta 26 :/
lesgoy- Mestre
- PONTOS : 3489
REPUTAÇÃO : 49
Respeito as regras :
Re: O Maravilhoso Mundo do Global Ilumination
Marca essa opção de Ambient Occlusion ali no lightmap, no bake não vai pesar. Ambient Occlusion é o que da vida numa cena, não pode ficar sem não.lesgoy escreveu:O pior é que o jogo deveria ser extremamente leve kkk Por isso pensei que poderia usar mais efeitos ja que a cena em si é super levinha.
Em fim, vou fazer todas essas mudanças e mais tarde volto com o resultado.
E quanto ao tamanho? Se eu usar tudo no baked não vai ficar muito pesado? Como eu disse são muitas fases e seria inviavel .1.30GB só de bakes :/
SteveRogers- Instrutor
- PONTOS : 2673
REPUTAÇÃO : 156
Respeito as regras :
Re: O Maravilhoso Mundo do Global Ilumination
Teria que replanejar algumas coisas da iluminação e o modo como o jogo renderiza sua cena.lesgoy escreveu:Quando você disse que daria para reduzir a 4MB o Bake oque eu teria que fzr?
Pq ainda ta 26 :/
SteveRogers- Instrutor
- PONTOS : 2673
REPUTAÇÃO : 156
Respeito as regras :
Tópicos semelhantes
» Problema com Global Ilumination Unity 2019
» Unet MultiPlayer GLobal!
» [RESOLVIDO] Variable "Global"
» [RESOLVIDO]Variável global ou Get em cada script?
» [TUTORIAL] Multiplayer global em múltiplos dispositivos
» Unet MultiPlayer GLobal!
» [RESOLVIDO] Variable "Global"
» [RESOLVIDO]Variável global ou Get em cada script?
» [TUTORIAL] Multiplayer global em múltiplos dispositivos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos