glsl-specular-ward
v1.0.0
Published
Ward anisotropic specular model
Downloads
20
Readme
glsl-specular-ward
Computes the anisotropic specularity in the Ward model
Example
#pragma glslify: wardSpec = require(glsl-specular-ward)
uniform vec3 eyePosition;
uniform vec3 lightPosition;
uniform float shinyPar, shinyPerp;
varying vec3 surfacePosition;
varying vec3 surfaceNormal;
varying vec3 fiberDirection;
void main() {
//Light and view geometry
vec3 eyeDirection = normalize(eyePosition - surfacePosition);
vec3 lightDirection = normalize(lightPosition - surfacePosition);
//Surface properties
vec3 normal = normalize(surfaceNormal);
vec3 fiberPar = normalize(fiberDirection);
vec3 fiberPerp = normalize(cross(surfaceNormal, fiberDirection));
//Compute specular power
float power = wardSpec(
lightDirection,
viewDirection,
normal,
fiberPar,
fiberPerp,
shinyPar,
shinyPerp);
gl_FragColor = vec4(power,power,power,1.0);
}
Usage
Install with npm:
npm install glsl-specular-phong
Then use with glslify.
API
#pragma glslify: ward = require(glsl-specular-ward)
float ward(vec3 lightDir, vec3 eyeDir, vec3 normal, vec3 fiberParallel, vec3 fiberPerpendicular, float shinyParallel, float shinyPerpendicular)
Computes the specular power in the Phong lighting model.
lightDir
is a unit lengthvec3
pointing from the surface point toward the lighteyeDir
is a unit lengthvec3
pointing from the surface point toward the cameranormal
is the unit length surface normal at the sample pointfiberParallel
is a unit length vector tangent to the surface aligned with the local fiber orientationfiberPerpendicular
is a unit length vector tangent to surface aligned with the local fiber orientationshinyParallel
is the roughness of the fibers in the parallel directionshinyPerpendicular
is the roughness of the fibers in perpendicular direction
Returns A float
representing the specular power
License
(c) 2014 Mikola Lysenko. MIT License