@woosh/meep-engine 2.33.23 → 2.33.27

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 (302) hide show
  1. package/core/binary/BitSet.js +151 -167
  2. package/core/binary/BitSet.spec.js +99 -1
  3. package/core/binary/ValidatingBitSetWrapper.js +81 -0
  4. package/core/bvh2/BinaryNode.js +1 -1
  5. package/core/bvh2/aabb3/AABB3.js +21 -10
  6. package/core/bvh2/aabb3/AABB3Math.js +1 -1
  7. package/core/bvh2/binary/2/BinaryUint32BVH.js +498 -0
  8. package/core/bvh2/binary/2/BinaryUint32BVH.spec.js +54 -0
  9. package/core/bvh2/binary/IndexedBinaryBVH.js +22 -26
  10. package/core/bvh2/traversal/ThreeClippingPlaneComputingBVHVisitor.js +5 -1
  11. package/core/bvh2/traversal/__detailed_box_volume_intersection.js +22 -5
  12. package/core/cache/Cache.d.ts +4 -2
  13. package/core/cache/Cache.js +5 -2
  14. package/core/collection/ArrayUtils.js +1 -1
  15. package/core/collection/HashMap.d.ts +9 -2
  16. package/core/collection/HashSet.d.ts +7 -2
  17. package/core/collection/HashSet.js +7 -2
  18. package/core/collection/array/arrayQuickSort.js +9 -6
  19. package/core/collection/array/array_swap.js +22 -0
  20. package/core/collection/array/binarySearchHighIndex.js +1 -1
  21. package/core/collection/array/computeHashArray.js +22 -0
  22. package/core/collection/array/computeHashIntegerArray.js +15 -0
  23. package/core/collection/array/copyArray.js +2 -2
  24. package/core/collection/array/typed/typed_array_copy.js +1 -1
  25. package/core/collection/table/DataType2TypedArrayConstructorMapping.js +15 -0
  26. package/core/color/Color.js +2 -1
  27. package/core/function/FunctionCompiler.js +2 -1
  28. package/core/geom/3d/aabb/aabb3_computeDistanceAbovePlane.js +9 -33
  29. package/core/geom/3d/frustum/array_setFromProjectionMatrix.js +3 -3
  30. package/core/geom/3d/frustum/frustum3_computeNearestPointToPoint.js +1 -1
  31. package/core/geom/3d/line/line3_computeSegmentPointDistance_sqr.js +41 -0
  32. package/core/geom/3d/morton/mortonEncode_magicbits.js +2 -1
  33. package/core/geom/3d/morton/reinterpret_float32_as_int32.js +13 -0
  34. package/core/geom/3d/morton/v3_morton_encode_transformed.js +33 -0
  35. package/core/geom/3d/normal/hemioct/unit_hemioct.spec.js +1 -1
  36. package/core/geom/3d/ray/ray_computeNearestPointToPoint.js +37 -0
  37. package/core/geom/3d/shape/AbstractShape3D.js +65 -0
  38. package/core/geom/3d/shape/TransformedShape3D.js +181 -0
  39. package/core/geom/3d/shape/TransformedShape3D.spec.js +33 -0
  40. package/core/geom/3d/shape/UnionShape3D.js +255 -0
  41. package/core/geom/3d/shape/UnitCubeShape3D.js +101 -0
  42. package/core/geom/3d/shape/UnitCubeShape3D.spec.js +42 -0
  43. package/core/geom/3d/shape/UnitSphereShape3D.js +55 -0
  44. package/core/geom/3d/shape/util/compute_signed_distance_gradient_by_sampling.js +48 -0
  45. package/core/geom/3d/shape/util/shape_to_visual_entity.js +159 -0
  46. package/core/geom/AABB2.js +1 -1
  47. package/core/geom/ConicRay.js +3 -1
  48. package/core/geom/LineSegment.js +0 -78
  49. package/core/geom/Matrix4.js +7 -8
  50. package/core/geom/Rectangle.js +2 -1
  51. package/core/geom/Vector1.js +1 -1
  52. package/core/geom/Vector3.js +2 -1
  53. package/core/geom/Vector4.js +2 -1
  54. package/core/geom/random/randomPointInBox.js +7 -3
  55. package/core/geom/random/randomPointInPoint.js +6 -3
  56. package/core/geom/random/randomPointInSphere.js +9 -5
  57. package/core/geom/random/randomPointOnBox.js +7 -3
  58. package/core/geom/random/randomPointOnSphere.js +6 -3
  59. package/core/geom/v3_length.js +8 -3
  60. package/core/graph/graph_k_means_cluster.js +1 -1
  61. package/core/json/resolvePathByArray.js +2 -2
  62. package/core/math/MathUtils.js +0 -354
  63. package/core/math/MathUtils.spec.js +7 -1
  64. package/core/math/gaussian.js +9 -0
  65. package/core/math/hash/computeHashFloat.js +17 -0
  66. package/core/math/hash/computeHashFloatArray.js +34 -0
  67. package/core/math/hash/computeObjectHash.js +54 -0
  68. package/core/math/intersects1D.js +19 -0
  69. package/core/math/interval/NumericInterval.js +2 -2
  70. package/core/math/isValueBetween.js +10 -0
  71. package/core/math/isValueBetweenInclusive.js +10 -0
  72. package/core/math/noise/curl_noise_3dt.js +1 -1
  73. package/core/math/noise/sdnoise.js +10 -10
  74. package/core/math/overlap1D.js +19 -0
  75. package/core/math/pingpong.js +17 -0
  76. package/core/math/random/makeRangedRandom.js +19 -0
  77. package/core/math/random/randomFloatBetween.js +14 -0
  78. package/core/math/random/randomFromArray.js +19 -0
  79. package/core/math/random/randomGaussian.js +15 -0
  80. package/core/math/random/randomIntegerBetween.js +14 -0
  81. package/core/math/random/roundFair.js +15 -0
  82. package/core/math/separation1D.js +21 -0
  83. package/core/math/solveQuadratic.js +25 -0
  84. package/core/model/BoundedValue.js +1 -1
  85. package/core/model/node-graph/node/NodeInstancePortReference.js +1 -1
  86. package/core/model/node-graph/node/Port.js +1 -1
  87. package/core/model/reactive/evaluation/MultiPredicateEvaluator.spec.js +3 -1
  88. package/core/model/reactive/model/ReactiveBinaryExpression.js +1 -1
  89. package/core/model/reactive/model/terminal/ReactiveLiteralNumber.js +1 -1
  90. package/core/model/reactive/model/terminal/ReactiveReference.js +1 -1
  91. package/core/model/reactive/model/util/createRandomReactiveExpression.js +1 -1
  92. package/core/model/stat/LinearModifier.js +1 -1
  93. package/core/parser/simple/Token.d.ts +13 -0
  94. package/core/parser/simple/Token.js +61 -27
  95. package/{engine/graphics/render/forward_plus/materials → core/primitives/strings}/insert_after.js +3 -0
  96. package/core/primitives/strings/insert_after_or_replace.js +27 -0
  97. package/editor/process/symbolic/makeHelperBoxGeometry.js +44 -0
  98. package/editor/tools/FoliagePaintTool.js +4 -4
  99. package/editor/view/ecs/EntityEditor.js +2 -2
  100. package/editor/view/ecs/components/particles/ParticleEmitterController.js +2 -2
  101. package/engine/EngineHarness.js +1 -0
  102. package/engine/animation/AnimationUtils.js +5 -5
  103. package/engine/animation/curve/AnimationCurve.js +72 -0
  104. package/engine/animation/curve/Keyframe.js +27 -0
  105. package/engine/animation/keyed2/AnimationTrack.js +27 -3
  106. package/engine/asset/Asset.js +1 -1
  107. package/engine/asset/loaders/GLTFAssetLoader.d.ts +1 -1
  108. package/engine/asset/loaders/GLTFAssetLoader.js +62 -1
  109. package/engine/asset/loaders/image/ImageDecoderWorker.js +4 -3
  110. package/engine/asset/loaders/image/ImageRGBADataAsset.js +10 -2
  111. package/engine/asset/loaders/image/ImageRGBADataLoader.js +3 -3
  112. package/engine/asset/loaders/image/codec/NativeImageDecoder.js +2 -1
  113. package/engine/asset/loaders/image/png/PNG.js +113 -6
  114. package/engine/asset/loaders/image/png/PNGReader.js +5 -0
  115. package/engine/asset/loaders/material/bitmap2sampler_gl.js +1 -1
  116. package/engine/asset/loaders/material/computeImageBitmapEquality.js +6 -1
  117. package/engine/asset/loaders/material/computeMaterialHash.js +3 -1
  118. package/engine/asset/loaders/material/computeTextureEquality.js +40 -49
  119. package/engine/asset/loaders/material/computeTextureHash.js +2 -1
  120. package/engine/ecs/EntityBuilder.js +25 -5
  121. package/engine/ecs/EntityComponentDataset.js +1 -1
  122. package/engine/ecs/animation/Animation.js +2 -1
  123. package/engine/ecs/animation/InverseKinematics.js +2 -1
  124. package/engine/ecs/attachment/AttachmentBinding.js +8 -0
  125. package/engine/ecs/attachment/AttachmentSystem.js +4 -0
  126. package/engine/ecs/attachment/TransformAttachmentBinding.js +14 -44
  127. package/engine/ecs/components/Tag.js +27 -6
  128. package/engine/ecs/dynamic_actions/DynamicActorSystem.js +2 -1
  129. package/engine/ecs/dynamic_actions/DynamicRuleDescriptionTable.spec.js +3 -5
  130. package/engine/ecs/dynamic_actions/actions/definition/WeightedRandomActionDescription.js +1 -1
  131. package/engine/ecs/evaluation/complex/PointFitnessGaussianBlur.js +1 -1
  132. package/engine/ecs/foliage/InstancedFoliage.js +277 -266
  133. package/engine/ecs/foliage/ecs/Foliage2System.js +7 -7
  134. package/engine/ecs/foliage/ecs/InstancedMeshComponent.js +37 -0
  135. package/engine/ecs/foliage/ecs/{Foliage2.js → InstancedMeshLayer.js} +3 -45
  136. package/engine/ecs/foliage/ecs/InstancedMeshSerializationAdapter.js +6 -5
  137. package/engine/ecs/foliage/ecs/InstancedMeshUtils.js +7 -6
  138. package/engine/ecs/fow/FogOfWar.js +4 -0
  139. package/engine/ecs/fow/FogOfWarSystem.js +2 -0
  140. package/engine/ecs/fow/shader/FogOfWarRenderer.js +1 -1
  141. package/engine/ecs/gui/GUIElement.js +1 -1
  142. package/engine/ecs/gui/hud/HeadsUpDisplay.js +1 -1
  143. package/engine/ecs/gui/hud/HeadsUpDisplaySystem.js +2 -0
  144. package/engine/ecs/gui/position/ViewportPosition.js +2 -1
  145. package/engine/ecs/storage/binary/BinarySerializationRegistry.js +1 -1
  146. package/engine/ecs/system/AbstractContextSystem.js +1 -1
  147. package/engine/ecs/systems/RangedAttackSystem.js +1 -1
  148. package/engine/ecs/systems/SteeringSystem.js +1 -1
  149. package/engine/ecs/systems/TagSystem.js +17 -0
  150. package/engine/ecs/terrain/ecs/layers/TerrainLayer.js +12 -16
  151. package/engine/ecs/terrain/tiles/TerrainTileManager.js +1 -1
  152. package/engine/ecs/tooltip/TooltipComponent.js +15 -0
  153. package/engine/ecs/transform/Transform.js +19 -6
  154. package/engine/graphics/GraphicsEngine.js +11 -6
  155. package/engine/graphics/composit/CompositLayer.js +17 -4
  156. package/engine/graphics/composit/CompositingStages.js +8 -0
  157. package/engine/graphics/composit/LayerCompositer.js +35 -6
  158. package/engine/graphics/ecs/animation/animator/AnimationClip.js +2 -1
  159. package/engine/graphics/ecs/animation/animator/AnimationClipDefinition.js +2 -1
  160. package/engine/graphics/ecs/animation/animator/AnimationNotification.js +2 -1
  161. package/engine/graphics/ecs/animation/animator/AnimationNotificationDefinition.js +2 -1
  162. package/engine/graphics/ecs/animation/animator/graph/AnimationGraph.js +2 -1
  163. package/engine/graphics/ecs/animation/animator/graph/definition/AnimationGraphDefinition.js +2 -1
  164. package/engine/graphics/ecs/animation/animator/graph/definition/AnimationStateDefinition.js +1 -1
  165. package/engine/graphics/ecs/animation/animator/graph/definition/AnimationTransitionDefinition.js +2 -1
  166. package/engine/graphics/ecs/camera/CameraClippingPlaneComputer.js +1 -1
  167. package/engine/graphics/ecs/highlight/HighlightDefinition.js +2 -1
  168. package/engine/graphics/ecs/highlight/plugin/OutlineRenderPlugin.js +11 -7
  169. package/engine/graphics/ecs/light/Light.d.ts +1 -1
  170. package/engine/graphics/ecs/light/Light.js +5 -0
  171. package/engine/graphics/ecs/light/binding/three/ThreeLightBinding.js +5 -1
  172. package/engine/graphics/ecs/mesh/Mesh.js +2 -1
  173. package/engine/graphics/ecs/mesh-v2/DrawMode.js +5 -0
  174. package/engine/graphics/ecs/mesh-v2/ShadedGeometry.d.ts +13 -0
  175. package/engine/graphics/ecs/mesh-v2/ShadedGeometry.js +32 -18
  176. package/engine/graphics/ecs/mesh-v2/ShadedGeometrySystem.d.ts +6 -0
  177. package/engine/graphics/geometry/AttributeSpec.js +105 -0
  178. package/engine/graphics/{micron/format/MicronVertexDataSpec.js → geometry/VertexDataSpec.js} +56 -25
  179. package/engine/graphics/geometry/instancing/InstancedMeshGroup.js +14 -72
  180. package/engine/graphics/geometry/instancing/rewriteMaterial.js +70 -0
  181. package/engine/graphics/material/manager/MaterialManager.js +2 -1
  182. package/engine/graphics/micron/build/buildMicronGeometryFromBufferGeometry.js +7 -7
  183. package/engine/graphics/micron/build/fill_patch_geometry_data.js +1 -1
  184. package/engine/graphics/micron/buildPatchwork.js +1 -1
  185. package/engine/graphics/micron/format/MicronGeometry.js +3 -3
  186. package/engine/graphics/micron/format/serialization/MicronGeometryBinarySerializationAdapter.js +2 -2
  187. package/engine/graphics/micron/format/serialization/deserialize_attribute_spec.js +1 -1
  188. package/engine/graphics/micron/format/serialization/serialize_attribute_spec.js +1 -1
  189. package/engine/graphics/micron/render/PatchCacheKey.js +1 -1
  190. package/engine/graphics/micron/render/instanced/AttributeDataTexture.js +11 -9
  191. package/engine/graphics/micron/render/instanced/ThreeInstancedAdapter.js +0 -2
  192. package/engine/graphics/micron/render/v1/ThreeVirtualGeometryAdapter.js +1 -1
  193. package/engine/graphics/particles/ParticleEmitterLibrary.js +3 -0
  194. package/engine/graphics/particles/ecs/{ParticleEmitterSystem2.js → ParticleEmitterSystem.js} +17 -9
  195. package/engine/graphics/particles/particular/engine/ParticularEngine.js +8 -2
  196. package/engine/graphics/particles/particular/engine/emitter/PARTICULAR_PARTICLE_SPECIFICATION.js +80 -16
  197. package/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.js +71 -77
  198. package/engine/graphics/particles/particular/engine/emitter/ParticleEmitterFlag.js +5 -0
  199. package/engine/graphics/particles/particular/engine/emitter/ParticleLayer.js +2 -1
  200. package/engine/graphics/particles/particular/engine/emitter/ParticlePool.js +141 -14
  201. package/engine/graphics/particles/particular/engine/emitter/ParticlePool.spec.js +8 -7
  202. package/engine/graphics/particles/particular/engine/emitter/computeEmissionFunction.js +1 -1
  203. package/engine/graphics/particles/particular/engine/emitter/serde/ParameterLookupTableSerializationAdapter.js +8 -2
  204. package/engine/graphics/particles/particular/engine/parameter/ParameterLookupTable.js +2 -1
  205. package/engine/graphics/particles/particular/engine/parameter/ParameterTrack.js +1 -1
  206. package/engine/graphics/particles/particular/engine/parameter/ParticleParameter.js +1 -1
  207. package/engine/graphics/particles/particular/engine/renderers/billboard/BILLBOARD_PARTICLE_SPECIFICATION.js +24 -0
  208. package/engine/graphics/particles/particular/engine/renderers/billboard/ParticleBillboardMaterial.js +262 -71
  209. package/engine/graphics/particles/particular/engine/renderers/billboard/prototypeBillboardRenderer.js +9 -9
  210. package/engine/graphics/particles/particular/engine/shader/ShaderManager.js +81 -48
  211. package/engine/graphics/particles/particular/engine/shader/debugAtlas.js +14 -0
  212. package/engine/graphics/particles/particular/engine/simulator/SimulationStepApplyForce.js +2 -5
  213. package/engine/graphics/particles/particular/engine/simulator/SimulationStepCurlNoiseAcceleration.js +2 -6
  214. package/engine/graphics/particles/particular/engine/simulator/SimulationStepCurlNoiseVelocity.js +2 -7
  215. package/engine/graphics/particles/particular/engine/simulator/SimulationStepFixedPhysics.js +2 -5
  216. package/engine/graphics/particles/particular/engine/simulator/update_parameters.js +1 -1
  217. package/engine/graphics/particles/particular/engine/utils/distributeParticlesOnObject3D.js +1 -1
  218. package/engine/graphics/particles/particular/engine/utils/distrubuteParticlesOnMesh.js +1 -1
  219. package/engine/graphics/particles/particular/engine/utils/volume/AttributeValue.js +141 -0
  220. package/engine/graphics/particles/particular/engine/utils/volume/ParticleVolume.js +478 -0
  221. package/engine/graphics/particles/particular/engine/utils/volume/lut_to_sampler.js +27 -0
  222. package/engine/graphics/particles/particular/engine/utils/volume/prototypeParticleVolume.js +938 -0
  223. package/engine/graphics/particles/particular/group/Operation.js +18 -0
  224. package/engine/graphics/particles/particular/group/OperationType.js +9 -0
  225. package/engine/graphics/particles/particular/group/ParticleAttribute.js +2 -1
  226. package/engine/graphics/particles/particular/group/ParticleAttributeType.js +11 -0
  227. package/engine/graphics/particles/particular/group/ParticleDataType.js +10 -0
  228. package/engine/graphics/particles/particular/group/ParticleGroup.js +7 -245
  229. package/engine/graphics/particles/particular/group/ParticleGroup.spec.js +3 -1
  230. package/engine/graphics/particles/particular/group/ParticleSpecification.js +21 -14
  231. package/engine/graphics/particles/particular/group/itemSizeFromAttributeType.js +20 -0
  232. package/engine/graphics/particles/particular/group/optimizeCommandQueue.js +162 -0
  233. package/engine/graphics/particles/particular/group/typedArrayConstructorFromDataType.js +19 -0
  234. package/engine/graphics/render/buffer/simple-fx/ao/AmbientOcclusionPostProcessEffect.js +16 -11
  235. package/engine/graphics/render/buffer/slot/parameter/ProgramValueSlotParameter.js +2 -1
  236. package/engine/graphics/render/buffer/slot/parameter/ProgramValueSlotParameterSet.js +1 -1
  237. package/engine/graphics/render/forward_plus/LightManager.js +117 -94
  238. package/engine/graphics/render/forward_plus/PointLight.js +9 -0
  239. package/engine/graphics/render/forward_plus/PointLightData.js +1 -1
  240. package/engine/graphics/render/forward_plus/SpotLight.js +9 -0
  241. package/engine/graphics/render/forward_plus/cluster/compute_light_data_hash_0.js +2 -2
  242. package/engine/graphics/render/forward_plus/materials/FP_INJECTION_POINT_ACCUMULATION.js +1 -0
  243. package/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_ACCUMULATION.js +32 -0
  244. package/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_DECODE_PARS.js +51 -0
  245. package/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_PREAMBLE.js +25 -0
  246. package/engine/graphics/render/forward_plus/materials/FPlusDebugMaterial.js +3 -3
  247. package/engine/graphics/render/forward_plus/materials/ForwardPlusThreeMaterial.js +1 -1
  248. package/engine/graphics/render/forward_plus/materials/fp_build_fragment_shader.js +31 -120
  249. package/engine/graphics/render/forward_plus/materials/fp_build_vertex_lighting_shared.js +35 -0
  250. package/engine/graphics/render/forward_plus/materials/fp_build_vertex_shader.js +4 -5
  251. package/engine/graphics/render/forward_plus/plugin/ForwardPlusRenderingPlugin.js +1 -1
  252. package/engine/graphics/render/forward_plus/plugin/MaterialTransformer.js +10 -3
  253. package/engine/graphics/render/forward_plus/plugin/ptototypeFPPlugin.js +594 -59
  254. package/engine/graphics/render/forward_plus/prototypeLightManager.js +208 -89
  255. package/engine/graphics/render/forward_plus/query/analytical_triplanar_corner_mapping.js +8 -0
  256. package/engine/graphics/render/forward_plus/query/cube_mapping.js +38 -0
  257. package/engine/graphics/render/forward_plus/query/detailed_sphere_frustum_intersection_test.js +86 -0
  258. package/engine/graphics/render/forward_plus/query/point_light_inside_volume.js +74 -0
  259. package/engine/graphics/render/forward_plus/query/query_bvh_frustum_from_objects.js +131 -0
  260. package/engine/graphics/render/forward_plus/query/query_bvh_frustum_from_texture.js +129 -0
  261. package/engine/graphics/render/forward_plus/query/spot_light_inside_volume.js +33 -0
  262. package/engine/graphics/render/forward_plus/read_frustum_corner.js +14 -0
  263. package/engine/graphics/render/forward_plus/testClusterEquality.js +22 -0
  264. package/engine/graphics/render/visibility/IncrementalDeltaSet.js +11 -0
  265. package/engine/graphics/render/visibility/hiz/prototypeHiZ.js +1 -1
  266. package/engine/graphics/shaders/TerrainShader.js +4 -5
  267. package/engine/graphics/shadows/ShadowMapRenderer.js +8 -2
  268. package/engine/graphics/texture/atlas/ManagedTextureAtlas.js +12 -1
  269. package/engine/graphics/texture/sampler/HarmonicDiffusionGrid.spec.js +1 -1
  270. package/engine/graphics/texture/sampler/SampleTraverser.js +1 -1
  271. package/engine/graphics/texture/sampler/Sampler2D.js +3 -1
  272. package/engine/graphics/texture/sampler/convertTexture2Sampler2D.js +1 -1
  273. package/engine/graphics/texture/sampler/copy_Sampler2D_channel_data.js +66 -0
  274. package/engine/graphics/texture/sampler/distanceField.spec.js +1 -1
  275. package/engine/graphics/util/composeMatrix4.js +33 -23
  276. package/engine/graphics/util/decompose_matrix_4_array.js +61 -0
  277. package/engine/grid/components/GridObstacle.js +1 -1
  278. package/engine/intelligence/behavior/ecs/BehaviorComponent.js +30 -14
  279. package/engine/intelligence/behavior/selector/WeightedElement.js +2 -1
  280. package/engine/intelligence/optimization/RandomOptimizer.js +1 -1
  281. package/engine/knowledge/database/StaticKnowledgeDataTable.js +6 -1
  282. package/engine/navigation/ecs/components/Path.js +1 -6
  283. package/engine/navigation/grid/FastBinaryHeap.spec.js +1 -1
  284. package/engine/sound/ecs/emitter/SoundEmitter.js +2 -1
  285. package/engine/sound/ecs/emitter/SoundTrack.js +2 -1
  286. package/engine/sound/material/concrete/RandomSoundMaterial.js +1 -1
  287. package/engine/ui/notification/notificationGenerator.js +1 -1
  288. package/generation/filtering/numeric/complex/CellFilterGaussianBlur.js +1 -1
  289. package/generation/grid/generation/GridTaskExecuteRuleTimes.js +2 -1
  290. package/generation/markers/actions/MarkerNodeActionSelectRandom.js +1 -1
  291. package/generation/markers/transform/MarkerNodeTransformerRecordUniqueRandomEnum.js +1 -1
  292. package/generation/placement/action/random/CellActionSelectRandom.js +1 -1
  293. package/generation/theme/ThemeEngine.js +1 -1
  294. package/misc/makeMaterialIconCached.js +2 -2
  295. package/package.json +1 -1
  296. package/view/elements/image/HTMLElementCacheKey.js +2 -1
  297. package/view/elements/radial/RadialText.js +2 -1
  298. package/view/minimap/gl/MinimapMarkersGL.js +6 -100
  299. package/view/minimap/gl/MinimapWorldGL.js +12 -5
  300. package/view/minimap/gl/buildMaterial.js +94 -0
  301. package/engine/graphics/micron/format/MicronGeometryBufferAttributeSpec.js +0 -71
  302. package/engine/graphics/render/forward_plus/queryBVH_Frustum.js +0 -357
@@ -9,6 +9,7 @@ import ThreeFactory from "../../three/ThreeFactory.js";
9
9
  import { StaticMaterialCache } from "../../../asset/loaders/material/StaticMaterialCache.js";
10
10
  import { composeCompile } from "../../material/composeCompile.js";
11
11
  import { typed_array_copy } from "../../../../core/collection/array/typed/typed_array_copy.js";
12
+ import { rewriteMaterial } from "./rewriteMaterial.js";
12
13
 
13
14
  /**
14
15
  *
@@ -94,77 +95,6 @@ InstancedMeshGroup.prototype.setGeometry = function (geometry) {
94
95
  };
95
96
 
96
97
 
97
- const SHADER_PREAMBLE = `
98
- attribute vec3 instancePosition;
99
- attribute vec4 instanceRotation;
100
- attribute vec3 instanceScale;
101
-
102
- vec3 instanceTransform( in vec3 position, vec3 T, vec4 R, vec3 S ){
103
- vec3 result = position;
104
-
105
- //applies the scale
106
- result *= S;
107
- //computes the rotation where R is a (vec4) quaternion
108
- result += 2.0 * cross( R.xyz, cross( R.xyz, result ) + R.w * result );
109
- //translates the transformed 'blueprint'
110
- result += T;
111
-
112
- return result;
113
- }
114
-
115
- mat4 getInstanceMatrix(){
116
- vec4 q = instanceRotation;
117
- vec3 s = instanceScale;
118
- vec3 v = instancePosition;
119
-
120
- vec3 q2 = q.xyz + q.xyz;
121
- vec3 a = q.xxx * q2.xyz;
122
- vec3 b = q.yyz * q2.yzz;
123
- vec3 c = q.www * q2.xyz;
124
-
125
- vec3 r0 = vec3( 1.0 - (b.x + b.z) , a.y + c.z , a.z - c.y ) * s.xxx;
126
- vec3 r1 = vec3( a.y - c.z , 1.0 - (a.x + b.z) , b.y + c.x ) * s.yyy;
127
- vec3 r2 = vec3( a.z + c.y , b.y - c.x , 1.0 - (a.x + b.x) ) * s.zzz;
128
-
129
- return mat4(
130
- r0 , 0.0,
131
- r1 , 0.0,
132
- r2 , 0.0,
133
- v , 1.0
134
- );
135
- }\n`;
136
-
137
- function rewriteMaterial(shader) {
138
- const originalVertexShader = shader.vertexShader;
139
-
140
- const newVertexShader = SHADER_PREAMBLE
141
- + originalVertexShader
142
- .replace(
143
- '#include <uv_vertex>',
144
- `
145
- mat4 instanceMatrix = getInstanceMatrix();
146
- #include <uv_vertex>
147
- `
148
- )
149
- .replace(
150
- '#include <begin_vertex>',
151
- `
152
- vec3 transformed = ( instanceMatrix * vec4(position,1.0) ).xyz;
153
- `
154
- )
155
- .replace(
156
- '#include <beginnormal_vertex>',
157
- `
158
- vec3 objectNormal = mat3( instanceMatrix ) * vec3( normal );
159
- #ifdef USE_TANGENT
160
- vec3 objectTangent = vec3( tangent.xyz );
161
- #endif
162
- `
163
- );
164
-
165
- shader.vertexShader = newVertexShader;
166
- }
167
-
168
98
  /**
169
99
  *
170
100
  * @param {THREE.Material} sourceMaterial
@@ -332,7 +262,19 @@ InstancedMeshGroup.prototype.add = function (reference) {
332
262
  * @param {*} [thisArg]
333
263
  */
334
264
  InstancedMeshGroup.prototype.traverseReferences = function (visitor, thisArg) {
335
- this.indices.forEach(visitor, thisArg);
265
+ const indices = this.indices;
266
+ const index_count = indices.length;
267
+
268
+ for (let i = 0; i < index_count; i++) {
269
+ const index = indices[i];
270
+
271
+ if (index === undefined) {
272
+ // unoccupied
273
+ continue;
274
+ }
275
+
276
+ visitor.call(thisArg, index, i);
277
+ }
336
278
  };
337
279
 
338
280
  /**
@@ -0,0 +1,70 @@
1
+ const SHADER_PREAMBLE = `
2
+ attribute vec3 instancePosition;
3
+ attribute vec4 instanceRotation;
4
+ attribute vec3 instanceScale;
5
+
6
+ vec3 instanceTransform( in vec3 position, vec3 T, vec4 R, vec3 S ){
7
+ vec3 result = position;
8
+
9
+ //applies the scale
10
+ result *= S;
11
+ //computes the rotation where R is a (vec4) quaternion
12
+ result += 2.0 * cross( R.xyz, cross( R.xyz, result ) + R.w * result );
13
+ //translates the transformed 'blueprint'
14
+ result += T;
15
+
16
+ return result;
17
+ }
18
+
19
+ mat4 getInstanceMatrix(){
20
+ vec4 q = instanceRotation;
21
+ vec3 s = instanceScale;
22
+ vec3 v = instancePosition;
23
+
24
+ vec3 q2 = q.xyz + q.xyz;
25
+ vec3 a = q.xxx * q2.xyz;
26
+ vec3 b = q.yyz * q2.yzz;
27
+ vec3 c = q.www * q2.xyz;
28
+
29
+ vec3 r0 = vec3( 1.0 - (b.x + b.z) , a.y + c.z , a.z - c.y ) * s.xxx;
30
+ vec3 r1 = vec3( a.y - c.z , 1.0 - (a.x + b.z) , b.y + c.x ) * s.yyy;
31
+ vec3 r2 = vec3( a.z + c.y , b.y - c.x , 1.0 - (a.x + b.x) ) * s.zzz;
32
+
33
+ return mat4(
34
+ r0 , 0.0,
35
+ r1 , 0.0,
36
+ r2 , 0.0,
37
+ v , 1.0
38
+ );
39
+ }\n`;
40
+
41
+ export function rewriteMaterial(shader) {
42
+ const originalVertexShader = shader.vertexShader;
43
+
44
+ const newVertexShader = SHADER_PREAMBLE
45
+ + originalVertexShader
46
+ .replace(
47
+ '#include <uv_vertex>',
48
+ `
49
+ mat4 instanceMatrix = getInstanceMatrix();
50
+ #include <uv_vertex>
51
+ `
52
+ )
53
+ .replace(
54
+ '#include <begin_vertex>',
55
+ `
56
+ vec3 transformed = ( instanceMatrix * vec4(position,1.0) ).xyz;
57
+ `
58
+ )
59
+ .replace(
60
+ '#include <beginnormal_vertex>',
61
+ `
62
+ vec3 objectNormal = mat3( instanceMatrix ) * vec3( normal );
63
+ #ifdef USE_TANGENT
64
+ vec3 objectTangent = vec3( tangent.xyz );
65
+ #endif
66
+ `
67
+ );
68
+
69
+ shader.vertexShader = newVertexShader;
70
+ }
@@ -14,7 +14,8 @@ export class MaterialManager {
14
14
  */
15
15
  this.__library = new HashMap({
16
16
  keyHashFunction: computeMaterialHash,
17
- keyEqualityFunction: computeMaterialEquality
17
+ keyEqualityFunction: computeMaterialEquality,
18
+ capacity: 1024
18
19
  });
19
20
 
20
21
  /**
@@ -2,7 +2,7 @@ import { TopoMesh } from "../../../../core/geom/3d/topology/TopoMesh.js";
2
2
  import { PatchRepresentation } from "./PatchRepresentation.js";
3
3
  import { MicronGeometry } from "../format/MicronGeometry.js";
4
4
  import { buildAbstractPatchHierarchy } from "./hierarchy/buildAbstractPatchHierarchy.js";
5
- import { MicronGeometryBufferAttributeSpec } from "../format/MicronGeometryBufferAttributeSpec.js";
5
+ import { AttributeSpec } from "../../geometry/AttributeSpec.js";
6
6
  import { typedArrayToDataType } from "../../../../core/collection/array/typedArrayToDataType.js";
7
7
  import { DataType } from "../../../../core/collection/table/DataType.js";
8
8
  import { MicronGeometryPatch } from "../format/MicronGeometryPatch.js";
@@ -28,7 +28,7 @@ function current_time_millis() {
28
28
 
29
29
  /**
30
30
  *
31
- * @param {MicronGeometryBufferAttributeSpec} spec
31
+ * @param {AttributeSpec} spec
32
32
  * @param {THREE.BufferAttribute} source
33
33
  */
34
34
  function custom_attribute_format_normal(spec, source) {
@@ -39,7 +39,7 @@ function custom_attribute_format_normal(spec, source) {
39
39
 
40
40
  /**
41
41
  *
42
- * @param {MicronGeometryBufferAttributeSpec} spec
42
+ * @param {AttributeSpec} spec
43
43
  * @param {THREE.BufferAttribute} source
44
44
  */
45
45
  function custom_attribute_format_uv(spec, source) {
@@ -49,7 +49,7 @@ function custom_attribute_format_uv(spec, source) {
49
49
 
50
50
  /**
51
51
  *
52
- * @param {MicronGeometryBufferAttributeSpec} spec
52
+ * @param {AttributeSpec} spec
53
53
  * @param {THREE.BufferAttribute} source
54
54
  * @param {string} name
55
55
  */
@@ -76,7 +76,7 @@ function format_attribute(spec, source, name) {
76
76
  /**
77
77
  *
78
78
  * @param {THREE.BufferGeometry} buffer_geometry
79
- * @returns {MicronGeometryBufferAttributeSpec[]}
79
+ * @returns {AttributeSpec[]}
80
80
  */
81
81
  function attributes_from_buffer_geometry(buffer_geometry) {
82
82
  const result = [];
@@ -84,7 +84,7 @@ function attributes_from_buffer_geometry(buffer_geometry) {
84
84
  const source_attributes = buffer_geometry.attributes;
85
85
  for (const attributesKey in source_attributes) {
86
86
  const source_attribute = source_attributes[attributesKey];
87
- const spec = new MicronGeometryBufferAttributeSpec();
87
+ const spec = new AttributeSpec();
88
88
 
89
89
  format_attribute(spec, source_attribute, attributesKey);
90
90
 
@@ -92,7 +92,7 @@ function attributes_from_buffer_geometry(buffer_geometry) {
92
92
  }
93
93
 
94
94
  // to ensure that input order of attributes does not matter, we sort the attributes by name
95
- result.sort(MicronGeometryBufferAttributeSpec.byName);
95
+ result.sort(AttributeSpec.byName);
96
96
 
97
97
  return result;
98
98
  }
@@ -110,7 +110,7 @@ const DataConverterType = {
110
110
 
111
111
  /**
112
112
  * How to convert data from source three.js buffer attribute to what we store in the patch description based on the supplied micron spec
113
- * @param {MicronGeometryBufferAttributeSpec} spec
113
+ * @param {AttributeSpec} spec
114
114
  * @param {THREE.BufferAttribute} source
115
115
  * @returns {DataConverterType}
116
116
  */
@@ -2,7 +2,7 @@ import { FrontSide, Group, Mesh, MeshBasicMaterial, MeshStandardMaterial } from
2
2
  import { patchToBufferGeometry } from "./util/patchToBufferGeometry.js";
3
3
  import { Color } from "../../../core/color/Color.js";
4
4
  import { seededRandom } from "../../../core/math/random/seededRandom.js";
5
- import { randomFloatBetween } from "../../../core/math/MathUtils.js";
5
+ import { randomFloatBetween } from "../../../core/math/random/randomFloatBetween.js";
6
6
 
7
7
  /**
8
8
  *
@@ -1,4 +1,4 @@
1
- import { MicronVertexDataSpec } from "./MicronVertexDataSpec.js";
1
+ import { VertexDataSpec } from "../../geometry/VertexDataSpec.js";
2
2
  import { assert } from "../../../../core/assert.js";
3
3
 
4
4
  let id_counter = 0;
@@ -30,9 +30,9 @@ export class MicronGeometry {
30
30
 
31
31
  /**
32
32
  *
33
- * @type {MicronVertexDataSpec|null}
33
+ * @type {VertexDataSpec|null}
34
34
  */
35
- this.vertex_spec = new MicronVertexDataSpec();
35
+ this.vertex_spec = new VertexDataSpec();
36
36
 
37
37
  /**
38
38
  *
@@ -1,6 +1,6 @@
1
1
  import { BinaryClassSerializationAdapter } from "../../../../ecs/storage/binary/BinaryClassSerializationAdapter.js";
2
2
  import { MicronGeometry } from "../MicronGeometry.js";
3
- import { MicronGeometryBufferAttributeSpec } from "../MicronGeometryBufferAttributeSpec.js";
3
+ import { AttributeSpec } from "../../../geometry/AttributeSpec.js";
4
4
  import { MicronGeometryPatch } from "../MicronGeometryPatch.js";
5
5
  import { serialize_patch } from "./serialize_patch.js";
6
6
  import { deserialize_patch } from "./deserialize_patch.js";
@@ -63,7 +63,7 @@ export class MicronGeometryBinarySerializationAdapter extends BinaryClassSeriali
63
63
  const attribute_count = buffer.readUintVar();
64
64
  const attributes = [];
65
65
  for (let i = 0; i < attribute_count; i++) {
66
- const spec = new MicronGeometryBufferAttributeSpec();
66
+ const spec = new AttributeSpec();
67
67
 
68
68
  deserialize_attribute_spec(buffer, spec);
69
69
  attributes[i] = spec;
@@ -3,7 +3,7 @@ import { computeDataTypeByIndex } from "../../../../../core/collection/table/com
3
3
  /**
4
4
  *
5
5
  * @param {BinaryBuffer} buffer
6
- * @param {MicronGeometryBufferAttributeSpec} spec
6
+ * @param {AttributeSpec} spec
7
7
  */
8
8
  export function deserialize_attribute_spec(buffer, spec) {
9
9
 
@@ -3,7 +3,7 @@ import { DataTypeIndices } from "../../../../../core/collection/table/DataTypeIn
3
3
  /**
4
4
  *
5
5
  * @param {BinaryBuffer} buffer
6
- * @param {MicronGeometryBufferAttributeSpec} spec
6
+ * @param {AttributeSpec} spec
7
7
  */
8
8
  export function serialize_attribute_spec(buffer, spec) {
9
9
  buffer.writeUTF8String(spec.name);
@@ -1,7 +1,7 @@
1
1
  import { mortonEncode_magicbits } from "../../../../core/geom/3d/morton/mortonEncode_magicbits.js";
2
- import { computeHashFloat } from "../../../../core/math/MathUtils.js";
3
2
  import { isArrayEqualStrict } from "../../../../core/collection/array/isArrayEqualStrict.js";
4
3
  import { SimpleObjectPoolFactory } from "../../../../core/model/object/SimpleObjectPoolFactory.js";
4
+ import { computeHashFloat } from "../../../../core/math/hash/computeHashFloat.js";
5
5
 
6
6
  export class PatchCacheKey {
7
7
  constructor() {
@@ -53,18 +53,18 @@ function normalized_internal_format(dt, channel_count) {
53
53
  export class AttributeDataTexture {
54
54
  /**
55
55
  *
56
- * @param {MicronGeometryBufferAttributeSpec} spec
56
+ * @param {AttributeSpec} spec
57
57
  * @param {number} column_count
58
58
  */
59
59
  constructor(spec, column_count) {
60
60
  assert.defined(spec, 'spec');
61
- assert.equal(spec.isMicronGeometryBufferAttributeSpec, true, 'spec.isMicronGeometryBufferAttributeSpec !== true');
61
+ assert.equal(spec.isAttributeSpec, true, 'spec.isAttributeSpec !== true');
62
62
 
63
63
  assert.isNonNegativeInteger(column_count, 'column_count');
64
64
 
65
65
  /**
66
66
  *
67
- * @type {MicronGeometryBufferAttributeSpec}
67
+ * @type {AttributeSpec}
68
68
  * @private
69
69
  */
70
70
  this.__spec = spec;
@@ -90,7 +90,7 @@ export class AttributeDataTexture {
90
90
 
91
91
  /**
92
92
  *
93
- * @return {MicronGeometryBufferAttributeSpec}
93
+ * @return {AttributeSpec}
94
94
  */
95
95
  get spec() {
96
96
  return this.__spec;
@@ -237,8 +237,8 @@ export class AttributeDataTexture {
237
237
  /**
238
238
  *
239
239
  * @param {number} slot
240
- * @param {number[]} indices
241
- * @param {number[]} source
240
+ * @param {number[]} indices triangle indices (index buffer)
241
+ * @param {number[]} source vertex data
242
242
  */
243
243
  write_slot_from_indexed(slot, indices, source) {
244
244
  assert.isNonNegativeInteger(slot, 'index');
@@ -289,8 +289,10 @@ export class AttributeDataTexture {
289
289
  const start_index = slot_size * index;
290
290
  const end_index = slot_size * (index + 1);
291
291
 
292
- this.__texture.image.data.fill(0, start_index, end_index);
293
- this.__texture.needsUpdate = true;
292
+ const texture = this.__texture;
293
+
294
+ texture.image.data.fill(0, start_index, end_index);
295
+ texture.needsUpdate = true;
294
296
  }
295
297
 
296
298
  /**
@@ -320,7 +322,7 @@ export class AttributeDataTexture {
320
322
  /**
321
323
  *
322
324
  * @return {AttributeDataTexture}
323
- * @param {MicronGeometryBufferAttributeSpec} spec
325
+ * @param {AttributeSpec} spec
324
326
  * @param {number} column_count
325
327
  */
326
328
  static from(spec, column_count) {
@@ -11,7 +11,6 @@ import Signal from "../../../../../core/events/signal/Signal.js";
11
11
  import { ATTRIBUTE_NAME_ADDRESS, ATTRIBUTE_NAME_TRANSFORM } from "./shader/constants.js";
12
12
  import { shader_rewrite_standard } from "./shader/shader_rewrite_standard.js";
13
13
 
14
-
15
14
  export class ThreeInstancedAdapter {
16
15
  /**
17
16
  *
@@ -79,7 +78,6 @@ export class ThreeInstancedAdapter {
79
78
  const position_buffer = new BufferAttribute(new Uint8Array(MICRON_PATCH_SIZE_MAX * 3 * 3), 3, false);
80
79
 
81
80
 
82
-
83
81
  position_buffer.setUsage(StaticReadUsage);
84
82
 
85
83
  geo.setAttribute('position', position_buffer);
@@ -4,7 +4,7 @@ import { DataType2TypedArrayConstructorMapping } from "../../../../../core/colle
4
4
  import { getTransformedPositionsCached } from "./getTransformedPositionsCached.js";
5
5
  import { Color } from "../../../../../core/color/Color.js";
6
6
  import { seededRandom } from "../../../../../core/math/random/seededRandom.js";
7
- import { randomFloatBetween } from "../../../../../core/math/MathUtils.js";
7
+ import { randomFloatBetween } from "../../../../../core/math/random/randomFloatBetween.js";
8
8
 
9
9
 
10
10
  const scratch_random = seededRandom(0);
@@ -2,6 +2,9 @@ import { ParticleEmitter } from "./particular/engine/emitter/ParticleEmitter.js"
2
2
  import { GameAssetType } from "../../asset/GameAssetType.js";
3
3
  import { assert } from "../../../core/assert.js";
4
4
 
5
+ /**
6
+ * @deprecated Use "Effect" API to achieve the same results
7
+ */
5
8
  export class ParticleEmitterLibrary {
6
9
  /**
7
10
  *
@@ -8,6 +8,7 @@ import { ParticleEmitterLibrary } from "../ParticleEmitterLibrary.js";
8
8
  import { GameAssetType } from "../../../asset/GameAssetType.js";
9
9
  import { ImageRGBADataLoader } from "../../../asset/loaders/image/ImageRGBADataLoader.js";
10
10
  import { StandardFrameBuffers } from "../../StandardFrameBuffers.js";
11
+ import { assert } from "../../../../core/assert.js";
11
12
 
12
13
  /**
13
14
  *
@@ -28,36 +29,38 @@ function putEmitterToSleep(emitter) {
28
29
  emitter.setFlag(ParticleEmitterFlag.Sleeping);
29
30
  }
30
31
 
31
- export class ParticleEmitterSystem2 extends System {
32
+ export class ParticleEmitterSystem extends System {
32
33
  /**
33
34
  *
34
35
  * @extends {System.<ParticleEmitter>}
35
36
  * @constructor
36
- * @param {AssetManager} assetManager
37
- * @param {GraphicsEngine} graphicsEngine
37
+ * @param {Engine} engine
38
38
  */
39
- constructor(assetManager, graphicsEngine) {
39
+ constructor(engine) {
40
40
  super();
41
41
 
42
+ assert.defined(engine, 'engine');
43
+ assert.equal(engine.isEngine, true, 'engine.isEngine !== true');
44
+
42
45
  this.dependencies = [ParticleEmitter, Transform];
43
46
 
44
47
  /**
45
48
  *
46
49
  * @type {GraphicsEngine}
47
50
  */
48
- this.graphicsEngine = graphicsEngine;
51
+ this.graphicsEngine = engine.graphics;
49
52
 
50
53
  /**
51
54
  *
52
55
  * @type {AssetManager}
53
56
  */
54
- this.assetManager = assetManager;
57
+ this.assetManager = engine.assetManager;
55
58
 
56
59
  /**
57
60
  *
58
61
  * @type {ParticularEngine}
59
62
  */
60
- this.particleEngine = new ParticularEngine(assetManager);
63
+ this.particleEngine = new ParticularEngine(engine.assetManager, engine.graphics.getMaterialManager());
61
64
 
62
65
  /**
63
66
  *
@@ -72,14 +75,19 @@ export class ParticleEmitterSystem2 extends System {
72
75
  this.bvh = null;
73
76
 
74
77
  /**
75
- *
78
+ * @deprecated Use "Effect" API to achieve the same results
76
79
  * @type {ParticleEmitterLibrary}
77
80
  */
78
- this.library = new ParticleEmitterLibrary(assetManager);
81
+ this.__library = new ParticleEmitterLibrary(engine.assetManager);
79
82
 
80
83
  this.__handlers = [];
81
84
  }
82
85
 
86
+ get library() {
87
+ console.warn('Deprecated, use "Effect" API to achieve the same results');
88
+ return this.__library;
89
+ }
90
+
83
91
  get componentClass() {
84
92
  return ParticleEmitter;
85
93
  }
@@ -8,8 +8,14 @@ import { SimulationStepApplyForce } from "./simulator/SimulationStepApplyForce.j
8
8
  import { SimulationStepCurlNoiseVelocity } from "./simulator/SimulationStepCurlNoiseVelocity.js";
9
9
 
10
10
 
11
- function ParticularEngine(assetManager) {
12
- this.shaderManager = new ShaderManager(assetManager);
11
+ /**
12
+ *
13
+ * @param {AssetManager} assetManager
14
+ * @param {MaterialManager} material_manager
15
+ * @constructor
16
+ */
17
+ function ParticularEngine(assetManager, material_manager) {
18
+ this.shaderManager = new ShaderManager(assetManager, material_manager);
13
19
 
14
20
  /**
15
21
  *
@@ -1,20 +1,84 @@
1
+ import { VertexDataSpec } from "../../../../geometry/VertexDataSpec.js";
2
+ import { AttributeSpec } from "../../../../geometry/AttributeSpec.js";
3
+ import { DataType } from "../../../../../../core/collection/table/DataType.js";
4
+
1
5
  //build particle spec
2
- import { ParticleSpecification } from "../../group/ParticleSpecification.js";
3
- import { ParticleAttribute } from "../../group/ParticleAttribute.js";
4
- import { ParticleAttributeType, ParticleDataType } from "../../group/ParticleGroup.js";
6
+ export const PARTICULAR_PARTICLE_SPECIFICATION = new VertexDataSpec();
7
+
8
+ PARTICULAR_PARTICLE_SPECIFICATION.add(AttributeSpec.fromJSON({
9
+ name: 'position',
10
+ itemSize: 3,
11
+ type: DataType.Float32,
12
+ normalized: false
13
+ }));
14
+ PARTICULAR_PARTICLE_SPECIFICATION.add(AttributeSpec.fromJSON({
15
+ name: 'age',
16
+ itemSize: 1,
17
+ type: DataType.Float32,
18
+ normalized: false
19
+ }));
20
+ PARTICULAR_PARTICLE_SPECIFICATION.add(AttributeSpec.fromJSON({
21
+ name: 'deathAge',
22
+ itemSize: 1,
23
+ type: DataType.Float32,
24
+ normalized: false
25
+ }));
26
+
27
+ PARTICULAR_PARTICLE_SPECIFICATION.add(AttributeSpec.fromJSON({
28
+ name: 'atlasPatch',
29
+ itemSize: 4,
30
+ type: DataType.Uint16,
31
+ normalized: true
32
+ }));
5
33
 
6
- export const PARTICULAR_PARTICLE_SPECIFICATION = new ParticleSpecification();
34
+ // TODO convert "size" to scale instead
35
+ PARTICULAR_PARTICLE_SPECIFICATION.add(AttributeSpec.fromJSON({
36
+ name: 'size',
37
+ itemSize: 1,
38
+ type: DataType.Float32,
39
+ normalized: false
40
+ }));
7
41
 
8
- PARTICULAR_PARTICLE_SPECIFICATION.add(new ParticleAttribute('position', ParticleAttributeType.Vector3, ParticleDataType.Float32));
9
- PARTICULAR_PARTICLE_SPECIFICATION.add(new ParticleAttribute('age', ParticleAttributeType.Scalar, ParticleDataType.Float32));
10
- PARTICULAR_PARTICLE_SPECIFICATION.add(new ParticleAttribute('deathAge', ParticleAttributeType.Scalar, ParticleDataType.Float32));
11
- PARTICULAR_PARTICLE_SPECIFICATION.add(new ParticleAttribute('atlasPatch', ParticleAttributeType.Vector4, ParticleDataType.Float32));
12
- PARTICULAR_PARTICLE_SPECIFICATION.add(new ParticleAttribute('size', ParticleAttributeType.Scalar, ParticleDataType.Float32));
13
- PARTICULAR_PARTICLE_SPECIFICATION.add(new ParticleAttribute('layerPosition', ParticleAttributeType.Scalar, ParticleDataType.Float32));
14
- PARTICULAR_PARTICLE_SPECIFICATION.add(new ParticleAttribute('velocity', ParticleAttributeType.Vector3, ParticleDataType.Float32));
15
- PARTICULAR_PARTICLE_SPECIFICATION.add(new ParticleAttribute('rotation', ParticleAttributeType.Scalar, ParticleDataType.Float32));
16
- PARTICULAR_PARTICLE_SPECIFICATION.add(new ParticleAttribute('rotationSpeed', ParticleAttributeType.Scalar, ParticleDataType.Float32));
17
- PARTICULAR_PARTICLE_SPECIFICATION.add(new ParticleAttribute('color', ParticleAttributeType.Vector4, ParticleDataType.Float32));
18
- PARTICULAR_PARTICLE_SPECIFICATION.add(new ParticleAttribute('blending', ParticleAttributeType.Scalar, ParticleDataType.Uint8));
19
- PARTICULAR_PARTICLE_SPECIFICATION.add(new ParticleAttribute('size_initial', ParticleAttributeType.Scalar, ParticleDataType.Float32));
42
+ PARTICULAR_PARTICLE_SPECIFICATION.add(AttributeSpec.fromJSON({
43
+ name: 'layerPosition',
44
+ itemSize: 1,
45
+ type: DataType.Uint8,
46
+ normalized: false
47
+ }));
20
48
 
49
+ PARTICULAR_PARTICLE_SPECIFICATION.add(AttributeSpec.fromJSON({
50
+ name: 'velocity',
51
+ itemSize: 3,
52
+ type: DataType.Float32,
53
+ normalized: false
54
+ }));
55
+ PARTICULAR_PARTICLE_SPECIFICATION.add(AttributeSpec.fromJSON({
56
+ name: 'rotation',
57
+ itemSize: 1,
58
+ type: DataType.Float32,
59
+ normalized: false
60
+ }));
61
+ PARTICULAR_PARTICLE_SPECIFICATION.add(AttributeSpec.fromJSON({
62
+ name: 'rotationSpeed',
63
+ itemSize: 1,
64
+ type: DataType.Float32,
65
+ normalized: false
66
+ }));
67
+ PARTICULAR_PARTICLE_SPECIFICATION.add(AttributeSpec.fromJSON({
68
+ name: 'color',
69
+ itemSize: 4,
70
+ type: DataType.Uint8,
71
+ normalized: true
72
+ }));
73
+ PARTICULAR_PARTICLE_SPECIFICATION.add(AttributeSpec.fromJSON({
74
+ name: 'blending',
75
+ itemSize: 1,
76
+ type: DataType.Float32,
77
+ normalized: false
78
+ }));
79
+ PARTICULAR_PARTICLE_SPECIFICATION.add(AttributeSpec.fromJSON({
80
+ name: 'size_initial',
81
+ itemSize: 1,
82
+ type: DataType.Float32,
83
+ normalized: false
84
+ }));