PhongShading
is a three‐dimensional 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 normal‐vector 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 per‐pixel 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 allBasic Examples (3)
Apply PhongShading to the unit sphere:
Style a plot with PhongShading:
Draw a 3D model with PhongShading:
Scope (14)
Basic Uses (5)
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:
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:
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