방법: 기본 퐁 셰이더 만들기How to: Create a Basic Phong Shader

이 문서에서는 셰이더 디자이너 및 DGSL(Directed Graph Shader Language)을 사용하여 기본형 퐁 조명 모델을 구현하는 조명 셰이더를 만드는 방법을 보여 줍니다.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.

퐁 조명 모델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. 퐁 조명 모델에서 하나 이상의 반사 구성 요소가 결합되어 개체의 각 점에 대한 반사 강조 표시의 색 및 강도를 결정하고 램버트 조명의 결과에 추가되어 픽셀의 최종 색을 생성합니다.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.

  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 매개 변수를 사용하여 주황색이 지정되었고, MaterialSpecularMaterialSpecularPower 매개 변수를 사용하여 금속 재질 마감이 지정되었습니다.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

다음 그림은 3D 모델에 적용되는 이 문서에서 설명된 셰이더를 보여줍니다.The following illustration shows the shader that's described in this document applied to a 3D 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

3D 모델에 셰이더를 적용하는 방법에 대한 자세한 내용은 방법: 3D 모델에 셰이더 적용을 참조하세요.For more information about how to apply a shader to a 3D model, see How to: Apply a Shader to a 3D Model.

참고 항목See also