TUTORIAL 20 - UTILIZANDO SHADERS NO 3D GAME BUILDER
Este tutorial tem como objetivo mostrar como utilizar os recursos de shaders do 3D Game Builder para criar materiais e texturas realistas.
Shader são conjuntos de instruções de software que são utilizados principalmente para calcular e renderizar efeitos no hardware gráfico, com os shader é possível programar diretamente para a unidade de processamento gráfico (GPU).
Os shaders são divididos em dois tipos:
- Pixel Shader - Shader utilizado para trabalhar na estrutura dos pixels depois que os objetos são rasterizados. Com o pixel shader podemos criar efeitos nas imagens, como efeitos de vidro, rugosidade, desfoque e etc. Além disso, também permitem a criação de texturas procedurais.
- Vertex Shader - Shader utilizado para trabalhar na estrutura de vértices dos objetos 3D, podendo modificar a sua estrutura em tempo de execução. É utilizado para otimização dos objetos 3D, pois a partir da programação conseguimos detalhes ou efeitos que seriam muito árduos para serem criados durante a modelagem. Por exemplo modelar as ondas de um oceano além de ser difícil conseguir um resultado bom, alterá-lo dinamicamente para o mar não ficar estático é muito trabalhoso, um vertex shader é capaz de fazer isso com poucas linhas de código.
O 3D Game Builder possui 6 shaders pré definidos:
- Diffuse Specular Shader
- Cel Shading
- Bump Mapping
- Toon Shading
- Gooch Light
- Environment Mapping
A seguir serão apresentados mais detalhes sobre os shaders pré definidos.
O Diffuse Specular Shader é utilizado para simular iluminação mais realista nos objetos. As propriedades do Diffuse Specular Shader são:
- Enabled - Habilita/Desabilita o shader;
- Realistic Specular - Habilita/Desabilita o uso do specular realista;
- Specular Power - Define a intensidade do specular;
- Light Power - Define a intensidade da luz;
O resultado produzido pelo Diffuse Specular Shader é o seguinte:
O Cel Shader permite criar contornos nos objetos 3D, em conjunto com texturas simples pode ser utilizado de modo que o resultado final se assemelhe ao de desenhos em 2D. As propriedades do Cel Shader são:
- Enabled - Habilita/Desabilita o shader;
- OutLines - Habilita/Desabilita os contornos desenhados no objeto;
- Textured - Habilita/Desabilita a textura do objeto;
- BuildShadeTexture - Habilita/Desabilita o shader como textura;
- OutLineWidth - Define o tamanho da linha dos contornos do objeto;
- OutLineColor - Define a cor das linhas do contorno criadas pelo shader no objeto;
O resultado produzido pelo Cel Shader é o seguinte:
O Bump Mapping Shader é utilizado para simular superfícies realistas utilizando texturas. As propriedades do Bump Mapping Shader são:
- Enabled - Habilita/Desabilita o shader.
- Normal Map Texture - Define a textura que será utilizada como normal map para perturbar a iluminação da superfície.
O resultado produzido pelo Bump Mapping Shader é o seguinte:
O Toon Shader é semelhante ao Cel Shader porem não utiliza textura nos objetos. As propriedades do Toon Shader são:
- Enabled - Habilita/Desabilita o shader.
- Edge - Define o limite das bordas.
- Phong - Define o limite para a cor phong.
- Diffuse Color - Define a cor difusa do objeto.
- Phong Color - Define a cor phong do objeto.
O resultado produzido pelo Toon Shader é o seguinte:
O Gooch Shader é utilizado para simular iluminações não foto realistas. As propriedades do Gooch Shader são:
- Enabled - Habilita/Desabilita o shader.
- DiffuseWarm - Define o limite da cor warm (quente) do objeto.
- DiffuseCool - Define o limite da cor cool (fria) do objeto.
- Surface Color - Define a cor da superficie do objeto.
- Warm Color - Define a cor warm (quente) do objeto.
- Cool Color - Define a cor cool (fria) do objeto.
O resultado produzido pelo Gooch Shader é o seguinte:
O Environment Mapping Shader é utilizado para simular reflexões nos objetos. As propriedades do Environment Mapping Shader são:
- Enabled - Habilita/Desabilita o shader.
- Environment Map Texture - Define a textura que seja utilizada para o environment map.
- MixRatio - Define a o valor para interpolação linear.
- Base Color - Define a cor base do do objeto.
O resultado produzido pelo Environment Mapping Shader é o seguinte:
Além dos shaders pré definidos o 3D Game Builder também oferece a possibilidade de o usuário programar os seus próprios shaders através da opção Custom Shader. A linguagem utilizada para a criação dos shaders é a linguagem GLSL, mais informações sobre a linguagem pode ser encontrada no seguinte link: http://www.opengl.org/documentation/glsl/
Após a criação de um shader pré definido ou a programação um novo shader ele já poderá ser associado aos materiais utilizados nos objetos. Para isso acesso o banco de dados de materiais (Banco de Dados -> Materiais).
Todo material possui a opção "Material Shader" e nela duas sub opções: o "Shader Type" que referece ao tipo shader (Diffuse Specular Shader, Cel Shading, Bump Mapping, Toon Shading, Gooch Light, Environment Mapping ou Custom Shader) e a segunda sub opção é a definição de qual shader será utilizado. Por exemplo, se criarmos um novo shader do tipo "Gooch Shader" no banco de dados de Gooch Shaders (Banco de Dados ->Shaders -> Gooch Shader) ao selecionarmos o tipo de shader "Gooch Shader" no material o shader que criamos será listado e poderemos selecioná-lo para aplicá-lo no material.
Após selecionar um shader será possível visualizá-lo na janela de materiais. Salvando o material em que o shader foi associado é possível aplicá-lo normalmente em qualquer objeto do cenário.
A maioria dos shaders dependem de uma fonte de luz, lembre-se de sempre adicionar um fonte de luz no cenário, caso contrario o shader não irá funcionar corretamente.