x_ite 5.0.3 → 6.1.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 +25 -1
- package/Makefile +36 -28
- package/README.md +6 -11
- package/build/bin/dist.pl +0 -6
- package/build/bin/examples-and-tests.pl +75 -0
- package/build/bin/tests-menu.pl +57 -0
- package/build/bin/version.pl +7 -4
- package/build/parts/default.start.frag.js +3 -2
- package/dist/assets/components/annotation.js +3 -2
- package/dist/assets/components/annotation.min.js +1 -1
- package/dist/assets/components/cad-geometry.js +3 -2
- package/dist/assets/components/cad-geometry.min.js +1 -1
- package/dist/assets/components/cube-map-texturing.js +8 -20
- package/dist/assets/components/cube-map-texturing.min.js +1 -1
- package/dist/assets/components/dis.js +3 -2
- package/dist/assets/components/dis.min.js +1 -1
- package/dist/assets/components/event-utilities.js +4 -3
- package/dist/assets/components/event-utilities.min.js +1 -1
- package/dist/assets/components/geometry2d.js +38 -52
- package/dist/assets/components/geometry2d.min.js +1 -1
- package/dist/assets/components/geospatial.js +34 -1686
- package/dist/assets/components/geospatial.min.js +1 -1
- package/dist/assets/components/h-anim.js +71 -77
- package/dist/assets/components/h-anim.min.js +1 -1
- package/dist/assets/components/key-device-sensor.js +4 -3
- package/dist/assets/components/key-device-sensor.min.js +1 -1
- package/dist/assets/components/layout.js +101 -173
- package/dist/assets/components/layout.min.js +1 -1
- package/dist/assets/components/nurbs.js +3 -2
- package/dist/assets/components/nurbs.min.js +1 -1
- package/dist/assets/components/particle-systems.js +1926 -1669
- package/dist/assets/components/particle-systems.min.js +1 -1
- package/dist/assets/components/picking.js +34 -41
- package/dist/assets/components/picking.min.js +1 -1
- package/dist/assets/components/projective-texture-mapping.js +73 -86
- package/dist/assets/components/projective-texture-mapping.min.js +1 -1
- package/dist/assets/components/rigid-body-physics.js +37 -57
- package/dist/assets/components/rigid-body-physics.min.js +1 -1
- package/dist/assets/components/scripting.js +3 -2
- package/dist/assets/components/scripting.min.js +1 -1
- package/dist/assets/components/texturing-3d.js +27 -33
- package/dist/assets/components/texturing-3d.min.js +3 -3
- package/dist/assets/components/volume-rendering.js +12 -11
- package/dist/assets/components/volume-rendering.min.js +1 -1
- package/dist/assets/components/x_ite.js +3 -2
- package/dist/assets/components/x_ite.min.js +1 -1
- package/dist/assets/images/Shading.png +0 -0
- 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/Gouraud.vs +1 -1
- package/dist/assets/shaders/webgl1/Line.fs +0 -21
- package/dist/assets/shaders/webgl1/Line.vs +0 -10
- package/dist/assets/shaders/webgl1/PBR.fs +1 -1
- package/dist/assets/shaders/webgl1/PBR.vs +1 -1
- package/dist/assets/shaders/webgl1/Phong.fs +1 -1
- package/dist/assets/shaders/webgl1/Point.vs +1 -1
- package/dist/assets/shaders/webgl2/Depth.vs +29 -1
- package/dist/assets/shaders/webgl2/Gouraud.vs +32 -4
- 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.fs +1 -1
- package/dist/assets/shaders/webgl2/PBR.vs +35 -7
- package/dist/assets/shaders/webgl2/Phong.fs +1 -1
- package/dist/assets/shaders/webgl2/Phong.vs +31 -3
- package/dist/assets/shaders/webgl2/Point.vs +30 -2
- package/dist/assets/shaders/webgl2/Unlit.vs +31 -3
- package/dist/example.html +6 -6
- package/dist/x_ite.css +199 -224
- package/dist/x_ite.js +16335 -15917
- 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 +21 -15
- package/docs/Browser-Support.md +6 -0
- package/docs/Custom-Shaders.md +18 -25
- package/docs/Features.md +11 -5
- 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 +93 -39
- package/docs/XHTML-DOM-Integration.md +6 -0
- package/docs/_config.yml +2 -2
- package/docs/assets/css/main.scss +26 -0
- package/docs/index.md +42 -50
- 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 +12 -6
- package/docs/reference/Field-Services-and-Objects.md +105 -1
- package/docs/reference/Prototype-Services.md +11 -0
- package/docs/reference/Route-Services.md +9 -0
- package/docs/reference/Scene-Services.md +17 -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 +42 -36
- 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/images/Shading.png +0 -0
- 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/Gouraud.fs +1 -1
- package/src/assets/shaders/webgl1/Gouraud.vs +2 -3
- package/src/assets/shaders/webgl1/Line.fs +3 -28
- package/src/assets/shaders/webgl1/Line.vs +6 -20
- package/src/assets/shaders/webgl1/PBR.fs +6 -6
- package/src/assets/shaders/webgl1/PBR.vs +1 -1
- package/src/assets/shaders/webgl1/Phong.fs +10 -10
- package/src/assets/shaders/webgl1/Point.vs +2 -2
- package/src/assets/shaders/webgl1/Unlit.fs +4 -4
- package/src/assets/shaders/webgl1/include/Normal.glsl +1 -1
- package/src/assets/shaders/webgl1/include/Texture.glsl +3 -8
- package/src/assets/shaders/webgl2/Depth.vs +4 -1
- package/src/assets/shaders/webgl2/Gouraud.fs +1 -1
- package/src/assets/shaders/webgl2/Gouraud.vs +8 -6
- package/src/assets/shaders/webgl2/Line.fs +11 -17
- package/src/assets/shaders/webgl2/Line.vs +17 -21
- package/src/assets/shaders/webgl2/LineTransform.fs +6 -0
- package/src/assets/shaders/webgl2/LineTransform.vs +77 -0
- package/src/assets/shaders/webgl2/PBR.fs +6 -6
- package/src/assets/shaders/webgl2/PBR.vs +10 -7
- package/src/assets/shaders/webgl2/Phong.fs +11 -11
- package/src/assets/shaders/webgl2/Phong.vs +6 -3
- package/src/assets/shaders/webgl2/Point.vs +5 -4
- package/src/assets/shaders/webgl2/Unlit.fs +5 -5
- 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/Normal.glsl +1 -1
- package/src/assets/shaders/webgl2/include/Particle.glsl +36 -0
- package/src/assets/shaders/webgl2/include/Texture.glsl +3 -3
- package/src/example.html +6 -6
- package/src/examples.js +5 -4
- package/src/standard/Math/Algorithm.js +12 -28
- package/src/standard/Math/Geometry/Line2.js +163 -0
- package/src/standard/Math/Geometry/Line3.js +3 -5
- package/src/standard/Math/Geometry/Plane3.js +0 -2
- package/src/standard/Math/Geometry/Triangle3.js +1 -1
- package/src/standard/Math/Geometry/ViewVolume.js +121 -103
- 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 +48 -34
- package/src/standard/Math/Numbers/Matrix2.js +62 -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 +12 -5
- package/src/standard/Math/Numbers/Rotation4.js +8 -1
- package/src/standard/Math/Numbers/Vector2.js +42 -9
- package/src/standard/Math/Numbers/Vector3.js +50 -14
- package/src/standard/Math/Numbers/Vector4.js +48 -11
- package/src/standard/Math/Utility/BVH.js +45 -17
- package/src/tests.js +68 -66
- 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 +24 -143
- package/src/x_ite/Browser/Core/BrowserTimings.js +6 -4
- package/src/x_ite/Browser/Core/Context.js +185 -0
- package/src/x_ite/Browser/Core/ContextMenu.js +398 -211
- 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/Followers/X3DArrayFollowerTemplate.js +1 -1
- package/src/x_ite/Browser/Geometry2D/Disk2DOptions.js +1 -0
- package/src/x_ite/Browser/Geometry2D/X3DGeometry2DContext.js +2 -2
- package/src/x_ite/Browser/Geometry3D/X3DGeometry3DContext.js +41 -2
- package/src/x_ite/Browser/Geospatial/Geocentric.js +2 -2
- package/src/x_ite/Browser/Interpolation/CatmullRomSplineInterpolatorTemplate.js +1 -1
- package/src/x_ite/Browser/Layout/ScreenText.js +18 -65
- package/src/x_ite/Browser/Layout/X3DLayoutContext.js +59 -16
- package/src/x_ite/Browser/Navigation/ExamineViewer.js +13 -20
- package/src/x_ite/Browser/Navigation/LookAtViewer.js +1 -4
- package/src/x_ite/Browser/Navigation/PlaneViewer.js +0 -3
- package/src/x_ite/Browser/Navigation/X3DFlyViewer.js +15 -8
- 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 +41 -37
- package/src/x_ite/Browser/Rendering/X3DRenderingContext.js +21 -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/Text/X3DTextGeometry.js +2 -1
- package/src/x_ite/Browser/Texturing/X3DTexturingContext.js +71 -34
- package/src/x_ite/Browser/Texturing3D/DICOMParser.js +2 -2
- package/src/x_ite/Browser/Time/X3DTimeContext.js +4 -2
- 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 +43 -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 +1 -2
- 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/ColorDamper.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/Followers/X3DFollowerNode.js +1 -1
- package/src/x_ite/Components/Geometry2D/Disk2D.js +30 -46
- 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/GeoLOD.js +1 -1
- 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/GeoViewpoint.js +26 -30
- 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 +16 -80
- 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 +2 -2
- package/src/x_ite/Components/Navigation/OrthoViewpoint.js +29 -30
- package/src/x_ite/Components/Navigation/Viewpoint.js +16 -20
- package/src/x_ite/Components/Navigation/X3DViewpointNode.js +82 -111
- package/src/x_ite/Components/Networking/Anchor.js +18 -7
- 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 +463 -882
- 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 +91 -108
- package/src/x_ite/Components/PointingDeviceSensor/PlaneSensor.js +56 -59
- package/src/x_ite/Components/PointingDeviceSensor/SphereSensor.js +54 -71
- 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 -24
- package/src/x_ite/Components/Rendering/ColorRGBA.js +13 -25
- package/src/x_ite/Components/Rendering/IndexedLineSet.js +26 -4
- package/src/x_ite/Components/Rendering/LineSet.js +35 -13
- package/src/x_ite/Components/Rendering/PointSet.js +35 -13
- package/src/x_ite/Components/Rendering/X3DComposedGeometryNode.js +13 -5
- package/src/x_ite/Components/Rendering/X3DGeometryNode.js +331 -387
- package/src/x_ite/Components/Rendering/X3DLineGeometryNode.js +350 -140
- package/src/x_ite/Components/Rendering/X3DPointGeometryNode.js +116 -126
- 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 +8 -11
- package/src/x_ite/Components/Shaders/Matrix3VertexAttribute.js +10 -14
- package/src/x_ite/Components/Shaders/Matrix4VertexAttribute.js +10 -14
- package/src/x_ite/Components/Shaders/ShaderPart.js +1 -10
- package/src/x_ite/Components/Shaders/X3DProgrammableShaderObject.js +220 -210
- package/src/x_ite/Components/Shaders/X3DShaderNode.js +28 -10
- package/src/x_ite/Components/Shaders/X3DVertexAttributeNode.js +15 -1
- package/src/x_ite/Components/Shape/Appearance.js +37 -4
- 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 +24 -3
- package/src/x_ite/Components/Shape/Shape.js +30 -39
- package/src/x_ite/Components/Shape/TwoSidedMaterial.js +3 -1
- package/src/x_ite/Components/Sound/Sound.js +31 -41
- package/src/x_ite/Components/Text/Text.js +6 -20
- package/src/x_ite/Components/Texturing/ImageTexture.js +1 -1
- package/src/x_ite/Components/Texturing/MovieTexture.js +1 -1
- package/src/x_ite/Components/Texturing/PixelTexture.js +2 -2
- package/src/x_ite/Components/Texturing/TextureCoordinate.js +5 -5
- package/src/x_ite/Components/Texturing/TextureProperties.js +4 -4
- 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 -5
- package/src/x_ite/Components/Texturing3D/TextureCoordinate4D.js +5 -5
- package/src/x_ite/Components/Texturing3D/X3DTexture3DNode.js +12 -19
- package/src/x_ite/Components/VolumeRendering/X3DVolumeDataNode.js +8 -8
- 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/SFImage.js +2 -11
- 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 +22 -2
- 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 +103 -0
- package/src/x_ite/Rendering/X3DRenderObject.js +127 -148
- package/src/x_ite/X3D.js +32 -26
- package/src/x_ite.config.js +0 -5
- package/src/x_ite.css +216 -175
- package/src/x_ite.html +15 -10
- package/src/x_ite.js +49 -1
- package/x_ite.min.html +15 -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
|
@@ -173,9 +173,6 @@ function ($,
|
|
|
173
173
|
},
|
|
174
174
|
mousedown: function (event)
|
|
175
175
|
{
|
|
176
|
-
if (this .getBrowser () .getContextMenu () .getActive ())
|
|
177
|
-
return;
|
|
178
|
-
|
|
179
176
|
if (this .button >= 0)
|
|
180
177
|
return;
|
|
181
178
|
|
|
@@ -382,7 +379,7 @@ function ($,
|
|
|
382
379
|
viewpoint .transitionStop ();
|
|
383
380
|
|
|
384
381
|
step = this .getDistanceToCenter (step) .multiply (event .zoomFactor || SCROLL_FACTOR),
|
|
385
|
-
translation = viewpoint .getUserOrientation () .multVecRot (translation .set (0, 0, step .
|
|
382
|
+
translation = viewpoint .getUserOrientation () .multVecRot (translation .set (0, 0, step .magnitude ()));
|
|
386
383
|
|
|
387
384
|
if (event .deltaY > 0)
|
|
388
385
|
this .addMove (translation .negate (), Vector3 .Zero);
|
|
@@ -449,21 +446,24 @@ function ($,
|
|
|
449
446
|
// End rotate (button 0).
|
|
450
447
|
|
|
451
448
|
event .button = 0;
|
|
449
|
+
event .pageX = this .touch1 .x;
|
|
450
|
+
event .pageY = this .touch1 .y;
|
|
452
451
|
|
|
453
452
|
this .mouseup (event);
|
|
454
453
|
|
|
455
454
|
// Start dblclick (button 0).
|
|
456
455
|
|
|
457
|
-
if (this .
|
|
456
|
+
if (this .tapedTwice)
|
|
458
457
|
{
|
|
459
|
-
event .button = 0;
|
|
460
|
-
event .pageX = this .touch1 .x;
|
|
461
|
-
event .pageY = this .touch1 .y;
|
|
462
|
-
|
|
463
458
|
this .dblclick (event);
|
|
464
459
|
}
|
|
460
|
+
else
|
|
461
|
+
{
|
|
462
|
+
this .tapedTwice = true;
|
|
463
|
+
|
|
464
|
+
setTimeout (function () { this .tapedTwice = false; } .bind (this), 300);
|
|
465
|
+
}
|
|
465
466
|
|
|
466
|
-
this .tapStart = this .getBrowser () .getCurrentTime ();
|
|
467
467
|
break;
|
|
468
468
|
}
|
|
469
469
|
case 1:
|
|
@@ -650,17 +650,10 @@ function ($,
|
|
|
650
650
|
|
|
651
651
|
return function (rotationChange)
|
|
652
652
|
{
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
this .disconnect ();
|
|
656
|
-
this .getBrowser () .prepareEvents () .addInterest ("spin", this);
|
|
653
|
+
this .disconnect ();
|
|
654
|
+
this .getBrowser () .prepareEvents () .addInterest ("spin", this);
|
|
657
655
|
|
|
658
|
-
|
|
659
|
-
}
|
|
660
|
-
catch (error)
|
|
661
|
-
{
|
|
662
|
-
console .error (error);
|
|
663
|
-
}
|
|
656
|
+
this .rotation .assign (rotation .assign (Rotation4 .Identity) .slerp (rotationChange, SPIN_FACTOR));
|
|
664
657
|
};
|
|
665
658
|
})(),
|
|
666
659
|
addMove: (function ()
|
|
@@ -139,9 +139,6 @@ function ($,
|
|
|
139
139
|
},
|
|
140
140
|
mousedown: function (event)
|
|
141
141
|
{
|
|
142
|
-
if (this .getBrowser () .getContextMenu () .getActive ())
|
|
143
|
-
return;
|
|
144
|
-
|
|
145
142
|
if (this .button >= 0)
|
|
146
143
|
return;
|
|
147
144
|
|
|
@@ -263,7 +260,7 @@ function ($,
|
|
|
263
260
|
viewpoint .transitionStop ();
|
|
264
261
|
|
|
265
262
|
step = this .getDistanceToCenter (step) .multiply (event .zoomFactor || SCROLL_FACTOR),
|
|
266
|
-
translation = viewpoint .getUserOrientation () .multVecRot (translation .set (0, 0, step .
|
|
263
|
+
translation = viewpoint .getUserOrientation () .multVecRot (translation .set (0, 0, step .magnitude ()));
|
|
267
264
|
|
|
268
265
|
if (event .deltaY > 0)
|
|
269
266
|
this .addMove (translation .negate (), Vector3 .Zero);
|
|
@@ -51,6 +51,7 @@ define ([
|
|
|
51
51
|
"jquery",
|
|
52
52
|
"x_ite/Browser/Navigation/X3DViewer",
|
|
53
53
|
"x_ite/Components/Followers/OrientationChaser",
|
|
54
|
+
"x_ite/Rendering/VertexArray",
|
|
54
55
|
"standard/Math/Numbers/Vector3",
|
|
55
56
|
"standard/Math/Numbers/Rotation4",
|
|
56
57
|
"standard/Math/Numbers/Matrix4",
|
|
@@ -60,6 +61,7 @@ define ([
|
|
|
60
61
|
function ($,
|
|
61
62
|
X3DViewer,
|
|
62
63
|
OrientationChaser,
|
|
64
|
+
VertexArray,
|
|
63
65
|
Vector3,
|
|
64
66
|
Rotation4,
|
|
65
67
|
Matrix4,
|
|
@@ -94,10 +96,11 @@ function ($,
|
|
|
94
96
|
this .toVector = new Vector3 (0, 0, 0);
|
|
95
97
|
this .direction = new Vector3 (0, 0, 0);
|
|
96
98
|
this .startTime = 0;
|
|
97
|
-
this .lineBuffer = gl .createBuffer ();
|
|
98
99
|
this .lineCount = 2;
|
|
99
100
|
this .lineVertices = new Array (this .lineCount * 4);
|
|
100
101
|
this .lineArray = new Float32Array (this .lineVertices);
|
|
102
|
+
this .lineBuffer = gl .createBuffer ();
|
|
103
|
+
this .lineArrayObject = new VertexArray ();
|
|
101
104
|
this .event = null;
|
|
102
105
|
this .lookAround = false;
|
|
103
106
|
this .orientationChaser = new OrientationChaser (executionContext);
|
|
@@ -156,9 +159,6 @@ function ($,
|
|
|
156
159
|
},
|
|
157
160
|
mousedown: function (event)
|
|
158
161
|
{
|
|
159
|
-
if (this .getBrowser () .getContextMenu () .getActive ())
|
|
160
|
-
return;
|
|
161
|
-
|
|
162
162
|
if (this .button >= 0)
|
|
163
163
|
return;
|
|
164
164
|
|
|
@@ -453,7 +453,7 @@ function ($,
|
|
|
453
453
|
else
|
|
454
454
|
rubberBandRotation .setFromToVec (up .multVecRot (axis .set (0, 0, -1)), up .multVecRot (direction .assign (this .direction)));
|
|
455
455
|
|
|
456
|
-
var rubberBandLength = this .direction .
|
|
456
|
+
var rubberBandLength = this .direction .magnitude ();
|
|
457
457
|
|
|
458
458
|
// Determine positionOffset.
|
|
459
459
|
|
|
@@ -691,10 +691,12 @@ function ($,
|
|
|
691
691
|
shaderNode = browser .getLineShader (),
|
|
692
692
|
lineWidth = gl .getParameter (gl .LINE_WIDTH);
|
|
693
693
|
|
|
694
|
-
if (shaderNode .
|
|
694
|
+
if (shaderNode .isValid ())
|
|
695
695
|
{
|
|
696
696
|
shaderNode .enable (gl);
|
|
697
|
-
|
|
697
|
+
|
|
698
|
+
if (this .lineArrayObject .enable (gl, shaderNode))
|
|
699
|
+
shaderNode .enableVertexAttribute (gl, this .lineBuffer, 0, 0);
|
|
698
700
|
|
|
699
701
|
gl .uniform1i (shaderNode .x3d_NumClipPlanes, 0);
|
|
700
702
|
gl .uniform1i (shaderNode .x3d_FogType, 0);
|
|
@@ -744,7 +746,7 @@ function ($,
|
|
|
744
746
|
// Transfer line.
|
|
745
747
|
|
|
746
748
|
gl .bindBuffer (gl .ARRAY_BUFFER, this .lineBuffer);
|
|
747
|
-
gl .bufferData (gl .ARRAY_BUFFER, this .lineArray, gl .
|
|
749
|
+
gl .bufferData (gl .ARRAY_BUFFER, this .lineArray, gl .DYNAMIC_DRAW);
|
|
748
750
|
},
|
|
749
751
|
disconnect: function ()
|
|
750
752
|
{
|
|
@@ -762,6 +764,11 @@ function ($,
|
|
|
762
764
|
},
|
|
763
765
|
dispose: function ()
|
|
764
766
|
{
|
|
767
|
+
const gl = this .getBrowser () .getContext ();
|
|
768
|
+
|
|
769
|
+
gl .deleteBuffer (this .lineBuffer);
|
|
770
|
+
this .lineArrayObject .delete (gl);
|
|
771
|
+
|
|
765
772
|
this .disconnect ();
|
|
766
773
|
this .getBrowser () ._controlKey .removeInterest ("set_controlKey__", this);
|
|
767
774
|
this .getBrowser () .getSurface () .unbind (".X3DFlyViewer");
|
|
@@ -122,29 +122,21 @@ function (X3DBaseNode,
|
|
|
122
122
|
|
|
123
123
|
return function (x, y, result)
|
|
124
124
|
{
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
viewport = this .getViewport () .getRectangle (this .getBrowser ()),
|
|
131
|
-
projectionMatrix = viewpoint .getProjectionMatrixWithLimits (navigationInfo .getNearValue (), navigationInfo .getFarValue (viewpoint), viewport);
|
|
125
|
+
const
|
|
126
|
+
navigationInfo = this .getNavigationInfo (),
|
|
127
|
+
viewpoint = this .getActiveViewpoint (),
|
|
128
|
+
viewport = this .getViewport () .getRectangle (this .getBrowser ()),
|
|
129
|
+
projectionMatrix = viewpoint .getProjectionMatrixWithLimits (navigationInfo .getNearValue (), navigationInfo .getFarValue (viewpoint), viewport);
|
|
132
130
|
|
|
133
|
-
|
|
134
|
-
|
|
131
|
+
// Far plane point
|
|
132
|
+
ViewVolume .unProjectPoint (x, this .getBrowser () .getViewport () [3] - y, 0.9, Matrix4 .Identity, projectionMatrix, viewport, far);
|
|
135
133
|
|
|
136
|
-
|
|
137
|
-
|
|
134
|
+
if (viewpoint instanceof OrthoViewpoint)
|
|
135
|
+
return result .set (far .x, far .y, -this .getDistanceToCenter (distance) .magnitude ());
|
|
138
136
|
|
|
139
|
-
|
|
137
|
+
const direction = far .normalize ();
|
|
140
138
|
|
|
141
|
-
|
|
142
|
-
}
|
|
143
|
-
catch (error)
|
|
144
|
-
{
|
|
145
|
-
console .error (error);
|
|
146
|
-
return result .set (0, 0, 0);
|
|
147
|
-
}
|
|
139
|
+
return result .assign (direction) .multiply (this .getDistanceToCenter (distance) .magnitude () / direction .dot (axis));
|
|
148
140
|
};
|
|
149
141
|
})(),
|
|
150
142
|
getDistanceToCenter: function (distance, positionOffset)
|
|
@@ -194,7 +186,7 @@ function (X3DBaseNode,
|
|
|
194
186
|
})(),
|
|
195
187
|
touch: function (x, y)
|
|
196
188
|
{
|
|
197
|
-
this .getBrowser () .touch (x, y);
|
|
189
|
+
this .getBrowser () .touch (x, y, false);
|
|
198
190
|
|
|
199
191
|
return this .getBrowser () .getHits () .length;
|
|
200
192
|
},
|
|
@@ -85,10 +85,13 @@ function (Fields,
|
|
|
85
85
|
this [_loading] = false;
|
|
86
86
|
this [_location] = getBaseURI (this .getElement () [0]);
|
|
87
87
|
|
|
88
|
-
this .getCanvas () .
|
|
88
|
+
this .getCanvas () .hide ();
|
|
89
89
|
|
|
90
90
|
if (this .getBrowserOptions () .getSplashScreen ())
|
|
91
|
-
|
|
91
|
+
{
|
|
92
|
+
this .getContextMenu () .hide ();
|
|
93
|
+
this .getSplashScreen () .show ();
|
|
94
|
+
}
|
|
92
95
|
}
|
|
93
96
|
|
|
94
97
|
X3DNetworkingContext .prototype =
|
|
@@ -127,28 +130,29 @@ function (Fields,
|
|
|
127
130
|
{
|
|
128
131
|
this .resetLoadCount ();
|
|
129
132
|
|
|
130
|
-
this .
|
|
133
|
+
this .getShadow () .find (".x_ite-private-world-info") .remove ();
|
|
131
134
|
|
|
132
135
|
if (this .getBrowserOptions () .getSplashScreen ())
|
|
133
136
|
{
|
|
137
|
+
this .getContextMenu () .hide ();
|
|
134
138
|
this .getCanvas () .stop (true, true) .animate ({ "delay": 1 }, 1) .fadeOut (0);
|
|
135
139
|
this .getSplashScreen () .stop (true, true) .animate ({ "delay": 1 }, 1) .fadeIn (0);
|
|
136
140
|
}
|
|
137
141
|
else
|
|
138
142
|
{
|
|
139
|
-
this .getCanvas () .
|
|
143
|
+
this .getCanvas () .hide ();
|
|
140
144
|
}
|
|
141
145
|
}
|
|
142
146
|
else
|
|
143
147
|
{
|
|
144
148
|
if (this .getBrowserOptions () .getSplashScreen ())
|
|
145
149
|
{
|
|
146
|
-
this .getSplashScreen () .stop (true, true) .
|
|
147
|
-
this .getCanvas () .stop (true, true) .
|
|
150
|
+
this .getSplashScreen () .stop (true, true) .show () .fadeOut (2000);
|
|
151
|
+
this .getCanvas () .stop (true, true) .hide () .fadeIn (2000);
|
|
148
152
|
}
|
|
149
153
|
else
|
|
150
154
|
{
|
|
151
|
-
this .getCanvas () .
|
|
155
|
+
this .getCanvas () .show ();
|
|
152
156
|
}
|
|
153
157
|
}
|
|
154
158
|
},
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
#define BVH_NODE 0
|
|
2
|
+
#define BVH_TRIANGLE 1
|
|
3
|
+
#define BVH_STACK_SIZE 32
|
|
4
|
+
|
|
5
|
+
int bvhNodeIndex = 0;
|
|
6
|
+
|
|
7
|
+
void
|
|
8
|
+
setBVHIndex (const in int index)
|
|
9
|
+
{
|
|
10
|
+
bvhNodeIndex = index;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
int
|
|
14
|
+
getBVHRoot (const in sampler2D volume, const in int hierarchyIndex, const in int rootIndex)
|
|
15
|
+
{
|
|
16
|
+
return int (texelFetch (volume, rootIndex, 0) .x) + hierarchyIndex;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
int
|
|
20
|
+
getBVHType (const in sampler2D volume)
|
|
21
|
+
{
|
|
22
|
+
return int (texelFetch (volume, bvhNodeIndex, 0) .x);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
vec3
|
|
26
|
+
getBVHMin (const in sampler2D volume)
|
|
27
|
+
{
|
|
28
|
+
return texelFetch (volume, bvhNodeIndex + 1, 0) .xyz;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
vec3
|
|
32
|
+
getBVHMax (const in sampler2D volume)
|
|
33
|
+
{
|
|
34
|
+
return texelFetch (volume, bvhNodeIndex + 2, 0) .xyz;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
int
|
|
38
|
+
getBVHLeft (const in sampler2D volume, const in int hierarchyIndex)
|
|
39
|
+
{
|
|
40
|
+
return int (texelFetch (volume, bvhNodeIndex, 0) .y) + hierarchyIndex;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
int
|
|
44
|
+
getBVHRight (const in sampler2D volume, const in int hierarchyIndex)
|
|
45
|
+
{
|
|
46
|
+
return int (texelFetch (volume, bvhNodeIndex, 0) .z) + hierarchyIndex;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
int
|
|
50
|
+
getBVHTriangle (const in sampler2D volume)
|
|
51
|
+
{
|
|
52
|
+
return int (texelFetch (volume, bvhNodeIndex, 0) .y);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/* Ray triangle intersection test */
|
|
56
|
+
|
|
57
|
+
int
|
|
58
|
+
getIntersections (const in sampler2D volume, const in int verticesIndex, const in int hierarchyIndex, const in int rootIndex, const in Line3 line, out vec4 points [ARRAY_SIZE])
|
|
59
|
+
{
|
|
60
|
+
int current = getBVHRoot (volume, hierarchyIndex, rootIndex);
|
|
61
|
+
int count = 0;
|
|
62
|
+
int stackIndex = -1;
|
|
63
|
+
int stack [BVH_STACK_SIZE];
|
|
64
|
+
|
|
65
|
+
while (stackIndex >= 0 || current >= 0)
|
|
66
|
+
{
|
|
67
|
+
if (current >= 0)
|
|
68
|
+
{
|
|
69
|
+
setBVHIndex (current);
|
|
70
|
+
|
|
71
|
+
if (getBVHType (volume) == BVH_NODE)
|
|
72
|
+
{
|
|
73
|
+
// Node
|
|
74
|
+
|
|
75
|
+
if (intersects (getBVHMin (volume), getBVHMax (volume), line))
|
|
76
|
+
{
|
|
77
|
+
stack [++ stackIndex] = current;
|
|
78
|
+
|
|
79
|
+
current = getBVHLeft (volume, hierarchyIndex);
|
|
80
|
+
}
|
|
81
|
+
else
|
|
82
|
+
{
|
|
83
|
+
current = -1;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
else
|
|
87
|
+
{
|
|
88
|
+
// Triangle
|
|
89
|
+
|
|
90
|
+
int t = getBVHTriangle (volume);
|
|
91
|
+
int v = verticesIndex + t;
|
|
92
|
+
vec3 r = vec3 (0.0);
|
|
93
|
+
|
|
94
|
+
vec3 a = texelFetch (volume, v, 0) .xyz;
|
|
95
|
+
vec3 b = texelFetch (volume, v + 1, 0) .xyz;
|
|
96
|
+
vec3 c = texelFetch (volume, v + 2, 0) .xyz;
|
|
97
|
+
|
|
98
|
+
if (intersects (line, a, b, c, r))
|
|
99
|
+
points [count ++] = vec4 (r .z * a + r .x * b + r .y * c, 1.0);
|
|
100
|
+
|
|
101
|
+
current = -1;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
else
|
|
105
|
+
{
|
|
106
|
+
setBVHIndex (stack [stackIndex --]);
|
|
107
|
+
|
|
108
|
+
current = getBVHRight (volume, hierarchyIndex);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
return count;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
int
|
|
116
|
+
getIntersections (const in sampler2D volume, const in int verticesIndex, const in int normalsIndex, const in int hierarchyIndex, const in int rootIndex, const in Line3 line, out vec4 points [ARRAY_SIZE], out vec3 normals [ARRAY_SIZE])
|
|
117
|
+
{
|
|
118
|
+
int current = getBVHRoot (volume, hierarchyIndex, rootIndex);
|
|
119
|
+
int count = 0;
|
|
120
|
+
int stackIndex = -1;
|
|
121
|
+
int stack [BVH_STACK_SIZE];
|
|
122
|
+
|
|
123
|
+
while (stackIndex >= 0 || current >= 0)
|
|
124
|
+
{
|
|
125
|
+
if (current >= 0)
|
|
126
|
+
{
|
|
127
|
+
setBVHIndex (current);
|
|
128
|
+
|
|
129
|
+
if (getBVHType (volume) == BVH_NODE)
|
|
130
|
+
{
|
|
131
|
+
// Node
|
|
132
|
+
|
|
133
|
+
if (intersects (getBVHMin (volume), getBVHMax (volume), line))
|
|
134
|
+
{
|
|
135
|
+
stack [++ stackIndex] = current;
|
|
136
|
+
|
|
137
|
+
current = getBVHLeft (volume, hierarchyIndex);
|
|
138
|
+
}
|
|
139
|
+
else
|
|
140
|
+
{
|
|
141
|
+
current = -1;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
else
|
|
145
|
+
{
|
|
146
|
+
// Triangle
|
|
147
|
+
|
|
148
|
+
int t = getBVHTriangle (volume);
|
|
149
|
+
int v = verticesIndex + t;
|
|
150
|
+
vec3 r = vec3 (0.0);
|
|
151
|
+
|
|
152
|
+
vec3 a = texelFetch (volume, v, 0) .xyz;
|
|
153
|
+
vec3 b = texelFetch (volume, v + 1, 0) .xyz;
|
|
154
|
+
vec3 c = texelFetch (volume, v + 2, 0) .xyz;
|
|
155
|
+
|
|
156
|
+
if (intersects (line, a, b, c, r))
|
|
157
|
+
{
|
|
158
|
+
points [count] = vec4 (r .z * a + r .x * b + r .y * c, 1.0);
|
|
159
|
+
|
|
160
|
+
int n = normalsIndex + t;
|
|
161
|
+
|
|
162
|
+
vec3 n0 = texelFetch (volume, n, 0) .xyz;
|
|
163
|
+
vec3 n1 = texelFetch (volume, n + 1, 0) .xyz;
|
|
164
|
+
vec3 n2 = texelFetch (volume, n + 2, 0) .xyz;
|
|
165
|
+
|
|
166
|
+
normals [count] = save_normalize (r .z * n0 + r .x * n1 + r .y * n2);
|
|
167
|
+
|
|
168
|
+
++ count;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
current = -1;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
else
|
|
175
|
+
{
|
|
176
|
+
setBVHIndex (stack [stackIndex --]);
|
|
177
|
+
|
|
178
|
+
current = getBVHRight (volume, hierarchyIndex);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
return count;
|
|
183
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
bool
|
|
2
|
+
intersects (const in vec3 min, const in vec3 max, const in Line3 line)
|
|
3
|
+
{
|
|
4
|
+
vec3 intersection;
|
|
5
|
+
|
|
6
|
+
// front
|
|
7
|
+
|
|
8
|
+
if (intersects (plane3 (max, vec3 (0.0, 0.0, 1.0)), line, intersection))
|
|
9
|
+
{
|
|
10
|
+
if (all (greaterThanEqual (vec4 (intersection .xy, max .xy), vec4 (min .xy, intersection .xy))))
|
|
11
|
+
return true;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
// back
|
|
15
|
+
|
|
16
|
+
if (intersects (plane3 (min, vec3 (0.0, 0.0, -1.0)), line, intersection))
|
|
17
|
+
{
|
|
18
|
+
if (all (greaterThanEqual (vec4 (intersection .xy, max .xy), vec4 (min .xy, intersection .xy))))
|
|
19
|
+
return true;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
// top
|
|
23
|
+
|
|
24
|
+
if (intersects (plane3 (max, vec3 (0.0, 1.0, 0.0)), line, intersection))
|
|
25
|
+
{
|
|
26
|
+
if (all (greaterThanEqual (vec4 (intersection .xz, max .xz), vec4 (min .xz, intersection .xz))))
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
// bottom
|
|
31
|
+
|
|
32
|
+
if (intersects (plane3 (min, vec3 (0.0, -1.0, 0.0)), line, intersection))
|
|
33
|
+
{
|
|
34
|
+
if (all (greaterThanEqual (vec4 (intersection .xz, max .xz), vec4 (min .xz, intersection .xz))))
|
|
35
|
+
return true;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// right
|
|
39
|
+
|
|
40
|
+
if (intersects (plane3 (max, vec3 (1.0, 0.0, 0.0)), line, intersection))
|
|
41
|
+
{
|
|
42
|
+
if (all (greaterThanEqual (vec4 (intersection .yz, max .yz), vec4 (min .yz, intersection .yz))))
|
|
43
|
+
return true;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
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 (function ()
|
|
51
|
+
{
|
|
52
|
+
"use strict";
|
|
53
|
+
|
|
54
|
+
let i = 0;
|
|
55
|
+
|
|
56
|
+
const GeometryTypes = {
|
|
57
|
+
POINT: i ++,
|
|
58
|
+
LINE: i ++,
|
|
59
|
+
TRIANGLE: i ++,
|
|
60
|
+
QUAD: i ++,
|
|
61
|
+
SPRITE: i ++,
|
|
62
|
+
GEOMETRY: i ++,
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
return GeometryTypes;
|
|
66
|
+
});
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
struct Line3 {
|
|
2
|
+
vec3 point;
|
|
3
|
+
vec3 direction;
|
|
4
|
+
};
|
|
5
|
+
|
|
6
|
+
// Line3
|
|
7
|
+
// line3 (const in vec3 point1, const in vec3 point2)
|
|
8
|
+
// {
|
|
9
|
+
// return Line3 (point1, normalize (point2 - point1));
|
|
10
|
+
// }
|
|
11
|
+
|
|
12
|
+
/* Line intersect triangle */
|
|
13
|
+
|
|
14
|
+
bool
|
|
15
|
+
intersects (const in Line3 line, const in vec3 a, const in vec3 b, const in vec3 c, out vec3 r)
|
|
16
|
+
{
|
|
17
|
+
// find vectors for two edges sharing vert0
|
|
18
|
+
vec3 edge1 = b - a;
|
|
19
|
+
vec3 edge2 = c - a;
|
|
20
|
+
|
|
21
|
+
// begin calculating determinant - also used to calculate U parameter
|
|
22
|
+
vec3 pvec = cross (line .direction, edge2);
|
|
23
|
+
|
|
24
|
+
// if determinant is near zero, ray lies in plane of triangle
|
|
25
|
+
float det = dot (edge1, pvec);
|
|
26
|
+
|
|
27
|
+
// Non culling intersection
|
|
28
|
+
|
|
29
|
+
if (det == 0.0)
|
|
30
|
+
return false;
|
|
31
|
+
|
|
32
|
+
float inv_det = 1.0 / det;
|
|
33
|
+
|
|
34
|
+
// calculate distance from vert0 to ray point
|
|
35
|
+
vec3 tvec = line .point - a;
|
|
36
|
+
|
|
37
|
+
// calculate U parameter and test bounds
|
|
38
|
+
float u = dot (tvec, pvec) * inv_det;
|
|
39
|
+
|
|
40
|
+
if (u < 0.0 || u > 1.0)
|
|
41
|
+
return false;
|
|
42
|
+
|
|
43
|
+
// prepare to test V parameter
|
|
44
|
+
vec3 qvec = cross (tvec, edge1);
|
|
45
|
+
|
|
46
|
+
// calculate V parameter and test bounds
|
|
47
|
+
float v = dot (line .direction, qvec) * inv_det;
|
|
48
|
+
|
|
49
|
+
if (v < 0.0 || u + v > 1.0)
|
|
50
|
+
return false;
|
|
51
|
+
|
|
52
|
+
r = vec3 (u, v, 1.0 - u - v);
|
|
53
|
+
|
|
54
|
+
return true;
|
|
55
|
+
}
|