Particulas

técnicas, metodologias, ferramentas e resolução de problemas de programação
Avatar do Utilizador
Losty
Hello World
Mensagens: 7
Contacto:

Particulas

Mensagem#1 » terça dez 09, 2014 11:52 am

Abri este topico porque estou a falar disso numa aula de programação e queria perguntar:
-Como estão a fazer o draw? Gota a gota ou todas juntas?;
-Como calculam a posição e lhe fazem o update?;
Thanks ;)
Your coding skils are inferior :evil:

Avatar do Utilizador
Relfos
Hello World
Mensagens: 45

Re: Particulas

Mensagem#2 » terça dez 09, 2014 12:48 pm

Boas!
Eu uso um engine feito por mim e posso dar umas dicas sobre isso.

Para performance máxima tens de desenhar as particulas todas juntas. O "tudo junto" aqui pode ser tudo junto por sistema de particulas ou tudo junto para todas as particulas activas no jogo.

Idealmente vais querer suportar um sistema que junte automaticamente várias texturas de particulas numa só textura enorme (normalmente chamado de texture atlas), para que possas desenhar tudo numa draw call.

Quanto aos updates, depende do jogo, mas digo-te que pelo que vi a não ser que estejas a fazer algo next-gen ultra pipi, não tens problemas nenhuns se fizeres o update na thread principal do jogo. Alternativas mais avançadas incluiem fazer o update das particulas numa thread em separado ou mesmo no gpu (é a mais complicada de implementar, mas se quiseres ter um numero absurdo de particulas no ecrân, é o indicado).

Quanto a calcular a posição, isso depende muito do design do sistema de particulas. Podes usar formulas simples que dependem apenas do tempo (e ai até é trivial simulares as particulas no gpu usando um vertex shader). Ou podes querer algo mais complexo em que suportas colisões com outros objectos ou forças externas (vento, etc).

Avatar do Utilizador
GoncaloSilva
Hello World
Mensagens: 12
Contacto:

Re: Particulas

Mensagem#3 » terça dez 09, 2014 2:39 pm

Losty Escreveu:Abri este topico porque estou a falar disso numa aula de programação e queria perguntar:
-Como estão a fazer o draw? Gota a gota ou todas juntas?;
-Como calculam a posição e lhe fazem o update?;
Thanks ;)


Que game engine/framework estás a usar para o efeito?

Aquilo que o Relfos disse está totalmente correcto. Deves desenhar todas juntas para obteres o máximo de performance possível, independentemente de queres desenhar 10, 100 ou 100 mil partículas a 60 FPS. Um GPU não consegue ter as imagens todas carregadas em memória ao mesmo tempo, e perde IMENSO tempo de cada vez que tem de trocar de imagem para desenhar um objecto diferente (podes procurar por "texture batching" para saber mais sobre o problema). Mesmo que não estejas a usar os chamados texture atlas, consegues ter ganhos de performance na mesma ao fazeres com que as partículas sejam desenhadas de forma consecutiva.

Pela conversa parece-me que o código para gerires as partículas está a ser escrito por ti, pelo que sugeria leres sobre o padrão de desenho "Object Pool" (http://gameprogrammingpatterns.com/object-pool.html). Simplifica imenso a tua gestão das partículas, e ajuda a pre-alocar memória dedicada para o efeito em vez de criares e libertares memória enquanto o jogo está a correr.
http://twitter.com/goncalofsilva
Programador no Hexcape, Omm e outros projectos doidos

Avatar do Utilizador
Losty
Hello World
Mensagens: 7
Contacto:

Re: Particulas

Mensagem#4 » terça dez 09, 2014 9:50 pm

Well, respondeste a mais do que eu queria até! xDD
Vai-me ser útil ;) Obrigadão! :D
Your coding skils are inferior :evil:

Avatar do Utilizador
Losty
Hello World
Mensagens: 7
Contacto:

Re: Particulas

Mensagem#5 » quarta dez 10, 2014 5:14 pm

Que game engine/framework estás a usar para o efeito?


Sorry Gocalo Silva, só vi a tua mensagem agora xD
Estou em introdução a programação 3D e temos de programar particular por nos em Monogame (C#)
Your coding skils are inferior :evil:

Avatar do Utilizador
Losty
Hello World
Mensagens: 7
Contacto:

Re: Particulas

Mensagem#6 » quarta dez 10, 2014 5:16 pm

GoncaloSilva Escreveu:Que game engine/framework estás a usar para o efeito?



Introdução a Programação 3D é uma disciplina no curso de Engenharia em Desenvolvimento de Jogos Digitais que estou a tirar no Instituto Politécnico do Cávado e Ave :)
Your coding skils are inferior :evil:

jbernardo
Hello World
Mensagens: 1

Re: Particulas

Mensagem#7 » terça dez 16, 2014 6:51 pm

GoncaloSilva Escreveu:Pela conversa parece-me que o código para gerires as partículas está a ser escrito por ti, pelo que sugeria leres sobre o padrão de desenho "Object Pool" (http://gameprogrammingpatterns.com/object-pool.html). Simplifica imenso a tua gestão das partículas, e ajuda a pre-alocar memória dedicada para o efeito em vez de criares e libertares memória enquanto o jogo está a correr.


Obrigado pela referência, Gonçalo. Não conhecia. http://gameprogrammingpatterns.com

ruim
Hello World
Mensagens: 21

Re: Particulas

Mensagem#8 » quarta jan 07, 2015 7:32 pm

Um artigo que me ajudou muito a criar sistemas de particulas foi este: http://tomlee.co/misc/jakobsens-advance ... annotated/
A matemática é bastante fácil e tem pequenos exemplos de pseudo-código.
Se o que queres é criar explosões e efeitos semelhantes não necessitas sequer entrar nas partes de resolver colisões.
Abraço

Voltar para “Programação”

Quem está ligado:

Utilizadores neste fórum: Nenhum utilizador registado e 1 visitante

cron