UNPKG

@visactor/vrender-core

Version:
33 lines (26 loc) 1.6 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: !0 }), exports.registerDirectionalLight = exports.DirectionalLight = void 0; const vutils_1 = require("@visactor/vutils"), color_string_1 = require("../color-string"), factory_1 = require("../factory"); class DirectionalLight { constructor(dir, color, ambient = .8) { this.dir = dir, this.color = color, this.colorRgb = color_string_1.ColorStore.Get(color, color_string_1.ColorType.Color1), this.ambient = ambient; const length = (0, vutils_1.sqrt)(dir[0] * dir[0] + dir[1] * dir[1] + dir[2] * dir[2]); this.formatedDir = [ dir[0] / length, dir[1] / length, dir[2] / length ]; } computeColor(normal, color) { const lightDir = this.formatedDir, brightness = (0, vutils_1.min)((0, vutils_1.max)((normal[0] * lightDir[0] + normal[1] * lightDir[1] + normal[2] * lightDir[2]) * (1 - this.ambient / 2), 0) + this.ambient, 1); let colorArray; colorArray = (0, vutils_1.isString)(color) ? color_string_1.ColorStore.Get(color, color_string_1.ColorType.Color1) : color; const lightColorArray = this.colorRgb; return `rgb(${lightColorArray[0] * colorArray[0] * brightness}, ${lightColorArray[1] * colorArray[1] * brightness}, ${lightColorArray[2] * colorArray[2] * brightness})`; } } exports.DirectionalLight = DirectionalLight; const registerDirectionalLight = () => { factory_1.Factory.registerPlugin("DirectionalLight", DirectionalLight); }; exports.registerDirectionalLight = registerDirectionalLight; //# sourceMappingURL=light.js.map