dojox.gfx3d.lighting.Model.npr
dojo.require("dojox.gfx3d.lighting");
defined in dojox/gfx3d/lighting.js
Usage
function (normal, finish, pigment) (view source)
if(typeof finish == "string"){ finish = lite.finish[finish]; }
pigment = lite.toStdColor(pigment);
normal = lite.faceforward(lite.normalize(normal), this.incident);
var ambient = lite.scaleColor(finish.Ka, this.ambient),
shadow = lite.saturate(-4 * lite.dot(normal, this.incident)),
diffuse = lite.scaleColor(shadow * finish.Kd, lite.diffuse(normal, this.lights)),
color = lite.scaleColor(pigment.a, lite.multiplyColor(pigment, lite.addColor(ambient, diffuse))),
cool = lite.addColor(this.npr_cool, lite.scaleColor(this.npr_alpha, color)),
warm = lite.addColor(this.npr_warm, lite.scaleColor(this.npr_beta, color)),
d = (1 + lite.dot(this.incident, normal)) / 2,
color = lite.scaleColor(this.npr_scale, lite.addColor(color, lite.mixColor(cool, warm, d)));
color.a = pigment.a;
return lite.fromStdColor(lite.saturateColor(color));
parameter | type | description |
---|
normal | | |
finish | | |
pigment | | |