UNPKG

x_ite

Version:

X_ITE X3D Browser, view and manipulate X3D, VRML, glTF and other 3D sources in HTML.

1,191 lines (943 loc) 47.9 kB
/* X_ITE v12.2.3 */ const __X_ITE_X3D__ = window [Symbol .for ("X_ITE.X3D-12.2.3")]; /******/ (() => { // webpackBootstrap /******/ "use strict"; /******/ var __webpack_modules__ = ({ /***/ 254: /***/ ((module) => { module.exports = __X_ITE_X3D__ .jquery; /***/ }) /******/ }); /************************************************************************/ /******/ // The module cache /******/ var __webpack_module_cache__ = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ // Check if module is in cache /******/ var cachedModule = __webpack_module_cache__[moduleId]; /******/ if (cachedModule !== undefined) { /******/ return cachedModule.exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = __webpack_module_cache__[moduleId] = { /******/ // no module.id needed /******/ // no module.loaded needed /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /************************************************************************/ /******/ /* webpack/runtime/compat get default export */ /******/ (() => { /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = (module) => { /******/ var getter = module && module.__esModule ? /******/ () => (module['default']) : /******/ () => (module); /******/ __webpack_require__.d(getter, { a: getter }); /******/ return getter; /******/ }; /******/ })(); /******/ /******/ /* webpack/runtime/define property getters */ /******/ (() => { /******/ // define getter functions for harmony exports /******/ __webpack_require__.d = (exports, definition) => { /******/ for(var key in definition) { /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); /******/ } /******/ } /******/ }; /******/ })(); /******/ /******/ /* webpack/runtime/hasOwnProperty shorthand */ /******/ (() => { /******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) /******/ })(); /******/ /************************************************************************/ // UNUSED EXPORTS: default ;// external "__X_ITE_X3D__ .Components" const external_X_ITE_X3D_Components_namespaceObject = __X_ITE_X3D__ .Components; var external_X_ITE_X3D_Components_default = /*#__PURE__*/__webpack_require__.n(external_X_ITE_X3D_Components_namespaceObject); ;// external "__X_ITE_X3D__ .Namespace" const external_X_ITE_X3D_Namespace_namespaceObject = __X_ITE_X3D__ .Namespace; var external_X_ITE_X3D_Namespace_default = /*#__PURE__*/__webpack_require__.n(external_X_ITE_X3D_Namespace_namespaceObject); ;// ./src/x_ite/Browser/CubeMapTexturing/Panorama2.fs.js const __default__ = /* glsl */ `#version 300 es precision highp float;precision highp int;precision highp sampler2D;const float M_PI=3.1415926535897932384626433832795;in vec2 texCoord;out vec4 x3d_FragColor;uniform sampler2D x3d_PanoramaTextureEXT;uniform int x3d_CurrentFaceEXT;vec3 uvToXYZ(const in int face,const in vec2 uv){switch(face){case 0:return vec3(1.,uv.y,uv.x);case 1:return vec3(-1.,uv.y,-uv.x);case 2:return vec3(uv.x,uv.y,-1.);case 3:return vec3(-uv.x,uv.y,1.);case 4:return vec3(uv.y,-1.,uv.x);default:return vec3(-uv.y,1.,uv.x);}}vec2 dirToUV(const in vec3 dir){return vec2(.5+.5*atan(dir.z,dir.x)/M_PI,1.-acos(dir.y)/M_PI);}vec3 panoramaToCubeMap(const in int face,const in vec2 texCoord){vec3 scan=uvToXYZ(face,texCoord);vec3 direction=normalize(scan);vec2 src=dirToUV(direction);return texture(x3d_PanoramaTextureEXT,src).rgb;}void main(){x3d_FragColor=vec4(panoramaToCubeMap(x3d_CurrentFaceEXT,texCoord),1.);}` ; /* harmony default export */ const Panorama2_fs = (external_X_ITE_X3D_Namespace_default().add ("Panorama2.fs", __default__)); ;// ./src/x_ite/Browser/CubeMapTexturing/X3DCubeMapTexturingContext.js const _panoramaShader = Symbol (); function X3DCubeMapTexturingContext () { } Object .assign (X3DCubeMapTexturingContext .prototype, { getPanoramaShader () { return this [_panoramaShader] ??= this .createShader ("Panorama", "FullScreen", `data:x-shader/x-fragment,${Panorama2_fs}`, [ ], ["x3d_PanoramaTextureEXT", "x3d_CurrentFaceEXT"]); }, }); const X3DCubeMapTexturingContext_default_ = X3DCubeMapTexturingContext; ; /* harmony default export */ const CubeMapTexturing_X3DCubeMapTexturingContext = (external_X_ITE_X3D_Namespace_default().add ("X3DCubeMapTexturingContext", X3DCubeMapTexturingContext_default_)); ;// external "__X_ITE_X3D__ .Fields" const external_X_ITE_X3D_Fields_namespaceObject = __X_ITE_X3D__ .Fields; var external_X_ITE_X3D_Fields_default = /*#__PURE__*/__webpack_require__.n(external_X_ITE_X3D_Fields_namespaceObject); ;// external "__X_ITE_X3D__ .X3DFieldDefinition" const external_X_ITE_X3D_X3DFieldDefinition_namespaceObject = __X_ITE_X3D__ .X3DFieldDefinition; var external_X_ITE_X3D_X3DFieldDefinition_default = /*#__PURE__*/__webpack_require__.n(external_X_ITE_X3D_X3DFieldDefinition_namespaceObject); ;// external "__X_ITE_X3D__ .FieldDefinitionArray" const external_X_ITE_X3D_FieldDefinitionArray_namespaceObject = __X_ITE_X3D__ .FieldDefinitionArray; var external_X_ITE_X3D_FieldDefinitionArray_default = /*#__PURE__*/__webpack_require__.n(external_X_ITE_X3D_FieldDefinitionArray_namespaceObject); ;// external "__X_ITE_X3D__ .X3DNode" const external_X_ITE_X3D_X3DNode_namespaceObject = __X_ITE_X3D__ .X3DNode; var external_X_ITE_X3D_X3DNode_default = /*#__PURE__*/__webpack_require__.n(external_X_ITE_X3D_X3DNode_namespaceObject); ;// external "__X_ITE_X3D__ .X3DSingleTextureNode" const external_X_ITE_X3D_X3DSingleTextureNode_namespaceObject = __X_ITE_X3D__ .X3DSingleTextureNode; var external_X_ITE_X3D_X3DSingleTextureNode_default = /*#__PURE__*/__webpack_require__.n(external_X_ITE_X3D_X3DSingleTextureNode_namespaceObject); ;// external "__X_ITE_X3D__ .X3DConstants" const external_X_ITE_X3D_X3DConstants_namespaceObject = __X_ITE_X3D__ .X3DConstants; var external_X_ITE_X3D_X3DConstants_default = /*#__PURE__*/__webpack_require__.n(external_X_ITE_X3D_X3DConstants_namespaceObject); ;// ./src/x_ite/Components/CubeMapTexturing/X3DEnvironmentTextureNode.js function X3DEnvironmentTextureNode (executionContext) { external_X_ITE_X3D_X3DSingleTextureNode_default().call (this, executionContext); this .addType ((external_X_ITE_X3D_X3DConstants_default()).X3DEnvironmentTextureNode); const gl = this .getBrowser () .getContext (); this .target = gl .TEXTURE_CUBE_MAP; this .targets = [ gl .TEXTURE_CUBE_MAP_POSITIVE_Z, // Front gl .TEXTURE_CUBE_MAP_NEGATIVE_Z, // Back gl .TEXTURE_CUBE_MAP_NEGATIVE_X, // Left gl .TEXTURE_CUBE_MAP_POSITIVE_X, // Right gl .TEXTURE_CUBE_MAP_POSITIVE_Y, // Top gl .TEXTURE_CUBE_MAP_NEGATIVE_Y, // Bottom ]; this .size = 1; this .levels = 0; } Object .assign (Object .setPrototypeOf (X3DEnvironmentTextureNode .prototype, (external_X_ITE_X3D_X3DSingleTextureNode_default()).prototype), { getTarget () { return this .target; }, getTextureType () { return 4; }, getTargets () { return this .targets; }, getSize () { return this .size; }, setSize (value) { this .size = value; // https://stackoverflow.com/a/25640078/1818915 // The system will automatically clamp the specified parameter appropriately. // In GLSL 4 there is a textureQueryLevels function, // otherwise: levels = 1 + floor (log2 (size)). // We subtract one (1) here, because glsl texture lod starts with 0. this .levels = Math .floor (Math .log2 (Math .max (value, 1))); }, getLevels () { return this .levels; }, clearTexture: (() => { const defaultData = new Uint8Array ([ 255, 255, 255, 255 ]); return function () { const gl = this .getBrowser () .getContext (); gl .bindTexture (this .getTarget (), this .getTexture ()); for (const target of this .getTargets ()) gl .texImage2D (target, 0, gl .RGBA, 1, 1, 0, gl .RGBA, gl .UNSIGNED_BYTE, defaultData); this .setSize (1); this .setTransparent (false); this .updateTextureParameters (); }; })(), updateTextureParameters () { external_X_ITE_X3D_X3DSingleTextureNode_default().prototype .updateTextureParameters .call (this, this .target, this ._textureProperties .getValue (), this .texturePropertiesNode, this .size, this .size, false, false, false); }, setShaderUniforms (gl, channel) { const textureUnit = this .getBrowser () .popTextureUnit (); gl .activeTexture (gl .TEXTURE0 + textureUnit); gl .bindTexture (gl .TEXTURE_CUBE_MAP, this .getTexture ()); gl .uniform1i (channel .textureCube, textureUnit); }, }); Object .defineProperties (X3DEnvironmentTextureNode, external_X_ITE_X3D_X3DNode_default().getStaticProperties ("X3DEnvironmentTextureNode", "CubeMapTexturing", 1)); const X3DEnvironmentTextureNode_default_ = X3DEnvironmentTextureNode; ; /* harmony default export */ const CubeMapTexturing_X3DEnvironmentTextureNode = (external_X_ITE_X3D_Namespace_default().add ("X3DEnvironmentTextureNode", X3DEnvironmentTextureNode_default_)); ;// external "__X_ITE_X3D__ .X3DCast" const external_X_ITE_X3D_X3DCast_namespaceObject = __X_ITE_X3D__ .X3DCast; var external_X_ITE_X3D_X3DCast_default = /*#__PURE__*/__webpack_require__.n(external_X_ITE_X3D_X3DCast_namespaceObject); ;// external "__X_ITE_X3D__ .BitSet" const external_X_ITE_X3D_BitSet_namespaceObject = __X_ITE_X3D__ .BitSet; var external_X_ITE_X3D_BitSet_default = /*#__PURE__*/__webpack_require__.n(external_X_ITE_X3D_BitSet_namespaceObject); ;// ./src/x_ite/Components/CubeMapTexturing/ComposedCubeMapTexture.js function ComposedCubeMapTexture (executionContext) { CubeMapTexturing_X3DEnvironmentTextureNode .call (this, executionContext); this .addType ((external_X_ITE_X3D_X3DConstants_default()).ComposedCubeMapTexture); this .addChildObjects ((external_X_ITE_X3D_X3DConstants_default()).outputOnly, "update", new (external_X_ITE_X3D_Fields_default()).SFTime ()); // Legacy if (executionContext .getSpecificationVersion () <= 3.3) { this .addAlias ("front", this ._frontTexture); this .addAlias ("back", this ._backTexture); this .addAlias ("left", this ._leftTexture); this .addAlias ("right", this ._rightTexture); this .addAlias ("top", this ._topTexture); this .addAlias ("bottom", this ._bottomTexture); } // Private properties this .textureNodes = [null, null, null, null, null, null]; this .textureBits = new (external_X_ITE_X3D_BitSet_default()) (); } Object .assign (Object .setPrototypeOf (ComposedCubeMapTexture .prototype, CubeMapTexturing_X3DEnvironmentTextureNode .prototype), { initialize () { CubeMapTexturing_X3DEnvironmentTextureNode .prototype .initialize .call (this); const gl = this .getBrowser () .getContext (); this .frameBuffer = gl .createFramebuffer (); // Upload default data. this .clearTexture (); // Initialize. this ._frontTexture .addInterest ("set_texture__", this, 0); this ._backTexture .addInterest ("set_texture__", this, 1); this ._leftTexture .addInterest ("set_texture__", this, 2); this ._rightTexture .addInterest ("set_texture__", this, 3); this ._topTexture .addInterest ("set_texture__", this, 5); this ._bottomTexture .addInterest ("set_texture__", this, 4); this ._update .addInterest ("update", this); this .set_texture__ (0, this ._frontTexture); this .set_texture__ (1, this ._backTexture); this .set_texture__ (2, this ._leftTexture); this .set_texture__ (3, this ._rightTexture); this .set_texture__ (4, this ._topTexture); this .set_texture__ (5, this ._bottomTexture); }, set_texture__ (index, node) { let textureNode = this .textureNodes [index]; textureNode ?.removeInterest (`set_loadState${index}__`, this); textureNode = this .textureNodes [index] = external_X_ITE_X3D_X3DCast_default() ((external_X_ITE_X3D_X3DConstants_default()).X3DTexture2DNode, node); textureNode ?.addInterest (`set_loadState${index}__`, this, index, textureNode); this .set_loadState__ (index, textureNode); }, set_loadState__ (index, textureNode) { this .setTextureBit (index, textureNode ?.checkLoadState ()); this ._update .addEvent (); }, setTextureBit (bit, loadState) { this .textureBits .set (bit, loadState === (external_X_ITE_X3D_X3DConstants_default()).COMPLETE_STATE); }, isComplete () { if (+this .textureBits !== 0b111111) return false; const textureNodes = this .textureNodes, size = textureNodes [0] .getWidth (); for (const textureNode of textureNodes) { if (textureNode .getWidth () !== size) return false; if (textureNode .getHeight () !== size) return false; } return true; }, update () { if (this .isComplete ()) { const gl = this .getBrowser () .getContext (), textureNodes = this .textureNodes, size = textureNodes [0] .getWidth (); // Prepare faces. This is necessary for Chrome and Firefox. if (size !== this .getSize ()) { const defaultData = new Uint8Array (size * size * 4); gl .bindTexture (this .getTarget (), this .getTexture ()); for (let i = 0; i < 6; ++ i) gl .texImage2D (this .getTargets () [i], 0, gl .RGBA, size, size, 0, gl .RGBA, gl .UNSIGNED_BYTE, defaultData); this .setSize (size); this .updateTextureParameters (); } // Fill with texture data. gl .bindFramebuffer (gl .FRAMEBUFFER, this .frameBuffer); for (let i = 0; i < 6; ++ i) { const textureNode = textureNodes [i]; // Copy color texture. gl .bindTexture (gl .TEXTURE_2D, textureNode .getTexture ()); gl .framebufferTexture2D (gl .FRAMEBUFFER, gl .COLOR_ATTACHMENT0, gl .TEXTURE_2D, textureNode .getTexture (), 0); gl .bindTexture (this .getTarget (), this .getTexture ()); if (textureNode .getTextureType () === 1) { gl .copyTexSubImage2D (this .getTargets () [i], 0, 0, 0, 0, 0, size, size); } else { // Copy and flip Y. for (let y = 0; y < size; ++ y) gl .copyTexSubImage2D (this .getTargets () [i], 0, 0, size - y - 1, 0, y, size, 1); } } this .setTransparent (textureNodes .some (textureNode => textureNode .isTransparent ())); this .setLinear (textureNodes .some (textureNode => textureNode .isLinear ())); this .setMipMaps (textureNodes .every (textureNode => textureNode .canMipMaps ())); this .updateTextureParameters (); this .addNodeEvent (); } else { this .clearTexture (); this .addNodeEvent (); } }, }); Object .defineProperties (ComposedCubeMapTexture, { ... external_X_ITE_X3D_X3DNode_default().getStaticProperties ("ComposedCubeMapTexture", "CubeMapTexturing", 1, "texture", "3.1"), fieldDefinitions: { value: new (external_X_ITE_X3D_FieldDefinitionArray_default()) ([ new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOutput, "metadata", new (external_X_ITE_X3D_Fields_default()).SFNode ()), new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOutput, "description", new (external_X_ITE_X3D_Fields_default()).SFString ()), new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOutput, "frontTexture", new (external_X_ITE_X3D_Fields_default()).SFNode ()), new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOutput, "backTexture", new (external_X_ITE_X3D_Fields_default()).SFNode ()), new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOutput, "leftTexture", new (external_X_ITE_X3D_Fields_default()).SFNode ()), new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOutput, "rightTexture", new (external_X_ITE_X3D_Fields_default()).SFNode ()), new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOutput, "topTexture", new (external_X_ITE_X3D_Fields_default()).SFNode ()), new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOutput, "bottomTexture", new (external_X_ITE_X3D_Fields_default()).SFNode ()), new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).initializeOnly, "textureProperties", new (external_X_ITE_X3D_Fields_default()).SFNode ()), ]), enumerable: true, }, }); for (let index = 0; index < 6; ++ index) { ComposedCubeMapTexture .prototype [`set_loadState${index}__`] = function (index, textureNode) { this .set_loadState__ (index, textureNode); }; } const ComposedCubeMapTexture_default_ = ComposedCubeMapTexture; ; /* harmony default export */ const CubeMapTexturing_ComposedCubeMapTexture = (external_X_ITE_X3D_Namespace_default().add ("ComposedCubeMapTexture", ComposedCubeMapTexture_default_)); ;// external "__X_ITE_X3D__ .X3DBaseNode" const external_X_ITE_X3D_X3DBaseNode_namespaceObject = __X_ITE_X3D__ .X3DBaseNode; var external_X_ITE_X3D_X3DBaseNode_default = /*#__PURE__*/__webpack_require__.n(external_X_ITE_X3D_X3DBaseNode_namespaceObject); ;// external "__X_ITE_X3D__ .X3DRenderObject" const external_X_ITE_X3D_X3DRenderObject_namespaceObject = __X_ITE_X3D__ .X3DRenderObject; var external_X_ITE_X3D_X3DRenderObject_default = /*#__PURE__*/__webpack_require__.n(external_X_ITE_X3D_X3DRenderObject_namespaceObject); ;// external "__X_ITE_X3D__ .TraverseType" const external_X_ITE_X3D_TraverseType_namespaceObject = __X_ITE_X3D__ .TraverseType; var external_X_ITE_X3D_TraverseType_default = /*#__PURE__*/__webpack_require__.n(external_X_ITE_X3D_TraverseType_namespaceObject); ;// ./src/x_ite/Rendering/DependentRenderer.js function DependentRenderer (executionContext, renderObject) { external_X_ITE_X3D_X3DBaseNode_default().call (this, executionContext); external_X_ITE_X3D_X3DRenderObject_default().call (this, executionContext); this .renderObject = renderObject; this .framebuffers = [ ]; } Object .assign (Object .setPrototypeOf (DependentRenderer .prototype, (external_X_ITE_X3D_X3DBaseNode_default()).prototype), (external_X_ITE_X3D_X3DRenderObject_default()).prototype, { initialize () { external_X_ITE_X3D_X3DBaseNode_default().prototype .initialize .call (this); external_X_ITE_X3D_X3DRenderObject_default().prototype .initialize .call (this); }, isIndependent () { return false; }, getLayer () { return this .renderObject .getLayer (); }, getBackground () { return this .renderObject .getBackground (); }, getFog () { return this .renderObject .getFog (); }, getNavigationInfo () { return this .renderObject .getNavigationInfo (); }, getViewpoint () { return this .renderObject .getViewpoint (); }, getViewpointStack () { return this .renderObject .getViewpointStack (); }, getLightContainer () { return this .renderObject .getLights () [this .lightIndex ++]; }, getFramebuffers () { return this .framebuffers; }, setFramebuffer (frameBuffer) { this .framebuffers [0] = frameBuffer; }, render (type, callback, group) { switch (type) { case (external_X_ITE_X3D_TraverseType_default()).COLLISION: { external_X_ITE_X3D_X3DRenderObject_default().prototype .render .call (this, type, callback, group); break; } case (external_X_ITE_X3D_TraverseType_default()).SHADOW: { external_X_ITE_X3D_X3DRenderObject_default().prototype .render .call (this, type, callback, group); break; } case (external_X_ITE_X3D_TraverseType_default()).DISPLAY: { this .lightIndex = 0; external_X_ITE_X3D_X3DRenderObject_default().prototype .render .call (this, type, callback, group); for (const light of this .renderObject .getLights ()) light .modelViewMatrix .pop (); break; } } }, }); for (const key of Object .keys (DependentRenderer .prototype)) Object .defineProperty (DependentRenderer .prototype, key, { enumerable: false }); const DependentRenderer_default_ = DependentRenderer; ; /* harmony default export */ const Rendering_DependentRenderer = (external_X_ITE_X3D_Namespace_default().add ("DependentRenderer", DependentRenderer_default_)); ;// external "__X_ITE_X3D__ .TextureBuffer" const external_X_ITE_X3D_TextureBuffer_namespaceObject = __X_ITE_X3D__ .TextureBuffer; var external_X_ITE_X3D_TextureBuffer_default = /*#__PURE__*/__webpack_require__.n(external_X_ITE_X3D_TextureBuffer_namespaceObject); ;// external "__X_ITE_X3D__ .Camera" const external_X_ITE_X3D_Camera_namespaceObject = __X_ITE_X3D__ .Camera; var external_X_ITE_X3D_Camera_default = /*#__PURE__*/__webpack_require__.n(external_X_ITE_X3D_Camera_namespaceObject); ;// external "__X_ITE_X3D__ .ViewVolume" const external_X_ITE_X3D_ViewVolume_namespaceObject = __X_ITE_X3D__ .ViewVolume; var external_X_ITE_X3D_ViewVolume_default = /*#__PURE__*/__webpack_require__.n(external_X_ITE_X3D_ViewVolume_namespaceObject); ;// external "__X_ITE_X3D__ .Rotation4" const external_X_ITE_X3D_Rotation4_namespaceObject = __X_ITE_X3D__ .Rotation4; var external_X_ITE_X3D_Rotation4_default = /*#__PURE__*/__webpack_require__.n(external_X_ITE_X3D_Rotation4_namespaceObject); ;// external "__X_ITE_X3D__ .Vector3" const external_X_ITE_X3D_Vector3_namespaceObject = __X_ITE_X3D__ .Vector3; var external_X_ITE_X3D_Vector3_default = /*#__PURE__*/__webpack_require__.n(external_X_ITE_X3D_Vector3_namespaceObject); ;// external "__X_ITE_X3D__ .Vector4" const external_X_ITE_X3D_Vector4_namespaceObject = __X_ITE_X3D__ .Vector4; var external_X_ITE_X3D_Vector4_default = /*#__PURE__*/__webpack_require__.n(external_X_ITE_X3D_Vector4_namespaceObject); ;// external "__X_ITE_X3D__ .Matrix4" const external_X_ITE_X3D_Matrix4_namespaceObject = __X_ITE_X3D__ .Matrix4; var external_X_ITE_X3D_Matrix4_default = /*#__PURE__*/__webpack_require__.n(external_X_ITE_X3D_Matrix4_namespaceObject); ;// external "__X_ITE_X3D__ .Algorithm" const external_X_ITE_X3D_Algorithm_namespaceObject = __X_ITE_X3D__ .Algorithm; var external_X_ITE_X3D_Algorithm_default = /*#__PURE__*/__webpack_require__.n(external_X_ITE_X3D_Algorithm_namespaceObject); ;// ./src/x_ite/Components/CubeMapTexturing/GeneratedCubeMapTexture.js function GeneratedCubeMapTexture (executionContext) { CubeMapTexturing_X3DEnvironmentTextureNode .call (this, executionContext); this .addType ((external_X_ITE_X3D_X3DConstants_default()).GeneratedCubeMapTexture); this .dependentRenderers = new WeakMap (); this .projectionMatrix = new (external_X_ITE_X3D_Matrix4_default()) (); this .modelMatrix = new (external_X_ITE_X3D_Matrix4_default()) (); this .viewVolume = new (external_X_ITE_X3D_ViewVolume_default()) (); } Object .assign (Object .setPrototypeOf (GeneratedCubeMapTexture .prototype, CubeMapTexturing_X3DEnvironmentTextureNode .prototype), { initialize () { CubeMapTexturing_X3DEnvironmentTextureNode .prototype .initialize .call (this); // Upload default data. this .clearTexture (); // Initialize. this ._size .addInterest ("set_size__", this); this .set_size__ (); }, set_size__ () { const browser = this .getBrowser (), gl = browser .getContext (); // Transfer 6 textures of size x size pixels. const size = this ._size .getValue (); if (size > 0) { // Upload default data. const defaultData = new Uint8Array (size * size * 4); gl .bindTexture (this .getTarget (), this .getTexture ()); for (const target of this .getTargets ()) gl .texImage2D (target, 0, gl .RGBA, size, size, 0, gl .RGBA, gl .UNSIGNED_BYTE, defaultData); this .updateTextureParameters (); // Properties this .viewport = new (external_X_ITE_X3D_Vector4_default()) (0, 0, size, size); this .frameBuffer = new (external_X_ITE_X3D_TextureBuffer_default()) ({ browser: this .getBrowser (), width: size, height: size }); this .setSize (size); } else { this .frameBuffer = null; this .setSize (0); } }, traverse (type, renderObject) { // TraverseType .DISPLAY if (this ._update .getValue () === "NONE") return; if (!renderObject .isIndependent ()) return; if (!this .frameBuffer) return; renderObject .getGeneratedCubeMapTextures () .push (this); this .modelMatrix .assign (renderObject .getModelViewMatrix () .get ()) .multRight (renderObject .getCameraSpaceMatrix () .get ()); }, renderTexture: (() => { // Rotations to negated normals of the texture cube. const rotations = [ new (external_X_ITE_X3D_Rotation4_default()) ((external_X_ITE_X3D_Vector3_default()).Z_AXIS, (external_X_ITE_X3D_Vector3_default()).NEGATIVE_Z_AXIS), // front new (external_X_ITE_X3D_Rotation4_default()) ((external_X_ITE_X3D_Vector3_default()).Z_AXIS, (external_X_ITE_X3D_Vector3_default()).Z_AXIS), // back new (external_X_ITE_X3D_Rotation4_default()) ((external_X_ITE_X3D_Vector3_default()).Z_AXIS, (external_X_ITE_X3D_Vector3_default()).X_AXIS), // left new (external_X_ITE_X3D_Rotation4_default()) ((external_X_ITE_X3D_Vector3_default()).Z_AXIS, (external_X_ITE_X3D_Vector3_default()).NEGATIVE_X_AXIS), // right new (external_X_ITE_X3D_Rotation4_default()) ((external_X_ITE_X3D_Vector3_default()).Z_AXIS, (external_X_ITE_X3D_Vector3_default()).NEGATIVE_Y_AXIS), // top new (external_X_ITE_X3D_Rotation4_default()) ((external_X_ITE_X3D_Vector3_default()).Z_AXIS, (external_X_ITE_X3D_Vector3_default()).Y_AXIS), // bottom ]; // Negated scales of the texture cube. const scales = [ new (external_X_ITE_X3D_Vector3_default()) (-1, -1, 1), // front new (external_X_ITE_X3D_Vector3_default()) (-1, -1, 1), // back new (external_X_ITE_X3D_Vector3_default()) (-1, -1, 1), // left new (external_X_ITE_X3D_Vector3_default()) (-1, -1, 1), // right new (external_X_ITE_X3D_Vector3_default()) ( 1, 1, 1), // top new (external_X_ITE_X3D_Vector3_default()) ( 1, 1, 1), // bottom ]; const invCameraSpaceMatrix = new (external_X_ITE_X3D_Matrix4_default()) (); return function (renderObject) { this .textureRenderingPass = true; if (!this .dependentRenderers .has (renderObject)) { const dependentRenderer = new Rendering_DependentRenderer (this .getExecutionContext (), renderObject); dependentRenderer .setup (); this .dependentRenderers .set (renderObject, dependentRenderer); } const dependentRenderer = this .dependentRenderers .get (renderObject), browser = this .getBrowser (), layer = renderObject .getLayer (), gl = browser .getContext (), background = dependentRenderer .getBackground (), navigationInfoNode = dependentRenderer .getNavigationInfo (), viewpointNode = dependentRenderer .getViewpoint (), headlightContainer = browser .getHeadlight (), headlight = navigationInfoNode ._headlight .getValue (), nearValue = viewpointNode .getNearDistance (navigationInfoNode), farValue = viewpointNode .getFarDistance (navigationInfoNode), projectionMatrix = external_X_ITE_X3D_Camera_default().perspective (external_X_ITE_X3D_Algorithm_default().radians (90), nearValue, farValue, 1, 1, this .projectionMatrix), width = this .frameBuffer .getWidth (), height = this .frameBuffer .getHeight (); this .setTransparent (background .isTransparent ()); dependentRenderer .setFramebuffer (this .frameBuffer); dependentRenderer .getViewVolumes () .push (this .viewVolume .set (projectionMatrix, this .viewport, this .viewport)); dependentRenderer .getProjectionMatrix () .push (projectionMatrix); gl .bindTexture (this .getTarget (), this .getTexture ()); for (let i = 0; i < 6; ++ i) { gl .clear (gl .COLOR_BUFFER_BIT); // Always clear, X3DBackground could be transparent! // Setup inverse texture space matrix. dependentRenderer .getCameraSpaceMatrix () .push (this .modelMatrix); dependentRenderer .getCameraSpaceMatrix () .rotate (rotations [i]); dependentRenderer .getCameraSpaceMatrix () .scale (scales [i]); dependentRenderer .getViewMatrix () .push (invCameraSpaceMatrix .assign (dependentRenderer .getCameraSpaceMatrix () .get ()) .inverse ()); dependentRenderer .getModelViewMatrix () .push (invCameraSpaceMatrix); // Setup headlight if enabled. if (headlight) { headlightContainer .modelViewMatrix .push (invCameraSpaceMatrix); headlightContainer .modelViewMatrix .multLeft (viewpointNode .getCameraSpaceMatrix ()); } // Render layer's children. layer .traverse ((external_X_ITE_X3D_TraverseType_default()).DISPLAY, dependentRenderer); // Pop matrices. if (headlight) headlightContainer .modelViewMatrix .pop (); dependentRenderer .getModelViewMatrix () .pop (); dependentRenderer .getCameraSpaceMatrix () .pop (); dependentRenderer .getViewMatrix () .pop (); // Transfer image. gl .bindTexture (this .getTarget (), this .getTexture ()); gl .copyTexSubImage2D (this .getTargets () [i], 0, 0, 0, 0, 0, width, height); } this .updateTextureParameters (); dependentRenderer .getProjectionMatrix () .pop (); dependentRenderer .getViewVolumes () .pop (); if (this ._update .getValue () === "NEXT_FRAME_ONLY") this ._update = "NONE"; this .textureRenderingPass = false; }; })(), setShaderUniforms (gl, channel) { CubeMapTexturing_X3DEnvironmentTextureNode .prototype .setShaderUniforms .call (this, gl, channel); if (this .textureRenderingPass) gl .viewport (0, 0, 0, 0); // Hide object by making viewport zero size. }, }); Object .defineProperties (GeneratedCubeMapTexture, { ... external_X_ITE_X3D_X3DNode_default().getStaticProperties ("GeneratedCubeMapTexture", "CubeMapTexturing", 3, "texture", "3.0"), fieldDefinitions: { value: new (external_X_ITE_X3D_FieldDefinitionArray_default()) ([ new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOutput, "metadata", new (external_X_ITE_X3D_Fields_default()).SFNode ()), new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOutput, "description", new (external_X_ITE_X3D_Fields_default()).SFString ()), new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOutput, "update", new (external_X_ITE_X3D_Fields_default()).SFString ("NONE")), new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).initializeOnly, "size", new (external_X_ITE_X3D_Fields_default()).SFInt32 (128)), new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).initializeOnly, "textureProperties", new (external_X_ITE_X3D_Fields_default()).SFNode ()), ]), enumerable: true, }, }); const GeneratedCubeMapTexture_default_ = GeneratedCubeMapTexture; ; /* harmony default export */ const CubeMapTexturing_GeneratedCubeMapTexture = (external_X_ITE_X3D_Namespace_default().add ("GeneratedCubeMapTexture", GeneratedCubeMapTexture_default_)); ;// external "__X_ITE_X3D__ .X3DUrlObject" const external_X_ITE_X3D_X3DUrlObject_namespaceObject = __X_ITE_X3D__ .X3DUrlObject; var external_X_ITE_X3D_X3DUrlObject_default = /*#__PURE__*/__webpack_require__.n(external_X_ITE_X3D_X3DUrlObject_namespaceObject); ;// external "__X_ITE_X3D__ .Vector2" const external_X_ITE_X3D_Vector2_namespaceObject = __X_ITE_X3D__ .Vector2; var external_X_ITE_X3D_Vector2_default = /*#__PURE__*/__webpack_require__.n(external_X_ITE_X3D_Vector2_namespaceObject); ;// external "__X_ITE_X3D__ .DEVELOPMENT" const external_X_ITE_X3D_DEVELOPMENT_namespaceObject = __X_ITE_X3D__ .DEVELOPMENT; var external_X_ITE_X3D_DEVELOPMENT_default = /*#__PURE__*/__webpack_require__.n(external_X_ITE_X3D_DEVELOPMENT_namespaceObject); ;// ./src/x_ite/Components/CubeMapTexturing/ImageCubeMapTexture.js /* provided dependency */ var $ = __webpack_require__(254); function ImageCubeMapTexture (executionContext) { CubeMapTexturing_X3DEnvironmentTextureNode .call (this, executionContext); external_X_ITE_X3D_X3DUrlObject_default().call (this, executionContext); this .addType ((external_X_ITE_X3D_X3DConstants_default()).ImageCubeMapTexture); this .image = $("<img></img>"); this .urlStack = new (external_X_ITE_X3D_Fields_default()).MFString (); } Object .assign (Object .setPrototypeOf (ImageCubeMapTexture .prototype, CubeMapTexturing_X3DEnvironmentTextureNode .prototype), (external_X_ITE_X3D_X3DUrlObject_default()).prototype, { initialize () { CubeMapTexturing_X3DEnvironmentTextureNode .prototype .initialize .call (this); external_X_ITE_X3D_X3DUrlObject_default().prototype .initialize .call (this); // Upload default data. this .clearTexture (); // Initialize. this .image .on ("load", this .setImage .bind (this)) .on ("abort error", this .setError .bind (this)) .attr ("crossorigin", "anonymous"); this .requestImmediateLoad () .catch (Function .prototype); }, unloadData () { this .clearTexture (); }, loadData () { this .urlStack .setValue (this ._url); this .loadNext (); }, loadNext () { if (this .urlStack .length === 0) { this .clearTexture (); this .setLoadState ((external_X_ITE_X3D_X3DConstants_default()).FAILED_STATE); this .addNodeEvent (); return; } // Get URL. this .URL = new URL (this .urlStack .shift (), this .getExecutionContext () .getBaseURL ()); if (this .URL .pathname .match (/\.ktx2?(?:\.gz)?$/) || this .URL .href .match (/^data:image\/ktx2[;,]/)) { this .setLinear (true); this .setMipMaps (false); this .getBrowser () .getKTXDecoder () .then (decoder => decoder .loadKTXFromURL (this .URL, this .getCache ())) .then (texture => this .setKTXTexture (texture)) .catch (error => this .setError ({ type: error .message })); } else { this .setLinear (false); this .setMipMaps (true); if (this .URL .protocol !== "data:") { if (!this .getCache ()) this .URL .searchParams .set ("_", Date .now ()); } this .image .attr ("src", this .URL); } }, setError (event) { if (this .URL .protocol !== "data:") console .warn (`Error loading image '${decodeURI (this .URL)}':`, event .type); this .loadNext (); }, setKTXTexture (texture) { if (texture .target !== this .getTarget ()) return this .setError ({ type: "Invalid KTX texture target, must be 'TEXTURE_CUBE_MAP'." }); if ((external_X_ITE_X3D_DEVELOPMENT_default())) { if (this .URL .protocol !== "data:") console .info (`Done loading image cube map texture '${decodeURI (this .URL)}'.`); } try { this .setTexture (texture); this .setTransparent (false); this .setSize (texture .baseWidth); this .updateTextureParameters (); this .setLoadState ((external_X_ITE_X3D_X3DConstants_default()).COMPLETE_STATE); this .addNodeEvent (); } catch (error) { // Catch security error from cross origin requests. this .setError ({ type: error .message }); } }, setImage () { if ((external_X_ITE_X3D_DEVELOPMENT_default())) { if (this .URL .protocol !== "data:") console .info (`Done loading image cube map texture '${decodeURI (this .URL)}'.`); } try { // Create texture. const gl = this .getBrowser () .getContext (), texture = gl .createTexture (); gl .bindTexture (gl .TEXTURE_2D, texture); gl .texImage2D (gl .TEXTURE_2D, 0, gl .RGBA, gl .RGBA, gl .UNSIGNED_BYTE, this .image [0]); gl .texParameteri (gl .TEXTURE_2D, gl .TEXTURE_MIN_FILTER, gl .LINEAR); gl .texParameteri (gl .TEXTURE_2D, gl .TEXTURE_MAG_FILTER, gl .LINEAR); gl .texParameteri (gl .TEXTURE_2D, gl .TEXTURE_WRAP_S, gl .CLAMP_TO_EDGE); gl .texParameteri (gl .TEXTURE_2D, gl .TEXTURE_WRAP_T, gl .CLAMP_TO_EDGE); this .imageToCubeMap (texture, this .image .prop ("width"), this .image .prop ("height"), false); // Update load state. this .setLoadState ((external_X_ITE_X3D_X3DConstants_default()).COMPLETE_STATE); this .addNodeEvent (); } catch (error) { // Catch security error from cross origin requests. this .setError ({ type: error .message }); } }, imageToCubeMap (texture, width, height) { const aspectRatio = width / height; if (Math .abs (aspectRatio - 4/3) < 0.01) this .skyBoxToCubeMap (texture, width, height); if (Math .abs (aspectRatio - 2/1) < 0.01) this .panoramaToCubeMap (texture, width, height); this .updateTextureParameters (); }, skyBoxToCubeMap: (() => { const offsets = [ new (external_X_ITE_X3D_Vector2_default()) (1, 1), // Front new (external_X_ITE_X3D_Vector2_default()) (3, 1), // Back new (external_X_ITE_X3D_Vector2_default()) (0, 1), // Left new (external_X_ITE_X3D_Vector2_default()) (2, 1), // Right new (external_X_ITE_X3D_Vector2_default()) (1, 0), // Top new (external_X_ITE_X3D_Vector2_default()) (1, 2), // Bottom ]; // ----- // | t | // ----------------- // | l | f | r | b | // ----------------- // | b | // ----- return function (skyBoxTexture, width, height) { const gl = this .getBrowser () .getContext (), framebuffer = gl .createFramebuffer (), width1_4 = Math .floor (width / 4), height1_3 = Math .floor (height / 3), data = new Uint8Array (width1_4 * height1_3 * 4); // Init cube map texture. gl .bindTexture (this .getTarget (), this .getTexture ()); for (let i = 0; i < 6; ++ i) gl .texImage2D (this .getTargets () [i], 0, gl .RGBA, width1_4, height1_3, 0, gl .RGBA, gl .UNSIGNED_BYTE, null); // Extract images. gl .bindFramebuffer (gl .FRAMEBUFFER, framebuffer); gl .framebufferTexture2D (gl .FRAMEBUFFER, gl .COLOR_ATTACHMENT0, gl .TEXTURE_2D, skyBoxTexture, 0); let transparent = false; gl .bindTexture (this .getTarget (), this .getTexture ()); for (let i = 0; i < 6; ++ i) { gl .copyTexSubImage2D (this .getTargets () [i], 0, 0, 0, offsets [i] .x * width1_4, offsets [i] .y * height1_3, width1_4, height1_3); // Determine image alpha. if (!transparent) { gl .readPixels (offsets [i] .x * width1_4, offsets [i] .y * height1_3, width1_4, height1_3, gl .RGBA, gl .UNSIGNED_BYTE, data); transparent = this .isImageTransparent (data); } } gl .deleteFramebuffer (framebuffer); gl .deleteTexture (skyBoxTexture); // Update size and transparent field. this .setTransparent (transparent); this .setSize (width1_4); }; })(), panoramaToCubeMap (panoramaTexture, width, height) { // Mercator Projection const browser = this .getBrowser (), gl = browser .getContext (), shaderNode = browser .getPanoramaShader (), framebuffer = gl .createFramebuffer (), size = Math .floor (height / 2), data = new Uint8Array (size * size * 4); // Adjust panorama texture. gl .bindTexture (gl .TEXTURE_2D, panoramaTexture); gl .texParameteri (gl .TEXTURE_2D, gl .TEXTURE_WRAP_S, gl .MIRRORED_REPEAT); gl .texParameteri (gl .TEXTURE_2D, gl .TEXTURE_WRAP_T, gl .MIRRORED_REPEAT); gl .texParameteri (gl .TEXTURE_2D, gl .TEXTURE_MIN_FILTER, gl .LINEAR); gl .texParameteri (gl .TEXTURE_2D, gl .TEXTURE_MAG_FILTER, gl .LINEAR); // Init cube map texture. gl .bindTexture (this .getTarget (), this .getTexture ()); for (let i = 0; i < 6; ++ i) gl .texImage2D (this .getTargets () [i], 0, gl .RGBA, size, size, 0, gl .RGBA, gl .UNSIGNED_BYTE, null); // Render faces. gl .useProgram (shaderNode .getProgram ()); gl .activeTexture (gl .TEXTURE0); gl .bindTexture (gl .TEXTURE_2D, panoramaTexture); gl .uniform1i (shaderNode .x3d_PanoramaTextureEXT, 0); gl .bindFramebuffer (gl .FRAMEBUFFER, framebuffer); gl .viewport (0, 0, size, size); gl .scissor (0, 0, size, size); gl .disable (gl .DEPTH_TEST); gl .enable (gl .CULL_FACE); gl .frontFace (gl .CCW); gl .clearColor (0, 0, 0, 0); gl .bindVertexArray (browser .getFullscreenVertexArrayObject ()); let transparent = false; for (let i = 0; i < 6; ++ i) { gl .framebufferTexture2D (gl .FRAMEBUFFER, gl .COLOR_ATTACHMENT0, this .getTargets () [i], this .getTexture (), 0); gl .clear (gl .COLOR_BUFFER_BIT); gl .uniform1i (shaderNode .x3d_CurrentFaceEXT, i); gl .drawArrays (gl .TRIANGLES, 0, 6); if (!transparent) { gl .readPixels (0, 0, size, size, gl .RGBA, gl .UNSIGNED_BYTE, data); transparent = this .isImageTransparent (data); } } gl .enable (gl .DEPTH_TEST); gl .deleteFramebuffer (framebuffer); gl .deleteTexture (panoramaTexture); // Update size and transparent field. this .setTransparent (transparent); this .setSize (size); }, dispose () { external_X_ITE_X3D_X3DUrlObject_default().prototype .dispose .call (this); CubeMapTexturing_X3DEnvironmentTextureNode .prototype .dispose .call (this); }, }); Object .defineProperties (ImageCubeMapTexture, { ... external_X_ITE_X3D_X3DNode_default().getStaticProperties ("ImageCubeMapTexture", "CubeMapTexturing", 2, "texture", "3.0"), fieldDefinitions: { value: new (external_X_ITE_X3D_FieldDefinitionArray_default()) ([ new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOutput, "metadata", new (external_X_ITE_X3D_Fields_default()).SFNode ()), new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOutput, "description", new (external_X_ITE_X3D_Fields_default()).SFString ()), new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOutput, "load", new (external_X_ITE_X3D_Fields_default()).SFBool (true)), new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOutput, "url", new (external_X_ITE_X3D_Fields_default()).MFString ()), new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOutput, "autoRefresh", new (external_X_ITE_X3D_Fields_default()).SFTime (0)), new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).inputOutput, "autoRefreshTimeLimit", new (external_X_ITE_X3D_Fields_default()).SFTime (3600)), new (external_X_ITE_X3D_X3DFieldDefinition_default()) ((external_X_ITE_X3D_X3DConstants_default()).initializeOnly, "textureProperties", new (external_X_ITE_X3D_Fields_default()).SFNode ()), ]), enumerable: true, }, }); const ImageCubeMapTexture_default_ = ImageCubeMapTexture; ; /* harmony default export */ const CubeMapTexturing_ImageCubeMapTexture = (external_X_ITE_X3D_Namespace_default().add ("ImageCubeMapTexture", ImageCubeMapTexture_default_)); ;// ./src/assets/components/CubeMapTexturingComponent.js external_X_ITE_X3D_Components_default().add ({ name: "CubeMapTexturing", concreteNodes: [ CubeMapTexturing_ComposedCubeMapTexture, CubeMapTexturing_GeneratedCubeMapTexture, CubeMapTexturing_ImageCubeMapTexture, ], abstractNodes: [ CubeMapTexturing_X3DEnvironmentTextureNode, ], browserContext: CubeMapTexturing_X3DCubeMapTexturingContext, }); const CubeMapTexturingComponent_default_ = undefined; ; /* harmony default export */ const CubeMapTexturingComponent = (external_X_ITE_X3D_Namespace_default().add ("CubeMapTexturingComponent", CubeMapTexturingComponent_default_)); /******/ })() ;