PhongShading

PhongShading[]

is a threedimensional graphics directive that specifies that faces of polygons and other filled graphics objects are to be drawn to reflect as a smooth surface using a normalvector interpolation shading.

PhongShading[d]

uses the attenuation factor d for the diffuse light.

PhongShading[d,s]

uses the attenuation factor s for the specular light.

PhongShading[d,s,a]

uses the attenuation factor a for the ambient light.

Details

  • PhongShading is also known as perpixel shading and Phong interpolation.
  • PhongShading is typically used to achieve smooth lighting on polygon surfaces.
  • The final colors are computed from the interpolation of the surface normals across polygons and the luminosity of the color resulting from standard shading.
  • PhongShading[d,s,a] specifies that the diffuse light on a 3D surface should be attenuated by a factor d, the specular light by s and the ambient light by a.
  • PhongShading[] is effectively equivalent to PhongShading[1,1,1].
  • The setting Lighting"Accent" uses a directional light and faithfully reproduces colors on the surface.
  • The basic shading models FlatShading, GouraudShading and PhongShading compared:

Examples

open allclose all

Basic Examples  (3)

Apply PhongShading to the unit sphere:

Style a plot with PhongShading:

Draw a 3D model with PhongShading:

Scope  (14)

Basic Uses  (5)

Apply Phong shading to a graphics primitive:

Apply Phong shading to a plot:

Apply Phong shading to a chart:

Apply Phong shading to a 3D object:

Summary box:

Specification  (5)

PhongShading with no arguments uses similar calculations as the default system shader:

Attenuate all light from the surface by a scaler value:

This is equivalent to specifying each attenuation factor explicitly:

Attenuate the diffuse light, setting other attenuation factors to zero:

Attenuate the specular light, setting other attenuation factors to zero:

Attenuate the ambient light, setting other attenuation factors to zero:

Lighting  (4)

PhongShading works with all types of lights:

Use colored lights:

The specular percentage only applies if the Specularity directive has been specified:

The ambient percentage only applies if an AmbientLight is has been specified:

Applications  (2)

Basic Applications  (2)

Show interior normals interpolated from vertex normals:

Triangle with identical vertex normals:

Triangle with a different normal at each vertex:

PhongShading can be separated into individual components for diffuse, specular and ambient lighting:

These components are summed to achieve the final result:

PhongShading performs the individual calculations and summation by default:

Properties & Relations  (4)

PhongShading uses VertexNormals if specified:

Specify FaceForm with PhongShading:

GouraudShading approximates the PhongShading when the screen size and shade variance across polygons are small:

PhongShading typically has a smaller specular highlight than the default system shader:

Wolfram Research (2022), PhongShading, Wolfram Language function, https://reference.wolfram.com/language/ref/PhongShading.html.

Text

Wolfram Research (2022), PhongShading, Wolfram Language function, https://reference.wolfram.com/language/ref/PhongShading.html.

CMS

Wolfram Language. 2022. "PhongShading." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/PhongShading.html.

APA

Wolfram Language. (2022). PhongShading. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/PhongShading.html

BibTeX

@misc{reference.wolfram_2024_phongshading, author="Wolfram Research", title="{PhongShading}", year="2022", howpublished="\url{https://reference.wolfram.com/language/ref/PhongShading.html}", note=[Accessed: 23-April-2024 ]}

BibLaTeX

@online{reference.wolfram_2024_phongshading, organization={Wolfram Research}, title={PhongShading}, year={2022}, url={https://reference.wolfram.com/language/ref/PhongShading.html}, note=[Accessed: 23-April-2024 ]}