Como criar um sombreador Phong básicoHow to: Create a basic Phong shader

Este artigo demonstra como usar o Designer de Sombreador e o DGSL (Directed Graph Shader Language) para criar um sombreador de iluminação que implementa o modelo de iluminação de Phong clássico.This article demonstrates how to use the Shader Designer and the Directed Graph Shader Language (DGSL) to create a lighting shader that implements the classic Phong lighting model.

O modelo de iluminação de PhongThe Phong lighting model

O modelo de iluminação de Phong amplia o modelo de iluminação de Lambert para incluir o realce especular, que simula as propriedades de reflexão de uma superfície.The Phong lighting model extends the Lambert lighting model to include specular highlighting, which simulates the reflective properties of a surface. O componente especular fornece iluminação adicional das mesmas fontes de luz direcionais que são usadas no modelo de iluminação Lambert, mas sua contribuição para a cor final é processada de forma diferente.The specular component provides additional illumination from the same directional light sources that are used in the Lambert lighting model, but its contribution to the final color is processed differently. O realce especular afeta cada superfície na cena de forma diferente, com base na relação entre a direção da exibição, a direção das fontes de luz e a orientação da superfície.Specular highlighting affects every surface in the scene differently, based on the relationship between the view direction, the direction of the light sources, and the orientation of the surface. É um produto da cor especular, do potencial de reflexão e da orientação da superfície e a cor, intensidade e direção das fontes de luz.It's a product of the specular color, specular power, and orientation of the surface, and the color, intensity, and direction of the light sources. As superfícies que refletem a fonte de luz diretamente no visualizador recebem a contribuição especular máxima e as superfícies que refletem a fonte de luz distante do visualizador não recebem nenhuma contribuição.Surfaces that reflect the light source directly at the viewer receive the maximum specular contribution and surfaces that reflect the light source away from the viewer receive no contribution. No modelo de iluminação de Phong, um ou mais componentes especulares são combinados para determinar a cor e a intensidade do realce especular para cada ponto no objeto e, em seguida, são adicionados ao resultado do modelo de iluminação de Lambert para produzir a cor final do pixel.Under the Phong lighting model, one or more specular components are combined to determine the color and intensity of specular highlighting for each point on the object, and then are added to the result of the Lambert lighting model to produce the final color of the pixel.

Para obter mais informações sobre o modelo de iluminação de Lambert, confira Como criar um sombreador Lambert básico.For more information about the Lambert lighting model, see How to: Create a basic Lambert shader.

Antes de começar, verifique se a janela Propriedades e a Caixa de Ferramentas estão sendo exibidas.Before you begin, make sure that the Properties window and the Toolbox are displayed.

  1. Criar um sombreador Lambert, conforme descrito em Como criar um sombreador Lambert básico.Create a Lambert shader, as described in How to: Create a basic Lambert shader.

  2. Desconecte o nó Lambert do nó Cor Final.Disconnect the Lambert node from the Final Color node. Escolha o terminal RGB do nó Lambert e, em seguida, escolha Quebrar Links.Choose the RGB terminal of the Lambert node, and then choose Break Links. Isso abre o espaço para o nó que será adicionado na próxima etapa.This makes room for the node that's added in the next step.

  3. Adicione um nó Adicionar ao grafo.Add an Add node to the graph. Na Caixa de Ferramentas, em Matemática, selecione Adicionar e mova-a para a superfície de design.In the Toolbox, under Math, select Add and move it to the design surface.

  4. Adicione um nó Especular ao gráfico.Add a Specular node to the graph. Na Caixa de Ferramentas, em Utilitário, selecione Especular e mova-o para a superfície de design.In the Toolbox, under Utility, select Specular and move it to the design surface.

  5. Adicione a contribuição especular.Add the specular contribution. Mova o terminal de Saída do nó Especular para o terminal X do nó Adicionar e, em seguida, mova o terminal de Saída do nó Lambert para o terminal Y do nó Adicionar.Move the Output terminal of the Specular node to the X terminal of the Add node, and then move the Output terminal of the Lambert node to the Y terminal of the Add node. Essas conexões combinam as contribuições de cor difusa e especular totais para o pixel.These connections combine the total diffuse and specular color contributions for the pixel.

  6. Conecte o valor de cor calculado à cor final.Connect the computed color value to the final color. Mova o terminal de Saída do nó Adicionar para o terminal RGB do nó Cor Final.Move the Output terminal of the Add node to the RGB terminal of the Final Color node.

    A ilustração a seguir mostra o grafo de sombreador concluído e uma visualização do sombreador aplicado a um modelo de bule.The following illustration shows the completed shader graph and a preview of the shader applied to a teapot model.

Observação

Para demonstrar melhor o efeito do sombreador nesta ilustração, foi especificada uma cor laranja usando o parâmetro MaterialDiffuse do sombreador e foi especificado um acabamento de aparência metálica usando os parâmetros MaterialSpecular e MaterialSpecularPower.To better demonstrate the effect of the shader in this illustration, an orange color has been specified by using the MaterialDiffuse parameter of the shader, and a metallic-looking finish has been specified by using the MaterialSpecular and MaterialSpecularPower parameters. Para obter informações sobre parâmetros de material, consulte a seção Visualização de Sombreadores em Designer de Sombreador.For information about material parameters, see the Previewing Shaders section in Shader Designer.

Grafo de sombreador e uma versão prévia de seu efeito

Determinadas formas podem fornecer melhores visualizações para alguns sombreadores.Certain shapes might provide better previews for some shaders. Para obter mais informações sobre como Visualizar sombreadores no designer do sombreador, consulte a seção visualizações de sombreadores no Designer de sombreadorFor more information about how to preview shaders in the Shader Designer, see the Previewing Shaders section in Shader Designer

A ilustração a seguir mostra o sombreador que é descrito neste documento, aplicado a um modelo 3D.The following illustration shows the shader that's described in this document applied to a 3D model. A propriedade MaterialSpecular foi definida como (1,00, 0,50, 0,20, 0,00) e sua propriedade MaterialSpecularPower foi definida como 16.The MaterialSpecular property is set to (1.00, 0.50, 0.20, 0.00), and its MaterialSpecularPower property is set to 16.

Observação

A propriedade MaterialSpecular determina o acabamento aparente do material da superfície.The MaterialSpecular property determines the apparent finish of the surface material. Uma superfície brilhante como vidro ou plástico tende a apresentar uma cor especular com uma tonalidade clara de branco.A high-gloss surface such as glass or plastic tends to have a specular color that is a bright shade of white. Uma superfície metálica tende a apresentar uma cor especular próxima de sua cor difusa.A metallic surface tends to have a specular color that is close to its diffuse color. Uma superfície de acabamento acetinado tende a apresentar uma cor especular com um tom de cinza escuro.A satin-finish surface tends to have a specular color that is a dark shade of gray.

A propriedade MaterialSpecularPower determina a intensidade dos realces especulares.The MaterialSpecularPower property determines how intense the specular highlights are. Alta potência especular simula realces mais opacos e localizados.High specular powers simulate duller, more-localized highlights. A potência especular muito baixa simula realces intensos e abrangentes que podem saturar e ocultar a cor da superfície inteira.Very low specular powers simulate intense, sweeping highlights that can oversaturate and conceal the color of the whole surface.

Iluminação Phong aplicada a um modelo

Para obter mais informações de como aplicar um sombreador a um modelo 3D, confira Como aplicar um sombreador a um modelo 3D.For more information about how to apply a shader to a 3D model, see How to: Apply a shader to a 3D model.

Confira tambémSee also