A Microsoft mostrou como se pode inserir física processada na Cloud em um sistema local. E apesar de o poder da nuvem ser inegável, isso não invalida que as questões existam sobre o que foi mostrado e como será implementado.
Introdução:
Vamos lá assentar ideias:
Um processador com um único núcleo possui uma determinada potência. E um processador igual com dois núcleos possui uma potência superior pois pode processar mais em paralelo. E um outro igual com 4 núcleos processará ainda mais, etc, etc.
O poder da nuvem advêm exactamente daí. Ali temos milhares de computadores a processar em paralelo pelo que é inegável que o que pode ser feito na Cloud não tem paralelo com o que pode ser feito localmente em apenas um único computador.
Tudo isto para dizer e deixar bem claro que o processamento Cloud é inegavelmente muito mais poderoso que qualquer processamento local, e quando for possível beneficiar do mesmo teremos situações como nunca tivemos. É o futuro, e disso ninguem tenha dúvidas.
A dúvida que surge então sobre a Cloud não é se a mesma possui potência ou não, ou se é capaz ou não. As respostas a isso são todas positivas! Assim que esse poder puder interagir com os nossos sistemas em quantidade e tempo útil, a Cloud será uma mais valia sem paralelo.
Mas isso não invalida que as dúvidas sobre a Cloud existam. E não se tratam de questões de poder de processamento, mas sim de como será esse serviço será implementado, ou seja prendem-se única e exclusivamente com a necessidade de apresentar um determinado volume de dados em tempo útil de os mesmos serem inseridos no cálculo dos fotogramas. Daí que as questões sobre a Cloud não se prendem, nem nunca se prenderam, sobre se esta é capaz, mas apenas se as ligações médias à internet seja a nível de velocidade, seja de latência, são ou não adequadas para a entrega desses dados em condições e em tempo útil.
E nesse aspecto, nada mudou!
Naturalmente uma das formas de ajudar a compensar a latência da internet é a limitação dos fotogramas a 30 em vez de 60. Essa situação permite o dobro do tempo para calculo de cada fotograma (1/30 por segundo em vez de 1/60 para cada fotograma) e dessa forma permite que os dados processados na cloud possam demorar o dobro do tempo a chegar. Esse é o motivo pelo qual a demo que vamos ver a seguir está limitada a aproximadamente 30 fotogramas (no ecrã aparece a indicação 32). Isso é feito para permitir a integração da melhor forma dos dados processados remotamente.
A demonstração do poder da Cloud da Microsoft
A Microsoft apresentou uma demonstração de como o processamento da física na Cloud pode beneficiar, e tremendamente, um sistema. E podem ver essa demonstração no vídeo de baixo.:
De acordo com as frases ditas pelos representantes da Microsoft os dois PCs usados são PCs gaming topo de gama (presume-se no mínimo, um i7 4770K com uma r9-290x (o meu sistema)). A diferença é que um deles está a processar localmente, e o outro está a processar toda a física na Cloud. E o que vemos é o resultado bem visível na imagem de topo deste artigo. o PC local a correr a 2 FPS, e o PC com processamento Cloud a manter 32 fps estáveis.
Um ganho de performances efectivamente impressionante.
Eis as declarações que acompanham a apresentação e que demonstram o poder da Cloud:
What we really think is that the power of the cloud enables new kinds of experiences that have never been possible. Even if we had multiple high end machines, they couldn’t do the kind of bandwidth that we’re doing.
O que realmente pensamos é que o poder da Cloud permite novos tipos de experiências que nunca foram possíveis antes. Mesmo que tivéssemos múltiplas máquinas topo de gama, elas não poderia processar a largura de banda que estamos a usar.
Ora como as nossas frases iniciais referem, isto é algo inegável. Não é possível localmente acumular-se o poder de processamento de que podemos ter numa Cloud, e as suas vantagens são pura e simplesmente uma realidade.
What’s happening is the computation are going on in the cloud, we’re sending those rotations and the positional information down to the clients where the rendering is getting done.
O que está a acontecer é que a computação está a ser realizada na Cloud, e estamos a mandar essas rotações e informação posicional para o cliente onde o render é realizado.
Apesar de tudo o que é dito há questões a colocar, e vamos coloca-las de seguida:
O que se passa com o computador que está a processar localmente!
Antes de falarmos sequer na Cloud há que questionar porque motivo o PC que processa os dados localmente se arrasta com o que está no ecrã!
Isto é Battlefield 4. Um jogo com grafismo de ultima geração, como todo o tipo de efeitos gráficos de topo, como Anti Aliasing MSAA 4X, Ambiente Oclusion, Field of View, particulas, texturas de alta resolução, transparências, reflexos, profundidade de campo, 1080p, etc, etc, etc.
A imagem mostra ainda água dinâmica, reflexos, texturas de alta definição, , efeitos de fumo, explosões e um prédio em total demolição usando física em todas as componentes de fumo, partículas, etc.
Este jogo correma 1080p, com 64 jogadores, som 7.1, cálculo de animações, interactividade entre jogadores e cálculo de trajectória de balas, veículos e física diversa e a uma média de 90 fps no meu PC topo de gama, sendo que já o joguei no mesmo sistema a 4K com uma média de 50 fps.
Mas esta é a demonstração da Microsoft. Um mundo simplista com uma textura no ceu e um lens flare que reflecte nos vidros (e é o único reflexo existente)! E mesmo assim, mesmo antes de qualquer tipo de animação de partículas, e apenas mostrando o mundo, o PC topo de gama da apresentação produz apenas 32 fotogramas por segundo.
A primeira pergunta é: Porquê?
Muitos poderão alegar que não posso fazer essa afirmação, e que o PC até pode estar a apresentar mais fotogramas, mas só vemos os 32 porque ele está limitado superiormente.
Mas isso não pode corresponder à verdade! Como a imagem de baixo mostra, aos 34 segundos só porque o missil passa no ecrã, os fotogramas já estão nos 26. E não me digam que um PC topo de gama não aguenta com o que está visível no ecrã. Mas que raio está ali a ser calculado dado que não são visíveis quaisquer efeitos ou geometria pesada?
Mas eis que começa a animação da física de partículas com o embate do primeiro míssil no prédio. E quando o PC local topo de gama atinge as 30 mil partículas os fps caem para os 2 fps.
É algo curioso! Especialmente quando vemos a demonstração de baixo a 60 fps a correr num PC e com meio milhão de partículas no ecrã.
Estranho não? Como é que um PC topo de gama se arrasta para mover pouco mais de 30 mil partículas e uma demonstração de 2009 mostra um PC a correr sem problemas com uma animação com meio milhão e com física de fluidos aplicada. São apenas 470 mil partículas mais e com uma física bem mais complexa que a mera gravidade!
Acho que desta forma fica claro que não posso de deixar de questionar que raio é que a Microsoft mostrou naquela demonstração.
Poderão argumentar: Pois, mas muito provavelmente o cálculo é feito usando apenas o CPU.
A questão é mesmo nesse caso, se um i7 já provou na demo que se segue poder mover 4 milhões de partículas a 30 fps apenas usando o CPU, terei de continuar a estranhar porque motivo ali, um suposto PC topo de gama, se arrasta a 2 fps quando atinge as 30 mil partículas e está a 12 fps com 7 mil. Tudo isto num cenário sem sombras, sem texturas, reflexos ou outros efeitos.
Note-se porém que estas afirmações anteriores não tiram o valor comparativo da demonstração.
O que importa aqui é que em circunstâncias iguais a Cloud processa melhor, mas no entanto a demonstração em causa deixa muitas questões no ar sobre o real motivo pelo qual o PC local, um topo de gama, apenas produz cerca de 37 mil partículas e a 2 fotogramas por segundo. E se for devido ao CPU, mais estranho fica quando por norma nos jogos o CPU não processa partículas ficando isso a cargo do GPU pelo que a comparação deveria ser entre o cálculo do GPU e a Cloud e não entre o cálculo do CPU e a Cloud.
Daí que com estes argumentos não se está a invalidar minimamente o poder inegável da Cloud (da qual ainda nem sequer falamos), mas apenas a questionar porque motivo o PC local processa tão pouco. Porque convenhamos que ter um PC que pode calcular 4 milhões de partículas a 30 fps apenas por CPU, a arrastar-se a 2 fps com cerca de 37 mil partículas e limitado a 32 fps num cenário simplista e sem partículas nenhumas, parece de certa forma tirar o mérito ao que vemos no processamento Cloud.
Sobre esta primeira parte deixo-vos com esta frase dos programadores relativa à componente técnica de inFamous: Second Son, recordando apenas que a PS4 não é um PC gaming topo de gama.
We can have particle systems with tens of thousands of particles without any trouble, and have up to a hundred or two thousand particles on screen at once in effects-heavy shots.
Podemos ter sistemas de partículas com dezenas de milhar de partículas sem qualquer problema, e ter até uma centena ou dois milhares de partículas no ecrã de uma vez em ecrãs carregados de efeitos.
Por isso, para já vamos aceitar que ali há apenas má programação. E isso desde que seja igual para ambos os lados torna a situação irrelevante, tornando perceptível que a Cloud realmente consegue milagres. É isso é um facto!
E mesmo que a placa gráfica liberte o CPU desses cálculos, a Cloud pode libertar a gráfica, deixando-a fazer outras coisas. É um caso onde o processamento sai sempre a ganhar.
Seja como for, com os argumentos de cima, sem questionar ou falar dos ganhos da Cloud, é apenas lógico questionar porque motivo o PC local debita tão pouco, mesmo com a justificação da Microsoft que o problema é a rotação das partículas. Mas se é assim, porque motivo aos 24 segundos e sem nenhuma partícula no ecrã o PC já esta com apenas 26 fps? Há algo aqui que está mal explicado, particularmente porque o video que se segue, aos 2 m possui muito mais que 30 mil partículas no ecrã (na realidade são 1 milhão), todas em rotação e sem ser a 2 fps.
E agora vamos falar da versão Cloud:
Se é inegável o ganho, uma realidade irrefutável dado o grande poder paralelo da Cloud e que não é possível ter-se localmente, há que questionar com que nível de integração e como a Microsoft pretende fazer chegar esses dados processados remotamente ao utilizador.
A tecnologia demonstrada é fabulosa e realmente inovadora. E pela primeira vez vemos algo a realmente acontecer em tempo real com a Microsoft a demonstrar que efectivamente é possível calcular remotamente física ou parte dela, e ainda assim integrar a mesma em tempo útil no processamento da imagem.
Basicamente a Microsoft remove a totalidade de um determinado processamento para a Cloud e envia os resultados, tal como TitanFall já tinha feito com a IA. Mas e como é que isso se enquadra com o resto do processamento local, nomeadamente o calculo de sombras e reflexos em tempo real dos objectos calculados remotamente? É possível enviar esses resultados em tempo útil de serem incluídos e processados esses dados devidamente integrados no contexto da imagem? Se repararem com atenção esta é uma dúvida real pois como o video deixa ver, apesar de o prédio ser todo em vidro, não há reflexos nos mesmos das partículas em queda.
Para além do mais, isto funciona com que largura de banda? E com que latência? Será isto apenas uma demonstração de conceito de tecnologia ou uma tecnologia que pode desde já ser implementada com as ligações actuais?
Isto são as questões que actualmente ficam no ar.
A questão é que nas nossas casas não temos as mesmas condições ideais existentes na apresentação, pelo há que questionar o que se passará com uma realidade que, de optimizada não tem nada: As nossas ligações!
Mas mais ainda, depois de se ver a ausência de reflexos dos materiais em queda nos vidros do prédio a outra questão a colocar é: E com que qualidade de imagem e nível de efeitos poderá este tipo de física interagir com o sistema local??
Como ressalva referimos que esta tecnologia é apenas um protótipo, e está em fase alpha, pelo que ainda há muito a melhorar.
Tal como a introdução deixa perceber, nós não vemos nem nunca vimos qualquer impossibilidade de haver grande processamento na Cloud, daí que esta demo não nos surpreende minimamente. O que vemos como difícil ou mesmo impossível é, com as ligações médias actualmente existentes onde as latências são elevadas e as largura de banda são reduzidas, é enviar todos esses dados em tempo útil para ser inserido nas cenas processadas localmente com a mesma qualidade do processado localmente.
Conclusão
Sinceramente e apesar de como o texto de cima ter deixado claro, existirem muitas questões face ao apresentado (a maior parte até nem tem a ver com a Cloud em si, mas com o processamento local), já estive mais céptico face à integração da Cloud com o processamento local do que estou agora. Acredito que latências sejam um problema, mas a Microsoft tem contornado os problemas de forma muito inteligente, e apesar de todas as afirmações e criticas de cima ao sistema visualizado, o mesmo é ainda muito prematuro e certamente melhorará.
No caso da IA que se julgava impossível de ser calculada em tempo útil, a Microsoft contornou o problema processando-a na totalidade remotamente e fornecendo os dados dos NPCs como se essas personagens fossem jogadores real. Aqui neste caso, o tipo de física apresentado, ao ser apenas aplicado a animações, cria um grande impacto visual, mas é de pouca importância se ocorre em tempo real ou se atrasa 2 ou três fotogramas. E sendo colocado como uma “espécie de layer”, dribla-se a questão da latência e a integração desses dados na imagem final, sendo que mesmo com uma qualidade de integração inferior, o resultado está lá e é impressionante.
Apesar de todas as questões de cima, estou agora inclinado a aceitar que a Microsoft poderá ter aqui uma grande arma para a sua Xbox One e que pode retirar grande parte da carga de processamento da física de situações relativas a animações secundárias. É um “driblar” das técnicas normais criando uma espécie de “layers de animação” que parece ser conseguido com bons efeitos. Na demonstração não há a inserção completa das animações com o cenário (a ausência de sombras e reflexos), mas tal eventualmente poderá igualmente ser “driblado”.
O certo é que se há quem consiga levar isto por diante é a Microsoft que certamente acredita poder vir a implementar a situação, seja agora, seja no futuro, e dado que o que foi demonstrado é apenas alfa, é certamente promissor.
No entanto há que tomar em conta que um jogo que dependa da Cloud será um jogo que não funcionará sem internet e que, tal como os jogos online, estará condenado a desaparecer assim que os recursos forem dedicados a outra coisa.