cesium 0.13.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.
- data/LICENSE.md +259 -0
- data/README.rdoc +90 -0
- data/Rakefile +40 -0
- data/app/assets/javascripts/Assets/Assets.profile.js +8 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_0.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_1.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_10.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_11.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_12.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_13.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_14.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_15.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_16.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_17.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_18.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_19.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_2.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_20.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_21.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_22.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_23.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_24.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_25.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_26.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_27.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_3.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_4.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_5.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_6.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_7.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_8.json +1 -0
- data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_9.json +1 -0
- data/app/assets/javascripts/Assets/Textures/NE2_LR_LC_SR_W_DR_2048.jpg +0 -0
- data/app/assets/javascripts/Assets/Textures/SkyBox/tycho2t3_80_mx.jpg +0 -0
- data/app/assets/javascripts/Assets/Textures/SkyBox/tycho2t3_80_my.jpg +0 -0
- data/app/assets/javascripts/Assets/Textures/SkyBox/tycho2t3_80_mz.jpg +0 -0
- data/app/assets/javascripts/Assets/Textures/SkyBox/tycho2t3_80_px.jpg +0 -0
- data/app/assets/javascripts/Assets/Textures/SkyBox/tycho2t3_80_py.jpg +0 -0
- data/app/assets/javascripts/Assets/Textures/SkyBox/tycho2t3_80_pz.jpg +0 -0
- data/app/assets/javascripts/Assets/Textures/waterNormals.jpg +0 -0
- data/app/assets/javascripts/Assets/package.json +6 -0
- data/app/assets/javascripts/Cesium.js +320 -0
- data/app/assets/javascripts/Core/AnimationController.js +148 -0
- data/app/assets/javascripts/Core/AxisAlignedBoundingBox.js +243 -0
- data/app/assets/javascripts/Core/BoundingRectangle.js +364 -0
- data/app/assets/javascripts/Core/BoundingSphere.js +819 -0
- data/app/assets/javascripts/Core/BoxTessellator.js +93 -0
- data/app/assets/javascripts/Core/Cartesian2.js +762 -0
- data/app/assets/javascripts/Core/Cartesian3.js +861 -0
- data/app/assets/javascripts/Core/Cartesian4.js +762 -0
- data/app/assets/javascripts/Core/Cartographic.js +211 -0
- data/app/assets/javascripts/Core/CatmullRomSpline.js +232 -0
- data/app/assets/javascripts/Core/Clock.js +195 -0
- data/app/assets/javascripts/Core/ClockRange.js +37 -0
- data/app/assets/javascripts/Core/ClockStep.js +32 -0
- data/app/assets/javascripts/Core/Color.js +1629 -0
- data/app/assets/javascripts/Core/ComponentDatatype.js +119 -0
- data/app/assets/javascripts/Core/Core.profile.js +8 -0
- data/app/assets/javascripts/Core/CubeMapEllipsoidTessellator.js +198 -0
- data/app/assets/javascripts/Core/CubicRealPolynomial.js +251 -0
- data/app/assets/javascripts/Core/DefaultProxy.js +30 -0
- data/app/assets/javascripts/Core/DeveloperError.js +60 -0
- data/app/assets/javascripts/Core/EarthOrientationParameters.js +383 -0
- data/app/assets/javascripts/Core/EarthOrientationParametersSample.js +50 -0
- data/app/assets/javascripts/Core/Ellipsoid.js +539 -0
- data/app/assets/javascripts/Core/EllipsoidTangentPlane.js +207 -0
- data/app/assets/javascripts/Core/EllipsoidalOccluder.js +151 -0
- data/app/assets/javascripts/Core/EncodedCartesian3.js +197 -0
- data/app/assets/javascripts/Core/Enumeration.js +67 -0
- data/app/assets/javascripts/Core/Event.js +122 -0
- data/app/assets/javascripts/Core/Extent.js +383 -0
- data/app/assets/javascripts/Core/ExtentTessellator.js +384 -0
- data/app/assets/javascripts/Core/FAR.js +13 -0
- data/app/assets/javascripts/Core/FeatureDetection.js +126 -0
- data/app/assets/javascripts/Core/Fullscreen.js +235 -0
- data/app/assets/javascripts/Core/GeographicProjection.js +107 -0
- data/app/assets/javascripts/Core/HermitePolynomialApproximation.js +176 -0
- data/app/assets/javascripts/Core/HermiteSpline.js +234 -0
- data/app/assets/javascripts/Core/Iau2006XysData.js +259 -0
- data/app/assets/javascripts/Core/Iau2006XysSample.js +36 -0
- data/app/assets/javascripts/Core/IndexDatatype.js +28 -0
- data/app/assets/javascripts/Core/Intersect.js +40 -0
- data/app/assets/javascripts/Core/IntersectionTests.js +359 -0
- data/app/assets/javascripts/Core/Interval.js +27 -0
- data/app/assets/javascripts/Core/Iso8601.js +46 -0
- data/app/assets/javascripts/Core/JulianDate.js +1228 -0
- data/app/assets/javascripts/Core/KeyboardEventModifier.js +38 -0
- data/app/assets/javascripts/Core/LagrangePolynomialApproximation.js +96 -0
- data/app/assets/javascripts/Core/LeapSecond.js +158 -0
- data/app/assets/javascripts/Core/LinearApproximation.js +98 -0
- data/app/assets/javascripts/Core/Math.js +532 -0
- data/app/assets/javascripts/Core/Matrix2.js +833 -0
- data/app/assets/javascripts/Core/Matrix3.js +1099 -0
- data/app/assets/javascripts/Core/Matrix4.js +2164 -0
- data/app/assets/javascripts/Core/MeshFilters.js +568 -0
- data/app/assets/javascripts/Core/Occluder.js +474 -0
- data/app/assets/javascripts/Core/OrientationInterpolator.js +109 -0
- data/app/assets/javascripts/Core/PlaneTessellator.js +74 -0
- data/app/assets/javascripts/Core/PolygonPipeline.js +792 -0
- data/app/assets/javascripts/Core/PolylinePipeline.js +90 -0
- data/app/assets/javascripts/Core/PrimitiveType.js +80 -0
- data/app/assets/javascripts/Core/QuadraticRealPolynomial.js +146 -0
- data/app/assets/javascripts/Core/QuarticRealPolynomial.js +339 -0
- data/app/assets/javascripts/Core/Quaternion.js +947 -0
- data/app/assets/javascripts/Core/Queue.js +95 -0
- data/app/assets/javascripts/Core/Ray.js +64 -0
- data/app/assets/javascripts/Core/ReferenceFrame.js +25 -0
- data/app/assets/javascripts/Core/RequestErrorEvent.js +35 -0
- data/app/assets/javascripts/Core/RuntimeError.js +59 -0
- data/app/assets/javascripts/Core/ScreenSpaceEventHandler.js +658 -0
- data/app/assets/javascripts/Core/ScreenSpaceEventType.js +149 -0
- data/app/assets/javascripts/Core/Shapes.js +230 -0
- data/app/assets/javascripts/Core/Spherical.js +192 -0
- data/app/assets/javascripts/Core/TaskProcessor.js +131 -0
- data/app/assets/javascripts/Core/TimeConstants.js +85 -0
- data/app/assets/javascripts/Core/TimeInterval.js +305 -0
- data/app/assets/javascripts/Core/TimeIntervalCollection.js +543 -0
- data/app/assets/javascripts/Core/TimeStandard.js +31 -0
- data/app/assets/javascripts/Core/Tipsify.js +285 -0
- data/app/assets/javascripts/Core/Transforms.js +614 -0
- data/app/assets/javascripts/Core/TridiagonalSystemSolver.js +102 -0
- data/app/assets/javascripts/Core/Visibility.js +38 -0
- data/app/assets/javascripts/Core/WebMercatorProjection.js +154 -0
- data/app/assets/javascripts/Core/WindingOrder.js +40 -0
- data/app/assets/javascripts/Core/binarySearch.js +69 -0
- data/app/assets/javascripts/Core/buildModuleUrl.js +77 -0
- data/app/assets/javascripts/Core/clone.js +21 -0
- data/app/assets/javascripts/Core/combine.js +81 -0
- data/app/assets/javascripts/Core/computeSunPosition.js +116 -0
- data/app/assets/javascripts/Core/createGuid.js +25 -0
- data/app/assets/javascripts/Core/defaultValue.js +22 -0
- data/app/assets/javascripts/Core/destroyObject.js +61 -0
- data/app/assets/javascripts/Core/freezeObject.js +20 -0
- data/app/assets/javascripts/Core/getImagePixels.js +46 -0
- data/app/assets/javascripts/Core/isLeapYear.js +30 -0
- data/app/assets/javascripts/Core/jsonp.js +116 -0
- data/app/assets/javascripts/Core/loadArrayBuffer.js +76 -0
- data/app/assets/javascripts/Core/loadImage.js +85 -0
- data/app/assets/javascripts/Core/loadJson.js +54 -0
- data/app/assets/javascripts/Core/loadText.js +78 -0
- data/app/assets/javascripts/Core/loadXML.js +76 -0
- data/app/assets/javascripts/Core/package.json +6 -0
- data/app/assets/javascripts/Core/pointInsideTriangle2D.js +41 -0
- data/app/assets/javascripts/Core/requestAnimationFrame.js +61 -0
- data/app/assets/javascripts/Core/throttleRequestByServer.js +74 -0
- data/app/assets/javascripts/Core/writeTextToCanvas.js +92 -0
- data/app/assets/javascripts/DynamicScene/CompositeDynamicObjectCollection.js +254 -0
- data/app/assets/javascripts/DynamicScene/CzmlBoolean.js +57 -0
- data/app/assets/javascripts/DynamicScene/CzmlCartesian2.js +96 -0
- data/app/assets/javascripts/DynamicScene/CzmlCartesian3.js +99 -0
- data/app/assets/javascripts/DynamicScene/CzmlCartographic.js +125 -0
- data/app/assets/javascripts/DynamicScene/CzmlColor.js +127 -0
- data/app/assets/javascripts/DynamicScene/CzmlDefaults.js +135 -0
- data/app/assets/javascripts/DynamicScene/CzmlHorizontalOrigin.js +59 -0
- data/app/assets/javascripts/DynamicScene/CzmlImage.js +61 -0
- data/app/assets/javascripts/DynamicScene/CzmlLabelStyle.js +59 -0
- data/app/assets/javascripts/DynamicScene/CzmlNumber.js +82 -0
- data/app/assets/javascripts/DynamicScene/CzmlString.js +56 -0
- data/app/assets/javascripts/DynamicScene/CzmlUnitCartesian3.js +99 -0
- data/app/assets/javascripts/DynamicScene/CzmlUnitQuaternion.js +172 -0
- data/app/assets/javascripts/DynamicScene/CzmlUnitSpherical.js +98 -0
- data/app/assets/javascripts/DynamicScene/CzmlVerticalOrigin.js +59 -0
- data/app/assets/javascripts/DynamicScene/DynamicBillboard.js +245 -0
- data/app/assets/javascripts/DynamicScene/DynamicBillboardVisualizer.js +347 -0
- data/app/assets/javascripts/DynamicScene/DynamicColorMaterial.js +78 -0
- data/app/assets/javascripts/DynamicScene/DynamicCone.js +291 -0
- data/app/assets/javascripts/DynamicScene/DynamicConeVisualizer.js +350 -0
- data/app/assets/javascripts/DynamicScene/DynamicConeVisualizerUsingCustomSensor.js +389 -0
- data/app/assets/javascripts/DynamicScene/DynamicDirectionsProperty.js +163 -0
- data/app/assets/javascripts/DynamicScene/DynamicEllipsoid.js +158 -0
- data/app/assets/javascripts/DynamicScene/DynamicEllipsoidVisualizer.js +277 -0
- data/app/assets/javascripts/DynamicScene/DynamicImageMaterial.js +136 -0
- data/app/assets/javascripts/DynamicScene/DynamicLabel.js +286 -0
- data/app/assets/javascripts/DynamicScene/DynamicLabelVisualizer.js +341 -0
- data/app/assets/javascripts/DynamicScene/DynamicMaterialProperty.js +125 -0
- data/app/assets/javascripts/DynamicScene/DynamicObject.js +364 -0
- data/app/assets/javascripts/DynamicScene/DynamicObjectCollection.js +137 -0
- data/app/assets/javascripts/DynamicScene/DynamicObjectView.js +299 -0
- data/app/assets/javascripts/DynamicScene/DynamicPath.js +214 -0
- data/app/assets/javascripts/DynamicScene/DynamicPathVisualizer.js +402 -0
- data/app/assets/javascripts/DynamicScene/DynamicPoint.js +184 -0
- data/app/assets/javascripts/DynamicScene/DynamicPointVisualizer.js +323 -0
- data/app/assets/javascripts/DynamicScene/DynamicPolygon.js +138 -0
- data/app/assets/javascripts/DynamicScene/DynamicPolygonVisualizer.js +251 -0
- data/app/assets/javascripts/DynamicScene/DynamicPolyline.js +183 -0
- data/app/assets/javascripts/DynamicScene/DynamicPolylineVisualizer.js +268 -0
- data/app/assets/javascripts/DynamicScene/DynamicPositionProperty.js +525 -0
- data/app/assets/javascripts/DynamicScene/DynamicProperty.js +352 -0
- data/app/assets/javascripts/DynamicScene/DynamicPyramid.js +204 -0
- data/app/assets/javascripts/DynamicScene/DynamicPyramidVisualizer.js +302 -0
- data/app/assets/javascripts/DynamicScene/DynamicScene.profile.js +8 -0
- data/app/assets/javascripts/DynamicScene/DynamicVertexPositionsProperty.js +199 -0
- data/app/assets/javascripts/DynamicScene/ReferenceProperty.js +155 -0
- data/app/assets/javascripts/DynamicScene/VisualizerCollection.js +181 -0
- data/app/assets/javascripts/DynamicScene/package.json +6 -0
- data/app/assets/javascripts/DynamicScene/processCzml.js +77 -0
- data/app/assets/javascripts/Renderer/BlendEquation.js +52 -0
- data/app/assets/javascripts/Renderer/BlendFunction.js +158 -0
- data/app/assets/javascripts/Renderer/BlendingState.js +64 -0
- data/app/assets/javascripts/Renderer/Buffer.js +141 -0
- data/app/assets/javascripts/Renderer/BufferUsage.js +48 -0
- data/app/assets/javascripts/Renderer/ClearCommand.js +40 -0
- data/app/assets/javascripts/Renderer/CommandLists.js +42 -0
- data/app/assets/javascripts/Renderer/Context.js +2805 -0
- data/app/assets/javascripts/Renderer/CubeMap.js +358 -0
- data/app/assets/javascripts/Renderer/CubeMapFace.js +202 -0
- data/app/assets/javascripts/Renderer/CullFace.js +50 -0
- data/app/assets/javascripts/Renderer/DepthFunction.js +95 -0
- data/app/assets/javascripts/Renderer/DrawCommand.js +96 -0
- data/app/assets/javascripts/Renderer/Framebuffer.js +435 -0
- data/app/assets/javascripts/Renderer/MipmapHint.js +50 -0
- data/app/assets/javascripts/Renderer/PickFramebuffer.js +178 -0
- data/app/assets/javascripts/Renderer/PixelDatatype.js +86 -0
- data/app/assets/javascripts/Renderer/PixelFormat.js +113 -0
- data/app/assets/javascripts/Renderer/Renderbuffer.js +102 -0
- data/app/assets/javascripts/Renderer/RenderbufferFormat.js +77 -0
- data/app/assets/javascripts/Renderer/Renderer.profile.js +8 -0
- data/app/assets/javascripts/Renderer/ShaderCache.js +121 -0
- data/app/assets/javascripts/Renderer/ShaderProgram.js +2402 -0
- data/app/assets/javascripts/Renderer/StencilFunction.js +95 -0
- data/app/assets/javascripts/Renderer/StencilOperation.js +95 -0
- data/app/assets/javascripts/Renderer/Texture.js +395 -0
- data/app/assets/javascripts/Renderer/TextureAtlas.js +472 -0
- data/app/assets/javascripts/Renderer/TextureAtlasBuilder.js +133 -0
- data/app/assets/javascripts/Renderer/TextureMagnificationFilter.js +41 -0
- data/app/assets/javascripts/Renderer/TextureMinificationFilter.js +77 -0
- data/app/assets/javascripts/Renderer/TextureWrap.js +50 -0
- data/app/assets/javascripts/Renderer/UniformDatatype.js +218 -0
- data/app/assets/javascripts/Renderer/UniformState.js +799 -0
- data/app/assets/javascripts/Renderer/VertexArray.js +365 -0
- data/app/assets/javascripts/Renderer/VertexArrayFacade.js +574 -0
- data/app/assets/javascripts/Renderer/VertexLayout.js +49 -0
- data/app/assets/javascripts/Renderer/loadCubeMap.js +92 -0
- data/app/assets/javascripts/Renderer/package.json +6 -0
- data/app/assets/javascripts/Scene/AnimationCollection.js +249 -0
- data/app/assets/javascripts/Scene/ArcGisMapServerImageryProvider.js +384 -0
- data/app/assets/javascripts/Scene/Billboard.js +680 -0
- data/app/assets/javascripts/Scene/BillboardCollection.js +1209 -0
- data/app/assets/javascripts/Scene/BingMapsImageryProvider.js +460 -0
- data/app/assets/javascripts/Scene/BingMapsStyle.js +55 -0
- data/app/assets/javascripts/Scene/Camera.js +358 -0
- data/app/assets/javascripts/Scene/CameraColumbusViewMode.js +30 -0
- data/app/assets/javascripts/Scene/CameraController.js +1258 -0
- data/app/assets/javascripts/Scene/CameraEventAggregator.js +270 -0
- data/app/assets/javascripts/Scene/CameraEventType.js +53 -0
- data/app/assets/javascripts/Scene/CameraFlightPath.js +495 -0
- data/app/assets/javascripts/Scene/CentralBody.js +817 -0
- data/app/assets/javascripts/Scene/CentralBodySurface.js +1120 -0
- data/app/assets/javascripts/Scene/CentralBodySurfaceShaderSet.js +107 -0
- data/app/assets/javascripts/Scene/ComplexConicSensorVolume.js +511 -0
- data/app/assets/javascripts/Scene/CompositePrimitive.js +454 -0
- data/app/assets/javascripts/Scene/CullingVolume.js +59 -0
- data/app/assets/javascripts/Scene/CustomSensorVolume.js +440 -0
- data/app/assets/javascripts/Scene/DiscardMissingTileImagePolicy.js +134 -0
- data/app/assets/javascripts/Scene/EllipsoidPrimitive.js +412 -0
- data/app/assets/javascripts/Scene/EllipsoidTerrainProvider.js +182 -0
- data/app/assets/javascripts/Scene/FrameState.js +86 -0
- data/app/assets/javascripts/Scene/FrustumCommands.js +32 -0
- data/app/assets/javascripts/Scene/GeographicTilingScheme.js +265 -0
- data/app/assets/javascripts/Scene/HorizontalOrigin.js +39 -0
- data/app/assets/javascripts/Scene/Imagery.js +85 -0
- data/app/assets/javascripts/Scene/ImageryLayer.js +876 -0
- data/app/assets/javascripts/Scene/ImageryLayerCollection.js +403 -0
- data/app/assets/javascripts/Scene/ImageryProvider.js +185 -0
- data/app/assets/javascripts/Scene/ImageryProviderError.js +149 -0
- data/app/assets/javascripts/Scene/ImageryState.js +20 -0
- data/app/assets/javascripts/Scene/Label.js +706 -0
- data/app/assets/javascripts/Scene/LabelCollection.js +697 -0
- data/app/assets/javascripts/Scene/LabelStyle.js +39 -0
- data/app/assets/javascripts/Scene/Material.js +1177 -0
- data/app/assets/javascripts/Scene/NeverTileDiscardPolicy.js +38 -0
- data/app/assets/javascripts/Scene/OpenStreetMapImageryProvider.js +282 -0
- data/app/assets/javascripts/Scene/OrthographicFrustum.js +345 -0
- data/app/assets/javascripts/Scene/PerformanceDisplay.js +183 -0
- data/app/assets/javascripts/Scene/PerspectiveFrustum.js +239 -0
- data/app/assets/javascripts/Scene/PerspectiveOffCenterFrustum.js +394 -0
- data/app/assets/javascripts/Scene/Polygon.js +886 -0
- data/app/assets/javascripts/Scene/Polyline.js +441 -0
- data/app/assets/javascripts/Scene/PolylineCollection.js +1532 -0
- data/app/assets/javascripts/Scene/Projections.js +93 -0
- data/app/assets/javascripts/Scene/RectangularPyramidSensorVolume.js +224 -0
- data/app/assets/javascripts/Scene/Scene.js +632 -0
- data/app/assets/javascripts/Scene/Scene.profile.js +8 -0
- data/app/assets/javascripts/Scene/SceneMode.js +51 -0
- data/app/assets/javascripts/Scene/SceneTransitioner.js +776 -0
- data/app/assets/javascripts/Scene/ScreenSpaceCameraController.js +1063 -0
- data/app/assets/javascripts/Scene/SensorVolumeCollection.js +192 -0
- data/app/assets/javascripts/Scene/SingleTileImageryProvider.js +295 -0
- data/app/assets/javascripts/Scene/SkyAtmosphere.js +239 -0
- data/app/assets/javascripts/Scene/SkyBox.js +231 -0
- data/app/assets/javascripts/Scene/TerrainProvider.js +229 -0
- data/app/assets/javascripts/Scene/TexturePool.js +154 -0
- data/app/assets/javascripts/Scene/Tile.js +322 -0
- data/app/assets/javascripts/Scene/TileDiscardPolicy.js +42 -0
- data/app/assets/javascripts/Scene/TileImagery.js +36 -0
- data/app/assets/javascripts/Scene/TileLoadQueue.js +123 -0
- data/app/assets/javascripts/Scene/TileMapServiceImageryProvider.js +337 -0
- data/app/assets/javascripts/Scene/TileReplacementQueue.js +139 -0
- data/app/assets/javascripts/Scene/TileState.js +19 -0
- data/app/assets/javascripts/Scene/TilingScheme.js +213 -0
- data/app/assets/javascripts/Scene/VerticalOrigin.js +39 -0
- data/app/assets/javascripts/Scene/ViewportQuad.js +256 -0
- data/app/assets/javascripts/Scene/WebMapServiceImageryProvider.js +374 -0
- data/app/assets/javascripts/Scene/WebMercatorTilingScheme.js +291 -0
- data/app/assets/javascripts/Scene/package.json +6 -0
- data/app/assets/javascripts/Shaders/BillboardCollectionFS.glsl +30 -0
- data/app/assets/javascripts/Shaders/BillboardCollectionFS.js +31 -0
- data/app/assets/javascripts/Shaders/BillboardCollectionVS.glsl +68 -0
- data/app/assets/javascripts/Shaders/BillboardCollectionVS.js +54 -0
- data/app/assets/javascripts/Shaders/BuiltinFunctions.glsl +927 -0
- data/app/assets/javascripts/Shaders/BuiltinFunctions.js +322 -0
- data/app/assets/javascripts/Shaders/CentralBodyFS.glsl +106 -0
- data/app/assets/javascripts/Shaders/CentralBodyFS.js +82 -0
- data/app/assets/javascripts/Shaders/CentralBodyFSDepth.glsl +20 -0
- data/app/assets/javascripts/Shaders/CentralBodyFSDepth.js +22 -0
- data/app/assets/javascripts/Shaders/CentralBodyFSPole.glsl +29 -0
- data/app/assets/javascripts/Shaders/CentralBodyFSPole.js +28 -0
- data/app/assets/javascripts/Shaders/CentralBodyVS.glsl +88 -0
- data/app/assets/javascripts/Shaders/CentralBodyVS.js +69 -0
- data/app/assets/javascripts/Shaders/CentralBodyVSDepth.glsl +9 -0
- data/app/assets/javascripts/Shaders/CentralBodyVSDepth.js +13 -0
- data/app/assets/javascripts/Shaders/CentralBodyVSPole.glsl +12 -0
- data/app/assets/javascripts/Shaders/CentralBodyVSPole.js +15 -0
- data/app/assets/javascripts/Shaders/ComplexConicSensorVolumeFS.glsl +448 -0
- data/app/assets/javascripts/Shaders/ComplexConicSensorVolumeFS.js +361 -0
- data/app/assets/javascripts/Shaders/ComplexConicSensorVolumeVS.glsl +19 -0
- data/app/assets/javascripts/Shaders/ComplexConicSensorVolumeVS.js +20 -0
- data/app/assets/javascripts/Shaders/ConstructiveSolidGeometry.glsl +886 -0
- data/app/assets/javascripts/Shaders/ConstructiveSolidGeometry.js +586 -0
- data/app/assets/javascripts/Shaders/CustomSensorVolumeFS.glsl +126 -0
- data/app/assets/javascripts/Shaders/CustomSensorVolumeFS.js +95 -0
- data/app/assets/javascripts/Shaders/CustomSensorVolumeVS.glsl +14 -0
- data/app/assets/javascripts/Shaders/CustomSensorVolumeVS.js +18 -0
- data/app/assets/javascripts/Shaders/EllipsoidFS.glsl +40 -0
- data/app/assets/javascripts/Shaders/EllipsoidFS.js +38 -0
- data/app/assets/javascripts/Shaders/EllipsoidVS.glsl +26 -0
- data/app/assets/javascripts/Shaders/EllipsoidVS.js +16 -0
- data/app/assets/javascripts/Shaders/Materials/AsphaltMaterial.glsl +25 -0
- data/app/assets/javascripts/Shaders/Materials/AsphaltMaterial.js +23 -0
- data/app/assets/javascripts/Shaders/Materials/BlobMaterial.glsl +18 -0
- data/app/assets/javascripts/Shaders/Materials/BlobMaterial.js +19 -0
- data/app/assets/javascripts/Shaders/Materials/BrickMaterial.glsl +42 -0
- data/app/assets/javascripts/Shaders/Materials/BrickMaterial.js +36 -0
- data/app/assets/javascripts/Shaders/Materials/BumpMapMaterial.glsl +29 -0
- data/app/assets/javascripts/Shaders/Materials/BumpMapMaterial.js +27 -0
- data/app/assets/javascripts/Shaders/Materials/CementMaterial.glsl +19 -0
- data/app/assets/javascripts/Shaders/Materials/CementMaterial.js +20 -0
- data/app/assets/javascripts/Shaders/Materials/CheckerboardMaterial.glsl +38 -0
- data/app/assets/javascripts/Shaders/Materials/CheckerboardMaterial.js +32 -0
- data/app/assets/javascripts/Shaders/Materials/DotMaterial.glsl +17 -0
- data/app/assets/javascripts/Shaders/Materials/DotMaterial.js +18 -0
- data/app/assets/javascripts/Shaders/Materials/ErosionMaterial.glsl +23 -0
- data/app/assets/javascripts/Shaders/Materials/ErosionMaterial.js +24 -0
- data/app/assets/javascripts/Shaders/Materials/FacetMaterial.glsl +18 -0
- data/app/assets/javascripts/Shaders/Materials/FacetMaterial.js +19 -0
- data/app/assets/javascripts/Shaders/Materials/FresnelMaterial.glsl +12 -0
- data/app/assets/javascripts/Shaders/Materials/FresnelMaterial.js +15 -0
- data/app/assets/javascripts/Shaders/Materials/GrassMaterial.glsl +28 -0
- data/app/assets/javascripts/Shaders/Materials/GrassMaterial.js +26 -0
- data/app/assets/javascripts/Shaders/Materials/NormalMapMaterial.glsl +19 -0
- data/app/assets/javascripts/Shaders/Materials/NormalMapMaterial.js +21 -0
- data/app/assets/javascripts/Shaders/Materials/ReflectionMaterial.glsl +13 -0
- data/app/assets/javascripts/Shaders/Materials/ReflectionMaterial.js +16 -0
- data/app/assets/javascripts/Shaders/Materials/RefractionMaterial.glsl +14 -0
- data/app/assets/javascripts/Shaders/Materials/RefractionMaterial.js +17 -0
- data/app/assets/javascripts/Shaders/Materials/RimLightingMaterial.glsl +18 -0
- data/app/assets/javascripts/Shaders/Materials/RimLightingMaterial.js +19 -0
- data/app/assets/javascripts/Shaders/Materials/StripeMaterial.glsl +29 -0
- data/app/assets/javascripts/Shaders/Materials/StripeMaterial.js +26 -0
- data/app/assets/javascripts/Shaders/Materials/TieDyeMaterial.glsl +17 -0
- data/app/assets/javascripts/Shaders/Materials/TieDyeMaterial.js +19 -0
- data/app/assets/javascripts/Shaders/Materials/Water.glsl +91 -0
- data/app/assets/javascripts/Shaders/Materials/Water.js +60 -0
- data/app/assets/javascripts/Shaders/Materials/WoodMaterial.glsl +36 -0
- data/app/assets/javascripts/Shaders/Materials/WoodMaterial.js +31 -0
- data/app/assets/javascripts/Shaders/Noise.glsl +453 -0
- data/app/assets/javascripts/Shaders/Noise.js +242 -0
- data/app/assets/javascripts/Shaders/PolygonFS.glsl +27 -0
- data/app/assets/javascripts/Shaders/PolygonFS.js +23 -0
- data/app/assets/javascripts/Shaders/PolygonFSPick.glsl +6 -0
- data/app/assets/javascripts/Shaders/PolygonFSPick.js +11 -0
- data/app/assets/javascripts/Shaders/PolygonVS.glsl +38 -0
- data/app/assets/javascripts/Shaders/PolygonVS.js +39 -0
- data/app/assets/javascripts/Shaders/PolygonVSPick.glsl +30 -0
- data/app/assets/javascripts/Shaders/PolygonVSPick.js +32 -0
- data/app/assets/javascripts/Shaders/PolylineFS.glsl +6 -0
- data/app/assets/javascripts/Shaders/PolylineFS.js +11 -0
- data/app/assets/javascripts/Shaders/PolylineVS.glsl +34 -0
- data/app/assets/javascripts/Shaders/PolylineVS.js +35 -0
- data/app/assets/javascripts/Shaders/Ray.glsl +532 -0
- data/app/assets/javascripts/Shaders/Ray.js +357 -0
- data/app/assets/javascripts/Shaders/ReprojectWebMercatorFS.glsl +26 -0
- data/app/assets/javascripts/Shaders/ReprojectWebMercatorFS.js +22 -0
- data/app/assets/javascripts/Shaders/ReprojectWebMercatorVS.glsl +11 -0
- data/app/assets/javascripts/Shaders/ReprojectWebMercatorVS.js +14 -0
- data/app/assets/javascripts/Shaders/SensorVolume.glsl +43 -0
- data/app/assets/javascripts/Shaders/SensorVolume.js +31 -0
- data/app/assets/javascripts/Shaders/Shaders.profile.js +8 -0
- data/app/assets/javascripts/Shaders/SkyAtmosphereFS.glsl +70 -0
- data/app/assets/javascripts/Shaders/SkyAtmosphereFS.js +62 -0
- data/app/assets/javascripts/Shaders/SkyAtmosphereVS.glsl +131 -0
- data/app/assets/javascripts/Shaders/SkyAtmosphereVS.js +115 -0
- data/app/assets/javascripts/Shaders/SkyBoxFS.glsl +10 -0
- data/app/assets/javascripts/Shaders/SkyBoxFS.js +14 -0
- data/app/assets/javascripts/Shaders/SkyBoxVS.glsl +10 -0
- data/app/assets/javascripts/Shaders/SkyBoxVS.js +14 -0
- data/app/assets/javascripts/Shaders/ViewportQuadFS.glsl +16 -0
- data/app/assets/javascripts/Shaders/ViewportQuadFS.js +17 -0
- data/app/assets/javascripts/Shaders/ViewportQuadVS.glsl +10 -0
- data/app/assets/javascripts/Shaders/ViewportQuadVS.js +14 -0
- data/app/assets/javascripts/Shaders/package.json +6 -0
- data/app/assets/javascripts/ThirdParty/ThirdParty.profile.js +8 -0
- data/app/assets/javascripts/ThirdParty/Tween.js +678 -0
- data/app/assets/javascripts/ThirdParty/Uri.js +277 -0
- data/app/assets/javascripts/ThirdParty/measureText.js +197 -0
- data/app/assets/javascripts/ThirdParty/package.json +6 -0
- data/app/assets/javascripts/ThirdParty/sprintf.js +319 -0
- data/app/assets/javascripts/ThirdParty/when.js +748 -0
- data/app/assets/javascripts/Widgets/Dojo/CesiumViewerWidget.css +175 -0
- data/app/assets/javascripts/Widgets/Dojo/CesiumViewerWidget.html +52 -0
- data/app/assets/javascripts/Widgets/Dojo/CesiumViewerWidget.js +1237 -0
- data/app/assets/javascripts/Widgets/Dojo/CesiumWidget.html +4 -0
- data/app/assets/javascripts/Widgets/Dojo/CesiumWidget.js +349 -0
- data/app/assets/javascripts/Widgets/Dojo/TimelineWidget.css +1 -0
- data/app/assets/javascripts/Widgets/Dojo/TimelineWidget.js +47 -0
- data/app/assets/javascripts/Widgets/Dojo/checkForChromeFrame.js +71 -0
- data/app/assets/javascripts/Widgets/Images/Bing_Logo_51x19_White.png +0 -0
- data/app/assets/javascripts/Widgets/Images/Cesium_Logo_overlay.png +0 -0
- data/app/assets/javascripts/Widgets/Images/TimelineIcons.png +0 -0
- data/app/assets/javascripts/Widgets/Images/ajax-loader.gif +0 -0
- data/app/assets/javascripts/Widgets/Images/animationBar.png +0 -0
- data/app/assets/javascripts/Widgets/Images/viewControlBar.png +0 -0
- data/app/assets/javascripts/Widgets/Timeline.css +113 -0
- data/app/assets/javascripts/Widgets/Timeline.js +629 -0
- data/app/assets/javascripts/Widgets/TimelineHighlightRange.js +51 -0
- data/app/assets/javascripts/Widgets/TimelineTrack.js +54 -0
- data/app/assets/javascripts/Widgets/Widgets.profile.js +8 -0
- data/app/assets/javascripts/Widgets/package.json +6 -0
- data/app/assets/javascripts/Workers/Workers.profile.js +8 -0
- data/app/assets/javascripts/Workers/cesiumWorkerBootstrapper.js +2015 -0
- data/app/assets/javascripts/Workers/createTaskProcessorWorker.js +55 -0
- data/app/assets/javascripts/Workers/createVerticesFromExtent.js +24 -0
- data/app/assets/javascripts/Workers/package.json +6 -0
- data/app/assets/javascripts/copyrightHeader.js +22 -0
- data/app/assets/javascripts/main.js +10 -0
- data/app/assets/stylesheets/cesium.css +4 -0
- data/app/controllers/cesium_controller.rb +4 -0
- data/app/helpers/cesium_helper.rb +2 -0
- data/app/views/cesium/index.html.erb +3 -0
- data/config/routes.rb +3 -0
- data/lib/cesium.rb +4 -0
- data/lib/cesium/engine.rb +4 -0
- data/lib/cesium/version.rb +3 -0
- data/lib/tasks/cesium_tasks.rake +4 -0
- data/test/cesium_test.rb +7 -0
- data/test/dummy/README.rdoc +261 -0
- data/test/dummy/Rakefile +7 -0
- data/test/dummy/app/assets/javascripts/adapters/jquery-adapter.js.coffee +4 -0
- data/test/dummy/app/assets/javascripts/app.js.coffee +11 -0
- data/test/dummy/app/assets/javascripts/application.js.coffee +73 -0
- data/test/dummy/app/assets/stylesheets/application.css +12 -0
- data/test/dummy/app/controllers/application_controller.rb +4 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/views/layouts/application.html.erb +21 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/config/application.rb +59 -0
- data/test/dummy/config/boot.rb +10 -0
- data/test/dummy/config/database.yml +25 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +37 -0
- data/test/dummy/config/environments/production.rb +67 -0
- data/test/dummy/config/environments/test.rb +37 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/inflections.rb +15 -0
- data/test/dummy/config/initializers/mime_types.rb +5 -0
- data/test/dummy/config/initializers/secret_token.rb +7 -0
- data/test/dummy/config/initializers/session_store.rb +8 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/locales/en.yml +5 -0
- data/test/dummy/config/requirejs.yml +10 -0
- data/test/dummy/config/routes.rb +3 -0
- data/test/dummy/public/404.html +26 -0
- data/test/dummy/public/422.html +26 -0
- data/test/dummy/public/500.html +25 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/dummy/script/rails +6 -0
- data/test/functional/cesium_controller_test.rb +9 -0
- data/test/integration/navigation_test.rb +10 -0
- data/test/test_helper.rb +15 -0
- data/test/unit/helpers/cesium_helper_test.rb +4 -0
- metadata +641 -0
|
@@ -0,0 +1,568 @@
|
|
|
1
|
+
/*global define*/
|
|
2
|
+
define([
|
|
3
|
+
'./defaultValue',
|
|
4
|
+
'./DeveloperError',
|
|
5
|
+
'./Cartesian3',
|
|
6
|
+
'./EncodedCartesian3',
|
|
7
|
+
'./GeographicProjection',
|
|
8
|
+
'./ComponentDatatype',
|
|
9
|
+
'./PrimitiveType',
|
|
10
|
+
'./Tipsify'
|
|
11
|
+
], function(
|
|
12
|
+
defaultValue,
|
|
13
|
+
DeveloperError,
|
|
14
|
+
Cartesian3,
|
|
15
|
+
EncodedCartesian3,
|
|
16
|
+
GeographicProjection,
|
|
17
|
+
ComponentDatatype,
|
|
18
|
+
PrimitiveType,
|
|
19
|
+
Tipsify) {
|
|
20
|
+
"use strict";
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* DOC_TBA
|
|
24
|
+
*
|
|
25
|
+
* @exports MeshFilters
|
|
26
|
+
*
|
|
27
|
+
* @see Context#createVertexArrayFromMesh
|
|
28
|
+
*/
|
|
29
|
+
var MeshFilters = {};
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Converts a mesh's triangle indices to line indices. Each list of indices in the mesh's <code>indexList</code> with
|
|
33
|
+
* a primitive type of <code>triangles</code>, <code>triangleStrip</code>, or <code>trangleFan</code> is converted to a
|
|
34
|
+
* list of indices with a primitive type of <code>lines</code>. Lists of indices with other primitive types remain unchanged.
|
|
35
|
+
* <br /><br />
|
|
36
|
+
* The <code>mesh</code> argument should use the standard layout like the mesh returned by {@link BoxTessellator}.
|
|
37
|
+
* <br /><br />
|
|
38
|
+
* This filter is commonly used to create a wireframe mesh for visual debugging.
|
|
39
|
+
*
|
|
40
|
+
* @param {Object} mesh The mesh to filter, which is modified in place.
|
|
41
|
+
*
|
|
42
|
+
* @returns The modified <code>mesh</code> argument, with its triangle indices converted to lines.
|
|
43
|
+
*
|
|
44
|
+
* @see BoxTessellator
|
|
45
|
+
*
|
|
46
|
+
* @example
|
|
47
|
+
* var mesh = BoxTessellator.compute();
|
|
48
|
+
* mesh = MeshFilters.toWireframeInPlace(mesh);
|
|
49
|
+
*/
|
|
50
|
+
MeshFilters.toWireframeInPlace = function(mesh) {
|
|
51
|
+
function addTriangle(lines, i0, i1, i2) {
|
|
52
|
+
lines.push(i0);
|
|
53
|
+
lines.push(i1);
|
|
54
|
+
|
|
55
|
+
lines.push(i1);
|
|
56
|
+
lines.push(i2);
|
|
57
|
+
|
|
58
|
+
lines.push(i2);
|
|
59
|
+
lines.push(i0);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
function trianglesToLines(triangles) {
|
|
63
|
+
var lines = [];
|
|
64
|
+
var count = triangles.length;
|
|
65
|
+
for ( var i = 0; i < count; i += 3) {
|
|
66
|
+
addTriangle(lines, triangles[i], triangles[i + 1], triangles[i + 2]);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
return lines;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
function triangleStripToLines(triangles) {
|
|
73
|
+
var lines = [];
|
|
74
|
+
var count = triangles.length;
|
|
75
|
+
|
|
76
|
+
if (count >= 3) {
|
|
77
|
+
addTriangle(lines, triangles[0], triangles[1], triangles[2]);
|
|
78
|
+
|
|
79
|
+
for ( var i = 3; i < count; ++i) {
|
|
80
|
+
addTriangle(lines, triangles[i - 1], triangles[i], triangles[i - 2]);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
return lines;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
function triangleFanToLines(triangles) {
|
|
88
|
+
var lines = [];
|
|
89
|
+
|
|
90
|
+
if (triangles.length > 0) {
|
|
91
|
+
var base = triangles[0];
|
|
92
|
+
var count = triangles.length - 1;
|
|
93
|
+
for ( var i = 1; i < count; ++i) {
|
|
94
|
+
addTriangle(lines, base, triangles[i], triangles[i + 1]);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
return lines;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
if (mesh) {
|
|
102
|
+
var indexLists = mesh.indexLists;
|
|
103
|
+
if (indexLists) {
|
|
104
|
+
var count = indexLists.length;
|
|
105
|
+
for ( var i = 0; i < count; ++i) {
|
|
106
|
+
var indices = indexLists[i];
|
|
107
|
+
|
|
108
|
+
switch (indices.primitiveType) {
|
|
109
|
+
case PrimitiveType.TRIANGLES:
|
|
110
|
+
indices.primitiveType = PrimitiveType.LINES;
|
|
111
|
+
indices.values = trianglesToLines(indices.values);
|
|
112
|
+
break;
|
|
113
|
+
case PrimitiveType.TRIANGLE_STRIP:
|
|
114
|
+
indices.primitiveType = PrimitiveType.LINES;
|
|
115
|
+
indices.values = triangleStripToLines(indices.values);
|
|
116
|
+
break;
|
|
117
|
+
case PrimitiveType.TRIANGLE_FAN:
|
|
118
|
+
indices.primitiveType = PrimitiveType.LINES;
|
|
119
|
+
indices.values = triangleFanToLines(indices.values);
|
|
120
|
+
break;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
return mesh;
|
|
127
|
+
};
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* DOC_TBA
|
|
131
|
+
*/
|
|
132
|
+
MeshFilters.createAttributeIndices = function(mesh) {
|
|
133
|
+
var indices = {};
|
|
134
|
+
|
|
135
|
+
if (mesh) {
|
|
136
|
+
var attributes = mesh.attributes;
|
|
137
|
+
var j = 0;
|
|
138
|
+
|
|
139
|
+
for ( var name in attributes) {
|
|
140
|
+
if (attributes.hasOwnProperty(name)) {
|
|
141
|
+
indices[name] = j++;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
return indices;
|
|
147
|
+
};
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* DOC_TBA
|
|
151
|
+
*/
|
|
152
|
+
MeshFilters.mapAttributeIndices = function(indices, map) {
|
|
153
|
+
var mappedIndices = {};
|
|
154
|
+
|
|
155
|
+
if (indices && map) {
|
|
156
|
+
for ( var name in map) {
|
|
157
|
+
if (map.hasOwnProperty(name)) {
|
|
158
|
+
mappedIndices[map[name]] = indices[name];
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
return mappedIndices;
|
|
164
|
+
};
|
|
165
|
+
|
|
166
|
+
MeshFilters._computeNumberOfAttributes = function(mesh) {
|
|
167
|
+
var numberOfVertices = -1;
|
|
168
|
+
for ( var property in mesh.attributes) {
|
|
169
|
+
if (mesh.attributes.hasOwnProperty(property) && mesh.attributes[property].values) {
|
|
170
|
+
var attribute = mesh.attributes[property];
|
|
171
|
+
var num = attribute.values.length / attribute.componentsPerAttribute;
|
|
172
|
+
if ((numberOfVertices !== num) && (numberOfVertices !== -1)) {
|
|
173
|
+
throw new DeveloperError('All mesh attribute lists must have the same number of attributes.');
|
|
174
|
+
}
|
|
175
|
+
numberOfVertices = num;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
return numberOfVertices;
|
|
180
|
+
};
|
|
181
|
+
|
|
182
|
+
/**
|
|
183
|
+
* Reorders a mesh's indices to achieve better performance from the GPU's pre-vertex-shader cache.
|
|
184
|
+
* Each list of indices in the mesh's <code>indexList</code> is reordered to keep the same index-vertex correspondence.
|
|
185
|
+
* <br /><br />
|
|
186
|
+
* The <code>mesh</code> argument should use the standard layout like the mesh returned by {@link BoxTessellator}.
|
|
187
|
+
* <br /><br />
|
|
188
|
+
|
|
189
|
+
* @param {Object} mesh The mesh to filter, which is modified in place.
|
|
190
|
+
*
|
|
191
|
+
* @exception {DeveloperError} All mesh attribute lists must have the same number of attributes.
|
|
192
|
+
*
|
|
193
|
+
* @returns The modified <code>mesh</code> argument, with its vertices and indices reordered for the GPU's pre-vertex-shader cache.
|
|
194
|
+
*
|
|
195
|
+
* @see MeshFilters.reorderForPostVertexCache
|
|
196
|
+
*
|
|
197
|
+
* @example
|
|
198
|
+
* var mesh = CubeMapEllipsoidTessellator.compute(...);
|
|
199
|
+
* mesh = MeshFilters.reorderForPreVertexCache(mesh);
|
|
200
|
+
*/
|
|
201
|
+
MeshFilters.reorderForPreVertexCache = function(mesh) {
|
|
202
|
+
if (mesh) {
|
|
203
|
+
var numVertices = MeshFilters._computeNumberOfAttributes(mesh);
|
|
204
|
+
|
|
205
|
+
var indexCrossReferenceOldToNew = [];
|
|
206
|
+
for ( var i = 0; i < numVertices; i++) {
|
|
207
|
+
indexCrossReferenceOldToNew[i] = -1;
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
//Construct cross reference and reorder indices
|
|
211
|
+
var indexLists = mesh.indexLists;
|
|
212
|
+
if (indexLists) {
|
|
213
|
+
var count = indexLists.length;
|
|
214
|
+
for ( var j = 0; j < count; ++j) {
|
|
215
|
+
var indicesIn = indexLists[j].values;
|
|
216
|
+
var numIndices = indicesIn.length;
|
|
217
|
+
var indicesOut = [];
|
|
218
|
+
var intoIndicesIn = 0;
|
|
219
|
+
var intoIndicesOut = 0;
|
|
220
|
+
var nextIndex = 0;
|
|
221
|
+
var tempIndex;
|
|
222
|
+
while (intoIndicesIn < numIndices) {
|
|
223
|
+
tempIndex = indexCrossReferenceOldToNew[indicesIn[intoIndicesIn]];
|
|
224
|
+
if (tempIndex !== -1) {
|
|
225
|
+
indicesOut[intoIndicesOut] = tempIndex;
|
|
226
|
+
} else {
|
|
227
|
+
tempIndex = indicesIn[intoIndicesIn];
|
|
228
|
+
if (tempIndex >= numVertices) {
|
|
229
|
+
throw new DeveloperError('Input indices contains a value greater than or equal to the number of vertices');
|
|
230
|
+
}
|
|
231
|
+
indexCrossReferenceOldToNew[tempIndex] = nextIndex;
|
|
232
|
+
|
|
233
|
+
indicesOut[intoIndicesOut] = nextIndex;
|
|
234
|
+
++nextIndex;
|
|
235
|
+
}
|
|
236
|
+
++intoIndicesIn;
|
|
237
|
+
++intoIndicesOut;
|
|
238
|
+
}
|
|
239
|
+
indexLists[j].values = indicesOut;
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
//Reorder Vertices
|
|
244
|
+
var attributes = mesh.attributes;
|
|
245
|
+
if (attributes) {
|
|
246
|
+
for ( var property in attributes) {
|
|
247
|
+
if (attributes.hasOwnProperty(property) && attributes[property].values) {
|
|
248
|
+
var elementsIn = attributes[property].values;
|
|
249
|
+
var intoElementsIn = 0;
|
|
250
|
+
var numComponents = attributes[property].componentsPerAttribute;
|
|
251
|
+
var elementsOut = [];
|
|
252
|
+
while (intoElementsIn < numVertices) {
|
|
253
|
+
var temp = indexCrossReferenceOldToNew[intoElementsIn];
|
|
254
|
+
for (i = 0; i < numComponents; i++) {
|
|
255
|
+
elementsOut[numComponents * temp + i] = elementsIn[numComponents * intoElementsIn + i];
|
|
256
|
+
}
|
|
257
|
+
++intoElementsIn;
|
|
258
|
+
}
|
|
259
|
+
attributes[property].values = elementsOut;
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
return mesh;
|
|
265
|
+
};
|
|
266
|
+
|
|
267
|
+
/**
|
|
268
|
+
* Reorders a mesh's indices to achieve better performance from the GPU's post vertex-shader cache by using the Tipsify algorithm.
|
|
269
|
+
* Each list of indices in the mesh's <code>indexList</code> is optimally reordered.
|
|
270
|
+
* <br /><br />
|
|
271
|
+
* The <code>mesh</code> argument should use the standard layout like the mesh returned by {@link BoxTessellator}.
|
|
272
|
+
* <br /><br />
|
|
273
|
+
|
|
274
|
+
* @param {Object} mesh The mesh to filter, which is modified in place.
|
|
275
|
+
* @param {Number} [cacheCapacity=24] The number of vertices that can be held in the GPU's vertex cache.
|
|
276
|
+
*
|
|
277
|
+
* @exception {DeveloperError} Mesh's index list must be defined.
|
|
278
|
+
* @exception {DeveloperError} Mesh's index lists' lengths must each be a multiple of three.
|
|
279
|
+
* @exception {DeveloperError} Mesh's index list's maximum index value must be greater than zero.
|
|
280
|
+
* @exception {DeveloperError} cacheCapacity must be greater than two.
|
|
281
|
+
*
|
|
282
|
+
* @returns The modified <code>mesh</code> argument, with its indices optimally reordered for the post-vertex-shader cache.
|
|
283
|
+
*
|
|
284
|
+
* @see MeshFilters.reorderForPreVertexCache
|
|
285
|
+
* @see Tipsify
|
|
286
|
+
* @see <a href='http://gfx.cs.princeton.edu/pubs/Sander_2007_%3ETR/tipsy.pdf'>
|
|
287
|
+
* Fast Triangle Reordering for Vertex Locality and Reduced Overdraw</a>
|
|
288
|
+
* by Sander, Nehab, and Barczak
|
|
289
|
+
*
|
|
290
|
+
* @example
|
|
291
|
+
* var mesh = CubeMapEllipsoidTessellator.compute(...);
|
|
292
|
+
* mesh = MeshFilters.reorderForPostVertexCache(mesh);
|
|
293
|
+
*/
|
|
294
|
+
MeshFilters.reorderForPostVertexCache = function(mesh, cacheCapacity) {
|
|
295
|
+
if (mesh) {
|
|
296
|
+
var indexLists = mesh.indexLists;
|
|
297
|
+
if (indexLists) {
|
|
298
|
+
var count = indexLists.length;
|
|
299
|
+
for ( var i = 0; i < count; i++) {
|
|
300
|
+
var indices = indexLists[i].values;
|
|
301
|
+
var numIndices = indices.length;
|
|
302
|
+
var maximumIndex = 0;
|
|
303
|
+
for ( var j = 0; j < numIndices; j++) {
|
|
304
|
+
if (indices[j] > maximumIndex) {
|
|
305
|
+
maximumIndex = indices[j];
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
indexLists[i].values = Tipsify.tipsify({indices : indices,
|
|
309
|
+
maximumIndex : maximumIndex,
|
|
310
|
+
cacheSize : cacheCapacity});
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
return mesh;
|
|
315
|
+
};
|
|
316
|
+
|
|
317
|
+
MeshFilters._verifyTrianglesPrimitiveType = function(indexLists) {
|
|
318
|
+
var length = indexLists.length;
|
|
319
|
+
for ( var i = 0; i < length; ++i) {
|
|
320
|
+
if (indexLists[i].primitiveType !== PrimitiveType.TRIANGLES) {
|
|
321
|
+
throw new DeveloperError('indexLists must have PrimitiveType equal to PrimitiveType.TRIANGLES.');
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
};
|
|
325
|
+
|
|
326
|
+
MeshFilters._copyAttributesDescriptions = function(attributes) {
|
|
327
|
+
var newAttributes = {};
|
|
328
|
+
|
|
329
|
+
for ( var attribute in attributes) {
|
|
330
|
+
if (attributes.hasOwnProperty(attribute) && attributes[attribute].values) {
|
|
331
|
+
var attr = attributes[attribute];
|
|
332
|
+
newAttributes[attribute] = {
|
|
333
|
+
componentDatatype : attr.componentDatatype,
|
|
334
|
+
componentsPerAttribute : attr.componentsPerAttribute,
|
|
335
|
+
values : []
|
|
336
|
+
};
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
return newAttributes;
|
|
341
|
+
};
|
|
342
|
+
|
|
343
|
+
function copyVertex(destinationAttributes, sourceAttributes, index) {
|
|
344
|
+
for ( var attribute in sourceAttributes) {
|
|
345
|
+
if (sourceAttributes.hasOwnProperty(attribute) && sourceAttributes[attribute].values) {
|
|
346
|
+
var attr = sourceAttributes[attribute];
|
|
347
|
+
|
|
348
|
+
for ( var k = 0; k < attr.componentsPerAttribute; ++k) {
|
|
349
|
+
destinationAttributes[attribute].values.push(attr.values[(index * attr.componentsPerAttribute) + k]);
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
/**
|
|
356
|
+
* DOC_TBA. Old mesh is not guaranteed to be copied.
|
|
357
|
+
*
|
|
358
|
+
* @exception {DeveloperError} The mesh's index-lists must have PrimitiveType equal to PrimitiveType.TRIANGLES.
|
|
359
|
+
* @exception {DeveloperError} All mesh attribute lists must have the same number of attributes.
|
|
360
|
+
*/
|
|
361
|
+
MeshFilters.fitToUnsignedShortIndices = function(mesh) {
|
|
362
|
+
function createMesh(attributes, primitiveType, indices) {
|
|
363
|
+
return {
|
|
364
|
+
attributes : attributes,
|
|
365
|
+
indexLists : [{
|
|
366
|
+
primitiveType : primitiveType,
|
|
367
|
+
values : indices
|
|
368
|
+
}]
|
|
369
|
+
};
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
var meshes = [];
|
|
373
|
+
|
|
374
|
+
if (mesh) {
|
|
375
|
+
MeshFilters._verifyTrianglesPrimitiveType(mesh.indexLists);
|
|
376
|
+
|
|
377
|
+
var numberOfVertices = MeshFilters._computeNumberOfAttributes(mesh);
|
|
378
|
+
|
|
379
|
+
// If there's an index list and more than 64K attributes, it is possible that
|
|
380
|
+
// some indices are outside the range of unsigned short [0, 64K - 1]
|
|
381
|
+
var sixtyFourK = 64 * 1024;
|
|
382
|
+
var indexLists = mesh.indexLists;
|
|
383
|
+
if (indexLists && (numberOfVertices > sixtyFourK)) {
|
|
384
|
+
// PERFORMANCE_IDEA: If an input mesh has more than one index-list. This creates
|
|
385
|
+
// at least one vertex-array per index-list. A more sophisticated implementation
|
|
386
|
+
// may create less vertex-arrays.
|
|
387
|
+
var length = indexLists.length;
|
|
388
|
+
for ( var i = 0; i < length; ++i) {
|
|
389
|
+
var oldToNewIndex = [];
|
|
390
|
+
var newIndices = [];
|
|
391
|
+
var currentIndex = 0;
|
|
392
|
+
var newAttributes = MeshFilters._copyAttributesDescriptions(mesh.attributes);
|
|
393
|
+
|
|
394
|
+
var originalIndices = indexLists[i].values;
|
|
395
|
+
var numberOfIndices = originalIndices.length;
|
|
396
|
+
|
|
397
|
+
for ( var j = 0; j < numberOfIndices; j += 3) {
|
|
398
|
+
// It would be easy to extend this inter-loop to support all primitive-types.
|
|
399
|
+
|
|
400
|
+
var x0 = originalIndices[j];
|
|
401
|
+
var x1 = originalIndices[j + 1];
|
|
402
|
+
var x2 = originalIndices[j + 2];
|
|
403
|
+
|
|
404
|
+
var i0 = oldToNewIndex[x0];
|
|
405
|
+
if (typeof i0 === 'undefined') {
|
|
406
|
+
i0 = currentIndex++;
|
|
407
|
+
oldToNewIndex[x0] = i0;
|
|
408
|
+
|
|
409
|
+
copyVertex(newAttributes, mesh.attributes, x0);
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
var i1 = oldToNewIndex[x1];
|
|
413
|
+
if (typeof i1 === 'undefined') {
|
|
414
|
+
i1 = currentIndex++;
|
|
415
|
+
oldToNewIndex[x1] = i1;
|
|
416
|
+
|
|
417
|
+
copyVertex(newAttributes, mesh.attributes, x1);
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
var i2 = oldToNewIndex[x2];
|
|
421
|
+
if (typeof i2 === 'undefined') {
|
|
422
|
+
i2 = currentIndex++;
|
|
423
|
+
oldToNewIndex[x2] = i2;
|
|
424
|
+
|
|
425
|
+
copyVertex(newAttributes, mesh.attributes, x2);
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
newIndices.push(i0);
|
|
429
|
+
newIndices.push(i1);
|
|
430
|
+
newIndices.push(i2);
|
|
431
|
+
|
|
432
|
+
if (currentIndex + 3 > sixtyFourK) {
|
|
433
|
+
meshes.push(createMesh(newAttributes, indexLists[i].primitiveType, newIndices));
|
|
434
|
+
|
|
435
|
+
// Reset for next vertex-array
|
|
436
|
+
oldToNewIndex = [];
|
|
437
|
+
newIndices = [];
|
|
438
|
+
currentIndex = 0;
|
|
439
|
+
newAttributes = MeshFilters._copyAttributesDescriptions(mesh.attributes);
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
|
|
443
|
+
if (newIndices.length !== 0) {
|
|
444
|
+
meshes.push(createMesh(newAttributes, indexLists[i].primitiveType, newIndices));
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
} else {
|
|
448
|
+
// No need to split into multiple meshes
|
|
449
|
+
meshes.push(mesh);
|
|
450
|
+
}
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
return meshes;
|
|
454
|
+
};
|
|
455
|
+
|
|
456
|
+
/**
|
|
457
|
+
* DOC_TBA
|
|
458
|
+
*/
|
|
459
|
+
MeshFilters.projectTo2D = function(mesh, projection) {
|
|
460
|
+
if (mesh && mesh.attributes && mesh.attributes.position) {
|
|
461
|
+
projection = projection || new GeographicProjection();
|
|
462
|
+
var ellipsoid = projection.getEllipsoid();
|
|
463
|
+
|
|
464
|
+
// Project original positions to 2D.
|
|
465
|
+
var wgs84Positions = mesh.attributes.position.values;
|
|
466
|
+
var projectedPositions = [];
|
|
467
|
+
|
|
468
|
+
for ( var i = 0; i < wgs84Positions.length; i += 3) {
|
|
469
|
+
var lonLat = ellipsoid.cartesianToCartographic(new Cartesian3(wgs84Positions[i], wgs84Positions[i + 1], wgs84Positions[i + 2]));
|
|
470
|
+
var projectedLonLat = projection.project(lonLat);
|
|
471
|
+
projectedPositions.push(projectedLonLat.x, projectedLonLat.y);
|
|
472
|
+
}
|
|
473
|
+
|
|
474
|
+
// Rename original positions to WGS84 Positions.
|
|
475
|
+
mesh.attributes.position3D = mesh.attributes.position;
|
|
476
|
+
|
|
477
|
+
// Replace original positions with 2D projected positions
|
|
478
|
+
mesh.attributes.position2D = {
|
|
479
|
+
componentDatatype : ComponentDatatype.FLOAT,
|
|
480
|
+
componentsPerAttribute : 2,
|
|
481
|
+
values : projectedPositions
|
|
482
|
+
};
|
|
483
|
+
delete mesh.attributes.position;
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
return mesh;
|
|
487
|
+
};
|
|
488
|
+
|
|
489
|
+
var encodedResult = {
|
|
490
|
+
high : 0.0,
|
|
491
|
+
low : 0.0
|
|
492
|
+
};
|
|
493
|
+
|
|
494
|
+
/**
|
|
495
|
+
* Encodes floating-point mesh attribute values as two separate attributes to improve
|
|
496
|
+
* rendering precision using the same encoding as {@link EncodedCartesian3}.
|
|
497
|
+
* <p>
|
|
498
|
+
* This is commonly used to create high-precision position vertex attributes.
|
|
499
|
+
* </p>
|
|
500
|
+
*
|
|
501
|
+
* @param {Object} mesh The mesh to filter, which is modified in place.
|
|
502
|
+
* @param {String} [attributeName='position'] The name of the attribute.
|
|
503
|
+
* @param {String} [attributeHighName='positionHigh'] The name of the attribute for the encoded high bits.
|
|
504
|
+
* @param {String} [attributeLowName='positionLow'] The name of the attribute for the encoded low bits.
|
|
505
|
+
*
|
|
506
|
+
* @returns The modified <code>mesh</code> argument, with its encoded attribute.
|
|
507
|
+
*
|
|
508
|
+
* @exception {DeveloperError} mesh is required.
|
|
509
|
+
* @exception {DeveloperError} mesh must have an attributes property.
|
|
510
|
+
* @exception {DeveloperError} mesh must have attribute matching the attributeName argument.
|
|
511
|
+
* @exception {DeveloperError} The attribute componentDatatype must be ComponentDatatype.FLOAT.
|
|
512
|
+
*
|
|
513
|
+
* @example
|
|
514
|
+
* mesh = MeshFilters.encodeAttribute(mesh, 'position3D', 'position3DHigh', 'position3DLow');
|
|
515
|
+
*
|
|
516
|
+
* @see EncodedCartesian3
|
|
517
|
+
*/
|
|
518
|
+
MeshFilters.encodeAttribute = function(mesh, attributeName, attributeHighName, attributeLowName) {
|
|
519
|
+
attributeName = defaultValue(attributeName, 'position');
|
|
520
|
+
attributeHighName = defaultValue(attributeHighName, 'positionHigh');
|
|
521
|
+
attributeLowName = defaultValue(attributeLowName, 'positionLow');
|
|
522
|
+
|
|
523
|
+
if (typeof mesh === 'undefined') {
|
|
524
|
+
throw new DeveloperError('mesh is required.');
|
|
525
|
+
}
|
|
526
|
+
|
|
527
|
+
if (typeof mesh.attributes === 'undefined') {
|
|
528
|
+
throw new DeveloperError('mesh must have an attributes property.');
|
|
529
|
+
}
|
|
530
|
+
|
|
531
|
+
var attribute = mesh.attributes[attributeName];
|
|
532
|
+
|
|
533
|
+
if (typeof attribute === 'undefined') {
|
|
534
|
+
throw new DeveloperError('mesh must have attribute matching the attributeName argument: ' + attributeName + '.');
|
|
535
|
+
}
|
|
536
|
+
|
|
537
|
+
if (attribute.componentDatatype !== ComponentDatatype.FLOAT) {
|
|
538
|
+
throw new DeveloperError('The attribute componentDatatype must be ComponentDatatype.FLOAT.');
|
|
539
|
+
}
|
|
540
|
+
|
|
541
|
+
var values = attribute.values;
|
|
542
|
+
var length = values.length;
|
|
543
|
+
var highValues = new Array(length);
|
|
544
|
+
var lowValues = new Array(length);
|
|
545
|
+
|
|
546
|
+
for (var i = 0; i < length; ++i) {
|
|
547
|
+
EncodedCartesian3.encode(values[i], encodedResult);
|
|
548
|
+
highValues[i] = encodedResult.high;
|
|
549
|
+
lowValues[i] = encodedResult.low;
|
|
550
|
+
}
|
|
551
|
+
|
|
552
|
+
mesh.attributes[attributeHighName] = {
|
|
553
|
+
componentDatatype : attribute.componentDatatype,
|
|
554
|
+
componentsPerAttribute : attribute.componentsPerAttribute,
|
|
555
|
+
values : highValues
|
|
556
|
+
};
|
|
557
|
+
mesh.attributes[attributeLowName] = {
|
|
558
|
+
componentDatatype : attribute.componentDatatype,
|
|
559
|
+
componentsPerAttribute : attribute.componentsPerAttribute,
|
|
560
|
+
values : lowValues
|
|
561
|
+
};
|
|
562
|
+
delete mesh.attributes[attributeName];
|
|
563
|
+
|
|
564
|
+
return mesh;
|
|
565
|
+
};
|
|
566
|
+
|
|
567
|
+
return MeshFilters;
|
|
568
|
+
});
|