
214 13. glslify
vec3 color;
float kAmbient, kDiffuse, kSpecular;
float phongExponent;
};
#pragma glslify: export(Material)
Next, we will create a subroutine that takes these two data types as well as some infor-
mation about the surface/viewing geometry as input and computes the intensity of the
light in each channel:
#pragma glslify: Material = require(./material.glsl)
#pragma glslify: PointLight = require(./light.glsl)
vec3 blinnPhong(
Material material,
PointLight light,
vec3 surfaceNormal,
vec3 surfacePosition,
vec3 viewDirection) {
vec3 L = normalize(light.position - surfacePosition);
vec3 H = normalize(viewDirection + surfaceNormal);
vec3