2021-07-26 – Chuva já com vento, e teste de performance, para o meu Game Engine em C/C++…

O teste final de performance à chuva, e já com vento. Cliquem na imagem acima para ver a animação, ou abaixo.

Estão até 21.000 objectos no ecrã, desta chuva aleatória e com vento aleatório, gastando apenas 2% a 5% do CPU de um fraquinho I5 quando no auge da chuva. Isto inclui a aleatoriedade da chuva, tamanhos, transparências, ângulo, vento, velocidade, etc.

Pois há várias layers, pois há gotas mais próximas de nós e outras mais longe, a velocidade de queda varia obviamente consoante a gravidade (a Gravidade é a mesma mas o ângulo de visão não), bem como o tamanho, e transparências (mais distantes, mais transparentes), sem implicar variações dentro de cada layer de proximidade também, claro está! Meti também os splashes, o ângulo consoante o vento, os rastos de ilusão óptica das gotas, a gota mais visível que o rasto, e um movimento horizontal pelo vento, de acordo com o ângulo.

Para não falar das vagas de intensidade. Por vezes a chuva fica muito amena e quase que pára, e por outras vem em força como se fosse um dilúvio (poderia meter ainda mais forte). 😛

Tudo isto é calculado. Não optimizei demasiado, mas está relativamente bem optimizado.

21.000 partículas como? Se repararem, cada gota de chuva tem um traço, e quando atinge o chão, nasce outra gota de chuva para a substituir (para ter umas até 7.000 gotas no ecrã em simultâneo), e dá origem a pelo menos duas gotas no chão para fazer o efeito de “splash”, que aqui é tão rápido que não dá para ver bem. Assim, chegamos a ter 21.000 ou mais objectos em simultâneo no ecrã, sem chegar a entre 2% a 5% do CPU. É o poder do C/C++…

O vento aqui não meti variável, e assim apesar de não estar tão realista, dá para ver melhor como mexe a chuva com o vento, fiz com que andasse para os dois lados, um de cada vez, mas poderei meter aleatório depois.

Eu tinha prometido a mim mesmo que só comprava um computador novo 5 anos depois, e andava com um portátil já meio avariado, mas já passaram os 5 anos, e agora ando com um I5 melhor, mas temporário, pois depois ofereço este à minha mãe quando souber bem o que vou comprar (será bem mais potente) para os próximos 5 anos.

Mas pode-se dizer que o meu Game Engine que no outro dava uns 5 a 20 FPS já nos limites em Fevereiro (quando começou a dar o berro de vez), neste fraco I5 dá uns 2000 FPS facilmente, podendo ir milhares de FPS acima.

Poderia ainda definir a altura dos splashes consoante a distância, ainda não o fiz (está “aleatório”), sou capaz de o fazer depois, mas ficará assim, mais ou menos.

Recordo que na vida real, gotas são só gotas, e parecem-nos riscos no chão, por “ilusão óptica”, e nas fotos também, porque as máquinas não capturam tão rápido de forma a captarem só gotas, por isso capturam riscos. Uma máquina a sério já capturaria gotas sem riscos. Para simular essa nossa ilusão óptica, e até a das câmeras, eu desenhei os riscos à pata.

Meti como é óbvio o cálculo do ângulo consoante o vento, e a velocidade a que se move horizontalmente de acordo com a mesma.

Sou capaz de ainda trabalhar numa surpresa para adicionar à chuva, mas depois partirei para outros projectos, e deixar de lado este umas semanas (o Game Engine).

2021-07-26.

2021-07-26 - Chuva já com vento, e teste de performance, para o meu Game Engine em C/C++...
2021-07-26 – Chuva já com vento, e teste de performance, para o meu Game Engine em C/C++…

Publicado no LinkedIn em 2021-07-26:

«A minha simulação de chuva, já com vento, para o meu Game Engine, em C/C++. Para uma simulação mais longa, ver o gif no link do meu website abaixo.

Num fraco I5, com mais de 2 dezenas de milhares de objectos no ecrã, não gasta mais de 2% a 5% do processador. Fiz assim algo optimizado qb, para adicionar ao meu Game Engine.

Tem muitas layers de proximidade, e isso influenciará como na realidade, as transparências das gotas de chuva, a velocidade com que caem (aparentemente, devido ao ângulo de visão, já que a Gravidade é a mesma), os seus tamanhos, etc, com “aleatoriedade” inserida, e com os splashes das gotas ao baterem no chão, e até uma gota mais fortemente visível que o seu rasto, o ângulo causado pelo vento, a velocidade horizontal de acordo com o ângulo, etc. Tudo é calculado.

Ah, e tem intensidade variável, podem ver que por vezes fica mais ameno, e por outras: “It’s raining cats and dogs”!

O rasto é adicionado para simular a ilusão óptica de parecer um risco (também visível nas fotos), apesar de ser apenas uma gota.

Num fraco I5 conseguiria ter 140.000 a 350.000 objectos no ecrã a correr nos 60 FPS. É o poder do C/C++.

O vento aqui está manualmente programado, mais tarde meto aleatório.

2021-07-26.»

In: https://www.linkedin.com/feed/update/urn:li:activity:6825468069582831616/.

E no Twitter, no mesmo dia, em: https://twitter.com/GonzaloNuno/status/1419712517715243010.

2021-07-26 - Chuva já com vento, e teste de performance, para o meu Game Engine em C/C++...
2021-07-26 – Chuva já com vento, e teste de performance, para o meu Game Engine em C/C++…

Leave a Reply

Your email address will not be published. Required fields are marked *

RSS
Follow by Email
LinkedIn
LinkedIn
Share