echarts-gl
Version:
Extension pack of ECharts providing 3D plots and globe visualization
1,485 lines (1,290 loc) • 1.9 MB
JavaScript
(function webpackUniversalModuleDefinition(root, factory) {
if(typeof exports === 'object' && typeof module === 'object')
module.exports = factory(require("echarts"));
else if(typeof define === 'function' && define.amd)
define(["echarts"], factory);
else if(typeof exports === 'object')
exports["echarts-gl"] = factory(require("echarts"));
else
root["echarts-gl"] = factory(root["echarts"]);
})(this, function(__WEBPACK_EXTERNAL_MODULE_0__) {
return /******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, {
/******/ configurable: false,
/******/ enumerable: true,
/******/ get: getter
/******/ });
/******/ }
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(__webpack_require__.s = 106);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */
/***/ (function(module, exports) {
module.exports = __WEBPACK_EXTERNAL_MODULE_0__;
/***/ }),
/* 1 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_claygl_src_Mesh__ = __webpack_require__(40);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_claygl_src_Renderer__ = __webpack_require__(52);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_claygl_src_Texture2D__ = __webpack_require__(5);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_claygl_src_Texture__ = __webpack_require__(4);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_claygl_src_Shader__ = __webpack_require__(8);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_claygl_src_Material__ = __webpack_require__(19);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_claygl_src_Node__ = __webpack_require__(35);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_claygl_src_Geometry__ = __webpack_require__(15);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8_echarts_lib_echarts__ = __webpack_require__(0);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8_echarts_lib_echarts___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_8_echarts_lib_echarts__);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9_claygl_src_Scene__ = __webpack_require__(36);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10_zrender_lib_core_LRU__ = __webpack_require__(60);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10_zrender_lib_core_LRU___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_10_zrender_lib_core_LRU__);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11_claygl_src_util_texture__ = __webpack_require__(61);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__EChartsSurface__ = __webpack_require__(124);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13_claygl_src_light_AmbientCubemap__ = __webpack_require__(125);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_14_claygl_src_light_AmbientSH__ = __webpack_require__(129);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_15_claygl_src_util_sh__ = __webpack_require__(130);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_16__retrieve__ = __webpack_require__(2);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_17_claygl_src_geometry_Sphere__ = __webpack_require__(132);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_18_claygl_src_geometry_Plane__ = __webpack_require__(43);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_19_claygl_src_geometry_Cube__ = __webpack_require__(76);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_20_claygl_src_light_Ambient__ = __webpack_require__(133);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_21_claygl_src_light_Directional__ = __webpack_require__(134);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_22_claygl_src_light_Point__ = __webpack_require__(135);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_23_claygl_src_light_Spot__ = __webpack_require__(136);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_24_claygl_src_camera_Perspective__ = __webpack_require__(41);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_25_claygl_src_camera_Orthographic__ = __webpack_require__(37);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_26_claygl_src_math_Vector2__ = __webpack_require__(26);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_27_claygl_src_math_Vector3__ = __webpack_require__(3);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_28_claygl_src_math_Vector4__ = __webpack_require__(137);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_29_claygl_src_math_Quaternion__ = __webpack_require__(56);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_30_claygl_src_math_Matrix2__ = __webpack_require__(138);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_31_claygl_src_math_Matrix2d__ = __webpack_require__(139);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_32_claygl_src_math_Matrix3__ = __webpack_require__(140);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_33_claygl_src_math_Matrix4__ = __webpack_require__(9);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_34_claygl_src_math_Plane__ = __webpack_require__(74);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_35_claygl_src_math_Ray__ = __webpack_require__(54);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_36_claygl_src_math_BoundingBox__ = __webpack_require__(18);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_37_claygl_src_math_Frustum__ = __webpack_require__(59);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_38__animatableMixin__ = __webpack_require__(141);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_39_claygl_src_shader_source_util_glsl_js__ = __webpack_require__(146);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_40_claygl_src_shader_source_prez_glsl_js__ = __webpack_require__(71);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_41__shader_common_glsl_js__ = __webpack_require__(147);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_42__shader_color_glsl_js__ = __webpack_require__(148);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_43__shader_lambert_glsl_js__ = __webpack_require__(149);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_44__shader_realistic_glsl_js__ = __webpack_require__(150);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_45__shader_hatching_glsl_js__ = __webpack_require__(151);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_46__shader_shadow_glsl_js__ = __webpack_require__(152);
// Math
// Some common shaders
__WEBPACK_IMPORTED_MODULE_8_echarts_lib_echarts___default.a.util.extend(__WEBPACK_IMPORTED_MODULE_6_claygl_src_Node__["a" /* default */].prototype, __WEBPACK_IMPORTED_MODULE_38__animatableMixin__["a" /* default */]);
__WEBPACK_IMPORTED_MODULE_4_claygl_src_Shader__["a" /* default */].import(__WEBPACK_IMPORTED_MODULE_39_claygl_src_shader_source_util_glsl_js__["a" /* default */]);
__WEBPACK_IMPORTED_MODULE_4_claygl_src_Shader__["a" /* default */].import(__WEBPACK_IMPORTED_MODULE_40_claygl_src_shader_source_prez_glsl_js__["a" /* default */]);
__WEBPACK_IMPORTED_MODULE_4_claygl_src_Shader__["a" /* default */].import(__WEBPACK_IMPORTED_MODULE_41__shader_common_glsl_js__["a" /* default */]);
__WEBPACK_IMPORTED_MODULE_4_claygl_src_Shader__["a" /* default */].import(__WEBPACK_IMPORTED_MODULE_42__shader_color_glsl_js__["a" /* default */]);
__WEBPACK_IMPORTED_MODULE_4_claygl_src_Shader__["a" /* default */].import(__WEBPACK_IMPORTED_MODULE_43__shader_lambert_glsl_js__["a" /* default */]);
__WEBPACK_IMPORTED_MODULE_4_claygl_src_Shader__["a" /* default */].import(__WEBPACK_IMPORTED_MODULE_44__shader_realistic_glsl_js__["a" /* default */]);
__WEBPACK_IMPORTED_MODULE_4_claygl_src_Shader__["a" /* default */].import(__WEBPACK_IMPORTED_MODULE_45__shader_hatching_glsl_js__["a" /* default */]);
__WEBPACK_IMPORTED_MODULE_4_claygl_src_Shader__["a" /* default */].import(__WEBPACK_IMPORTED_MODULE_46__shader_shadow_glsl_js__["a" /* default */]);
function isValueNone(value) {
return !value || value === 'none';
}
function isValueImage(value) {
return value instanceof HTMLCanvasElement
|| value instanceof HTMLImageElement
|| value instanceof Image;
}
function isECharts(value) {
return value.getZr && value.setOption;
}
// Overwrite addToScene and removeFromScene
var oldAddToScene = __WEBPACK_IMPORTED_MODULE_9_claygl_src_Scene__["a" /* default */].prototype.addToScene;
var oldRemoveFromScene = __WEBPACK_IMPORTED_MODULE_9_claygl_src_Scene__["a" /* default */].prototype.removeFromScene;
__WEBPACK_IMPORTED_MODULE_9_claygl_src_Scene__["a" /* default */].prototype.addToScene = function (node) {
oldAddToScene.call(this, node);
if (this.__zr) {
var zr = this.__zr;
node.traverse(function (child) {
child.__zr = zr;
if (child.addAnimatorsToZr) {
child.addAnimatorsToZr(zr);
}
});
}
};
__WEBPACK_IMPORTED_MODULE_9_claygl_src_Scene__["a" /* default */].prototype.removeFromScene = function (node) {
oldRemoveFromScene.call(this, node);
node.traverse(function (child) {
var zr = child.__zr;
child.__zr = null;
if (zr && child.removeAnimatorsFromZr) {
child.removeAnimatorsFromZr(zr);
}
});
};
/**
* @param {string} textureName
* @param {string|HTMLImageElement|HTMLCanvasElement} imgValue
* @param {module:echarts/ExtensionAPI} api
* @param {Object} [textureOpts]
*/
__WEBPACK_IMPORTED_MODULE_5_claygl_src_Material__["a" /* default */].prototype.setTextureImage = function (textureName, imgValue, api, textureOpts) {
if (!this.shader) {
return;
}
var zr = api.getZr();
var material = this;
var texture;
material.autoUpdateTextureStatus = false;
// disableTexture first
material.disableTexture(textureName);
if (!isValueNone(imgValue)) {
texture = graphicGL.loadTexture(imgValue, api, textureOpts, function (texture) {
material.enableTexture(textureName);
zr && zr.refresh();
});
// Set texture immediately for other code to verify if have this texture.
material.set(textureName, texture);
}
return texture;
};
var graphicGL = {};
graphicGL.Renderer = __WEBPACK_IMPORTED_MODULE_1_claygl_src_Renderer__["a" /* default */];
graphicGL.Node = __WEBPACK_IMPORTED_MODULE_6_claygl_src_Node__["a" /* default */];
graphicGL.Mesh = __WEBPACK_IMPORTED_MODULE_0_claygl_src_Mesh__["a" /* default */];
graphicGL.Shader = __WEBPACK_IMPORTED_MODULE_4_claygl_src_Shader__["a" /* default */];
graphicGL.Material = __WEBPACK_IMPORTED_MODULE_5_claygl_src_Material__["a" /* default */];
graphicGL.Texture = __WEBPACK_IMPORTED_MODULE_3_claygl_src_Texture__["a" /* default */];
graphicGL.Texture2D = __WEBPACK_IMPORTED_MODULE_2_claygl_src_Texture2D__["a" /* default */];
// Geometries
graphicGL.Geometry = __WEBPACK_IMPORTED_MODULE_7_claygl_src_Geometry__["a" /* default */];
graphicGL.SphereGeometry = __WEBPACK_IMPORTED_MODULE_17_claygl_src_geometry_Sphere__["a" /* default */];
graphicGL.PlaneGeometry = __WEBPACK_IMPORTED_MODULE_18_claygl_src_geometry_Plane__["a" /* default */];
graphicGL.CubeGeometry = __WEBPACK_IMPORTED_MODULE_19_claygl_src_geometry_Cube__["a" /* default */];
// Lights
graphicGL.AmbientLight = __WEBPACK_IMPORTED_MODULE_20_claygl_src_light_Ambient__["a" /* default */];
graphicGL.DirectionalLight = __WEBPACK_IMPORTED_MODULE_21_claygl_src_light_Directional__["a" /* default */];
graphicGL.PointLight = __WEBPACK_IMPORTED_MODULE_22_claygl_src_light_Point__["a" /* default */];
graphicGL.SpotLight = __WEBPACK_IMPORTED_MODULE_23_claygl_src_light_Spot__["a" /* default */];
// Cameras
graphicGL.PerspectiveCamera = __WEBPACK_IMPORTED_MODULE_24_claygl_src_camera_Perspective__["a" /* default */];
graphicGL.OrthographicCamera = __WEBPACK_IMPORTED_MODULE_25_claygl_src_camera_Orthographic__["a" /* default */];
// Math
graphicGL.Vector2 = __WEBPACK_IMPORTED_MODULE_26_claygl_src_math_Vector2__["a" /* default */];
graphicGL.Vector3 = __WEBPACK_IMPORTED_MODULE_27_claygl_src_math_Vector3__["a" /* default */];
graphicGL.Vector4 = __WEBPACK_IMPORTED_MODULE_28_claygl_src_math_Vector4__["a" /* default */];
graphicGL.Quaternion = __WEBPACK_IMPORTED_MODULE_29_claygl_src_math_Quaternion__["a" /* default */];
graphicGL.Matrix2 = __WEBPACK_IMPORTED_MODULE_30_claygl_src_math_Matrix2__["a" /* default */];
graphicGL.Matrix2d = __WEBPACK_IMPORTED_MODULE_31_claygl_src_math_Matrix2d__["a" /* default */];
graphicGL.Matrix3 = __WEBPACK_IMPORTED_MODULE_32_claygl_src_math_Matrix3__["a" /* default */];
graphicGL.Matrix4 = __WEBPACK_IMPORTED_MODULE_33_claygl_src_math_Matrix4__["a" /* default */];
graphicGL.Plane = __WEBPACK_IMPORTED_MODULE_34_claygl_src_math_Plane__["a" /* default */];
graphicGL.Ray = __WEBPACK_IMPORTED_MODULE_35_claygl_src_math_Ray__["a" /* default */];
graphicGL.BoundingBox = __WEBPACK_IMPORTED_MODULE_36_claygl_src_math_BoundingBox__["a" /* default */];
graphicGL.Frustum = __WEBPACK_IMPORTED_MODULE_37_claygl_src_math_Frustum__["a" /* default */];
// Texture utilities
var blankImage = __WEBPACK_IMPORTED_MODULE_11_claygl_src_util_texture__["a" /* default */].createBlank('rgba(255,255,255,0)').image;
function nearestPowerOfTwo(val) {
return Math.pow(2, Math.round(Math.log(val) / Math.LN2));
}
function convertTextureToPowerOfTwo(texture) {
if ((texture.wrapS === __WEBPACK_IMPORTED_MODULE_3_claygl_src_Texture__["a" /* default */].REPEAT || texture.wrapT === __WEBPACK_IMPORTED_MODULE_3_claygl_src_Texture__["a" /* default */].REPEAT)
&& texture.image
) {
// var canvas = document.createElement('canvas');
var width = nearestPowerOfTwo(texture.width);
var height = nearestPowerOfTwo(texture.height);
if (width !== texture.width || height !== texture.height) {
var canvas = document.createElement('canvas');
canvas.width = width;
canvas.height = height;
var ctx = canvas.getContext('2d');
ctx.drawImage(texture.image, 0, 0, width, height);
texture.image = canvas;
}
}
}
/**
* @param {string|HTMLImageElement|HTMLCanvasElement} imgValue
* @param {module:echarts/ExtensionAPI} api
* @param {Object} [textureOpts]
* @param {Function} cb
*/
// TODO Promise, test
graphicGL.loadTexture = function (imgValue, api, textureOpts, cb) {
if (typeof textureOpts === 'function') {
cb = textureOpts;
textureOpts = {};
}
textureOpts = textureOpts || {};
var keys = Object.keys(textureOpts).sort();
var prefix = '';
for (var i = 0; i < keys.length; i++) {
prefix += keys[i] + '_' + textureOpts[keys[i]] + '_';
}
var textureCache = api.__textureCache = api.__textureCache || new __WEBPACK_IMPORTED_MODULE_10_zrender_lib_core_LRU___default.a(20);
if (isECharts(imgValue)) {
var id = imgValue.__textureid__;
var textureObj = textureCache.get(prefix + id);
if (!textureObj) {
var surface = new __WEBPACK_IMPORTED_MODULE_12__EChartsSurface__["a" /* default */](imgValue);
surface.onupdate = function () {
api.getZr().refresh();
};
textureObj = {
texture: surface.getTexture()
};
for (var i = 0; i < keys.length; i++) {
textureObj.texture[keys[i]] = textureOpts[keys[i]];
}
id = imgValue.__textureid__ || '__ecgl_ec__' + textureObj.texture.__uid__;
imgValue.__textureid__ = id;
textureCache.put(prefix + id, textureObj);
cb && cb(textureObj.texture);
}
else {
textureObj.texture.surface.setECharts(imgValue);
cb && cb(textureObj.texture);
}
return textureObj.texture;
}
else if (isValueImage(imgValue)) {
var id = imgValue.__textureid__;
var textureObj = textureCache.get(prefix + id);
if (!textureObj) {
textureObj = {
texture: new graphicGL.Texture2D({
image: imgValue
})
};
for (var i = 0; i < keys.length; i++) {
textureObj.texture[keys[i]] = textureOpts[keys[i]];
}
id = imgValue.__textureid__ || '__ecgl_image__' + textureObj.texture.__uid__;
imgValue.__textureid__ = id;
textureCache.put(prefix + id, textureObj);
convertTextureToPowerOfTwo(textureObj.texture);
// TODO Next tick?
cb && cb(textureObj.texture);
}
return textureObj.texture;
}
else {
var textureObj = textureCache.get(prefix + imgValue);
if (textureObj) {
if (textureObj.callbacks) {
// Add to pending callbacks
textureObj.callbacks.push(cb);
}
else {
// TODO Next tick?
cb && cb(textureObj.texture);
}
}
else {
// Maybe base64
if (imgValue.match(/.hdr$|^data:application\/octet-stream/)) {
textureObj = {
callbacks: [cb]
};
var texture = __WEBPACK_IMPORTED_MODULE_11_claygl_src_util_texture__["a" /* default */].loadTexture(imgValue, {
exposure: textureOpts.exposure,
fileType: 'hdr'
}, function () {
texture.dirty();
textureObj.callbacks.forEach(function (cb) {
cb && cb(texture);
});
textureObj.callbacks = null;
});
textureObj.texture = texture;
textureCache.put(prefix + imgValue, textureObj);
}
else {
var texture = new graphicGL.Texture2D({
image: new Image()
});
for (var i = 0; i < keys.length; i++) {
texture[keys[i]] = textureOpts[keys[i]];
}
textureObj = {
texture: texture,
callbacks: [cb]
};
var originalImage = texture.image;
originalImage.onload = function () {
texture.image = originalImage;
convertTextureToPowerOfTwo(texture);
texture.dirty();
textureObj.callbacks.forEach(function (cb) {
cb && cb(texture);
});
textureObj.callbacks = null;
};
originalImage.src = imgValue;
// Use blank image as place holder.
texture.image = blankImage;
textureCache.put(prefix + imgValue, textureObj);
}
}
return textureObj.texture;
}
};
/**
* Create ambientCubemap and ambientSH light. respectively to have specular and diffuse light
* @return {Object} { specular, diffuse }
*/
graphicGL.createAmbientCubemap = function (opt, renderer, api, cb) {
opt = opt || {};
var textureUrl = opt.texture;
var exposure = __WEBPACK_IMPORTED_MODULE_16__retrieve__["a" /* default */].firstNotNull(opt.exposure, 1.0);
var ambientCubemap = new __WEBPACK_IMPORTED_MODULE_13_claygl_src_light_AmbientCubemap__["a" /* default */]({
intensity: __WEBPACK_IMPORTED_MODULE_16__retrieve__["a" /* default */].firstNotNull(opt.specularIntensity, 1.0)
});
var ambientSH = new __WEBPACK_IMPORTED_MODULE_14_claygl_src_light_AmbientSH__["a" /* default */]({
intensity: __WEBPACK_IMPORTED_MODULE_16__retrieve__["a" /* default */].firstNotNull(opt.diffuseIntensity, 1.0),
coefficients: [0.844, 0.712, 0.691, -0.037, 0.083, 0.167, 0.343, 0.288, 0.299, -0.041, -0.021, -0.009, -0.003, -0.041, -0.064, -0.011, -0.007, -0.004, -0.031, 0.034, 0.081, -0.060, -0.049, -0.060, 0.046, 0.056, 0.050]
});
ambientCubemap.cubemap = graphicGL.loadTexture(textureUrl, api, {
exposure: exposure
}, function () {
// TODO Performance when multiple view
ambientCubemap.cubemap.flipY = false;
if (true) {
var time = Date.now();
}
ambientCubemap.prefilter(renderer, 32);
if (true) {
var dTime = Date.now() - time;
console.log('Prefilter environment map: ' + dTime + 'ms');
}
ambientSH.coefficients = __WEBPACK_IMPORTED_MODULE_15_claygl_src_util_sh__["a" /* default */].projectEnvironmentMap(renderer, ambientCubemap.cubemap, {
lod: 1
});
cb && cb();
// TODO Refresh ?
});
return {
specular: ambientCubemap,
diffuse: ambientSH
};
};
/**
* Create a blank texture for placeholder
*/
graphicGL.createBlankTexture = __WEBPACK_IMPORTED_MODULE_11_claygl_src_util_texture__["a" /* default */].createBlank;
/**
* If value is image
* @param {*}
* @return {boolean}
*/
graphicGL.isImage = isValueImage;
graphicGL.additiveBlend = function (gl) {
gl.blendEquation(gl.FUNC_ADD);
gl.blendFunc(gl.SRC_ALPHA, gl.ONE);
};
/**
* @param {string|Array.<number>} colorStr
* @param {Array.<number>} [rgba]
* @return {Array.<number>} rgba
*/
graphicGL.parseColor = function (colorStr, rgba) {
if (colorStr instanceof Array) {
if (!rgba) {
rgba = [];
}
// Color has been parsed.
rgba[0] = colorStr[0];
rgba[1] = colorStr[1];
rgba[2] = colorStr[2];
if (colorStr.length > 3) {
rgba[3] = colorStr[3];
}
else {
rgba[3] = 1;
}
return rgba;
}
rgba = __WEBPACK_IMPORTED_MODULE_8_echarts_lib_echarts___default.a.color.parse(colorStr || '#000', rgba) || [0, 0, 0, 0];
rgba[0] /= 255;
rgba[1] /= 255;
rgba[2] /= 255;
return rgba;
};
/**
* Convert alpha beta rotation to direction.
* @param {number} alpha
* @param {number} beta
* @return {Array.<number>}
*/
graphicGL.directionFromAlphaBeta = function (alpha, beta) {
var theta = alpha / 180 * Math.PI + Math.PI / 2;
var phi = -beta / 180 * Math.PI + Math.PI / 2;
var dir = [];
var r = Math.sin(theta);
dir[0] = r * Math.cos(phi);
dir[1] = -Math.cos(theta);
dir[2] = r * Math.sin(phi);
return dir;
};
/**
* Get shadow resolution from shadowQuality configuration
*/
graphicGL.getShadowResolution = function (shadowQuality) {
var shadowResolution = 1024;
switch (shadowQuality) {
case 'low':
shadowResolution = 512;
break;
case 'medium':
break;
case 'high':
shadowResolution = 2048;
break;
case 'ultra':
shadowResolution = 4096;
break;
}
return shadowResolution;
};
/**
* Shading utilities
*/
graphicGL.COMMON_SHADERS = ['lambert', 'color', 'realistic', 'hatching'];
/**
* Create shader including vertex and fragment
* @param {string} prefix.
*/
graphicGL.createShader = function (prefix) {
var vertexShaderStr = __WEBPACK_IMPORTED_MODULE_4_claygl_src_Shader__["a" /* default */].source(prefix + '.vertex');
var fragmentShaderStr = __WEBPACK_IMPORTED_MODULE_4_claygl_src_Shader__["a" /* default */].source(prefix + '.fragment');
if (!vertexShaderStr) {
console.error('Vertex shader of \'%s\' not exits', prefix);
}
if (!fragmentShaderStr) {
console.error('Fragment shader of \'%s\' not exits', prefix);
}
var shader = new __WEBPACK_IMPORTED_MODULE_4_claygl_src_Shader__["a" /* default */](vertexShaderStr, fragmentShaderStr);
shader.name = prefix;
return shader;
};
graphicGL.createMaterial = function (prefix, defines) {
if (!(defines instanceof Array)) {
defines = [defines];
}
var shader = graphicGL.createShader(prefix);
var material = new __WEBPACK_IMPORTED_MODULE_5_claygl_src_Material__["a" /* default */]({
shader: shader
});
defines.forEach(function (defineName) {
if (typeof defineName === 'string') {
material.define(defineName);
}
});
return material;
};
/**
* Set material from model.
* @param {clay.Material} material
* @param {module:echarts/model/Model} model
* @param {module:echarts/ExtensionAPI} api
*/
graphicGL.setMaterialFromModel = function (shading, material, model, api) {
material.autoUpdateTextureStatus = false;
var materialModel = model.getModel(shading + 'Material');
var detailTexture = materialModel.get('detailTexture');
var uvRepeat = __WEBPACK_IMPORTED_MODULE_16__retrieve__["a" /* default */].firstNotNull(materialModel.get('textureTiling'), 1.0);
var uvOffset = __WEBPACK_IMPORTED_MODULE_16__retrieve__["a" /* default */].firstNotNull(materialModel.get('textureOffset'), 0.0);
if (typeof uvRepeat === 'number') {
uvRepeat = [uvRepeat, uvRepeat];
}
if (typeof uvOffset === 'number') {
uvOffset = [uvOffset, uvOffset];
}
var repeatParam = (uvRepeat[0] > 1 || uvRepeat[1] > 1) ? graphicGL.Texture.REPEAT : graphicGL.Texture.CLAMP_TO_EDGE;
var textureOpt = {
anisotropic: 8,
wrapS: repeatParam,
wrapT: repeatParam
};
if (shading === 'realistic') {
var roughness = materialModel.get('roughness');
var metalness = materialModel.get('metalness');
if (metalness != null) {
// Try to treat as a texture, TODO More check
if (isNaN(metalness)) {
material.setTextureImage('metalnessMap', metalness, api, textureOpt);
metalness = __WEBPACK_IMPORTED_MODULE_16__retrieve__["a" /* default */].firstNotNull(materialModel.get('metalnessAdjust'), 0.5);
}
}
else {
// Default metalness.
metalness = 0;
}
if (roughness != null) {
// Try to treat as a texture, TODO More check
if (isNaN(roughness)) {
material.setTextureImage('roughnessMap', roughness, api, textureOpt);
roughness = __WEBPACK_IMPORTED_MODULE_16__retrieve__["a" /* default */].firstNotNull(materialModel.get('roughnessAdjust'), 0.5);
}
}
else {
// Default roughness.
roughness = 0.5;
}
var normalTextureVal = materialModel.get('normalTexture');
material.setTextureImage('detailMap', detailTexture, api, textureOpt);
material.setTextureImage('normalMap', normalTextureVal, api, textureOpt);
material.set({
roughness: roughness,
metalness: metalness,
detailUvRepeat: uvRepeat,
detailUvOffset: uvOffset
});
// var normalTexture = material.get('normalMap');
// if (normalTexture) {
// PENDING
// normalTexture.format = Texture.SRGB;
// }
}
else if (shading === 'lambert') {
material.setTextureImage('detailMap', detailTexture, api, textureOpt);
material.set({
detailUvRepeat: uvRepeat,
detailUvOffset: uvOffset
});
}
else if (shading === 'color') {
material.setTextureImage('detailMap', detailTexture, api, textureOpt);
material.set({
detailUvRepeat: uvRepeat,
detailUvOffset: uvOffset
});
}
else if (shading === 'hatching') {
var tams = materialModel.get('hatchingTextures') || [];
if (tams.length < 6) {
if (true) {
console.error('Invalid hatchingTextures.');
}
}
for (var i = 0; i < 6; i++) {
material.setTextureImage('hatch' + (i + 1), tams[i], api, {
anisotropic: 8,
wrapS: graphicGL.Texture.REPEAT,
wrapT: graphicGL.Texture.REPEAT
});
}
material.set({
detailUvRepeat: uvRepeat,
detailUvOffset: uvOffset
});
}
};
graphicGL.updateVertexAnimation = function (
mappingAttributes, previousMesh, currentMesh, seriesModel
) {
var enableAnimation = seriesModel.get('animation');
var duration = seriesModel.get('animationDurationUpdate');
var easing = seriesModel.get('animationEasingUpdate');
var shadowDepthMaterial = currentMesh.shadowDepthMaterial;
if (enableAnimation && previousMesh && duration > 0
// Only animate when bar count are not changed
&& previousMesh.geometry.vertexCount === currentMesh.geometry.vertexCount
) {
currentMesh.material.define('vertex', 'VERTEX_ANIMATION');
currentMesh.ignorePreZ = true;
if (shadowDepthMaterial) {
shadowDepthMaterial.define('vertex', 'VERTEX_ANIMATION');
}
for (var i = 0; i < mappingAttributes.length; i++) {
currentMesh.geometry.attributes[mappingAttributes[i][0]].value =
previousMesh.geometry.attributes[mappingAttributes[i][1]].value;
}
currentMesh.geometry.dirty();
currentMesh.__percent = 0;
currentMesh.material.set('percent', 0);
currentMesh.stopAnimation();
currentMesh.animate()
.when(duration, {
__percent: 1
})
.during(function () {
currentMesh.material.set('percent', currentMesh.__percent);
if (shadowDepthMaterial) {
shadowDepthMaterial.set('percent', currentMesh.__percent);
}
})
.done(function () {
currentMesh.ignorePreZ = false;
currentMesh.material.undefine('vertex', 'VERTEX_ANIMATION');
if (shadowDepthMaterial) {
shadowDepthMaterial.undefine('vertex', 'VERTEX_ANIMATION');
}
})
.start(easing);
}
else {
currentMesh.material.undefine('vertex', 'VERTEX_ANIMATION');
if (shadowDepthMaterial) {
shadowDepthMaterial.undefine('vertex', 'VERTEX_ANIMATION');
}
}
};
/* harmony default export */ __webpack_exports__["a"] = (graphicGL);
/***/ }),
/* 2 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_echarts_lib_echarts__ = __webpack_require__(0);
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_echarts_lib_echarts___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_echarts_lib_echarts__);
var retrieve = {
firstNotNull: function () {
for (var i = 0, len = arguments.length; i < len; i++) {
if (arguments[i] != null) {
return arguments[i];
}
}
},
/**
* @param {module:echarts/data/List} data
* @param {Object} payload Contains dataIndex (means rawIndex) / dataIndexInside / name
* each of which can be Array or primary type.
* @return {number|Array.<number>} dataIndex If not found, return undefined/null.
*/
queryDataIndex: function (data, payload) {
if (payload.dataIndexInside != null) {
return payload.dataIndexInside;
}
else if (payload.dataIndex != null) {
return __WEBPACK_IMPORTED_MODULE_0_echarts_lib_echarts___default.a.util.isArray(payload.dataIndex)
? __WEBPACK_IMPORTED_MODULE_0_echarts_lib_echarts___default.a.util.map(payload.dataIndex, function (value) {
return data.indexOfRawIndex(value);
})
: data.indexOfRawIndex(payload.dataIndex);
}
else if (payload.name != null) {
return __WEBPACK_IMPORTED_MODULE_0_echarts_lib_echarts___default.a.util.isArray(payload.name)
? __WEBPACK_IMPORTED_MODULE_0_echarts_lib_echarts___default.a.util.map(payload.name, function (value) {
return data.indexOfName(value);
})
: data.indexOfName(payload.name);
}
}
};
/* harmony default export */ __webpack_exports__["a"] = (retrieve);
/***/ }),
/* 3 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__glmatrix_vec3__ = __webpack_require__(12);
/**
* @constructor
* @alias clay.Vector3
* @param {number} x
* @param {number} y
* @param {number} z
*/
var Vector3 = function(x, y, z) {
x = x || 0;
y = y || 0;
z = z || 0;
/**
* Storage of Vector3, read and write of x, y, z will change the values in array
* All methods also operate on the array instead of x, y, z components
* @name array
* @type {Float32Array}
* @memberOf clay.Vector3#
*/
this.array = __WEBPACK_IMPORTED_MODULE_0__glmatrix_vec3__["a" /* default */].fromValues(x, y, z);
/**
* Dirty flag is used by the Node to determine
* if the matrix is updated to latest
* @name _dirty
* @type {boolean}
* @memberOf clay.Vector3#
*/
this._dirty = true;
};
Vector3.prototype = {
constructor: Vector3,
/**
* Add b to self
* @param {clay.Vector3} b
* @return {clay.Vector3}
*/
add: function (b) {
__WEBPACK_IMPORTED_MODULE_0__glmatrix_vec3__["a" /* default */].add(this.array, this.array, b.array);
this._dirty = true;
return this;
},
/**
* Set x, y and z components
* @param {number} x
* @param {number} y
* @param {number} z
* @return {clay.Vector3}
*/
set: function (x, y, z) {
this.array[0] = x;
this.array[1] = y;
this.array[2] = z;
this._dirty = true;
return this;
},
/**
* Set x, y and z components from array
* @param {Float32Array|number[]} arr
* @return {clay.Vector3}
*/
setArray: function (arr) {
this.array[0] = arr[0];
this.array[1] = arr[1];
this.array[2] = arr[2];
this._dirty = true;
return this;
},
/**
* Clone a new Vector3
* @return {clay.Vector3}
*/
clone: function () {
return new Vector3(this.x, this.y, this.z);
},
/**
* Copy from b
* @param {clay.Vector3} b
* @return {clay.Vector3}
*/
copy: function (b) {
__WEBPACK_IMPORTED_MODULE_0__glmatrix_vec3__["a" /* default */].copy(this.array, b.array);
this._dirty = true;
return this;
},
/**
* Cross product of self and b, written to a Vector3 out
* @param {clay.Vector3} a
* @param {clay.Vector3} b
* @return {clay.Vector3}
*/
cross: function (a, b) {
__WEBPACK_IMPORTED_MODULE_0__glmatrix_vec3__["a" /* default */].cross(this.array, a.array, b.array);
this._dirty = true;
return this;
},
/**
* Alias for distance
* @param {clay.Vector3} b
* @return {number}
*/
dist: function (b) {
return __WEBPACK_IMPORTED_MODULE_0__glmatrix_vec3__["a" /* default */].dist(this.array, b.array);
},
/**
* Distance between self and b
* @param {clay.Vector3} b
* @return {number}
*/
distance: function (b) {
return __WEBPACK_IMPORTED_MODULE_0__glmatrix_vec3__["a" /* default */].distance(this.array, b.array);
},
/**
* Alias for divide
* @param {clay.Vector3} b
* @return {clay.Vector3}
*/
div: function (b) {
__WEBPACK_IMPORTED_MODULE_0__glmatrix_vec3__["a" /* default */].div(this.array, this.array, b.array);
this._dirty = true;
return this;
},
/**
* Divide self by b
* @param {clay.Vector3} b
* @return {clay.Vector3}
*/
divide: function (b) {
__WEBPACK_IMPORTED_MODULE_0__glmatrix_vec3__["a" /* default */].divide(this.array, this.array, b.array);
this._dirty = true;
return this;
},
/**
* Dot product of self and b
* @param {clay.Vector3} b
* @return {number}
*/
dot: function (b) {
return __WEBPACK_IMPORTED_MODULE_0__glmatrix_vec3__["a" /* default */].dot(this.array, b.array);
},
/**
* Alias of length
* @return {number}
*/
len: function () {
return __WEBPACK_IMPORTED_MODULE_0__glmatrix_vec3__["a" /* default */].len(this.array);
},
/**
* Calculate the length
* @return {number}
*/
length: function () {
return __WEBPACK_IMPORTED_MODULE_0__glmatrix_vec3__["a" /* default */].length(this.array);
},
/**
* Linear interpolation between a and b
* @param {clay.Vector3} a
* @param {clay.Vector3} b
* @param {number} t
* @return {clay.Vector3}
*/
lerp: function (a, b, t) {
__WEBPACK_IMPORTED_MODULE_0__glmatrix_vec3__["a" /* default */].lerp(this.array, a.array, b.array, t);
this._dirty = true;
return this;
},
/**
* Minimum of self and b
* @param {clay.Vector3} b
* @return {clay.Vector3}
*/
min: function (b) {
__WEBPACK_IMPORTED_MODULE_0__glmatrix_vec3__["a" /* default */].min(this.array, this.array, b.array);
this._dirty = true;
return this;
},
/**
* Maximum of self and b
* @param {clay.Vector3} b
* @return {clay.Vector3}
*/
max: function (b) {
__WEBPACK_IMPORTED_MODULE_0__glmatrix_vec3__["a" /* default */].max(this.array, this.array, b.array);
this._dirty = true;
return this;
},
/**
* Alias for multiply
* @param {clay.Vector3} b
* @return {clay.Vector3}
*/
mul: function (b) {
__WEBPACK_IMPORTED_MODULE_0__glmatrix_vec3__["a" /* default */].mul(this.array, this.array, b.array);
this._dirty = true;
return this;
},
/**
* Mutiply self and b
* @param {clay.Vector3} b
* @return {clay.Vector3}
*/
multiply: function (b) {
__WEBPACK_IMPORTED_MODULE_0__glmatrix_vec3__["a" /* default */].multiply(this.array, this.array, b.array);
this._dirty = true;
return this;
},
/**
* Negate self
* @return {clay.Vector3}
*/
negate: function () {
__WEBPACK_IMPORTED_MODULE_0__glmatrix_vec3__["a" /* default */].negate(this.array, this.array);
this._dirty = true;
return this;
},
/**
* Normalize self
* @return {clay.Vector3}
*/
normalize: function () {
__WEBPACK_IMPORTED_MODULE_0__glmatrix_vec3__["a" /* default */].normalize(this.array, this.array);
this._dirty = true;
return this;
},
/**
* Generate random x, y, z components with a given scale
* @param {number} scale
* @return {clay.Vector3}
*/
random: function (scale) {
__WEBPACK_IMPORTED_MODULE_0__glmatrix_vec3__["a" /* default */].random(this.array, scale);
this._dirty = true;
return this;
},
/**
* Scale self
* @param {number} scale
* @return {clay.Vector3}
*/
scale: function (s) {
__WEBPACK_IMPORTED_MODULE_0__glmatrix_vec3__["a" /* default */].scale(this.array, this.array, s);
this._dirty = true;
return this;
},
/**
* Scale b and add to self
* @param {clay.Vector3} b
* @param {number} scale
* @return {clay.Vector3}
*/
scaleAndAdd: function (b, s) {
__WEBPACK_IMPORTED_MODULE_0__glmatrix_vec3__["a" /* default */].scaleAndAdd(this.array, this.array, b.array, s);
this._dirty = true;
return this;
},
/**
* Alias for squaredDistance
* @param {clay.Vector3} b
* @return {number}
*/
sqrDist: function (b) {
return __WEBPACK_IMPORTED_MODULE_0__glmatrix_vec3__["a" /* default */].sqrDist(this.array, b.array);
},
/**
* Squared distance between self and b
* @param {clay.Vector3} b
* @return {number}
*/
squaredDistance: function (b) {
return __WEBPACK_IMPORTED_MODULE_0__glmatrix_vec3__["a" /* default */].squaredDistance(this.array, b.array);
},
/**
* Alias for squaredLength
* @return {number}
*/
sqrLen: function () {
return __WEBPACK_IMPORTED_MODULE_0__glmatrix_vec3__["a" /* default */].sqrLen(this.array);
},
/**
* Squared length of self
* @return {number}
*/
squaredLength: function () {
return __WEBPACK_IMPORTED_MODULE_0__glmatrix_vec3__["a" /* default */].squaredLength(this.array);
},
/**
* Alias for subtract
* @param {clay.Vector3} b
* @return {clay.Vector3}
*/
sub: function (b) {
__WEBPACK_IMPORTED_MODULE_0__glmatrix_vec3__["a" /* default */].sub(this.array, this.array, b.array);
this._dirty = true;
return this;
},
/**
* Subtract b from self
* @param {clay.Vector3} b
* @return {clay.Vector3}
*/
subtract: function (b) {
__WEBPACK_IMPORTED_MODULE_0__glmatrix_vec3__["a" /* default */].subtract(this.array, this.array, b.array);
this._dirty = true;
return this;
},
/**
* Transform self with a Matrix3 m
* @param {clay.Matrix3} m
* @return {clay.Vector3}
*/
transformMat3: function (m) {
__WEBPACK_IMPORTED_MODULE_0__glmatrix_vec3__["a" /* default */].transformMat3(this.array, this.array, m.array);
this._dirty = true;
return this;
},
/**
* Transform self with a Matrix4 m
* @param {clay.Matrix4} m
* @return {clay.Vector3}
*/
transformMat4: function (m) {
__WEBPACK_IMPORTED_MODULE_0__glmatrix_vec3__["a" /* default */].transformMat4(this.array, this.array, m.array);
this._dirty = true;
return this;
},
/**
* Transform self with a Quaternion q
* @param {clay.Quaternion} q
* @return {clay.Vector3}
*/
transformQuat: function (q) {
__WEBPACK_IMPORTED_MODULE_0__glmatrix_vec3__["a" /* default */].transformQuat(this.array, this.array, q.array);
this._dirty = true;
return this;
},
/**
* Trasnform self into projection space with m
* @param {clay.Matrix4} m
* @return {clay.Vector3}
*/
applyProjection: function (m) {
var v = this.array;
m = m.array;
// Perspective projection
if (m[15] === 0) {
var w = -1 / v[2];
v[0] = m[0] * v[0] * w;
v[1] = m[5] * v[1] * w;
v[2] = (m[10] * v[2] + m[14]) * w;
}
else {
v[0] = m[0] * v[0] + m[12];
v[1] = m[5] * v[1] + m[13];
v[2] = m[10] * v[2] + m[14];
}
this._dirty = true;
return this;
},
eulerFromQuat: function(q, order) {
Vector3.eulerFromQuat(this, q, order);
},
eulerFromMat3: function (m, order) {
Vector3.eulerFromMat3(this, m, order);
},
toString: function() {
return '[' + Array.prototype.join.call(this.array, ',') + ']';
},
toArray: function () {
return Array.prototype.slice.call(this.array);
}
};
var defineProperty = Object.defineProperty;
// Getter and Setter
if (defineProperty) {
var proto = Vector3.prototype;
/**
* @name x
* @type {number}
* @memberOf clay.Vector3
* @instance
*/
defineProperty(proto, 'x', {
get: function () {
return this.array[0];
},
set: function (value) {
this.array[0] = value;
this._dirty = true;
}
});
/**
* @name y
* @type {number}
* @memberOf clay.Vector3
* @instance
*/
defineProperty(proto, 'y', {
get: function () {
return this.array[1];
},
set: function (value) {
this.array[1] = value;
this._dirty = true;
}
});
/**
* @name z
* @type {number}
* @memberOf clay.Vector3
* @instance
*/
defineProperty(proto, 'z', {
get: function () {
return this.array[2];
},
set: function (value) {
this.array[2] = value;
this._dirty = true;
}
});
}
// Supply methods that are not in place
/**
* @param {clay.Vector3} out
* @param {clay.Vector3} a
* @param {clay.Vector3} b
* @return {clay.Vector3}
*/
Vector3.add = function(out, a, b) {
__WEBPACK_IMPORTED_MODULE_0__glmatrix_vec3__["a" /* default */].add(out.array, a.array, b.array);
out._dirty = true;
return out;
};
/**
* @param {clay.Vector3} out
* @param {number} x
* @param {number} y
* @param {number} z
* @return {clay.Vector3}
*/
Vector3.set = function(out, x, y, z) {
__WEBPACK_IMPORTED_MODULE_0__glmatrix_vec3__["a" /* default */].set(out.array, x, y, z);
out._dirty = true;
};
/**
* @param {clay.Vector3} out
* @param {clay.Vector3} b
* @return {clay.Vector3}
*/
Vector3.copy = function(out, b) {
__WEBPACK_IMPORTED_MODULE_0__glmatrix_vec3__["a" /* default */].copy(out.array, b.array);
out._dirty = true;
return out;
};
/**
* @param {clay.Vector3} out
* @param {clay.Vector3} a
* @param {clay.Vector3} b
* @return {clay.Vector3}
*/
Vector3.cross = function(out, a, b) {
__WEBPACK_IMPORTED_MODULE_0__glmatrix_vec3__["a" /* default */].cross(out.array, a.array, b.array);
out._dirty = true;
return out;
};
/**
* @param {clay.Vector3} a
* @param {clay.Vector3} b
* @return {number}
*/
Vector3.dist = function(a, b) {
return __WEBPACK_IMPORTED_MODULE_0__glmatrix_vec3__["a" /* default */].distance(a.array, b.array);
};
/**
* @function
* @param {clay.Vector3} a
* @param {clay.Vector3} b
* @return {number}
*/
Vector3.distance = Vector3.dist;
/**
* @param {clay.Vector3} out
* @param {clay.Vector3} a
* @param {clay.Vector3} b
* @return {clay.Vector3}
*/
Vector3.div = function(out, a, b) {
__WEBPACK_IMPORTED_MODULE_0__glmatrix_vec3__["a" /* default */].divide(out.array, a.array, b.array);
out._dirty = true;
return out;
};
/**
* @function
* @param {clay.Vector3} out
* @param {clay.Vector3} a
* @param {clay.Vector3} b
* @return {clay.Vector3}
*/
Vector3.divide = Vector3.div;
/**
* @param {clay.Vector3} a
* @param {clay.Vector3} b
* @return {number}
*/
Vector3.dot = function(a, b) {
return __WEBPACK_IMPORTED_MODULE_0__glmatrix_vec3__["a" /* default */].dot(a.array, b.array);
};
/**
* @param {clay.Vector3} a
* @return {number}
*/
Vector3.len = function(b) {
return __WEBPACK_IMPORTED_MODULE_0__glmatrix_vec3__["a" /* default */].length(b.array);
};
// Vector3.length = Vector3.len;
/**
* @param {clay.Vector3} out
* @param {clay.Vector3} a
* @param {clay.Vector3} b
* @param {number} t
* @return {clay.Vector3}
*/
Vector3.lerp = function(out, a, b, t) {
__WEBPACK_IMPORTED_MODULE_0__glmatrix_vec3__["a" /* default */].lerp(out.array, a.array, b.array, t);
out._dirty = true;
return out;
};
/**
* @param {clay.Vector3} out
* @param {clay.Vector3} a
* @param {clay.Vector3} b
* @return {clay.Vector3}
*/
Vector3.min = function(out, a, b) {
__WEBPACK_IMPORTED_MODULE_0__glmatrix_vec3__["a" /* default */].min(out.array, a.array, b.array);
out._dirty = true;
return out;
};
/**
* @param {clay.Vector3} out
* @param {clay.Vector3} a
* @param {clay.Vector3} b
* @return {clay.Vector3}
*/
Vector3.max = function(out, a, b) {
__WEBPACK_IMPORTED_MODULE_0__glmatrix_vec3__["a" /* default */].max(out.array, a.array, b.array);
out._dirty = true;
return out;
};
/**
* @param {clay.Vector3} out
* @param {clay.Vector3} a
* @param {clay.Vector3} b
* @return {clay.Vector3}
*/
Vector3.mul = function(out, a, b) {
__WEBPACK_IMPORTED_MODULE_0__glmatrix_vec3__["a" /* default */].multiply(out.array