方法: 基本フォン シェーダーを作成するHow to: Create a Basic Phong Shader

このドキュメントでは、シェーダー デザイナーと DGSL (Directed Graph Shader Language) を使用してクラシック フォン照明モデルを実装するための照明シェーダーを作成する方法について説明します。This document 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.

このドキュメントでは、以下のアクティビティについて説明します。This document demonstrates these activities:

  • シェーダー グラフへのノードの追加Adding nodes to a shader graph

  • ノードの接続の解除Disconnecting nodes

  • ノードの接続Connecting nodes

フォン照明モデルThe Phong lighting model

フォン照明モデルは、ランバート照明モデルを拡張して、サーフェイスの反射プロパティをシミュレートする反射ハイライトを含めたものです。The Phong lighting model extends the Lambert lighting model to include specular highlighting, which simulates the reflective properties of a surface. 反射コンポーネントは、ランバート照明モデルで使用されるのと同じ指向性光源からの追加の照明となりますが、最終的な色に対する効果の処理は異なります。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. 反射ハイライトがシーン内のサーフェイスに与える影響は、ビューの方向、光源の方向、サーフェイスの向きの間の関係によって、サーフェイスごとに異なります。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. これは、サーフェイスの反射の色、反射の度合い、向きと、光源の色、輝度、方向で決まります。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. ビューアーで光源を直接反射するサーフェイスは最大の反射効果を受け、ビューアーと反対側で光源を反射するサーフェイスは効果を受けません。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. フォン照明モデルでは、1 つ以上の反射コンポーネントの組み合わせで、オブジェクトのポイントごとに反射ハイライトの色と輝度が決まります。これらのコンポーネントは、ランバート照明モデルの結果に追加されて、ピクセルの最終的な色が生成されます。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.

ランバート ライティング モデルの詳細については、「方法: 基本ランバート シェーダーを作成する」を参照してください。For more information about the Lambert lighting model, see How to: Create a Basic Lambert Shader.

開始する前に、[プロパティ] ウィンドウとツールボックスが表示されていることを確認します。Before you begin, make sure that the Properties window and the Toolbox are displayed.

フォン シェーダーを作成するにはTo create a Phong shader

  1. 方法: 基本ランバート シェーダーを作成する」の説明に従って、ランバート シェーダーを作成します。Create a Lambert shader, as described in How to: Create a Basic Lambert Shader.

  2. [最終的な色] ノードから [ランバート] ノードを接続解除します。Disconnect the Lambert node from the Final Color node. [ランバート] ノードの [RGB] ターミナルを選択し、[リンクの解除] を選択します。Choose the RGB terminal of the Lambert node, and then choose Break Links. これにより、次の手順で追加するノードのための領域を確保できます。This makes room for the node that's added in the next step.

  3. グラフに [追加] ノードを追加します。Add an Add node to the graph. ツールボックス[数式][追加] を選択し、デザイン サーフェイスに移動します。In the Toolbox, under Math, select Add and move it to the design surface.

  4. グラフに [反射] ノードを追加します。Add a Specular node to the graph. ツールボックス[ユーティリティ][反射] を選択し、デザイン サーフェイスに移動します。In the Toolbox, under Utility, select Specular and move it to the design surface.

  5. 反射の効果を追加します。Add the specular contribution. [反射] ノードの [出力] ターミナルを [追加] ノードの [X] ターミナルに移動し、[ランバート] ノードの [出力] ターミナルを [追加] ノードの [Y] ターミナルに移動します。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. これらの接続により、ピクセルに対する総拡散色効果と総反射色効果が組み合わされます。These connections combine the total diffuse and specular color contributions for the pixel.

  6. 計算された色の値を最終的な色に接続します。Connect the computed color value to the final color. [追加] ノードの [出力] ターミナルを、[最終的な色] ノードの [RGB] ターミナルに移動します。Move the Output terminal of the Add node to the RGB terminal of the Final Color node.

    次の図は、完成したシェーダー グラフと、ティーポット モデルに適用されるシェーダーのプレビューを示しています。The following illustration shows the completed shader graph and a preview of the shader applied to a teapot model.

注意

この図では、シェーダーの効果を分かりやすくするために、シェーダーの MaterialDiffuse パラメーターを使用してオレンジ色が指定されています。また、MaterialSpecular パラメーターと 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. マテリアル パラメーターについては、「シェーダー デザイナー」の「シェーダーのプレビュー」を参照してください。For information about material parameters, see the Previewing Shaders section in Shader Designer.

シェーダー グラフとその効果のプレビューShader graph and a preview of its effect

シェーダーによっては、特定の図形でより適切にプレビューできる可能性があります。Certain shapes might provide better previews for some shaders. シェーダー デザイナーでシェーダーをプレビューする方法の詳細については、「シェーダー デザイナー」の「シェーダーのプレビュー」を参照してください。For more information about how to preview shaders in the Shader Designer, see the Previewing Shaders section in Shader Designer

次の図は、このドキュメントで述べた、3-D モデルに適用されるシェーダーを示しています。The following illustration shows the shader that's described in this document applied to a 3-D model. MaterialSpecular プロパティは (1.00、0.50、0.20、0.00) に設定され、その MaterialSpecularPower プロパティは 16 に設定されています。The MaterialSpecular property is set to (1.00, 0.50, 0.20, 0.00), and its MaterialSpecularPower property is set to 16.

注意

MaterialSpecular プロパティは、表面の質感の外見上の仕上がりを決定します。The MaterialSpecular property determines the apparent finish of the surface material. ガラスやプラスチックなどの高光沢サーフェイスの場合、反射色は明るい色合い (白) になる傾向があります。A high-gloss surface such as glass or plastic tends to have a specular color that is a bright shade of white. 金属のようなサーフェイスの反射色は、その拡散色に近くなる傾向があります。A metallic surface tends to have a specular color that is close to its diffuse color. サテン仕上がりのサーフェイスの反射色は、暗い色合い (灰色) になる傾向があります。A satin-finish surface tends to have a specular color that is a dark shade of gray.

MaterialSpecularPower プロパティは、反射ハイライトの輝度を決定します。The MaterialSpecularPower property determines how intense the specular highlights are. 反射輝度が高い場合は、よりくすんだ、より局部的なハイライトがシミュレートされます。High specular powers simulate duller, more-localized highlights. 反射輝度が非常に低い場合は、広範囲に及ぶ強いハイライトがシミュレートされ、サーフェイス全体の色が過飽和状態になり隠されます。Very low specular powers simulate intense, sweeping highlights that can oversaturate and conceal the color of the whole surface.

モデルに適用されたフォン ライティングPhong lighting applied to a model

3-D モデルにシェーダーを適用する方法の詳細については、「方法: シェーダーを 3-D モデルに適用する」を参照してください。For more information about how to apply a shader to a 3-D model, see How to: Apply a Shader to a 3-D Model.

関連項目See Also

方法: シェーダーを 3-D モデルに適用する How to: Apply a Shader to a 3-D Model
方法: シェーダーをエクスポートする How to: Export a Shader
方法: 基本ランバート シェーダーを作成する How to: Create a Basic Lambert Shader
シェーダー デザイナー Shader Designer
シェーダー デザイナー ノードShader Designer Nodes