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.