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.
Files changed (491) hide show
  1. data/LICENSE.md +259 -0
  2. data/README.rdoc +90 -0
  3. data/Rakefile +40 -0
  4. data/app/assets/javascripts/Assets/Assets.profile.js +8 -0
  5. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_0.json +1 -0
  6. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_1.json +1 -0
  7. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_10.json +1 -0
  8. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_11.json +1 -0
  9. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_12.json +1 -0
  10. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_13.json +1 -0
  11. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_14.json +1 -0
  12. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_15.json +1 -0
  13. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_16.json +1 -0
  14. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_17.json +1 -0
  15. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_18.json +1 -0
  16. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_19.json +1 -0
  17. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_2.json +1 -0
  18. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_20.json +1 -0
  19. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_21.json +1 -0
  20. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_22.json +1 -0
  21. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_23.json +1 -0
  22. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_24.json +1 -0
  23. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_25.json +1 -0
  24. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_26.json +1 -0
  25. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_27.json +1 -0
  26. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_3.json +1 -0
  27. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_4.json +1 -0
  28. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_5.json +1 -0
  29. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_6.json +1 -0
  30. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_7.json +1 -0
  31. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_8.json +1 -0
  32. data/app/assets/javascripts/Assets/IAU2006_XYS/IAU2006_XYS_9.json +1 -0
  33. data/app/assets/javascripts/Assets/Textures/NE2_LR_LC_SR_W_DR_2048.jpg +0 -0
  34. data/app/assets/javascripts/Assets/Textures/SkyBox/tycho2t3_80_mx.jpg +0 -0
  35. data/app/assets/javascripts/Assets/Textures/SkyBox/tycho2t3_80_my.jpg +0 -0
  36. data/app/assets/javascripts/Assets/Textures/SkyBox/tycho2t3_80_mz.jpg +0 -0
  37. data/app/assets/javascripts/Assets/Textures/SkyBox/tycho2t3_80_px.jpg +0 -0
  38. data/app/assets/javascripts/Assets/Textures/SkyBox/tycho2t3_80_py.jpg +0 -0
  39. data/app/assets/javascripts/Assets/Textures/SkyBox/tycho2t3_80_pz.jpg +0 -0
  40. data/app/assets/javascripts/Assets/Textures/waterNormals.jpg +0 -0
  41. data/app/assets/javascripts/Assets/package.json +6 -0
  42. data/app/assets/javascripts/Cesium.js +320 -0
  43. data/app/assets/javascripts/Core/AnimationController.js +148 -0
  44. data/app/assets/javascripts/Core/AxisAlignedBoundingBox.js +243 -0
  45. data/app/assets/javascripts/Core/BoundingRectangle.js +364 -0
  46. data/app/assets/javascripts/Core/BoundingSphere.js +819 -0
  47. data/app/assets/javascripts/Core/BoxTessellator.js +93 -0
  48. data/app/assets/javascripts/Core/Cartesian2.js +762 -0
  49. data/app/assets/javascripts/Core/Cartesian3.js +861 -0
  50. data/app/assets/javascripts/Core/Cartesian4.js +762 -0
  51. data/app/assets/javascripts/Core/Cartographic.js +211 -0
  52. data/app/assets/javascripts/Core/CatmullRomSpline.js +232 -0
  53. data/app/assets/javascripts/Core/Clock.js +195 -0
  54. data/app/assets/javascripts/Core/ClockRange.js +37 -0
  55. data/app/assets/javascripts/Core/ClockStep.js +32 -0
  56. data/app/assets/javascripts/Core/Color.js +1629 -0
  57. data/app/assets/javascripts/Core/ComponentDatatype.js +119 -0
  58. data/app/assets/javascripts/Core/Core.profile.js +8 -0
  59. data/app/assets/javascripts/Core/CubeMapEllipsoidTessellator.js +198 -0
  60. data/app/assets/javascripts/Core/CubicRealPolynomial.js +251 -0
  61. data/app/assets/javascripts/Core/DefaultProxy.js +30 -0
  62. data/app/assets/javascripts/Core/DeveloperError.js +60 -0
  63. data/app/assets/javascripts/Core/EarthOrientationParameters.js +383 -0
  64. data/app/assets/javascripts/Core/EarthOrientationParametersSample.js +50 -0
  65. data/app/assets/javascripts/Core/Ellipsoid.js +539 -0
  66. data/app/assets/javascripts/Core/EllipsoidTangentPlane.js +207 -0
  67. data/app/assets/javascripts/Core/EllipsoidalOccluder.js +151 -0
  68. data/app/assets/javascripts/Core/EncodedCartesian3.js +197 -0
  69. data/app/assets/javascripts/Core/Enumeration.js +67 -0
  70. data/app/assets/javascripts/Core/Event.js +122 -0
  71. data/app/assets/javascripts/Core/Extent.js +383 -0
  72. data/app/assets/javascripts/Core/ExtentTessellator.js +384 -0
  73. data/app/assets/javascripts/Core/FAR.js +13 -0
  74. data/app/assets/javascripts/Core/FeatureDetection.js +126 -0
  75. data/app/assets/javascripts/Core/Fullscreen.js +235 -0
  76. data/app/assets/javascripts/Core/GeographicProjection.js +107 -0
  77. data/app/assets/javascripts/Core/HermitePolynomialApproximation.js +176 -0
  78. data/app/assets/javascripts/Core/HermiteSpline.js +234 -0
  79. data/app/assets/javascripts/Core/Iau2006XysData.js +259 -0
  80. data/app/assets/javascripts/Core/Iau2006XysSample.js +36 -0
  81. data/app/assets/javascripts/Core/IndexDatatype.js +28 -0
  82. data/app/assets/javascripts/Core/Intersect.js +40 -0
  83. data/app/assets/javascripts/Core/IntersectionTests.js +359 -0
  84. data/app/assets/javascripts/Core/Interval.js +27 -0
  85. data/app/assets/javascripts/Core/Iso8601.js +46 -0
  86. data/app/assets/javascripts/Core/JulianDate.js +1228 -0
  87. data/app/assets/javascripts/Core/KeyboardEventModifier.js +38 -0
  88. data/app/assets/javascripts/Core/LagrangePolynomialApproximation.js +96 -0
  89. data/app/assets/javascripts/Core/LeapSecond.js +158 -0
  90. data/app/assets/javascripts/Core/LinearApproximation.js +98 -0
  91. data/app/assets/javascripts/Core/Math.js +532 -0
  92. data/app/assets/javascripts/Core/Matrix2.js +833 -0
  93. data/app/assets/javascripts/Core/Matrix3.js +1099 -0
  94. data/app/assets/javascripts/Core/Matrix4.js +2164 -0
  95. data/app/assets/javascripts/Core/MeshFilters.js +568 -0
  96. data/app/assets/javascripts/Core/Occluder.js +474 -0
  97. data/app/assets/javascripts/Core/OrientationInterpolator.js +109 -0
  98. data/app/assets/javascripts/Core/PlaneTessellator.js +74 -0
  99. data/app/assets/javascripts/Core/PolygonPipeline.js +792 -0
  100. data/app/assets/javascripts/Core/PolylinePipeline.js +90 -0
  101. data/app/assets/javascripts/Core/PrimitiveType.js +80 -0
  102. data/app/assets/javascripts/Core/QuadraticRealPolynomial.js +146 -0
  103. data/app/assets/javascripts/Core/QuarticRealPolynomial.js +339 -0
  104. data/app/assets/javascripts/Core/Quaternion.js +947 -0
  105. data/app/assets/javascripts/Core/Queue.js +95 -0
  106. data/app/assets/javascripts/Core/Ray.js +64 -0
  107. data/app/assets/javascripts/Core/ReferenceFrame.js +25 -0
  108. data/app/assets/javascripts/Core/RequestErrorEvent.js +35 -0
  109. data/app/assets/javascripts/Core/RuntimeError.js +59 -0
  110. data/app/assets/javascripts/Core/ScreenSpaceEventHandler.js +658 -0
  111. data/app/assets/javascripts/Core/ScreenSpaceEventType.js +149 -0
  112. data/app/assets/javascripts/Core/Shapes.js +230 -0
  113. data/app/assets/javascripts/Core/Spherical.js +192 -0
  114. data/app/assets/javascripts/Core/TaskProcessor.js +131 -0
  115. data/app/assets/javascripts/Core/TimeConstants.js +85 -0
  116. data/app/assets/javascripts/Core/TimeInterval.js +305 -0
  117. data/app/assets/javascripts/Core/TimeIntervalCollection.js +543 -0
  118. data/app/assets/javascripts/Core/TimeStandard.js +31 -0
  119. data/app/assets/javascripts/Core/Tipsify.js +285 -0
  120. data/app/assets/javascripts/Core/Transforms.js +614 -0
  121. data/app/assets/javascripts/Core/TridiagonalSystemSolver.js +102 -0
  122. data/app/assets/javascripts/Core/Visibility.js +38 -0
  123. data/app/assets/javascripts/Core/WebMercatorProjection.js +154 -0
  124. data/app/assets/javascripts/Core/WindingOrder.js +40 -0
  125. data/app/assets/javascripts/Core/binarySearch.js +69 -0
  126. data/app/assets/javascripts/Core/buildModuleUrl.js +77 -0
  127. data/app/assets/javascripts/Core/clone.js +21 -0
  128. data/app/assets/javascripts/Core/combine.js +81 -0
  129. data/app/assets/javascripts/Core/computeSunPosition.js +116 -0
  130. data/app/assets/javascripts/Core/createGuid.js +25 -0
  131. data/app/assets/javascripts/Core/defaultValue.js +22 -0
  132. data/app/assets/javascripts/Core/destroyObject.js +61 -0
  133. data/app/assets/javascripts/Core/freezeObject.js +20 -0
  134. data/app/assets/javascripts/Core/getImagePixels.js +46 -0
  135. data/app/assets/javascripts/Core/isLeapYear.js +30 -0
  136. data/app/assets/javascripts/Core/jsonp.js +116 -0
  137. data/app/assets/javascripts/Core/loadArrayBuffer.js +76 -0
  138. data/app/assets/javascripts/Core/loadImage.js +85 -0
  139. data/app/assets/javascripts/Core/loadJson.js +54 -0
  140. data/app/assets/javascripts/Core/loadText.js +78 -0
  141. data/app/assets/javascripts/Core/loadXML.js +76 -0
  142. data/app/assets/javascripts/Core/package.json +6 -0
  143. data/app/assets/javascripts/Core/pointInsideTriangle2D.js +41 -0
  144. data/app/assets/javascripts/Core/requestAnimationFrame.js +61 -0
  145. data/app/assets/javascripts/Core/throttleRequestByServer.js +74 -0
  146. data/app/assets/javascripts/Core/writeTextToCanvas.js +92 -0
  147. data/app/assets/javascripts/DynamicScene/CompositeDynamicObjectCollection.js +254 -0
  148. data/app/assets/javascripts/DynamicScene/CzmlBoolean.js +57 -0
  149. data/app/assets/javascripts/DynamicScene/CzmlCartesian2.js +96 -0
  150. data/app/assets/javascripts/DynamicScene/CzmlCartesian3.js +99 -0
  151. data/app/assets/javascripts/DynamicScene/CzmlCartographic.js +125 -0
  152. data/app/assets/javascripts/DynamicScene/CzmlColor.js +127 -0
  153. data/app/assets/javascripts/DynamicScene/CzmlDefaults.js +135 -0
  154. data/app/assets/javascripts/DynamicScene/CzmlHorizontalOrigin.js +59 -0
  155. data/app/assets/javascripts/DynamicScene/CzmlImage.js +61 -0
  156. data/app/assets/javascripts/DynamicScene/CzmlLabelStyle.js +59 -0
  157. data/app/assets/javascripts/DynamicScene/CzmlNumber.js +82 -0
  158. data/app/assets/javascripts/DynamicScene/CzmlString.js +56 -0
  159. data/app/assets/javascripts/DynamicScene/CzmlUnitCartesian3.js +99 -0
  160. data/app/assets/javascripts/DynamicScene/CzmlUnitQuaternion.js +172 -0
  161. data/app/assets/javascripts/DynamicScene/CzmlUnitSpherical.js +98 -0
  162. data/app/assets/javascripts/DynamicScene/CzmlVerticalOrigin.js +59 -0
  163. data/app/assets/javascripts/DynamicScene/DynamicBillboard.js +245 -0
  164. data/app/assets/javascripts/DynamicScene/DynamicBillboardVisualizer.js +347 -0
  165. data/app/assets/javascripts/DynamicScene/DynamicColorMaterial.js +78 -0
  166. data/app/assets/javascripts/DynamicScene/DynamicCone.js +291 -0
  167. data/app/assets/javascripts/DynamicScene/DynamicConeVisualizer.js +350 -0
  168. data/app/assets/javascripts/DynamicScene/DynamicConeVisualizerUsingCustomSensor.js +389 -0
  169. data/app/assets/javascripts/DynamicScene/DynamicDirectionsProperty.js +163 -0
  170. data/app/assets/javascripts/DynamicScene/DynamicEllipsoid.js +158 -0
  171. data/app/assets/javascripts/DynamicScene/DynamicEllipsoidVisualizer.js +277 -0
  172. data/app/assets/javascripts/DynamicScene/DynamicImageMaterial.js +136 -0
  173. data/app/assets/javascripts/DynamicScene/DynamicLabel.js +286 -0
  174. data/app/assets/javascripts/DynamicScene/DynamicLabelVisualizer.js +341 -0
  175. data/app/assets/javascripts/DynamicScene/DynamicMaterialProperty.js +125 -0
  176. data/app/assets/javascripts/DynamicScene/DynamicObject.js +364 -0
  177. data/app/assets/javascripts/DynamicScene/DynamicObjectCollection.js +137 -0
  178. data/app/assets/javascripts/DynamicScene/DynamicObjectView.js +299 -0
  179. data/app/assets/javascripts/DynamicScene/DynamicPath.js +214 -0
  180. data/app/assets/javascripts/DynamicScene/DynamicPathVisualizer.js +402 -0
  181. data/app/assets/javascripts/DynamicScene/DynamicPoint.js +184 -0
  182. data/app/assets/javascripts/DynamicScene/DynamicPointVisualizer.js +323 -0
  183. data/app/assets/javascripts/DynamicScene/DynamicPolygon.js +138 -0
  184. data/app/assets/javascripts/DynamicScene/DynamicPolygonVisualizer.js +251 -0
  185. data/app/assets/javascripts/DynamicScene/DynamicPolyline.js +183 -0
  186. data/app/assets/javascripts/DynamicScene/DynamicPolylineVisualizer.js +268 -0
  187. data/app/assets/javascripts/DynamicScene/DynamicPositionProperty.js +525 -0
  188. data/app/assets/javascripts/DynamicScene/DynamicProperty.js +352 -0
  189. data/app/assets/javascripts/DynamicScene/DynamicPyramid.js +204 -0
  190. data/app/assets/javascripts/DynamicScene/DynamicPyramidVisualizer.js +302 -0
  191. data/app/assets/javascripts/DynamicScene/DynamicScene.profile.js +8 -0
  192. data/app/assets/javascripts/DynamicScene/DynamicVertexPositionsProperty.js +199 -0
  193. data/app/assets/javascripts/DynamicScene/ReferenceProperty.js +155 -0
  194. data/app/assets/javascripts/DynamicScene/VisualizerCollection.js +181 -0
  195. data/app/assets/javascripts/DynamicScene/package.json +6 -0
  196. data/app/assets/javascripts/DynamicScene/processCzml.js +77 -0
  197. data/app/assets/javascripts/Renderer/BlendEquation.js +52 -0
  198. data/app/assets/javascripts/Renderer/BlendFunction.js +158 -0
  199. data/app/assets/javascripts/Renderer/BlendingState.js +64 -0
  200. data/app/assets/javascripts/Renderer/Buffer.js +141 -0
  201. data/app/assets/javascripts/Renderer/BufferUsage.js +48 -0
  202. data/app/assets/javascripts/Renderer/ClearCommand.js +40 -0
  203. data/app/assets/javascripts/Renderer/CommandLists.js +42 -0
  204. data/app/assets/javascripts/Renderer/Context.js +2805 -0
  205. data/app/assets/javascripts/Renderer/CubeMap.js +358 -0
  206. data/app/assets/javascripts/Renderer/CubeMapFace.js +202 -0
  207. data/app/assets/javascripts/Renderer/CullFace.js +50 -0
  208. data/app/assets/javascripts/Renderer/DepthFunction.js +95 -0
  209. data/app/assets/javascripts/Renderer/DrawCommand.js +96 -0
  210. data/app/assets/javascripts/Renderer/Framebuffer.js +435 -0
  211. data/app/assets/javascripts/Renderer/MipmapHint.js +50 -0
  212. data/app/assets/javascripts/Renderer/PickFramebuffer.js +178 -0
  213. data/app/assets/javascripts/Renderer/PixelDatatype.js +86 -0
  214. data/app/assets/javascripts/Renderer/PixelFormat.js +113 -0
  215. data/app/assets/javascripts/Renderer/Renderbuffer.js +102 -0
  216. data/app/assets/javascripts/Renderer/RenderbufferFormat.js +77 -0
  217. data/app/assets/javascripts/Renderer/Renderer.profile.js +8 -0
  218. data/app/assets/javascripts/Renderer/ShaderCache.js +121 -0
  219. data/app/assets/javascripts/Renderer/ShaderProgram.js +2402 -0
  220. data/app/assets/javascripts/Renderer/StencilFunction.js +95 -0
  221. data/app/assets/javascripts/Renderer/StencilOperation.js +95 -0
  222. data/app/assets/javascripts/Renderer/Texture.js +395 -0
  223. data/app/assets/javascripts/Renderer/TextureAtlas.js +472 -0
  224. data/app/assets/javascripts/Renderer/TextureAtlasBuilder.js +133 -0
  225. data/app/assets/javascripts/Renderer/TextureMagnificationFilter.js +41 -0
  226. data/app/assets/javascripts/Renderer/TextureMinificationFilter.js +77 -0
  227. data/app/assets/javascripts/Renderer/TextureWrap.js +50 -0
  228. data/app/assets/javascripts/Renderer/UniformDatatype.js +218 -0
  229. data/app/assets/javascripts/Renderer/UniformState.js +799 -0
  230. data/app/assets/javascripts/Renderer/VertexArray.js +365 -0
  231. data/app/assets/javascripts/Renderer/VertexArrayFacade.js +574 -0
  232. data/app/assets/javascripts/Renderer/VertexLayout.js +49 -0
  233. data/app/assets/javascripts/Renderer/loadCubeMap.js +92 -0
  234. data/app/assets/javascripts/Renderer/package.json +6 -0
  235. data/app/assets/javascripts/Scene/AnimationCollection.js +249 -0
  236. data/app/assets/javascripts/Scene/ArcGisMapServerImageryProvider.js +384 -0
  237. data/app/assets/javascripts/Scene/Billboard.js +680 -0
  238. data/app/assets/javascripts/Scene/BillboardCollection.js +1209 -0
  239. data/app/assets/javascripts/Scene/BingMapsImageryProvider.js +460 -0
  240. data/app/assets/javascripts/Scene/BingMapsStyle.js +55 -0
  241. data/app/assets/javascripts/Scene/Camera.js +358 -0
  242. data/app/assets/javascripts/Scene/CameraColumbusViewMode.js +30 -0
  243. data/app/assets/javascripts/Scene/CameraController.js +1258 -0
  244. data/app/assets/javascripts/Scene/CameraEventAggregator.js +270 -0
  245. data/app/assets/javascripts/Scene/CameraEventType.js +53 -0
  246. data/app/assets/javascripts/Scene/CameraFlightPath.js +495 -0
  247. data/app/assets/javascripts/Scene/CentralBody.js +817 -0
  248. data/app/assets/javascripts/Scene/CentralBodySurface.js +1120 -0
  249. data/app/assets/javascripts/Scene/CentralBodySurfaceShaderSet.js +107 -0
  250. data/app/assets/javascripts/Scene/ComplexConicSensorVolume.js +511 -0
  251. data/app/assets/javascripts/Scene/CompositePrimitive.js +454 -0
  252. data/app/assets/javascripts/Scene/CullingVolume.js +59 -0
  253. data/app/assets/javascripts/Scene/CustomSensorVolume.js +440 -0
  254. data/app/assets/javascripts/Scene/DiscardMissingTileImagePolicy.js +134 -0
  255. data/app/assets/javascripts/Scene/EllipsoidPrimitive.js +412 -0
  256. data/app/assets/javascripts/Scene/EllipsoidTerrainProvider.js +182 -0
  257. data/app/assets/javascripts/Scene/FrameState.js +86 -0
  258. data/app/assets/javascripts/Scene/FrustumCommands.js +32 -0
  259. data/app/assets/javascripts/Scene/GeographicTilingScheme.js +265 -0
  260. data/app/assets/javascripts/Scene/HorizontalOrigin.js +39 -0
  261. data/app/assets/javascripts/Scene/Imagery.js +85 -0
  262. data/app/assets/javascripts/Scene/ImageryLayer.js +876 -0
  263. data/app/assets/javascripts/Scene/ImageryLayerCollection.js +403 -0
  264. data/app/assets/javascripts/Scene/ImageryProvider.js +185 -0
  265. data/app/assets/javascripts/Scene/ImageryProviderError.js +149 -0
  266. data/app/assets/javascripts/Scene/ImageryState.js +20 -0
  267. data/app/assets/javascripts/Scene/Label.js +706 -0
  268. data/app/assets/javascripts/Scene/LabelCollection.js +697 -0
  269. data/app/assets/javascripts/Scene/LabelStyle.js +39 -0
  270. data/app/assets/javascripts/Scene/Material.js +1177 -0
  271. data/app/assets/javascripts/Scene/NeverTileDiscardPolicy.js +38 -0
  272. data/app/assets/javascripts/Scene/OpenStreetMapImageryProvider.js +282 -0
  273. data/app/assets/javascripts/Scene/OrthographicFrustum.js +345 -0
  274. data/app/assets/javascripts/Scene/PerformanceDisplay.js +183 -0
  275. data/app/assets/javascripts/Scene/PerspectiveFrustum.js +239 -0
  276. data/app/assets/javascripts/Scene/PerspectiveOffCenterFrustum.js +394 -0
  277. data/app/assets/javascripts/Scene/Polygon.js +886 -0
  278. data/app/assets/javascripts/Scene/Polyline.js +441 -0
  279. data/app/assets/javascripts/Scene/PolylineCollection.js +1532 -0
  280. data/app/assets/javascripts/Scene/Projections.js +93 -0
  281. data/app/assets/javascripts/Scene/RectangularPyramidSensorVolume.js +224 -0
  282. data/app/assets/javascripts/Scene/Scene.js +632 -0
  283. data/app/assets/javascripts/Scene/Scene.profile.js +8 -0
  284. data/app/assets/javascripts/Scene/SceneMode.js +51 -0
  285. data/app/assets/javascripts/Scene/SceneTransitioner.js +776 -0
  286. data/app/assets/javascripts/Scene/ScreenSpaceCameraController.js +1063 -0
  287. data/app/assets/javascripts/Scene/SensorVolumeCollection.js +192 -0
  288. data/app/assets/javascripts/Scene/SingleTileImageryProvider.js +295 -0
  289. data/app/assets/javascripts/Scene/SkyAtmosphere.js +239 -0
  290. data/app/assets/javascripts/Scene/SkyBox.js +231 -0
  291. data/app/assets/javascripts/Scene/TerrainProvider.js +229 -0
  292. data/app/assets/javascripts/Scene/TexturePool.js +154 -0
  293. data/app/assets/javascripts/Scene/Tile.js +322 -0
  294. data/app/assets/javascripts/Scene/TileDiscardPolicy.js +42 -0
  295. data/app/assets/javascripts/Scene/TileImagery.js +36 -0
  296. data/app/assets/javascripts/Scene/TileLoadQueue.js +123 -0
  297. data/app/assets/javascripts/Scene/TileMapServiceImageryProvider.js +337 -0
  298. data/app/assets/javascripts/Scene/TileReplacementQueue.js +139 -0
  299. data/app/assets/javascripts/Scene/TileState.js +19 -0
  300. data/app/assets/javascripts/Scene/TilingScheme.js +213 -0
  301. data/app/assets/javascripts/Scene/VerticalOrigin.js +39 -0
  302. data/app/assets/javascripts/Scene/ViewportQuad.js +256 -0
  303. data/app/assets/javascripts/Scene/WebMapServiceImageryProvider.js +374 -0
  304. data/app/assets/javascripts/Scene/WebMercatorTilingScheme.js +291 -0
  305. data/app/assets/javascripts/Scene/package.json +6 -0
  306. data/app/assets/javascripts/Shaders/BillboardCollectionFS.glsl +30 -0
  307. data/app/assets/javascripts/Shaders/BillboardCollectionFS.js +31 -0
  308. data/app/assets/javascripts/Shaders/BillboardCollectionVS.glsl +68 -0
  309. data/app/assets/javascripts/Shaders/BillboardCollectionVS.js +54 -0
  310. data/app/assets/javascripts/Shaders/BuiltinFunctions.glsl +927 -0
  311. data/app/assets/javascripts/Shaders/BuiltinFunctions.js +322 -0
  312. data/app/assets/javascripts/Shaders/CentralBodyFS.glsl +106 -0
  313. data/app/assets/javascripts/Shaders/CentralBodyFS.js +82 -0
  314. data/app/assets/javascripts/Shaders/CentralBodyFSDepth.glsl +20 -0
  315. data/app/assets/javascripts/Shaders/CentralBodyFSDepth.js +22 -0
  316. data/app/assets/javascripts/Shaders/CentralBodyFSPole.glsl +29 -0
  317. data/app/assets/javascripts/Shaders/CentralBodyFSPole.js +28 -0
  318. data/app/assets/javascripts/Shaders/CentralBodyVS.glsl +88 -0
  319. data/app/assets/javascripts/Shaders/CentralBodyVS.js +69 -0
  320. data/app/assets/javascripts/Shaders/CentralBodyVSDepth.glsl +9 -0
  321. data/app/assets/javascripts/Shaders/CentralBodyVSDepth.js +13 -0
  322. data/app/assets/javascripts/Shaders/CentralBodyVSPole.glsl +12 -0
  323. data/app/assets/javascripts/Shaders/CentralBodyVSPole.js +15 -0
  324. data/app/assets/javascripts/Shaders/ComplexConicSensorVolumeFS.glsl +448 -0
  325. data/app/assets/javascripts/Shaders/ComplexConicSensorVolumeFS.js +361 -0
  326. data/app/assets/javascripts/Shaders/ComplexConicSensorVolumeVS.glsl +19 -0
  327. data/app/assets/javascripts/Shaders/ComplexConicSensorVolumeVS.js +20 -0
  328. data/app/assets/javascripts/Shaders/ConstructiveSolidGeometry.glsl +886 -0
  329. data/app/assets/javascripts/Shaders/ConstructiveSolidGeometry.js +586 -0
  330. data/app/assets/javascripts/Shaders/CustomSensorVolumeFS.glsl +126 -0
  331. data/app/assets/javascripts/Shaders/CustomSensorVolumeFS.js +95 -0
  332. data/app/assets/javascripts/Shaders/CustomSensorVolumeVS.glsl +14 -0
  333. data/app/assets/javascripts/Shaders/CustomSensorVolumeVS.js +18 -0
  334. data/app/assets/javascripts/Shaders/EllipsoidFS.glsl +40 -0
  335. data/app/assets/javascripts/Shaders/EllipsoidFS.js +38 -0
  336. data/app/assets/javascripts/Shaders/EllipsoidVS.glsl +26 -0
  337. data/app/assets/javascripts/Shaders/EllipsoidVS.js +16 -0
  338. data/app/assets/javascripts/Shaders/Materials/AsphaltMaterial.glsl +25 -0
  339. data/app/assets/javascripts/Shaders/Materials/AsphaltMaterial.js +23 -0
  340. data/app/assets/javascripts/Shaders/Materials/BlobMaterial.glsl +18 -0
  341. data/app/assets/javascripts/Shaders/Materials/BlobMaterial.js +19 -0
  342. data/app/assets/javascripts/Shaders/Materials/BrickMaterial.glsl +42 -0
  343. data/app/assets/javascripts/Shaders/Materials/BrickMaterial.js +36 -0
  344. data/app/assets/javascripts/Shaders/Materials/BumpMapMaterial.glsl +29 -0
  345. data/app/assets/javascripts/Shaders/Materials/BumpMapMaterial.js +27 -0
  346. data/app/assets/javascripts/Shaders/Materials/CementMaterial.glsl +19 -0
  347. data/app/assets/javascripts/Shaders/Materials/CementMaterial.js +20 -0
  348. data/app/assets/javascripts/Shaders/Materials/CheckerboardMaterial.glsl +38 -0
  349. data/app/assets/javascripts/Shaders/Materials/CheckerboardMaterial.js +32 -0
  350. data/app/assets/javascripts/Shaders/Materials/DotMaterial.glsl +17 -0
  351. data/app/assets/javascripts/Shaders/Materials/DotMaterial.js +18 -0
  352. data/app/assets/javascripts/Shaders/Materials/ErosionMaterial.glsl +23 -0
  353. data/app/assets/javascripts/Shaders/Materials/ErosionMaterial.js +24 -0
  354. data/app/assets/javascripts/Shaders/Materials/FacetMaterial.glsl +18 -0
  355. data/app/assets/javascripts/Shaders/Materials/FacetMaterial.js +19 -0
  356. data/app/assets/javascripts/Shaders/Materials/FresnelMaterial.glsl +12 -0
  357. data/app/assets/javascripts/Shaders/Materials/FresnelMaterial.js +15 -0
  358. data/app/assets/javascripts/Shaders/Materials/GrassMaterial.glsl +28 -0
  359. data/app/assets/javascripts/Shaders/Materials/GrassMaterial.js +26 -0
  360. data/app/assets/javascripts/Shaders/Materials/NormalMapMaterial.glsl +19 -0
  361. data/app/assets/javascripts/Shaders/Materials/NormalMapMaterial.js +21 -0
  362. data/app/assets/javascripts/Shaders/Materials/ReflectionMaterial.glsl +13 -0
  363. data/app/assets/javascripts/Shaders/Materials/ReflectionMaterial.js +16 -0
  364. data/app/assets/javascripts/Shaders/Materials/RefractionMaterial.glsl +14 -0
  365. data/app/assets/javascripts/Shaders/Materials/RefractionMaterial.js +17 -0
  366. data/app/assets/javascripts/Shaders/Materials/RimLightingMaterial.glsl +18 -0
  367. data/app/assets/javascripts/Shaders/Materials/RimLightingMaterial.js +19 -0
  368. data/app/assets/javascripts/Shaders/Materials/StripeMaterial.glsl +29 -0
  369. data/app/assets/javascripts/Shaders/Materials/StripeMaterial.js +26 -0
  370. data/app/assets/javascripts/Shaders/Materials/TieDyeMaterial.glsl +17 -0
  371. data/app/assets/javascripts/Shaders/Materials/TieDyeMaterial.js +19 -0
  372. data/app/assets/javascripts/Shaders/Materials/Water.glsl +91 -0
  373. data/app/assets/javascripts/Shaders/Materials/Water.js +60 -0
  374. data/app/assets/javascripts/Shaders/Materials/WoodMaterial.glsl +36 -0
  375. data/app/assets/javascripts/Shaders/Materials/WoodMaterial.js +31 -0
  376. data/app/assets/javascripts/Shaders/Noise.glsl +453 -0
  377. data/app/assets/javascripts/Shaders/Noise.js +242 -0
  378. data/app/assets/javascripts/Shaders/PolygonFS.glsl +27 -0
  379. data/app/assets/javascripts/Shaders/PolygonFS.js +23 -0
  380. data/app/assets/javascripts/Shaders/PolygonFSPick.glsl +6 -0
  381. data/app/assets/javascripts/Shaders/PolygonFSPick.js +11 -0
  382. data/app/assets/javascripts/Shaders/PolygonVS.glsl +38 -0
  383. data/app/assets/javascripts/Shaders/PolygonVS.js +39 -0
  384. data/app/assets/javascripts/Shaders/PolygonVSPick.glsl +30 -0
  385. data/app/assets/javascripts/Shaders/PolygonVSPick.js +32 -0
  386. data/app/assets/javascripts/Shaders/PolylineFS.glsl +6 -0
  387. data/app/assets/javascripts/Shaders/PolylineFS.js +11 -0
  388. data/app/assets/javascripts/Shaders/PolylineVS.glsl +34 -0
  389. data/app/assets/javascripts/Shaders/PolylineVS.js +35 -0
  390. data/app/assets/javascripts/Shaders/Ray.glsl +532 -0
  391. data/app/assets/javascripts/Shaders/Ray.js +357 -0
  392. data/app/assets/javascripts/Shaders/ReprojectWebMercatorFS.glsl +26 -0
  393. data/app/assets/javascripts/Shaders/ReprojectWebMercatorFS.js +22 -0
  394. data/app/assets/javascripts/Shaders/ReprojectWebMercatorVS.glsl +11 -0
  395. data/app/assets/javascripts/Shaders/ReprojectWebMercatorVS.js +14 -0
  396. data/app/assets/javascripts/Shaders/SensorVolume.glsl +43 -0
  397. data/app/assets/javascripts/Shaders/SensorVolume.js +31 -0
  398. data/app/assets/javascripts/Shaders/Shaders.profile.js +8 -0
  399. data/app/assets/javascripts/Shaders/SkyAtmosphereFS.glsl +70 -0
  400. data/app/assets/javascripts/Shaders/SkyAtmosphereFS.js +62 -0
  401. data/app/assets/javascripts/Shaders/SkyAtmosphereVS.glsl +131 -0
  402. data/app/assets/javascripts/Shaders/SkyAtmosphereVS.js +115 -0
  403. data/app/assets/javascripts/Shaders/SkyBoxFS.glsl +10 -0
  404. data/app/assets/javascripts/Shaders/SkyBoxFS.js +14 -0
  405. data/app/assets/javascripts/Shaders/SkyBoxVS.glsl +10 -0
  406. data/app/assets/javascripts/Shaders/SkyBoxVS.js +14 -0
  407. data/app/assets/javascripts/Shaders/ViewportQuadFS.glsl +16 -0
  408. data/app/assets/javascripts/Shaders/ViewportQuadFS.js +17 -0
  409. data/app/assets/javascripts/Shaders/ViewportQuadVS.glsl +10 -0
  410. data/app/assets/javascripts/Shaders/ViewportQuadVS.js +14 -0
  411. data/app/assets/javascripts/Shaders/package.json +6 -0
  412. data/app/assets/javascripts/ThirdParty/ThirdParty.profile.js +8 -0
  413. data/app/assets/javascripts/ThirdParty/Tween.js +678 -0
  414. data/app/assets/javascripts/ThirdParty/Uri.js +277 -0
  415. data/app/assets/javascripts/ThirdParty/measureText.js +197 -0
  416. data/app/assets/javascripts/ThirdParty/package.json +6 -0
  417. data/app/assets/javascripts/ThirdParty/sprintf.js +319 -0
  418. data/app/assets/javascripts/ThirdParty/when.js +748 -0
  419. data/app/assets/javascripts/Widgets/Dojo/CesiumViewerWidget.css +175 -0
  420. data/app/assets/javascripts/Widgets/Dojo/CesiumViewerWidget.html +52 -0
  421. data/app/assets/javascripts/Widgets/Dojo/CesiumViewerWidget.js +1237 -0
  422. data/app/assets/javascripts/Widgets/Dojo/CesiumWidget.html +4 -0
  423. data/app/assets/javascripts/Widgets/Dojo/CesiumWidget.js +349 -0
  424. data/app/assets/javascripts/Widgets/Dojo/TimelineWidget.css +1 -0
  425. data/app/assets/javascripts/Widgets/Dojo/TimelineWidget.js +47 -0
  426. data/app/assets/javascripts/Widgets/Dojo/checkForChromeFrame.js +71 -0
  427. data/app/assets/javascripts/Widgets/Images/Bing_Logo_51x19_White.png +0 -0
  428. data/app/assets/javascripts/Widgets/Images/Cesium_Logo_overlay.png +0 -0
  429. data/app/assets/javascripts/Widgets/Images/TimelineIcons.png +0 -0
  430. data/app/assets/javascripts/Widgets/Images/ajax-loader.gif +0 -0
  431. data/app/assets/javascripts/Widgets/Images/animationBar.png +0 -0
  432. data/app/assets/javascripts/Widgets/Images/viewControlBar.png +0 -0
  433. data/app/assets/javascripts/Widgets/Timeline.css +113 -0
  434. data/app/assets/javascripts/Widgets/Timeline.js +629 -0
  435. data/app/assets/javascripts/Widgets/TimelineHighlightRange.js +51 -0
  436. data/app/assets/javascripts/Widgets/TimelineTrack.js +54 -0
  437. data/app/assets/javascripts/Widgets/Widgets.profile.js +8 -0
  438. data/app/assets/javascripts/Widgets/package.json +6 -0
  439. data/app/assets/javascripts/Workers/Workers.profile.js +8 -0
  440. data/app/assets/javascripts/Workers/cesiumWorkerBootstrapper.js +2015 -0
  441. data/app/assets/javascripts/Workers/createTaskProcessorWorker.js +55 -0
  442. data/app/assets/javascripts/Workers/createVerticesFromExtent.js +24 -0
  443. data/app/assets/javascripts/Workers/package.json +6 -0
  444. data/app/assets/javascripts/copyrightHeader.js +22 -0
  445. data/app/assets/javascripts/main.js +10 -0
  446. data/app/assets/stylesheets/cesium.css +4 -0
  447. data/app/controllers/cesium_controller.rb +4 -0
  448. data/app/helpers/cesium_helper.rb +2 -0
  449. data/app/views/cesium/index.html.erb +3 -0
  450. data/config/routes.rb +3 -0
  451. data/lib/cesium.rb +4 -0
  452. data/lib/cesium/engine.rb +4 -0
  453. data/lib/cesium/version.rb +3 -0
  454. data/lib/tasks/cesium_tasks.rake +4 -0
  455. data/test/cesium_test.rb +7 -0
  456. data/test/dummy/README.rdoc +261 -0
  457. data/test/dummy/Rakefile +7 -0
  458. data/test/dummy/app/assets/javascripts/adapters/jquery-adapter.js.coffee +4 -0
  459. data/test/dummy/app/assets/javascripts/app.js.coffee +11 -0
  460. data/test/dummy/app/assets/javascripts/application.js.coffee +73 -0
  461. data/test/dummy/app/assets/stylesheets/application.css +12 -0
  462. data/test/dummy/app/controllers/application_controller.rb +4 -0
  463. data/test/dummy/app/helpers/application_helper.rb +2 -0
  464. data/test/dummy/app/views/layouts/application.html.erb +21 -0
  465. data/test/dummy/config.ru +4 -0
  466. data/test/dummy/config/application.rb +59 -0
  467. data/test/dummy/config/boot.rb +10 -0
  468. data/test/dummy/config/database.yml +25 -0
  469. data/test/dummy/config/environment.rb +5 -0
  470. data/test/dummy/config/environments/development.rb +37 -0
  471. data/test/dummy/config/environments/production.rb +67 -0
  472. data/test/dummy/config/environments/test.rb +37 -0
  473. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  474. data/test/dummy/config/initializers/inflections.rb +15 -0
  475. data/test/dummy/config/initializers/mime_types.rb +5 -0
  476. data/test/dummy/config/initializers/secret_token.rb +7 -0
  477. data/test/dummy/config/initializers/session_store.rb +8 -0
  478. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  479. data/test/dummy/config/locales/en.yml +5 -0
  480. data/test/dummy/config/requirejs.yml +10 -0
  481. data/test/dummy/config/routes.rb +3 -0
  482. data/test/dummy/public/404.html +26 -0
  483. data/test/dummy/public/422.html +26 -0
  484. data/test/dummy/public/500.html +25 -0
  485. data/test/dummy/public/favicon.ico +0 -0
  486. data/test/dummy/script/rails +6 -0
  487. data/test/functional/cesium_controller_test.rb +9 -0
  488. data/test/integration/navigation_test.rb +10 -0
  489. data/test/test_helper.rb +15 -0
  490. data/test/unit/helpers/cesium_helper_test.rb +4 -0
  491. metadata +641 -0
@@ -0,0 +1,50 @@
1
+ /*global define*/
2
+ define(['../Core/Enumeration'], function(Enumeration) {
3
+ "use strict";
4
+
5
+ /**
6
+ * DOC_TBA
7
+ *
8
+ * @exports CullFace
9
+ */
10
+ var CullFace = {
11
+ /**
12
+ * DOC_TBA
13
+ *
14
+ * @constant
15
+ * @type {Enumeration}
16
+ */
17
+ FRONT : new Enumeration(0x0404, 'FRONT'),
18
+
19
+ /**
20
+ * DOC_TBA
21
+ *
22
+ * @constant
23
+ * @type {Enumeration}
24
+ */
25
+ BACK : new Enumeration(0x0405, 'BACK'),
26
+
27
+ /**
28
+ * DOC_TBA
29
+ *
30
+ * @constant
31
+ * @type {Enumeration}
32
+ */
33
+ FRONT_AND_BACK : new Enumeration(0x0408, 'FRONT_AND_BACK'),
34
+
35
+ /**
36
+ * DOC_TBA
37
+ *
38
+ * @param cullFace
39
+ *
40
+ * @returns {Boolean}
41
+ */
42
+ validate : function(cullFace) {
43
+ return ((cullFace === CullFace.FRONT) ||
44
+ (cullFace === CullFace.BACK) ||
45
+ (cullFace === CullFace.FRONT_AND_BACK));
46
+ }
47
+ };
48
+
49
+ return CullFace;
50
+ });
@@ -0,0 +1,95 @@
1
+ /*global define*/
2
+ define(['../Core/Enumeration'], function(Enumeration) {
3
+ "use strict";
4
+
5
+ /**
6
+ * DOC_TBA
7
+ *
8
+ * @exports DepthFunction
9
+ */
10
+ var DepthFunction = {
11
+ /**
12
+ * DOC_TBA
13
+ *
14
+ * @constant
15
+ * @type {Enumeration}
16
+ */
17
+ NEVER : new Enumeration(0x0200, 'NEVER'),
18
+
19
+ /**
20
+ * DOC_TBA
21
+ *
22
+ * @constant
23
+ * @type {Enumeration}
24
+ */
25
+ LESS : new Enumeration(0x0201, 'LESS'),
26
+
27
+ /**
28
+ * DOC_TBA
29
+ *
30
+ * @constant
31
+ * @type {Enumeration}
32
+ */
33
+ EQUAL : new Enumeration(0x0202, 'EQUAL'),
34
+
35
+ /**
36
+ * DOC_TBA
37
+ *
38
+ * @constant
39
+ * @type {Enumeration}
40
+ */
41
+ LESS_OR_EQUAL : new Enumeration(0x0203, 'LEQUAL'),
42
+
43
+ /**
44
+ * DOC_TBA
45
+ *
46
+ * @constant
47
+ * @type {Enumeration}
48
+ */
49
+ GREATER : new Enumeration(0x0204, 'GREATER'),
50
+
51
+ /**
52
+ * DOC_TBA
53
+ *
54
+ * @constant
55
+ * @type {Enumeration}
56
+ */
57
+ NOT_EQUAL : new Enumeration(0x0205, 'NOTEQUAL'),
58
+
59
+ /**
60
+ * DOC_TBA
61
+ *
62
+ * @constant
63
+ * @type {Enumeration}
64
+ */
65
+ GREATER_OR_EQUAL : new Enumeration(0x0206, 'GEQUAL'),
66
+
67
+ /**
68
+ * DOC_TBA
69
+ *
70
+ * @constant
71
+ * @type {Enumeration}
72
+ */
73
+ ALWAYS : new Enumeration(0x0207, 'ALWAYS'),
74
+
75
+ /**
76
+ * DOC_TBA
77
+ *
78
+ * @param depthFunction
79
+ *
80
+ * @returns {Boolean}
81
+ */
82
+ validate : function(depthFunction) {
83
+ return ((depthFunction === DepthFunction.NEVER) ||
84
+ (depthFunction === DepthFunction.LESS) ||
85
+ (depthFunction === DepthFunction.EQUAL) ||
86
+ (depthFunction === DepthFunction.LESS_OR_EQUAL) ||
87
+ (depthFunction === DepthFunction.GREATER) ||
88
+ (depthFunction === DepthFunction.NOT_EQUAL) ||
89
+ (depthFunction === DepthFunction.GREATER_OR_EQUAL) ||
90
+ (depthFunction === DepthFunction.ALWAYS));
91
+ }
92
+ };
93
+
94
+ return DepthFunction;
95
+ });
@@ -0,0 +1,96 @@
1
+ /*global define*/
2
+ define(['../Core/DeveloperError'], function(DeveloperError) {
3
+ "use strict";
4
+
5
+ /**
6
+ * Represents a command to the renderer for drawing.
7
+ *
8
+ * @alias Command
9
+ * @constructor
10
+ */
11
+ var DrawCommand = function() {
12
+ /**
13
+ * The bounding volume of the geometry.
14
+ * @type DOC_TBA
15
+ */
16
+ this.boundingVolume = undefined;
17
+
18
+ /**
19
+ * The transformation from the geometry in model space to world space.
20
+ * @type Matrix4
21
+ */
22
+ this.modelMatrix = undefined;
23
+
24
+ /**
25
+ * The type of geometry in the vertex array.
26
+ * @type PrimitiveType
27
+ */
28
+ this.primitiveType = undefined;
29
+
30
+ /**
31
+ * The vertex array.
32
+ * @type VertexArray
33
+ */
34
+ this.vertexArray = undefined;
35
+
36
+ /**
37
+ * The number of vertices to draw in the vertex array.
38
+ * @type Number
39
+ */
40
+ this.count = undefined;
41
+
42
+ /**
43
+ * The offset to start drawing in the vertex array.
44
+ * @type Number
45
+ */
46
+ this.offset = undefined;
47
+
48
+ /**
49
+ * The shader program to apply.
50
+ * @type ShaderProgram
51
+ */
52
+ this.shaderProgram = undefined;
53
+
54
+ /**
55
+ * An object with functions whose names match the uniforms in the shader program
56
+ * and return values to set those uniforms.
57
+ * @type Object
58
+ */
59
+ this.uniformMap = undefined;
60
+
61
+ /**
62
+ * The render state.
63
+ * @type Object
64
+ *
65
+ * @see Context#createRenderState
66
+ */
67
+ this.renderState = undefined;
68
+
69
+ /**
70
+ * The framebuffer to draw to.
71
+ * @type Framebuffer
72
+ */
73
+ this.framebuffer = undefined;
74
+
75
+ /**
76
+ * Specifies if this command is only to be executed in the frustum closest
77
+ * to the eye containing the bounding volume. Defaults to <code>false</code>.
78
+ * @type Boolean
79
+ */
80
+ this.executeInClosestFrustum = false;
81
+ };
82
+
83
+ /**
84
+ * Executes the draw command.
85
+ *
86
+ * @memberof DrawCommand
87
+ *
88
+ * @param {Context} context The renderer context in which to draw.
89
+ * @param {Framebuffer} [framebuffer] The framebuffer to which to draw if one is not specified by the command.
90
+ */
91
+ DrawCommand.prototype.execute = function(context, framebuffer) {
92
+ context.draw(this, framebuffer);
93
+ };
94
+
95
+ return DrawCommand;
96
+ });
@@ -0,0 +1,435 @@
1
+ /*global define*/
2
+ define([
3
+ '../Core/DeveloperError',
4
+ '../Core/destroyObject',
5
+ './PixelFormat'
6
+ ], function(
7
+ DeveloperError,
8
+ destroyObject,
9
+ PixelFormat) {
10
+ "use strict";
11
+
12
+ /**
13
+ * A framebuffer is a target for draw and clear calls. It can contain color, depth, and stencil attachments
14
+ * that are written to in response to these calls. If the attachments are textures, they can be read in
15
+ * later rendering passes.
16
+ *
17
+ * @alias Framebuffer
18
+ *
19
+ * @see Context#createFramebuffer
20
+ *
21
+ * @internalConstructor
22
+ */
23
+ var Framebuffer = function(gl, description) {
24
+ this._gl = gl;
25
+ this._framebuffer = gl.createFramebuffer();
26
+
27
+ this._colorTexture = undefined;
28
+ this._colorRenderbuffer = undefined;
29
+ this._depthTexture = undefined;
30
+ this._depthRenderbuffer = undefined;
31
+ this._stencilRenderbuffer = undefined;
32
+ this._depthStencilTexture = undefined;
33
+ this._depthStencilRenderbuffer = undefined;
34
+
35
+ /**
36
+ * When true, the framebuffer owns its attachments so they will be destroyed when
37
+ * {@link Framebuffer#destroy} is called or when a new attachment is assigned
38
+ * to an attachment point.
39
+ *
40
+ * @type Boolean
41
+ * @default true
42
+ *
43
+ * @see Framebuffer#destroy
44
+ */
45
+ this.destroyAttachments = true;
46
+
47
+ if (description) {
48
+ // Throw if a texture and renderbuffer are attached to the same point. This won't
49
+ // cause a WebGL error (because only one will be attached), but is likely a developer error.
50
+
51
+ if (description.colorTexture && description.colorRenderbuffer) {
52
+ throw new DeveloperError('Cannot have both a color texture and color renderbuffer attachment.');
53
+ }
54
+
55
+ if (description.depthTexture && description.depthRenderbuffer) {
56
+ throw new DeveloperError('Cannot have both a depth texture and depth renderbuffer attachment.');
57
+ }
58
+
59
+ if (description.depthStencilTexture && description.depthStencilRenderbuffer) {
60
+ throw new DeveloperError('Cannot have both a depth-stencil texture and depth-stencil renderbuffer attachment.');
61
+ }
62
+
63
+ // Avoid errors defined in Section 6.5 of the WebGL spec
64
+ var depthAttachment = (description.depthTexture || description.depthRenderbuffer);
65
+ var depthStencilAttachment = (description.depthStencilTexture || description.depthStencilRenderbuffer);
66
+
67
+ if (depthAttachment && depthStencilAttachment) {
68
+ throw new DeveloperError('Cannot have both a depth and depth-stencil attachment.');
69
+ }
70
+
71
+ if (description.stencilRenderbuffer && depthStencilAttachment) {
72
+ throw new DeveloperError('Cannot have both a stencil and depth-stencil attachment.');
73
+ }
74
+
75
+ if (depthAttachment && description.stencilRenderbuffer) {
76
+ throw new DeveloperError('Cannot have both a depth and stencil attachment.');
77
+ }
78
+
79
+ ///////////////////////////////////////////////////////////////////
80
+
81
+ if (description.colorTexture) {
82
+ this.setColorTexture(description.colorTexture);
83
+ }
84
+
85
+ if (description.colorRenderbuffer) {
86
+ this.setColorRenderbuffer(description.colorRenderbuffer);
87
+ }
88
+
89
+ if (description.depthTexture) {
90
+ this.setDepthTexture(description.depthTexture);
91
+ }
92
+
93
+ if (description.depthRenderbuffer) {
94
+ this.setDepthRenderbuffer(description.depthRenderbuffer);
95
+ }
96
+
97
+ if (description.stencilRenderbuffer) {
98
+ this.setStencilRenderbuffer(description.stencilRenderbuffer);
99
+ }
100
+
101
+ if (description.depthStencilTexture) {
102
+ this.setDepthStencilTexture(description.depthStencilTexture);
103
+ }
104
+
105
+ if (description.depthStencilRenderbuffer) {
106
+ this.setDepthStencilRenderbuffer(description.depthStencilRenderbuffer);
107
+ }
108
+ }
109
+ };
110
+
111
+ Framebuffer.prototype._bind = function() {
112
+ var gl = this._gl;
113
+ gl.bindFramebuffer(gl.FRAMEBUFFER, this._framebuffer);
114
+ };
115
+
116
+ Framebuffer.prototype._unBind = function() {
117
+ var gl = this._gl;
118
+ gl.bindFramebuffer(gl.FRAMEBUFFER, null);
119
+ };
120
+
121
+ function attachTexture(framebuffer, attachment, texture) {
122
+ framebuffer._bind();
123
+ var gl = framebuffer._gl;
124
+
125
+ if (texture) {
126
+ gl.framebufferTexture2D(gl.FRAMEBUFFER, attachment, texture._getTarget(), texture._getTexture(), 0);
127
+ } else {
128
+ gl.framebufferTexture2D(gl.FRAMEBUFFER, attachment, gl.TEXTURE_2D, null, 0);
129
+ }
130
+ framebuffer._unBind();
131
+ }
132
+
133
+ function attachRenderbuffer(framebuffer, attachment, renderbuffer) {
134
+ framebuffer._bind();
135
+ var gl = framebuffer._gl;
136
+
137
+ if (renderbuffer) {
138
+ gl.framebufferRenderbuffer(gl.FRAMEBUFFER, attachment, gl.RENDERBUFFER, renderbuffer._getRenderbuffer());
139
+ } else {
140
+ gl.framebufferRenderbuffer(gl.FRAMEBUFFER, attachment, gl.RENDERBUFFER, null);
141
+ }
142
+ framebuffer._unBind();
143
+ }
144
+
145
+ function destroyAttachment(framebuffer, attachment) {
146
+ if (framebuffer.destroyAttachments && attachment && attachment.destroy) {
147
+ attachment.destroy();
148
+ }
149
+ }
150
+
151
+ /**
152
+ * Attaches a texture to the color attachment point. When this framebuffer is passed to a draw
153
+ * or clear call, the texture is the target of color output, e.g., <code>gl_FragColor</code>.
154
+ *
155
+ * @memberof Framebuffer
156
+ *
157
+ * @param {Texture} The texture to attach. <code>undefined</code> dettaches the current texture.
158
+ *
159
+ * @exception {DeveloperError} The color-texture pixel-format must be a color format.
160
+ * @exception {DeveloperError} This framebuffer was destroyed, i.e., destroy() was called.
161
+ */
162
+ Framebuffer.prototype.setColorTexture = function(texture) {
163
+ if (texture && !PixelFormat.isColorFormat(texture.getPixelFormat())) {
164
+ throw new DeveloperError('The color-texture pixel-format must be a color format.');
165
+ }
166
+
167
+ attachTexture(this, this._gl.COLOR_ATTACHMENT0, texture);
168
+ destroyAttachment(this, this._colorTexture);
169
+ this._colorTexture = texture;
170
+ };
171
+
172
+ /**
173
+ * Returns the color texture attached to this framebuffer.
174
+ *
175
+ * @memberof Framebuffer
176
+ *
177
+ * @returns {Texture} The color texture attached to this framebuffer.
178
+ *
179
+ * @exception {DeveloperError} This framebuffer was destroyed, i.e., destroy() was called.
180
+ */
181
+ Framebuffer.prototype.getColorTexture = function() {
182
+ return this._colorTexture;
183
+ };
184
+
185
+ /**
186
+ * Prefer {@link Framebuffer#setColorTexture}.
187
+ *
188
+ * @memberof Framebuffer
189
+ *
190
+ * @exception {DeveloperError} This framebuffer was destroyed, i.e., destroy() was called.
191
+ */
192
+ Framebuffer.prototype.setColorRenderbuffer = function(renderbuffer) {
193
+ attachRenderbuffer(this, this._gl.COLOR_ATTACHMENT0, renderbuffer);
194
+ destroyAttachment(this, this._colorRenderbuffer);
195
+ this._colorRenderbuffer = renderbuffer;
196
+ };
197
+
198
+ /**
199
+ * Returns the color renderbuffer attached to this framebuffer.
200
+ *
201
+ * @memberof Framebuffer
202
+ *
203
+ * @returns {Texture} The color renderbuffer attached to this framebuffer.
204
+ *
205
+ * @exception {DeveloperError} This framebuffer was destroyed, i.e., destroy() was called.
206
+ */
207
+ Framebuffer.prototype.getColorRenderbuffer = function() {
208
+ return this._colorRenderbuffer;
209
+ };
210
+
211
+ /**
212
+ * Attaches a texture to the depth attachment point. When this framebuffer is passed to a draw
213
+ * or clear call, the texture is the target of depth output.
214
+ *
215
+ * @memberof Framebuffer
216
+ *
217
+ * @param {Texture} The texture to attach. <code>undefined</code> dettaches the current texture.
218
+ *
219
+ * @exception {DeveloperError} The depth-texture pixel-format must be DEPTH_COMPONENT.
220
+ * @exception {DeveloperError} This framebuffer was destroyed, i.e., destroy() was called.
221
+ */
222
+ Framebuffer.prototype.setDepthTexture = function(texture) {
223
+ if (texture && (texture.getPixelFormat() !== PixelFormat.DEPTH_COMPONENT)) {
224
+ throw new DeveloperError('The depth-texture pixel-format must be DEPTH_COMPONENT.');
225
+ }
226
+
227
+ attachTexture(this, this._gl.DEPTH_ATTACHMENT, texture);
228
+ destroyAttachment(this, this._depthTexture);
229
+ this._depthTexture = texture;
230
+ };
231
+
232
+ /**
233
+ * Returns the depth texture attached to this framebuffer.
234
+ *
235
+ * @memberof Framebuffer
236
+ *
237
+ * @returns {Texture} The depth texture attached to this framebuffer.
238
+ *
239
+ * @exception {DeveloperError} This framebuffer was destroyed, i.e., destroy() was called.
240
+ */
241
+ Framebuffer.prototype.getDepthTexture = function() {
242
+ return this._depthTexture;
243
+ };
244
+
245
+ /**
246
+ * Prefer {@link Framebuffer#setDepthTexture}.
247
+ *
248
+ * @memberof Framebuffer
249
+ *
250
+ * @exception {DeveloperError} This framebuffer was destroyed, i.e., destroy() was called.
251
+ */
252
+ Framebuffer.prototype.setDepthRenderbuffer = function(renderbuffer) {
253
+ attachRenderbuffer(this, this._gl.DEPTH_ATTACHMENT, renderbuffer);
254
+ destroyAttachment(this, this._depthRenderbuffer);
255
+ this._depthRenderbuffer = renderbuffer;
256
+ };
257
+
258
+ /**
259
+ * Returns the depth renderbuffer attached to this framebuffer.
260
+ *
261
+ * @memberof Framebuffer
262
+ *
263
+ * @returns {Texture} The depth renderbuffer attached to this framebuffer.
264
+ *
265
+ * @exception {DeveloperError} This framebuffer was destroyed, i.e., destroy() was called.
266
+ */
267
+ Framebuffer.prototype.getDepthRenderbuffer = function() {
268
+ return this._depthRenderbuffer;
269
+ };
270
+
271
+ /**
272
+ * Prefer {@link Framebuffer#setDepthStencilTexture}.
273
+ *
274
+ * @memberof Framebuffer
275
+ *
276
+ * @exception {DeveloperError} This framebuffer was destroyed, i.e., destroy() was called.
277
+ */
278
+ Framebuffer.prototype.setStencilRenderbuffer = function(renderbuffer) {
279
+ attachRenderbuffer(this, this._gl.STENCIL_ATTACHMENT, renderbuffer);
280
+ destroyAttachment(this, this._stencilRenderbuffer);
281
+ this._stencilRenderbuffer = renderbuffer;
282
+ };
283
+
284
+ /**
285
+ * Returns the stencil renderbuffer attached to this framebuffer.
286
+ *
287
+ * @memberof Framebuffer
288
+ *
289
+ * @returns {Texture} The stencil renderbuffer attached to this framebuffer.
290
+ *
291
+ * @exception {DeveloperError} This framebuffer was destroyed, i.e., destroy() was called.
292
+ */
293
+ Framebuffer.prototype.getStencilRenderbuffer = function() {
294
+ return this._stencilRenderbuffer;
295
+ };
296
+
297
+ /**
298
+ * Attaches a texture to the depth-stencil attachment point. When this framebuffer is passed to a draw
299
+ * or clear call, the texture is the target of depth and stencil output.
300
+ *
301
+ * @memberof Framebuffer
302
+ *
303
+ * @param {Texture} The texture to attach. <code>undefined</code> dettaches the current texture.
304
+ *
305
+ * @exception {DeveloperError} The depth-stencil-texture pixel-format must be DEPTH_STENCIL.
306
+ * @exception {DeveloperError} This framebuffer was destroyed, i.e., destroy() was called.
307
+ */
308
+ Framebuffer.prototype.setDepthStencilTexture = function(texture) {
309
+ if (texture && (texture.getPixelFormat() !== PixelFormat.DEPTH_STENCIL)) {
310
+ throw new DeveloperError('The depth-stencil pixel-format must be DEPTH_STENCIL.');
311
+ }
312
+
313
+ attachTexture(this, this._gl.DEPTH_STENCIL_ATTACHMENT, texture);
314
+ destroyAttachment(this, this._depthStencilTexture);
315
+ this._depthStencilTexture = texture;
316
+ };
317
+
318
+ /**
319
+ * Returns the depth-stencil texture attached to this framebuffer.
320
+ *
321
+ * @memberof Framebuffer
322
+ *
323
+ * @returns {Texture} The depth-stencil texture attached to this framebuffer.
324
+ *
325
+ * @exception {DeveloperError} This framebuffer was destroyed, i.e., destroy() was called.
326
+ */
327
+ Framebuffer.prototype.getDepthStencilTexture = function() {
328
+ return this._depthStencilTexture;
329
+ };
330
+
331
+ /**
332
+ * Prefer {@link Framebuffer#setDepthStencilTexture}.
333
+ *
334
+ * @memberof Framebuffer
335
+ *
336
+ * @exception {DeveloperError} This framebuffer was destroyed, i.e., destroy() was called.
337
+ */
338
+ Framebuffer.prototype.setDepthStencilRenderbuffer = function(renderbuffer) {
339
+ attachRenderbuffer(this, this._gl.DEPTH_STENCIL_ATTACHMENT, renderbuffer);
340
+ destroyAttachment(this, this._depthStencilRenderbuffer);
341
+ this._depthStencilRenderbuffer = renderbuffer;
342
+ };
343
+
344
+ /**
345
+ * Returns the depth-stencil renderbuffer attached to this framebuffer.
346
+ *
347
+ * @memberof Framebuffer
348
+ *
349
+ * @returns {Texture} The depth-stencil renderbuffer attached to this framebuffer.
350
+ *
351
+ * @exception {DeveloperError} This framebuffer was destroyed, i.e., destroy() was called.
352
+ */
353
+ Framebuffer.prototype.getDepthStencilRenderbuffer = function() {
354
+ return this._depthStencilRenderbuffer;
355
+ };
356
+
357
+ /**
358
+ * Returns true if the framebuffer has a depth attachment. Depth attachments include
359
+ * depth and depth-stencil textures, and depth and depth-stencil renderbuffers. When
360
+ * rendering to a framebuffer, a depth attachment is required for the depth test to have effect.
361
+ *
362
+ * @memberof Framebuffer
363
+ *
364
+ * @return {Boolean} Returns true if the framebuffer has a depth attachment; otherwise, false.
365
+ *
366
+ * @exception {DeveloperError} This framebuffer was destroyed, i.e., destroy() was called.
367
+ */
368
+ Framebuffer.prototype.hasDepthAttachment = function() {
369
+ return !!(this.getDepthTexture() || this.getDepthRenderbuffer() || this.getDepthStencilTexture() || this.getDepthStencilRenderbuffer());
370
+ };
371
+
372
+ /**
373
+ * Returns true if this object was destroyed; otherwise, false.
374
+ * <br /><br />
375
+ * If this object was destroyed, it should not be used; calling any function other than
376
+ * <code>isDestroyed</code> will result in a {@link DeveloperError} exception.
377
+ *
378
+ * @memberof Framebuffer
379
+ *
380
+ * @return {Boolean} True if this object was destroyed; otherwise, false.
381
+ *
382
+ * @see Framebuffer#destroy
383
+ */
384
+ Framebuffer.prototype.isDestroyed = function() {
385
+ return false;
386
+ };
387
+
388
+ /**
389
+ * Destroys the WebGL resources held by this object. Destroying an object allows for deterministic
390
+ * release of WebGL resources, instead of relying on the garbage collector to destroy this object.
391
+ * <br /><br />
392
+ * Framebuffer attachments are only destoryed if the framebuffer owns them, i.e., {@link destroyAttachments}
393
+ * is true.
394
+ * <br /><br />
395
+ * Once an object is destroyed, it should not be used; calling any function other than
396
+ * <code>isDestroyed</code> will result in a {@link DeveloperError} exception. Therefore,
397
+ * assign the return value (<code>undefined</code>) to the object as done in the example.
398
+ *
399
+ * @memberof Framebuffer
400
+ *
401
+ * @return {undefined}
402
+ *
403
+ * @exception {DeveloperError} This framebuffer was destroyed, i.e., destroy() was called.
404
+ *
405
+ * @see Framebuffer#isDestroyed
406
+ * @see Framebuffer#destroyAttachments
407
+ * @see <a href='http://www.khronos.org/opengles/sdk/2.0/docs/man/glDeleteFramebuffers.xml'>glDeleteFramebuffers</a>
408
+ * @see <a href='http://www.khronos.org/opengles/sdk/2.0/docs/man/glDeleteTextures.xml'>glDeleteTextures</a>
409
+ * @see <a href='http://www.khronos.org/opengles/sdk/2.0/docs/man/glDeleteRenderbuffers.xml'>glDeleteRenderbuffers</a>
410
+ *
411
+ * @example
412
+ * var texture = context.createTexture2D({ width : 1, height : 1 });
413
+ * framebuffer = context.createFramebuffer({ colorTexture : texture });
414
+ * // ...
415
+ * framebuffer = framebuffer.destroy();
416
+ * // texture is also destroyed.
417
+ */
418
+ Framebuffer.prototype.destroy = function() {
419
+ if (this.destroyAttachments) {
420
+ // If the color texture is a cube map face, it is owned by the cube map, and will not be destroyed.
421
+ this._colorTexture = this._colorTexture && this._colorTexture.destroy && this._colorTexture.destroy();
422
+ this._colorRenderbuffer = this._colorRenderbuffer && this._colorRenderbuffer.destroy();
423
+ this._depthTexture = this._depthTexture && this._depthTexture.destroy();
424
+ this._depthRenderbuffer = this._depthRenderbuffer && this._depthRenderbuffer.destroy();
425
+ this._stencilRenderbuffer = this._stencilRenderbuffer && this._stencilRenderbuffer.destroy();
426
+ this._depthStencilTexture = this._depthStencilTexture && this._depthStencilTexture.destroy();
427
+ this._depthStencilRenderbuffer = this._depthStencilRenderbuffer && this._depthStencilRenderbuffer.destroy();
428
+ }
429
+
430
+ this._gl.deleteFramebuffer(this._framebuffer);
431
+ return destroyObject(this);
432
+ };
433
+
434
+ return Framebuffer;
435
+ });