Muitas empresas e pessoas do mundo da TI afirmam que o WebGL é a tecnologia do futuro. Essa afirmação está correta? O WebGL tem muitas vantagens, e uma das maiores é o fato de ser uma tecnologia que pode revolucionar a experiência de jogos. Com o WebGL, podemos jogar jogos em 3D diretamente no navegador sem fazer download de nenhum plug-in. Na era do acesso fácil à Internet, os projetos baseados na Web têm grande potencial de comercialização, o que é tentador para os grandes participantes do mercado de jogos. Quais são os pontos negativos, então? Em primeiro lugar, a tecnologia WebGL não é tão fácil.


Necessidade de estruturas

A tecnologia WebGL não é fácil para os desenvolvedores e é quase impossível codificá-la sem uma estrutura. O mecanismo AexolGL é a solução. Tivemos a ideia de criar uma estrutura que tornasse fácil e agradável escrever um código WebGL. Nosso objetivo era fazer todo o trabalho pesado para o desenvolvedor e acho que conseguimos. O uso do AexolGL garante que os desenvolvedores não precisem se preocupar com funções GL complicadas. O AexolGL vem com RenderTree e GameObjects simples:



//Treemethod
world = newScene()
shad = basicShader({})
shad.setParent(world) 
mat = new Material({color:[1.0,1.0,1.0]}) 
mat.setParent(shad)
sphereMesh = Mesh.sphere() 
sphereMesh.setParent(sphereMesh) 
sphere1 = new Aex() 
sphere1.setParent(sphereMesh) 
sphere2 = new Aex() 
sphere2.setParent(sphereMesh) 
sphere2.move(0,2,0)

//GameObject method
sphere3 = new GameObject(world, { 
	mesh: Mesh.sphere(30).scaleUniform(50.0), 
	shader: basicShader({}), 
	material: new Material({color:[1.0,1.0,1.0]}) 
})
sphere3.rotate(0,90,0)


Desempenho aprimorado da textura

Obviamente, o WebGL tem suas falhas. Há alguns campos em que ele precisa ser aprimorado ou até mesmo reimaginado. Um bom exemplo é o desempenho de textura do WebGL, que é um pouco arcaico, pois o senhor precisa compartilhar a memória entre texturas e eventos de tempo de execução. O AexolGL vincula as texturas a uma malha, desenha um objeto e, por fim, desvincula as texturas. Com esse sistema de textura, o senhor pode ter o número máximo de texturas por malha. Além disso, ele melhora o desempenho em placas gráficas mais antigas e integradas.


Sistema de pivô com infinitos graus de liberdade

Os pivôs AexolGL são criados para configurar matrizes de objetos 3D. Vamos tomar um carro como exemplo. Ele tem 4 rodas (geralmente). Uma roda gira em torno do eixo X quando o senhor acelera ou freia. O senhor também precisa girá-la em torno do eixo Y para virar. Se o pneu furar, o senhor terá de removê-lo e colocá-lo no porta-malas. Como lidar com esses eventos? A solução é o sistema Pivot do AexolGL, com o qual o senhor pode criar quantos sistemas de coordenadas locais quiser.



speedOfWheel = newPivot() speedOfWheel.add(car.tire).add(car.inner_rim).add(car.Material__80).setPivot(car.tire.position)
turnOfWheel = newPivot() turnOfWheel.add(speedOfWheel.setPivotToCenter()


Reflexões fáceis e agradáveis

O que torna as cenas em 3D tão bonitas? A resposta é o simples realismo.


Reflexão do WebGL


Exemplos mais detalhados em http://gl.aexol.com


O AexolGL oferece muitos recursos visuais que podem aprimorar seus projetos. Crie belos mapas de reflexos a partir de imagens ou encaixe-os em um ambiente 3D. Os reflexos são especialmente úteis no que diz respeito à representação realista de elementos de metal ou pintura de automóveis.



Cena WebGL

Apontar luzes com sombras

Estamos cientes de que nosso mundo 3D não pode parecer real sem sombras. É por isso que criamos recursos de sombreamento, como sombreamento de luz pontual em tempo real e sistema de sombras duras, que dão ao senhor liberdade para criar sombras.


Implementação do Cubic ZBuffer

Encaixe todo o ambiente em um cubo para uso posterior como um mapa de ambiente, sombra ou reflexão. Crie um Zbuffercube e coloque-o no local desejado.


Um projeto duradouro

Atualmente, muitos mecanismos WebGL são criados e logo abandonados. Embora nosso mecanismo WebGL seja totalmente gratuito, continuaremos ampliando sua funcionalidade. Não se trata de um projeto do GitHub com poucos colaboradores, mas de um projeto científico que terá continuidade eternamente. Podemos garantir isso? SIM, somos um estúdio de desenvolvimento de jogos e aplicativos e passamos muito tempo testando diferentes mecanismos de jogos, tentando encontrar o que melhor se adequaria aos nossos projetos. Por fim, aprendemos que, se quisermos ter um mecanismo perfeito, devemos criá-lo nós mesmos.


A Corrida Silenciosa

Quando começamos a criar nosso mecanismo da Web, o WebGL era compatível apenas com o Firefox e o Google Chrome. Agora está se tornando cada vez mais popular. No primeiro trimestre de 2014, a Unity declarou seu compromisso com a visão da Mozilla de alto desempenho e experiência na Web sem plugins. Não tivemos que esperar muito pela resposta do gigante de Cupertino. Em março de 2014, a Apple entrou silenciosamente na corrida e começou a oferecer suporte à tecnologia WebGL em seu navegador Safari. Com o iOS 8 no horizonte, a WebGL parece estar pronta para se tornar a tecnologia do futuro.

Artur Czemiel

Sobre Artur Czemiel

Artur é um desenvolvedor móvel, proprietário do Aexol – estúdio de aplicativos com sede na Polônia. Sua formação é em gráficos 3D e produção FX. Quando não está on-line, o senhor o encontrará ouvindo Bob Marley ou experimentando a cozinha oriental.