x_ite 5.0.2 → 6.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.vscode/settings.json +12 -5
- package/.vscode/tasks.json +21 -0
- package/Makefile +10 -15
- package/README.md +6 -11
- package/build/bin/dist.pl +0 -6
- package/build/bin/version.pl +1 -4
- package/dist/assets/components/annotation.js +2 -2
- package/dist/assets/components/annotation.min.js +1 -1
- package/dist/assets/components/cad-geometry.js +2 -2
- package/dist/assets/components/cad-geometry.min.js +1 -1
- package/dist/assets/components/cube-map-texturing.js +6 -19
- package/dist/assets/components/cube-map-texturing.min.js +1 -1
- package/dist/assets/components/dis.js +2 -2
- package/dist/assets/components/dis.min.js +1 -1
- package/dist/assets/components/event-utilities.js +3 -3
- package/dist/assets/components/event-utilities.min.js +1 -1
- package/dist/assets/components/geometry2d.js +4 -4
- package/dist/assets/components/geometry2d.min.js +1 -1
- package/dist/assets/components/geospatial.js +32 -1685
- package/dist/assets/components/geospatial.min.js +1 -1
- package/dist/assets/components/h-anim.js +70 -77
- package/dist/assets/components/h-anim.min.js +1 -1
- package/dist/assets/components/key-device-sensor.js +3 -3
- package/dist/assets/components/key-device-sensor.min.js +1 -1
- package/dist/assets/components/layout.js +38 -52
- package/dist/assets/components/layout.min.js +1 -1
- package/dist/assets/components/nurbs.js +277 -194
- package/dist/assets/components/nurbs.min.js +1 -1
- package/dist/assets/components/particle-systems.js +1918 -1658
- package/dist/assets/components/particle-systems.min.js +1 -1
- package/dist/assets/components/picking.js +33 -41
- package/dist/assets/components/picking.min.js +1 -1
- package/dist/assets/components/projective-texture-mapping.js +72 -86
- package/dist/assets/components/projective-texture-mapping.min.js +1 -1
- package/dist/assets/components/rigid-body-physics.js +36 -57
- package/dist/assets/components/rigid-body-physics.min.js +1 -1
- package/dist/assets/components/scripting.js +2 -2
- package/dist/assets/components/scripting.min.js +1 -1
- package/dist/assets/components/texturing-3d.js +26 -75
- package/dist/assets/components/texturing-3d.min.js +3 -3
- package/dist/assets/components/volume-rendering.js +10 -10
- package/dist/assets/components/volume-rendering.min.js +1 -1
- package/dist/assets/components/x_ite.js +2 -2
- package/dist/assets/components/x_ite.min.js +1 -1
- package/dist/assets/linetype/1.png +0 -0
- package/dist/assets/linetype/10.png +0 -0
- package/dist/assets/linetype/11.png +0 -0
- package/dist/assets/linetype/12.png +0 -0
- package/dist/assets/linetype/13.png +0 -0
- package/dist/assets/linetype/14.png +0 -0
- package/dist/assets/linetype/15.png +0 -0
- package/dist/assets/linetype/16.png +0 -0
- package/dist/assets/linetype/2.png +0 -0
- package/dist/assets/linetype/3.png +0 -0
- package/dist/assets/linetype/4.png +0 -0
- package/dist/assets/linetype/5.png +0 -0
- package/dist/assets/linetype/6.png +0 -0
- package/dist/assets/linetype/7.png +0 -0
- package/dist/assets/linetype/8.png +0 -0
- package/dist/assets/linetype/9.png +0 -0
- package/dist/assets/shaders/webgl1/Line.fs +0 -21
- package/dist/assets/shaders/webgl1/Line.vs +0 -10
- package/dist/assets/shaders/webgl1/PBR.vs +1 -1
- package/dist/assets/shaders/webgl2/Depth.vs +29 -1
- package/dist/assets/shaders/webgl2/Gouraud.vs +31 -3
- package/dist/assets/shaders/webgl2/Line.fs +24 -12
- package/dist/assets/shaders/webgl2/Line.vs +36 -11
- package/dist/assets/shaders/webgl2/LineTransform.fs +4 -0
- package/dist/assets/shaders/webgl2/LineTransform.vs +57 -0
- package/dist/assets/shaders/webgl2/PBR.vs +35 -7
- package/dist/assets/shaders/webgl2/Phong.vs +31 -3
- package/dist/assets/shaders/webgl2/Point.vs +29 -1
- package/dist/assets/shaders/webgl2/Unlit.vs +31 -3
- package/dist/example.html +6 -6
- package/dist/x_ite.css +180 -208
- package/dist/x_ite.js +16477 -16629
- package/dist/x_ite.min.js +17 -17
- package/dist/x_ite.zip +0 -0
- package/docs/404.md +6 -0
- package/docs/Accessing-the-External-Browser.md +20 -14
- package/docs/Browser-Support.md +6 -0
- package/docs/Custom-Shaders.md +17 -24
- package/docs/Features.md +7 -1
- package/docs/Gemfile +44 -0
- package/docs/Gemfile.lock +122 -0
- package/docs/Glossary.md +6 -0
- package/docs/How-To-Configure-Your-Web-Server.md +6 -0
- package/docs/Supported-Nodes.md +9 -1
- package/docs/What's-New.md +31 -0
- package/docs/XHTML-DOM-Integration.md +6 -0
- package/docs/_config.yml +1 -1
- package/docs/assets/css/main.scss +26 -0
- package/docs/index.md +38 -46
- package/docs/reference/Browser-Services.md +9 -3
- package/docs/reference/Constants-Services.md +6 -0
- package/docs/reference/ECMAScript-Object-and-Function-Definitions.md +6 -0
- package/docs/reference/Field-Services-and-Objects.md +6 -0
- package/docs/reference/Prototype-Services.md +6 -0
- package/docs/reference/Route-Services.md +6 -0
- package/docs/reference/Scene-Services.md +8 -2
- package/docs/reference/Script-Node-Authoring-Interface.md +7 -1
- package/docs/tutorials/Adding-backgrounds.md +6 -0
- package/docs/tutorials/Adding-fog.md +6 -0
- package/docs/tutorials/Adding-sound.md +6 -0
- package/docs/tutorials/Animating-transforms.md +6 -0
- package/docs/tutorials/Basic-Nodes.md +6 -0
- package/docs/tutorials/Building-a-X3D-world.md +6 -0
- package/docs/tutorials/Building-elevation-grids.md +6 -0
- package/docs/tutorials/Building-extruded-shapes.md +6 -0
- package/docs/tutorials/Building-primitive-shapes.md +6 -0
- package/docs/tutorials/Building-shapes-out-of-points,-lines,-and-faces.md +6 -0
- package/docs/tutorials/Controlling-appearance-with-materials.md +6 -0
- package/docs/tutorials/Controlling-color-on-coordinate-based-geometry.md +6 -0
- package/docs/tutorials/Controlling-detail.md +6 -0
- package/docs/tutorials/Controlling-how-textures-are-mapped.md +6 -0
- package/docs/tutorials/Controlling-navigation.md +6 -0
- package/docs/tutorials/Controlling-shading-on-coordinate-based-geometry.md +6 -0
- package/docs/tutorials/Controlling-the-viewpoint.md +6 -0
- package/docs/tutorials/Creating-new-node-types.md +6 -0
- package/docs/tutorials/Grouping-nodes.md +6 -0
- package/docs/tutorials/Hello,-World!.md +6 -0
- package/docs/tutorials/Improving-Performance.md +6 -0
- package/docs/tutorials/Increasing-Rendering-Speed.md +6 -0
- package/docs/tutorials/Introducing-X3D.md +6 -0
- package/docs/tutorials/Introducing-animation.md +6 -0
- package/docs/tutorials/Introducing-script-use.md +6 -0
- package/docs/tutorials/Lighting-your-world.md +6 -0
- package/docs/tutorials/Mapping-textures.md +6 -0
- package/docs/tutorials/Naming-nodes.md +6 -0
- package/docs/tutorials/Providing-information-about-your-world.md +6 -0
- package/docs/tutorials/Sensing-the-viewer.md +6 -0
- package/docs/tutorials/Sensing-viewer-actions.md +6 -0
- package/docs/tutorials/Transforming-Shapes.md +6 -0
- package/docs/tutorials/Writing-program-scripts-with-ECMAScript.md +6 -0
- package/docs/tutorials/index.md +6 -0
- package/package.json +6 -7
- package/src/assets/components/geometry2d.js +1 -1
- package/src/assets/components/key-device-sensor.js +1 -1
- package/src/assets/components/layout.js +1 -1
- package/src/assets/components/particle-systems.js +1 -1
- package/src/assets/components/volume-rendering.js +1 -1
- package/src/assets/linetype/1.png +0 -0
- package/src/assets/linetype/10.png +0 -0
- package/src/assets/linetype/11.png +0 -0
- package/src/assets/linetype/12.png +0 -0
- package/src/assets/linetype/13.png +0 -0
- package/src/assets/linetype/14.png +0 -0
- package/src/assets/linetype/15.png +0 -0
- package/src/assets/linetype/16.png +0 -0
- package/src/assets/linetype/2.png +0 -0
- package/src/assets/linetype/3.png +0 -0
- package/src/assets/linetype/4.png +0 -0
- package/src/assets/linetype/5.png +0 -0
- package/src/assets/linetype/6.png +0 -0
- package/src/assets/linetype/7.png +0 -0
- package/src/assets/linetype/8.png +0 -0
- package/src/assets/linetype/9.png +0 -0
- package/src/assets/shaders/Types.glsl +1 -9
- package/src/assets/shaders/webgl1/Line.fs +3 -28
- package/src/assets/shaders/webgl1/Line.vs +5 -19
- package/src/assets/shaders/webgl1/PBR.vs +1 -1
- package/src/assets/shaders/webgl1/Point.vs +2 -3
- package/src/assets/shaders/webgl2/Depth.vs +4 -1
- package/src/assets/shaders/webgl2/Gouraud.vs +5 -3
- package/src/assets/shaders/webgl2/Line.fs +11 -17
- package/src/assets/shaders/webgl2/Line.vs +16 -20
- package/src/assets/shaders/webgl2/LineTransform.fs +6 -0
- package/src/assets/shaders/webgl2/LineTransform.vs +77 -0
- package/src/assets/shaders/webgl2/PBR.vs +10 -7
- package/src/assets/shaders/webgl2/Phong.vs +6 -3
- package/src/assets/shaders/webgl2/Point.vs +6 -6
- package/src/assets/shaders/webgl2/Unlit.vs +6 -3
- package/src/assets/shaders/webgl2/include/Line2.glsl +20 -0
- package/src/assets/shaders/webgl2/include/Particle.glsl +36 -0
- package/src/example.html +6 -6
- package/src/standard/Math/Algorithm.js +12 -28
- package/src/standard/Math/Geometry/Plane3.js +0 -2
- package/src/standard/Math/Geometry/ViewVolume.js +88 -83
- package/src/standard/Math/Numbers/Color3.js +6 -0
- package/src/standard/Math/Numbers/Color4.js +7 -0
- package/src/standard/Math/Numbers/Complex.js +5 -0
- package/src/standard/Math/Numbers/Matrix2.js +20 -2
- package/src/standard/Math/Numbers/Matrix3.js +129 -110
- package/src/standard/Math/Numbers/Matrix4.js +138 -119
- package/src/standard/Math/Numbers/Quaternion.js +7 -0
- package/src/standard/Math/Numbers/Rotation4.js +7 -0
- package/src/standard/Math/Numbers/Vector2.js +8 -5
- package/src/standard/Math/Numbers/Vector3.js +16 -10
- package/src/standard/Math/Numbers/Vector4.js +12 -7
- package/src/standard/Math/Utility/BVH.js +45 -17
- package/src/tests.js +6 -1
- package/src/x_ite/Base/X3DBaseNode.js +22 -11
- package/src/x_ite/Base/X3DField.js +1 -1
- package/src/x_ite/Browser/Core/BrowserOptions.js +2 -2
- package/src/x_ite/Browser/Core/BrowserTimings.js +4 -2
- package/src/x_ite/Browser/Core/Context.js +185 -0
- package/src/x_ite/Browser/Core/ContextMenu.js +299 -193
- package/src/x_ite/Browser/Core/Notification.js +1 -0
- package/src/x_ite/Browser/Core/X3DCoreContext.js +35 -146
- package/src/x_ite/Browser/Layout/ScreenText.js +11 -4
- package/src/x_ite/Browser/Layout/X3DLayoutContext.js +4 -15
- package/src/x_ite/Browser/Navigation/ExamineViewer.js +12 -19
- package/src/x_ite/Browser/Navigation/LookAtViewer.js +0 -3
- package/src/x_ite/Browser/Navigation/PlaneViewer.js +0 -3
- package/src/x_ite/Browser/Navigation/X3DFlyViewer.js +14 -7
- package/src/x_ite/Browser/Navigation/X3DViewer.js +12 -20
- package/src/x_ite/Browser/Networking/X3DNetworkingContext.js +11 -7
- package/src/x_ite/Browser/ParticleSystems/BVH.glsl +183 -0
- package/src/x_ite/Browser/ParticleSystems/Box3.glsl +47 -0
- package/src/x_ite/Browser/ParticleSystems/GeometryTypes.js +66 -0
- package/src/x_ite/Browser/ParticleSystems/Line3.glsl +55 -0
- package/src/x_ite/Browser/ParticleSystems/Plane3.glsl +160 -0
- package/src/x_ite/Browser/PointingDeviceSensor/PointingDevice.js +27 -3
- package/src/x_ite/Browser/PointingDeviceSensor/X3DPointingDeviceSensorContext.js +37 -37
- package/src/x_ite/Browser/Rendering/X3DRenderingContext.js +19 -13
- package/src/x_ite/Browser/Shaders/Shader.js +33 -12
- package/src/x_ite/Browser/Shaders/ShaderSource.js +6 -0
- package/src/x_ite/Browser/Shaders/ShaderTest.js +16 -10
- package/src/x_ite/Browser/Shape/X3DShapeContext.js +50 -9
- package/src/x_ite/Browser/Text/X3DTextContext.js +4 -13
- package/src/x_ite/Browser/Texturing/X3DTexturingContext.js +23 -33
- package/src/x_ite/Browser/Texturing3D/DICOMParser.js +2 -2
- package/src/x_ite/Browser/Time/X3DTimeContext.js +3 -1
- package/src/x_ite/Browser/VERSION.js +1 -1
- package/src/x_ite/Browser/X3DBrowser.js +7 -6
- package/src/x_ite/Browser/X3DBrowserContext.js +35 -10
- package/src/x_ite/Components/Core/X3DNode.js +4 -0
- package/src/x_ite/Components/Core/X3DPrototypeInstance.js +0 -2
- package/src/x_ite/Components/CubeMapTexturing/ComposedCubeMapTexture.js +3 -4
- package/src/x_ite/Components/CubeMapTexturing/GeneratedCubeMapTexture.js +1 -12
- package/src/x_ite/Components/CubeMapTexturing/ImageCubeMapTexture.js +0 -1
- package/src/x_ite/Components/EnvironmentalEffects/TextureBackground.js +1 -1
- package/src/x_ite/Components/EnvironmentalEffects/X3DBackgroundNode.js +76 -77
- package/src/x_ite/Components/EnvironmentalEffects/X3DFogObject.js +2 -9
- package/src/x_ite/Components/EnvironmentalSensor/ProximitySensor.js +51 -65
- package/src/x_ite/Components/EventUtilities/X3DSequencerNode.js +1 -1
- package/src/x_ite/Components/Followers/X3DChaserNode.js +18 -32
- package/src/x_ite/Components/Followers/X3DDamperNode.js +1 -6
- package/src/x_ite/Components/Geometry2D/TriangleSet2D.js +1 -1
- package/src/x_ite/Components/Geometry3D/ElevationGrid.js +12 -4
- package/src/x_ite/Components/Geometry3D/IndexedFaceSet.js +4 -4
- package/src/x_ite/Components/Geospatial/GeoCoordinate.js +10 -27
- package/src/x_ite/Components/Geospatial/GeoPositionInterpolator.js +5 -10
- package/src/x_ite/Components/Geospatial/GeoTouchSensor.js +9 -16
- package/src/x_ite/Components/Geospatial/GeoTransform.js +6 -18
- package/src/x_ite/Components/Geospatial/X3DGeospatialObject.js +20 -27
- package/src/x_ite/Components/Grouping/X3DGroupingNode.js +8 -8
- package/src/x_ite/Components/Grouping/X3DTransformNode.js +0 -4
- package/src/x_ite/Components/HAnim/HAnimHumanoid.js +68 -75
- package/src/x_ite/Components/Interpolation/OrientationInterpolator.js +4 -11
- package/src/x_ite/Components/Interpolation/X3DInterpolatorNode.js +1 -1
- package/src/x_ite/Components/Layout/LayoutGroup.js +4 -9
- package/src/x_ite/Components/Layout/ScreenFontStyle.js +1 -1
- package/src/x_ite/Components/Layout/ScreenGroup.js +18 -23
- package/src/x_ite/Components/Lighting/DirectionalLight.js +28 -36
- package/src/x_ite/Components/Lighting/PointLight.js +32 -47
- package/src/x_ite/Components/Lighting/SpotLight.js +33 -48
- package/src/x_ite/Components/Navigation/Billboard.js +49 -56
- package/src/x_ite/Components/Navigation/LOD.js +1 -1
- package/src/x_ite/Components/Navigation/X3DViewpointNode.js +82 -111
- package/src/x_ite/Components/Networking/Anchor.js +10 -4
- package/src/x_ite/Components/ParticleSystems/BoundedPhysicsModel.js +6 -6
- package/src/x_ite/Components/ParticleSystems/ConeEmitter.js +44 -36
- package/src/x_ite/Components/ParticleSystems/ExplosionEmitter.js +26 -17
- package/src/x_ite/Components/ParticleSystems/ForcePhysicsModel.js +20 -7
- package/src/x_ite/Components/ParticleSystems/ParticleSystem.js +461 -876
- package/src/x_ite/Components/ParticleSystems/PointEmitter.js +39 -35
- package/src/x_ite/Components/ParticleSystems/PolylineEmitter.js +112 -128
- package/src/x_ite/Components/ParticleSystems/SurfaceEmitter.js +105 -112
- package/src/x_ite/Components/ParticleSystems/VolumeEmitter.js +138 -176
- package/src/x_ite/Components/ParticleSystems/WindPhysicsModel.js +16 -11
- package/src/x_ite/Components/ParticleSystems/X3DParticleEmitterNode.js +807 -217
- package/src/x_ite/Components/Picking/LinePickSensor.js +31 -39
- package/src/x_ite/Components/PointingDeviceSensor/CylinderSensor.js +90 -107
- package/src/x_ite/Components/PointingDeviceSensor/PlaneSensor.js +48 -55
- package/src/x_ite/Components/PointingDeviceSensor/SphereSensor.js +53 -70
- package/src/x_ite/Components/PointingDeviceSensor/TouchSensor.js +8 -15
- package/src/x_ite/Components/ProjectiveTextureMapping/TextureProjectorParallel.js +43 -50
- package/src/x_ite/Components/ProjectiveTextureMapping/TextureProjectorPerspective.js +32 -39
- package/src/x_ite/Components/Rendering/ClipPlane.js +3 -11
- package/src/x_ite/Components/Rendering/Color.js +12 -37
- package/src/x_ite/Components/Rendering/ColorRGBA.js +13 -38
- package/src/x_ite/Components/Rendering/IndexedLineSet.js +12 -4
- package/src/x_ite/Components/Rendering/LineSet.js +21 -13
- package/src/x_ite/Components/Rendering/PointSet.js +21 -13
- package/src/x_ite/Components/Rendering/X3DColorNode.js +13 -0
- package/src/x_ite/Components/Rendering/X3DComposedGeometryNode.js +13 -5
- package/src/x_ite/Components/Rendering/X3DGeometryNode.js +248 -325
- package/src/x_ite/Components/Rendering/X3DLineGeometryNode.js +305 -134
- package/src/x_ite/Components/Rendering/X3DPointGeometryNode.js +99 -122
- package/src/x_ite/Components/RigidBodyPhysics/DoubleAxisHingeJoint.js +24 -38
- package/src/x_ite/Components/RigidBodyPhysics/SingleAxisHingeJoint.js +10 -17
- package/src/x_ite/Components/Shaders/ComposedShader.js +35 -75
- package/src/x_ite/Components/Shaders/FloatVertexAttribute.js +5 -15
- package/src/x_ite/Components/Shaders/Matrix3VertexAttribute.js +7 -24
- package/src/x_ite/Components/Shaders/Matrix4VertexAttribute.js +7 -24
- package/src/x_ite/Components/Shaders/ShaderPart.js +1 -10
- package/src/x_ite/Components/Shaders/X3DProgrammableShaderObject.js +219 -209
- package/src/x_ite/Components/Shaders/X3DShaderNode.js +1 -1
- package/src/x_ite/Components/Shaders/X3DVertexAttributeNode.js +23 -1
- package/src/x_ite/Components/Shape/Appearance.js +12 -0
- package/src/x_ite/Components/Shape/FillProperties.js +12 -1
- package/src/x_ite/Components/Shape/LineProperties.js +33 -1
- package/src/x_ite/Components/Shape/PointProperties.js +23 -1
- package/src/x_ite/Components/Shape/Shape.js +27 -34
- package/src/x_ite/Components/Sound/Sound.js +30 -40
- package/src/x_ite/Components/Text/Text.js +6 -20
- package/src/x_ite/Components/Texturing/TextureCoordinate.js +5 -26
- package/src/x_ite/Components/Texturing/TextureProperties.js +4 -4
- package/src/x_ite/Components/Texturing/X3DSingleTextureCoordinateNode.js +21 -0
- package/src/x_ite/Components/Texturing/X3DSingleTextureNode.js +5 -4
- package/src/x_ite/Components/Texturing/X3DTexture2DNode.js +24 -33
- package/src/x_ite/Components/Texturing3D/TextureCoordinate3D.js +5 -26
- package/src/x_ite/Components/Texturing3D/TextureCoordinate4D.js +5 -26
- package/src/x_ite/Components/Texturing3D/X3DTexture3DNode.js +12 -19
- package/src/x_ite/Components/VolumeRendering/X3DVolumeDataNode.js +7 -7
- package/src/x_ite/Components.js +2 -2
- package/src/x_ite/Fallback.js +9 -3
- package/src/x_ite/Fields/SFColor.js +4 -0
- package/src/x_ite/Fields/SFColorRGBA.js +4 -0
- package/src/x_ite/Fields/SFMatrixPrototypeTemplate.js +4 -0
- package/src/x_ite/Fields/SFRotation.js +4 -0
- package/src/x_ite/Fields/SFString.js +4 -0
- package/src/x_ite/Fields/SFVecPrototypeTemplate.js +4 -0
- package/src/x_ite/Parser/XMLParser.js +1 -1
- package/src/x_ite/Rendering/TextureBuffer.js +43 -36
- package/src/x_ite/Rendering/VertexArray.js +101 -0
- package/src/x_ite/Rendering/X3DRenderObject.js +123 -144
- package/src/x_ite/X3D.js +32 -26
- package/src/x_ite.config.js +0 -5
- package/src/x_ite.css +200 -162
- package/src/x_ite.html +26 -10
- package/src/x_ite.js +42 -0
- package/x_ite.min.html +26 -10
- package/dist/assets/hatching/0.png +0 -0
- package/dist/assets/linetype/0.png +0 -0
- package/src/assets/hatching/0.png +0 -0
- package/src/assets/linetype/0.png +0 -0
- package/src/spinner.css +0 -67
- package/src/x_ite/Browser/Shape/LineStipples.xcf +0 -0
|
@@ -117,6 +117,13 @@ function (Quaternion,
|
|
|
117
117
|
{
|
|
118
118
|
constructor: Rotation4,
|
|
119
119
|
length: 4,
|
|
120
|
+
[Symbol .iterator]: function* ()
|
|
121
|
+
{
|
|
122
|
+
yield this [_x];
|
|
123
|
+
yield this [_y];
|
|
124
|
+
yield this [_z];
|
|
125
|
+
yield this [_angle];
|
|
126
|
+
},
|
|
120
127
|
update: function ()
|
|
121
128
|
{
|
|
122
129
|
const rotation = this .get ();
|
|
@@ -64,6 +64,11 @@ function (Algorithm)
|
|
|
64
64
|
{
|
|
65
65
|
constructor: Vector2,
|
|
66
66
|
length: 2,
|
|
67
|
+
[Symbol .iterator]: function* ()
|
|
68
|
+
{
|
|
69
|
+
yield this .x;
|
|
70
|
+
yield this .y;
|
|
71
|
+
},
|
|
67
72
|
copy: function ()
|
|
68
73
|
{
|
|
69
74
|
const copy = Object .create (Vector2 .prototype);
|
|
@@ -132,14 +137,12 @@ function (Algorithm)
|
|
|
132
137
|
},
|
|
133
138
|
normalize: function ()
|
|
134
139
|
{
|
|
135
|
-
|
|
140
|
+
const length = Math .hypot (this .x, this .y);
|
|
136
141
|
|
|
137
142
|
if (length)
|
|
138
143
|
{
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
this .x *= length;
|
|
142
|
-
this .y *= length;
|
|
144
|
+
this .x /= length;
|
|
145
|
+
this .y /= length;
|
|
143
146
|
}
|
|
144
147
|
|
|
145
148
|
return this;
|
|
@@ -65,6 +65,12 @@ function (Algorithm)
|
|
|
65
65
|
{
|
|
66
66
|
constructor: Vector3,
|
|
67
67
|
length: 3,
|
|
68
|
+
[Symbol .iterator]: function* ()
|
|
69
|
+
{
|
|
70
|
+
yield this .x;
|
|
71
|
+
yield this .y;
|
|
72
|
+
yield this .z;
|
|
73
|
+
},
|
|
68
74
|
copy: function ()
|
|
69
75
|
{
|
|
70
76
|
const copy = Object .create (Vector3 .prototype);
|
|
@@ -144,25 +150,25 @@ function (Algorithm)
|
|
|
144
150
|
},
|
|
145
151
|
cross: function (vector)
|
|
146
152
|
{
|
|
147
|
-
const
|
|
153
|
+
const
|
|
154
|
+
ax = this .x, ay = this .y, az = this .z,
|
|
155
|
+
bx = vector .x, by = vector .y, bz = vector .z;
|
|
148
156
|
|
|
149
|
-
this .x =
|
|
150
|
-
this .y =
|
|
151
|
-
this .z =
|
|
157
|
+
this .x = ay * bz - az * by;
|
|
158
|
+
this .y = az * bx - ax * bz;
|
|
159
|
+
this .z = ax * by - ay * bx;
|
|
152
160
|
|
|
153
161
|
return this;
|
|
154
162
|
},
|
|
155
163
|
normalize: function ()
|
|
156
164
|
{
|
|
157
|
-
|
|
165
|
+
const length = Math .hypot (this .x, this .y, this .z);
|
|
158
166
|
|
|
159
167
|
if (length)
|
|
160
168
|
{
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
this .
|
|
164
|
-
this .y *= length;
|
|
165
|
-
this .z *= length;
|
|
169
|
+
this .x /= length;
|
|
170
|
+
this .y /= length;
|
|
171
|
+
this .z /= length;
|
|
166
172
|
}
|
|
167
173
|
|
|
168
174
|
return this;
|
|
@@ -66,6 +66,13 @@ function (Algorithm)
|
|
|
66
66
|
{
|
|
67
67
|
constructor: Vector4,
|
|
68
68
|
length: 4,
|
|
69
|
+
[Symbol .iterator]: function* ()
|
|
70
|
+
{
|
|
71
|
+
yield this .x;
|
|
72
|
+
yield this .y;
|
|
73
|
+
yield this .z;
|
|
74
|
+
yield this .w;
|
|
75
|
+
},
|
|
69
76
|
copy: function ()
|
|
70
77
|
{
|
|
71
78
|
const copy = Object .create (Vector4 .prototype);
|
|
@@ -162,16 +169,14 @@ function (Algorithm)
|
|
|
162
169
|
},
|
|
163
170
|
normalize: function ()
|
|
164
171
|
{
|
|
165
|
-
|
|
172
|
+
const length = Math .hypot (this .x, this .y, this .z, this .w);
|
|
166
173
|
|
|
167
174
|
if (length)
|
|
168
175
|
{
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
this .
|
|
172
|
-
this .
|
|
173
|
-
this .z *= length;
|
|
174
|
-
this .w *= length;
|
|
176
|
+
this .x /= length;
|
|
177
|
+
this .y /= length;
|
|
178
|
+
this .z /= length;
|
|
179
|
+
this .w /= length;
|
|
175
180
|
}
|
|
176
181
|
|
|
177
182
|
return this;
|
|
@@ -74,28 +74,24 @@ function (Vector3,
|
|
|
74
74
|
// left: We do not have to test for left.
|
|
75
75
|
];
|
|
76
76
|
|
|
77
|
+
const
|
|
78
|
+
NODE = 0,
|
|
79
|
+
TRIANGLE = 1;
|
|
80
|
+
|
|
77
81
|
function SortComparator (vertices, axis)
|
|
78
82
|
{
|
|
79
|
-
function compare (a, b)
|
|
83
|
+
return function compare (a, b)
|
|
80
84
|
{
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
axis = compare .axis;
|
|
84
|
-
|
|
85
|
-
return Math .min (vertices [a + axis], vertices [a + 4 + axis], vertices [a + 8 + axis]) <
|
|
86
|
-
Math .min (vertices [b + axis], vertices [b + 4 + axis], vertices [b + 8 + axis]);
|
|
85
|
+
return Math .min (vertices [a + axis], vertices [a + 4 + axis], vertices [a + 8 + axis]) <
|
|
86
|
+
Math .min (vertices [b + axis], vertices [b + 4 + axis], vertices [b + 8 + axis]);
|
|
87
87
|
}
|
|
88
|
-
|
|
89
|
-
compare .vertices = vertices;
|
|
90
|
-
compare .axis = axis;
|
|
91
|
-
|
|
92
|
-
return compare;
|
|
93
88
|
}
|
|
94
89
|
|
|
95
90
|
function Triangle (tree, triangle)
|
|
96
91
|
{
|
|
97
92
|
this .vertices = tree .vertices;
|
|
98
93
|
this .normals = tree .normals;
|
|
94
|
+
this .triangle = triangle;
|
|
99
95
|
this .i4 = triangle * 12;
|
|
100
96
|
this .i3 = triangle * 9;
|
|
101
97
|
}
|
|
@@ -145,6 +141,14 @@ function (Vector3,
|
|
|
145
141
|
}
|
|
146
142
|
}
|
|
147
143
|
},
|
|
144
|
+
toArray: function (array)
|
|
145
|
+
{
|
|
146
|
+
const index = array .length / 4;
|
|
147
|
+
|
|
148
|
+
array .push (TRIANGLE, this .triangle * 3, 0, 0);
|
|
149
|
+
|
|
150
|
+
return index;
|
|
151
|
+
},
|
|
148
152
|
};
|
|
149
153
|
|
|
150
154
|
function Node (tree, triangles, first, size)
|
|
@@ -303,15 +307,30 @@ function (Vector3,
|
|
|
303
307
|
return 0;
|
|
304
308
|
}
|
|
305
309
|
},
|
|
310
|
+
toArray: function (array)
|
|
311
|
+
{
|
|
312
|
+
const
|
|
313
|
+
left = this .left .toArray (array),
|
|
314
|
+
right = this .right .toArray (array),
|
|
315
|
+
min = this .min,
|
|
316
|
+
max = this .max,
|
|
317
|
+
index = array .length / 4;
|
|
318
|
+
|
|
319
|
+
array .push (NODE, left, right, 0,
|
|
320
|
+
min .x, min .y, min .z, 0,
|
|
321
|
+
max .x, max .y, max .z, 0);
|
|
322
|
+
|
|
323
|
+
return index;
|
|
324
|
+
},
|
|
306
325
|
};
|
|
307
326
|
|
|
308
327
|
function BVH (vertices, normals)
|
|
309
328
|
{
|
|
329
|
+
const numTriangles = vertices .length / 12;
|
|
330
|
+
|
|
310
331
|
this .vertices = vertices;
|
|
311
332
|
this .normals = normals;
|
|
312
333
|
|
|
313
|
-
const numTriangles = vertices .length / 12;
|
|
314
|
-
|
|
315
334
|
switch (numTriangles)
|
|
316
335
|
{
|
|
317
336
|
case 0:
|
|
@@ -332,8 +351,7 @@ function (Vector3,
|
|
|
332
351
|
triangles .push (i);
|
|
333
352
|
|
|
334
353
|
this .sorter = new QuickSort (triangles, SortComparator (vertices, 0));
|
|
335
|
-
|
|
336
|
-
this .root = new Node (this, triangles, 0, numTriangles);
|
|
354
|
+
this .root = new Node (this, triangles, 0, numTriangles);
|
|
337
355
|
break;
|
|
338
356
|
}
|
|
339
357
|
}
|
|
@@ -342,7 +360,6 @@ function (Vector3,
|
|
|
342
360
|
BVH .prototype =
|
|
343
361
|
{
|
|
344
362
|
constructor: BVH,
|
|
345
|
-
|
|
346
363
|
intersectsLine: function (line, intersections, intersectionNormals)
|
|
347
364
|
{
|
|
348
365
|
intersections .size = 0;
|
|
@@ -355,6 +372,17 @@ function (Vector3,
|
|
|
355
372
|
|
|
356
373
|
return 0;
|
|
357
374
|
},
|
|
375
|
+
toArray: function (array)
|
|
376
|
+
{
|
|
377
|
+
if (this .root)
|
|
378
|
+
{
|
|
379
|
+
const root = this .root .toArray (array);
|
|
380
|
+
|
|
381
|
+
array .push (root, 0, 0, 0);
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
return array;
|
|
385
|
+
},
|
|
358
386
|
};
|
|
359
387
|
|
|
360
388
|
return BVH;
|
package/src/tests.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
const X_ITE_TESTS = [
|
|
2
|
+
{ component: "Examples" },
|
|
3
|
+
{ path: "../../Examples/Rathaus/index.x3dv" },
|
|
2
4
|
{ component: "CADGeometry" },
|
|
3
5
|
{ path: "CADGeometry/CADGeometry.x3d" },
|
|
4
6
|
{ path: "CADGeometry/CADLayer.x3d" },
|
|
@@ -184,15 +186,18 @@ const X_ITE_TESTS = [
|
|
|
184
186
|
{ path: "ParticleSystems/DolphinSurfaceEmitter.x3d" },
|
|
185
187
|
{ path: "ParticleSystems/Earth.x3dz" },
|
|
186
188
|
{ path: "ParticleSystems/ExplosionEmitter.x3d" },
|
|
189
|
+
{ path: "ParticleSystems/ExplosionEmitterGeometry.x3d" },
|
|
187
190
|
{ path: "ParticleSystems/Fire.x3d" },
|
|
188
191
|
{ path: "ParticleSystems/Geometry.x3d" },
|
|
189
|
-
{ path: "ParticleSystems/
|
|
192
|
+
{ path: "ParticleSystems/GeometryLineSet.x3d" },
|
|
193
|
+
{ path: "ParticleSystems/GeometryPointSet.x3d" },
|
|
190
194
|
{ path: "ParticleSystems/GridTool.x3dv" },
|
|
191
195
|
{ path: "ParticleSystems/OpenVolume.x3d" },
|
|
192
196
|
{ path: "ParticleSystems/PointEmitter.x3d" },
|
|
193
197
|
{ path: "ParticleSystems/PolylineEmitter.x3d" },
|
|
194
198
|
{ path: "ParticleSystems/Smoke.x3d" },
|
|
195
199
|
{ path: "ParticleSystems/SurfaceEmitter.x3d" },
|
|
200
|
+
{ path: "ParticleSystems/Tunnel.x3dv" },
|
|
196
201
|
{ path: "ParticleSystems/VolumeEmitter-U.x3d" },
|
|
197
202
|
{ path: "ParticleSystems/VolumeEmitter.x3d" },
|
|
198
203
|
{ path: "ParticleSystems/Waterfall.x3d" },
|
|
@@ -118,13 +118,14 @@ function (X3DEventObject,
|
|
|
118
118
|
{
|
|
119
119
|
X3DEventObject .prototype .setName .call (this, value)
|
|
120
120
|
|
|
121
|
-
|
|
121
|
+
if (this [_initialized])
|
|
122
|
+
this ._name_changed = this .getBrowser () .getCurrentTime ();
|
|
122
123
|
},
|
|
123
124
|
getMainScene: function ()
|
|
124
125
|
{
|
|
125
126
|
let scene = this [_executionContext] .getScene ();
|
|
126
127
|
|
|
127
|
-
while (!scene .isMainScene ())
|
|
128
|
+
while (! scene .isMainScene ())
|
|
128
129
|
scene = scene .getScene ();
|
|
129
130
|
|
|
130
131
|
return scene;
|
|
@@ -133,7 +134,7 @@ function (X3DEventObject,
|
|
|
133
134
|
{
|
|
134
135
|
let executionContext = this [_executionContext];
|
|
135
136
|
|
|
136
|
-
while (!executionContext .isScene ())
|
|
137
|
+
while (! executionContext .isScene ())
|
|
137
138
|
executionContext = executionContext .getExecutionContext ();
|
|
138
139
|
|
|
139
140
|
return executionContext;
|
|
@@ -344,7 +345,8 @@ function (X3DEventObject,
|
|
|
344
345
|
if (!this .getPrivate ())
|
|
345
346
|
field .addCloneCount (1);
|
|
346
347
|
|
|
347
|
-
|
|
348
|
+
if (this [_initialized])
|
|
349
|
+
this ._fields_changed = this .getBrowser () .getCurrentTime ();
|
|
348
350
|
},
|
|
349
351
|
getField: (function ()
|
|
350
352
|
{
|
|
@@ -412,7 +414,8 @@ function (X3DEventObject,
|
|
|
412
414
|
if (!this .getPrivate ())
|
|
413
415
|
field .removeCloneCount (1);
|
|
414
416
|
|
|
415
|
-
|
|
417
|
+
if (this [_initialized])
|
|
418
|
+
this ._fields_changed = this .getBrowser () .getCurrentTime ();
|
|
416
419
|
}
|
|
417
420
|
},
|
|
418
421
|
canUserDefinedFields: function ()
|
|
@@ -436,7 +439,8 @@ function (X3DEventObject,
|
|
|
436
439
|
if (!this .getPrivate ())
|
|
437
440
|
field .addCloneCount (1);
|
|
438
441
|
|
|
439
|
-
|
|
442
|
+
if (this [_initialized])
|
|
443
|
+
this ._fields_changed = this .getBrowser () .getCurrentTime ();
|
|
440
444
|
},
|
|
441
445
|
removeUserDefinedField: function (name)
|
|
442
446
|
{
|
|
@@ -453,7 +457,8 @@ function (X3DEventObject,
|
|
|
453
457
|
if (!this .getPrivate ())
|
|
454
458
|
field .removeCloneCount (1);
|
|
455
459
|
|
|
456
|
-
|
|
460
|
+
if (this [_initialized])
|
|
461
|
+
this ._fields_changed = this .getBrowser () .getCurrentTime ();
|
|
457
462
|
}
|
|
458
463
|
},
|
|
459
464
|
getUserDefinedFields: function ()
|
|
@@ -561,22 +566,28 @@ function (X3DEventObject,
|
|
|
561
566
|
if (count === 0)
|
|
562
567
|
return;
|
|
563
568
|
|
|
569
|
+
const time = this .getBrowser () .getCurrentTime ();
|
|
570
|
+
|
|
564
571
|
this [_cloneCount] += count;
|
|
565
572
|
|
|
566
|
-
this .
|
|
573
|
+
this [_executionContext] ._sceneGraph_changed = time;
|
|
567
574
|
|
|
568
|
-
this [
|
|
575
|
+
if (this [_initialized])
|
|
576
|
+
this ._cloneCount_changed = time;
|
|
569
577
|
},
|
|
570
578
|
removeCloneCount: function (count)
|
|
571
579
|
{
|
|
572
580
|
if (count === 0)
|
|
573
581
|
return;
|
|
574
582
|
|
|
583
|
+
const time = this .getBrowser () .getCurrentTime ();
|
|
584
|
+
|
|
575
585
|
this [_cloneCount] -= count;
|
|
576
586
|
|
|
577
|
-
this .
|
|
587
|
+
this [_executionContext] ._sceneGraph_changed = time;
|
|
578
588
|
|
|
579
|
-
this [
|
|
589
|
+
if (this [_initialized])
|
|
590
|
+
this ._cloneCount_changed = time;
|
|
580
591
|
},
|
|
581
592
|
dispose: function ()
|
|
582
593
|
{
|
|
@@ -343,7 +343,7 @@ function (Fields,
|
|
|
343
343
|
this .textureQuality = TextureQuality .MEDIUM;
|
|
344
344
|
|
|
345
345
|
textureProperties ._magnificationFilter = "NICEST";
|
|
346
|
-
textureProperties ._minificationFilter = "
|
|
346
|
+
textureProperties ._minificationFilter = "NEAREST_PIXEL_AVG_MIPMAP";
|
|
347
347
|
textureProperties ._textureCompression = "NICEST";
|
|
348
348
|
textureProperties ._generateMipMaps = true;
|
|
349
349
|
|
|
@@ -399,7 +399,7 @@ function (Fields,
|
|
|
399
399
|
browser = this .getBrowser (),
|
|
400
400
|
gl = browser .getContext ();
|
|
401
401
|
|
|
402
|
-
logarithmicDepthBuffer = logarithmicDepthBuffer .getValue () && (gl .getVersion () >= 2 || Boolean (
|
|
402
|
+
logarithmicDepthBuffer = logarithmicDepthBuffer .getValue () && (gl .getVersion () >= 2 || Boolean (gl .getExtension ("EXT_frag_depth")));
|
|
403
403
|
|
|
404
404
|
if (logarithmicDepthBuffer === browser .getRenderingProperties () ._LogarithmicDepthBuffer .getValue ())
|
|
405
405
|
return;
|
|
@@ -92,14 +92,16 @@ function ($,
|
|
|
92
92
|
this .startTime = 0;
|
|
93
93
|
this .frames = 0;
|
|
94
94
|
|
|
95
|
-
this .element = $("<div></div>") .addClass ("x_ite-private-browser-timings") .appendTo (this .getBrowser () .getSurface ());
|
|
95
|
+
this .element = $("<div></div>") .hide () .addClass ("x_ite-private-browser-timings") .appendTo (this .getBrowser () .getSurface ());
|
|
96
96
|
this .table = $("<table></table>") .appendTo (this .element);
|
|
97
97
|
this .header = $("<thead></thead>") .append ($("<tr></tr>") .append ($("<th colspan='2'></th>"))) .appendTo (this .table);
|
|
98
98
|
this .body = $("<tbody></tbody>") .appendTo (this .table);
|
|
99
99
|
this .footer = $("<tfoot></tfoot>") .append ($("<tr></tr>") .append ($("<td colspan='2'></td>"))) .appendTo (this .table);
|
|
100
|
-
this .button = $("<button></button>") .attr ("type", "button") .
|
|
100
|
+
this .button = $("<button></button>") .attr ("type", "button") .appendTo (this .footer .find ("td"));
|
|
101
101
|
this .rows = [ ];
|
|
102
102
|
|
|
103
|
+
this .button .on ("click touchend", this .set_type__ .bind (this));
|
|
104
|
+
|
|
103
105
|
this .set_button__ ();
|
|
104
106
|
},
|
|
105
107
|
getEnabled: function ()
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
/* -*- Mode: JavaScript; coding: utf-8; tab-width: 3; indent-tabs-mode: tab; c-basic-offset: 3 -*-
|
|
2
|
+
*******************************************************************************
|
|
3
|
+
*
|
|
4
|
+
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
|
5
|
+
*
|
|
6
|
+
* Copyright create3000, Scheffelstraße 31a, Leipzig, Germany 2011.
|
|
7
|
+
*
|
|
8
|
+
* All rights reserved. Holger Seelig <holger.seelig@yahoo.de>.
|
|
9
|
+
*
|
|
10
|
+
* The copyright notice above does not evidence any actual of intended
|
|
11
|
+
* publication of such source code, and is an unpublished work by create3000.
|
|
12
|
+
* This material contains CONFIDENTIAL INFORMATION that is the property of
|
|
13
|
+
* create3000.
|
|
14
|
+
*
|
|
15
|
+
* No permission is granted to copy, distribute, or create derivative works from
|
|
16
|
+
* the contents of this software, in whole or in part, without the prior written
|
|
17
|
+
* permission of create3000.
|
|
18
|
+
*
|
|
19
|
+
* NON-MILITARY USE ONLY
|
|
20
|
+
*
|
|
21
|
+
* All create3000 software are effectively free software with a non-military use
|
|
22
|
+
* restriction. It is free. Well commented source is provided. You may reuse the
|
|
23
|
+
* source in any way you please with the exception anything that uses it must be
|
|
24
|
+
* marked to indicate is contains 'non-military use only' components.
|
|
25
|
+
*
|
|
26
|
+
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
|
27
|
+
*
|
|
28
|
+
* Copyright 2015, 2016 Holger Seelig <holger.seelig@yahoo.de>.
|
|
29
|
+
*
|
|
30
|
+
* This file is part of the X_ITE Project.
|
|
31
|
+
*
|
|
32
|
+
* X_ITE is free software: you can redistribute it and/or modify it under the
|
|
33
|
+
* terms of the GNU General Public License version 3 only, as published by the
|
|
34
|
+
* Free Software Foundation.
|
|
35
|
+
*
|
|
36
|
+
* X_ITE is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
37
|
+
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
|
38
|
+
* A PARTICULAR PURPOSE. See the GNU General Public License version 3 for more
|
|
39
|
+
* details (a copy is included in the LICENSE file that accompanied this code).
|
|
40
|
+
*
|
|
41
|
+
* You should have received a copy of the GNU General Public License version 3
|
|
42
|
+
* along with X_ITE. If not, see <http://www.gnu.org/licenses/gpl.html> for a
|
|
43
|
+
* copy of the GPLv3 License.
|
|
44
|
+
*
|
|
45
|
+
* For Silvio, Joy and Adi.
|
|
46
|
+
*
|
|
47
|
+
******************************************************************************/
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
define ([
|
|
51
|
+
"x_ite/DEBUG",
|
|
52
|
+
],
|
|
53
|
+
function (DEBUG)
|
|
54
|
+
{
|
|
55
|
+
"use strict";
|
|
56
|
+
|
|
57
|
+
const extensions = [
|
|
58
|
+
"ANGLE_instanced_arrays",
|
|
59
|
+
"EXT_blend_minmax",
|
|
60
|
+
"EXT_frag_depth",
|
|
61
|
+
"EXT_shader_texture_lod",
|
|
62
|
+
"EXT_texture_filter_anisotropic",
|
|
63
|
+
"OES_element_index_uint",
|
|
64
|
+
"OES_standard_derivatives",
|
|
65
|
+
"OES_texture_float",
|
|
66
|
+
"OES_texture_float_linear",
|
|
67
|
+
"OES_texture_half_float",
|
|
68
|
+
"OES_texture_half_float_linear",
|
|
69
|
+
"OES_vertex_array_object",
|
|
70
|
+
"WEBGL_compressed_texture_s3tc",
|
|
71
|
+
//"WEBGL_debug_renderer_info",
|
|
72
|
+
"WEBGL_debug_shaders",
|
|
73
|
+
"WEBGL_depth_texture",
|
|
74
|
+
"WEBGL_draw_buffers",
|
|
75
|
+
"WEBGL_lose_context",
|
|
76
|
+
|
|
77
|
+
"EXT_color_buffer_float",
|
|
78
|
+
"EXT_color_buffer_half_float",
|
|
79
|
+
"EXT_disjoint_timer_query",
|
|
80
|
+
"EXT_disjoint_timer_query_webgl2",
|
|
81
|
+
"EXT_sRGB",
|
|
82
|
+
"WEBGL_color_buffer_float",
|
|
83
|
+
"WEBGL_compressed_texture_astc",
|
|
84
|
+
"WEBGL_compressed_texture_atc",
|
|
85
|
+
"WEBGL_compressed_texture_etc",
|
|
86
|
+
"WEBGL_compressed_texture_etc1",
|
|
87
|
+
"WEBGL_compressed_texture_pvrtc",
|
|
88
|
+
"WEBGL_compressed_texture_s3tc",
|
|
89
|
+
"WEBGL_compressed_texture_s3tc_srgb",
|
|
90
|
+
|
|
91
|
+
"EXT_float_blend",
|
|
92
|
+
"OES_fbo_render_mipmap",
|
|
93
|
+
"WEBGL_get_buffer_sub_data_async",
|
|
94
|
+
"WEBGL_multiview",
|
|
95
|
+
"WEBGL_security_sensitive_resources",
|
|
96
|
+
"WEBGL_shared_resources",
|
|
97
|
+
|
|
98
|
+
"EXT_clip_cull_distance",
|
|
99
|
+
"WEBGL_debug",
|
|
100
|
+
"WEBGL_dynamic_texture",
|
|
101
|
+
"WEBGL_subarray_uploads",
|
|
102
|
+
"WEBGL_texture_multisample",
|
|
103
|
+
"WEBGL_texture_source_iframe",
|
|
104
|
+
"WEBGL_video_texture",
|
|
105
|
+
|
|
106
|
+
"EXT_texture_storage",
|
|
107
|
+
"OES_depth24",
|
|
108
|
+
"WEBGL_debug_shader_precision",
|
|
109
|
+
"WEBGL_draw_elements_no_range_check",
|
|
110
|
+
"WEBGL_subscribe_uniform",
|
|
111
|
+
"WEBGL_texture_from_depth_video",
|
|
112
|
+
];
|
|
113
|
+
|
|
114
|
+
const Context =
|
|
115
|
+
{
|
|
116
|
+
create: function (canvas, version, preserveDrawingBuffer)
|
|
117
|
+
{
|
|
118
|
+
const options = { preserveDrawingBuffer: preserveDrawingBuffer };
|
|
119
|
+
|
|
120
|
+
let gl = null;
|
|
121
|
+
|
|
122
|
+
if (version >= 2 && ! gl)
|
|
123
|
+
{
|
|
124
|
+
gl = canvas .getContext ("webgl2", options);
|
|
125
|
+
|
|
126
|
+
if (gl)
|
|
127
|
+
gl .getVersion = function () { return 2; };
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
if (version >= 1 && ! gl)
|
|
131
|
+
{
|
|
132
|
+
gl = canvas .getContext ("webgl", options) ||
|
|
133
|
+
canvas .getContext ("experimental-webgl", options);
|
|
134
|
+
|
|
135
|
+
if (gl)
|
|
136
|
+
{
|
|
137
|
+
gl .getVersion = function () { return 1; };
|
|
138
|
+
|
|
139
|
+
{
|
|
140
|
+
const ext = gl .getExtension ("OES_vertex_array_object");
|
|
141
|
+
|
|
142
|
+
gl .bindVertexArray = ext .bindVertexArrayOES .bind (ext);
|
|
143
|
+
gl .createVertexArray = ext .createVertexArrayOES .bind (ext);
|
|
144
|
+
gl .deleteVertexArray = ext .deleteVertexArrayOES .bind (ext);
|
|
145
|
+
gl .isVertexArray = ext .isVertexArrayOES .bind (ext);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
if (! gl)
|
|
151
|
+
throw new Error ("Couldn't create WebGL context.");
|
|
152
|
+
|
|
153
|
+
// Feature detection:
|
|
154
|
+
|
|
155
|
+
// If the aliased lineWidth ranges are both 1, gl .lineWidth is probably not possible,
|
|
156
|
+
// thus we disable it completely to prevent webgl errors.
|
|
157
|
+
|
|
158
|
+
const aliasedLineWidthRange = gl .getParameter (gl .ALIASED_LINE_WIDTH_RANGE);
|
|
159
|
+
|
|
160
|
+
if (aliasedLineWidthRange [0] === 1 && aliasedLineWidthRange [1] === 1)
|
|
161
|
+
{
|
|
162
|
+
gl .lineWidth = Function .prototype;
|
|
163
|
+
gl .MUST_TRANSFORM_LINES = gl .getVersion () >= 2;
|
|
164
|
+
|
|
165
|
+
if (DEBUG)
|
|
166
|
+
console .info ("Lines are transformed if necessary to obtain thick lines.");
|
|
167
|
+
}
|
|
168
|
+
else
|
|
169
|
+
{
|
|
170
|
+
gl .MUST_TRANSFORM_LINES = false;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
// Load extensions.
|
|
174
|
+
|
|
175
|
+
for (const extension of extensions)
|
|
176
|
+
gl .getExtension (extension);
|
|
177
|
+
|
|
178
|
+
// Return context.
|
|
179
|
+
|
|
180
|
+
return gl;
|
|
181
|
+
},
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
return Context;
|
|
185
|
+
});
|