@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
@@ -1,7 +1,7 @@
1
1
  import { System } from "../../System.js";
2
2
  import { InstancedFoliage } from "../InstancedFoliage.js";
3
3
  import { Cache } from "../../../../core/cache/Cache.js";
4
- import { Foliage2 } from "./Foliage2.js";
4
+ import { InstancedMeshComponent } from "./InstancedMeshComponent.js";
5
5
  import { guessAssetType } from "../../../asset/guessAssetType.js";
6
6
 
7
7
 
@@ -19,7 +19,7 @@ function cleanupLayer(layerData, renderLayer) {
19
19
 
20
20
  /**
21
21
  *
22
- * @param {FoliageLayer} layer
22
+ * @param {InstancedMeshLayer} layer
23
23
  * @param {AssetManager} assetManager
24
24
  * @returns {Promise<InstancedFoliage>}
25
25
  */
@@ -60,7 +60,7 @@ export function loadFoliageLayer(layer, assetManager) {
60
60
 
61
61
  /**
62
62
  *
63
- * @param {FoliageLayer} layer
63
+ * @param {InstancedMeshLayer} layer
64
64
  * @param {Cache<string, Promise<InstancedFoliage>>} cache
65
65
  * @param {AssetManager} assetManager
66
66
  * @returns {Promise<InstancedFoliage>}
@@ -83,7 +83,7 @@ export class Foliage2System extends System {
83
83
  * @param {AssetManager} assetManager
84
84
  * @param {GraphicsEngine} graphicsEngine
85
85
  * @constructor
86
- * @extends {System.<Foliage2>}
86
+ * @extends {System.<InstancedMeshComponent>}
87
87
  */
88
88
  constructor(assetManager, graphicsEngine) {
89
89
  super();
@@ -96,7 +96,7 @@ export class Foliage2System extends System {
96
96
  */
97
97
  this.renderLayer = null;
98
98
 
99
- this.dependencies = [Foliage2];
99
+ this.dependencies = [InstancedMeshComponent];
100
100
 
101
101
  /**
102
102
  *
@@ -166,7 +166,7 @@ export class Foliage2System extends System {
166
166
 
167
167
  /**
168
168
  *
169
- * @param {Foliage2} foliage
169
+ * @param {InstancedMeshComponent} foliage
170
170
  * @param entity
171
171
  */
172
172
  link(foliage, entity) {
@@ -181,7 +181,7 @@ export class Foliage2System extends System {
181
181
  for (let i = 0; i < layer_count; i++) {
182
182
  /**
183
183
  *
184
- * @type {FoliageLayer}
184
+ * @type {InstancedMeshLayer}
185
185
  */
186
186
  const foliage_layer = layerList.get(i);
187
187
 
@@ -0,0 +1,37 @@
1
+ import List from "../../../../core/collection/list/List.js";
2
+ import { InstancedMeshLayer } from "./InstancedMeshLayer.js";
3
+
4
+
5
+ export class InstancedMeshComponent {
6
+ constructor() {
7
+ /**
8
+ *
9
+ * @type {List<InstancedMeshLayer>}
10
+ * @readonly
11
+ */
12
+ this.layers = new List();
13
+ }
14
+
15
+ toJSON() {
16
+ return this.layers.toJSON();
17
+ }
18
+
19
+ fromJSON(data) {
20
+ this.layers.fromJSON(data, InstancedMeshLayer);
21
+ }
22
+
23
+ dispose() {
24
+
25
+ const layers = this.layers;
26
+ const n = layers.length;
27
+
28
+ for (let i = 0; i < n; i++) {
29
+ const layer = layers.get(i);
30
+
31
+ layer.dispose();
32
+ }
33
+ }
34
+ }
35
+
36
+ InstancedMeshComponent.typeName = "InstancedMeshComponent";
37
+
@@ -1,12 +1,11 @@
1
+ import { InstancedFoliage } from "../InstancedFoliage.js";
1
2
  import ObservedString from "../../../../core/model/ObservedString.js";
2
- import List from "../../../../core/collection/list/List.js";
3
3
  import ObservedBoolean from "../../../../core/model/ObservedBoolean.js";
4
- import { InstancedFoliage } from "../InstancedFoliage.js";
4
+ import { computeHashIntegerArray } from "../../../../core/collection/array/computeHashIntegerArray.js";
5
5
  import { Base64 } from "../../../../core/binary/Base64.js";
6
6
  import { BinaryBuffer } from "../../../../core/binary/BinaryBuffer.js";
7
- import { computeHashIntegerArray } from "../../../../core/math/MathUtils.js";
8
7
 
9
- export class FoliageLayer {
8
+ export class InstancedMeshLayer {
10
9
  constructor() {
11
10
  /**
12
11
  *
@@ -22,12 +21,6 @@ export class FoliageLayer {
22
21
  */
23
22
  this.modelURL = new ObservedString("");
24
23
 
25
- /**
26
- * @deprecated
27
- * @type {ObservedString}
28
- */
29
- this.dataURL = new ObservedString("");
30
-
31
24
  /**
32
25
  *
33
26
  * @type {ObservedBoolean}
@@ -123,38 +116,3 @@ export class FoliageLayer {
123
116
  this.data.deserialize(buffer);
124
117
  }
125
118
  }
126
-
127
-
128
- export class Foliage2 {
129
- constructor() {
130
- /**
131
- *
132
- * @type {List<FoliageLayer>}
133
- * @readonly
134
- */
135
- this.layers = new List();
136
- }
137
-
138
- toJSON() {
139
- return this.layers.toJSON();
140
- }
141
-
142
- fromJSON(data) {
143
- this.layers.fromJSON(data, FoliageLayer);
144
- }
145
-
146
- dispose() {
147
-
148
- const layers = this.layers;
149
- const n = layers.length;
150
-
151
- for (let i = 0; i < n; i++) {
152
- const layer = layers.get(i);
153
-
154
- layer.dispose();
155
- }
156
- }
157
- }
158
-
159
- Foliage2.typeName = "Foliage2";
160
-
@@ -1,18 +1,19 @@
1
1
  import { BinaryClassSerializationAdapter } from "../../storage/binary/BinaryClassSerializationAdapter.js";
2
- import { Foliage2, FoliageLayer } from "./Foliage2.js";
2
+ import { InstancedMeshComponent } from "./InstancedMeshComponent.js";
3
+ import { InstancedMeshLayer } from "./InstancedMeshLayer.js";
3
4
 
4
5
  export class InstancedMeshSerializationAdapter extends BinaryClassSerializationAdapter {
5
6
  constructor() {
6
7
  super();
7
8
 
8
- this.klass = Foliage2;
9
+ this.klass = InstancedMeshComponent;
9
10
  this.version = 0;
10
11
  }
11
12
 
12
13
  /**
13
14
  *
14
15
  * @param {BinaryBuffer} buffer
15
- * @param {Foliage2} value
16
+ * @param {InstancedMeshComponent} value
16
17
  */
17
18
  serialize(buffer, value) {
18
19
  value.layers.toBinaryBuffer(buffer);
@@ -21,10 +22,10 @@ export class InstancedMeshSerializationAdapter extends BinaryClassSerializationA
21
22
  /**
22
23
  *
23
24
  * @param {BinaryBuffer} buffer
24
- * @param {Foliage2} value
25
+ * @param {InstancedMeshComponent} value
25
26
  */
26
27
  deserialize(buffer, value) {
27
28
 
28
- value.layers.fromBinaryBuffer(buffer, FoliageLayer);
29
+ value.layers.fromBinaryBuffer(buffer, InstancedMeshLayer);
29
30
  }
30
31
  }
@@ -2,13 +2,14 @@ import EntityBuilder from "../../EntityBuilder.js";
2
2
  import { loadFoliageLayer } from "./Foliage2System.js";
3
3
  import Mesh, { MeshFlags } from "../../../graphics/ecs/mesh/Mesh.js";
4
4
  import { Transform } from "../../transform/Transform.js";
5
- import { Foliage2, FoliageLayer } from "./Foliage2.js";
5
+ import { InstancedMeshComponent } from "./InstancedMeshComponent.js";
6
6
  import { InstancedFoliage } from "../InstancedFoliage.js";
7
7
  import { buildTreeOptimizationTask } from "../../../../core/bvh2/BVHTasks.js";
8
8
  import Task from "../../../../core/process/task/Task.js";
9
9
  import TaskSignal from "../../../../core/process/task/TaskSignal.js";
10
10
  import { countTask, promiseTask } from "../../../../core/process/task/TaskUtils.js";
11
11
  import { assert } from "../../../../core/assert.js";
12
+ import { InstancedMeshLayer } from "./InstancedMeshLayer.js";
12
13
 
13
14
  /**
14
15
  * Convert all existing instanced mesh components to individual Transform+Mesh pairs
@@ -23,7 +24,7 @@ export function convertInstancedMeshComponents2Entities(dataset, assetManager) {
23
24
 
24
25
  /**
25
26
  *
26
- * @param {Foliage2} foliage2
27
+ * @param {InstancedMeshComponent} foliage2
27
28
  * @param entity
28
29
  */
29
30
  function visitFoliageEntities(foliage2, entity) {
@@ -59,11 +60,11 @@ export function convertInstancedMeshComponents2Entities(dataset, assetManager) {
59
60
  entitiesToStrip.push(entity);
60
61
  }
61
62
 
62
- dataset.traverseEntities([Foliage2], visitFoliageEntities);
63
+ dataset.traverseEntities([InstancedMeshComponent], visitFoliageEntities);
63
64
 
64
65
  //remove converted foliage components
65
66
  entitiesToStrip.forEach(function (entity) {
66
- dataset.removeComponentFromEntity(entity, Foliage2);
67
+ dataset.removeComponentFromEntity(entity, InstancedMeshComponent);
67
68
  });
68
69
  }
69
70
 
@@ -125,7 +126,7 @@ export function optimizeIndividualMeshesEntitiesToInstances(dataset, threshold =
125
126
 
126
127
  const tasks = [];
127
128
 
128
- const foliage2 = new Foliage2();
129
+ const foliage2 = new InstancedMeshComponent();
129
130
 
130
131
  const tBuild = new Task({
131
132
  name: "Build Meshes",
@@ -213,7 +214,7 @@ export function optimizeIndividualMeshesEntitiesToInstances(dataset, threshold =
213
214
  cycleFunction: function () {
214
215
 
215
216
  //create foliage layer
216
- const layer = new FoliageLayer();
217
+ const layer = new InstancedMeshLayer();
217
218
 
218
219
  layer.data = instancedFoliage;
219
220
  layer.modelURL.set(modelURL);
@@ -75,6 +75,10 @@ export class FogOfWar {
75
75
  */
76
76
  this.texture = null;
77
77
 
78
+ /**
79
+ * Resolution scale of FoW versus terrain resolution, higher number makes FoW more detailed
80
+ * @type {Vector1}
81
+ */
78
82
  this.scale = new Vector1(1);
79
83
 
80
84
  /**
@@ -12,6 +12,7 @@ import { BlendingType } from "../../graphics/texture/sampler/BlendingType.js";
12
12
  import { FogOfWarRenderer } from "./shader/FogOfWarRenderer.js";
13
13
  import { StandardFrameBuffers } from "../../graphics/StandardFrameBuffers.js";
14
14
  import { CompositLayer } from "../../graphics/composit/CompositLayer.js";
15
+ import { CompositingStages } from "../../graphics/composit/CompositingStages.js";
15
16
 
16
17
 
17
18
  const frustum = new Frustum();
@@ -133,6 +134,7 @@ export class FogOfWarSystem extends System {
133
134
 
134
135
  const compositerLayer = graphics.layerComposer.createLayer({}, BlendingType.Normal);
135
136
  compositerLayer.name = 'Fog of War';
137
+ compositerLayer.stage = CompositingStages.POST_TRANSPARENT;
136
138
 
137
139
  // Fog of war should be drawn last typically, over everything else, so we set order to a large number
138
140
  compositerLayer.order = 1000;
@@ -1,8 +1,8 @@
1
1
  import { buildScreenSpaceFogOfWarShader } from "./screenSpaceFogOfWarShader.js";
2
2
  import { assert } from "../../../../core/assert.js";
3
3
  import { Mesh, OrthographicCamera, Scene } from "three";
4
- import { isValueBetweenInclusive } from "../../../../core/math/MathUtils.js";
5
4
  import { FULL_SCREEN_TRIANGLE_GEOMETRY } from "../../../graphics/geometry/FULL_SCREEN_TRIANGLE_GEOMETRY.js";
5
+ import { isValueBetweenInclusive } from "../../../../core/math/isValueBetweenInclusive.js";
6
6
 
7
7
  /**
8
8
  *
@@ -6,9 +6,9 @@ import ObservedBoolean from "../../../core/model/ObservedBoolean.js";
6
6
  import { BinaryClassSerializationAdapter } from "../storage/binary/BinaryClassSerializationAdapter.js";
7
7
  import { COMPONENT_SERIALIZATION_TRANSIENT_FIELD } from "../storage/COMPONENT_SERIALIZATION_TRANSIENT_FIELD.js";
8
8
  import { assert } from "../../../core/assert.js";
9
- import { computeHashIntegerArray } from "../../../core/math/MathUtils.js";
10
9
  import { objectDeepEquals } from "../../../core/model/object/objectDeepEquals.js";
11
10
  import { computeStringHash } from "../../../core/primitives/strings/computeStringHash.js";
11
+ import { computeHashIntegerArray } from "../../../core/collection/array/computeHashIntegerArray.js";
12
12
 
13
13
  /**
14
14
  *
@@ -7,7 +7,7 @@
7
7
 
8
8
  import Vector3 from '../../../../core/geom/Vector3.js';
9
9
  import { HeadsUpDisplayFlag } from "./HeadsUpDisplayFlag.js";
10
- import { computeHashIntegerArray } from "../../../../core/math/MathUtils.js";
10
+ import { computeHashIntegerArray } from "../../../../core/collection/array/computeHashIntegerArray.js";
11
11
 
12
12
  class HeadsUpDisplay {
13
13
  /**
@@ -144,7 +144,9 @@ class HeadsUpDisplaySystem extends System {
144
144
  up.set(worldPositionX, worldPositionY + 1, worldPositionZ, 1);
145
145
  up.threeApplyMatrix4(projectionMatrix);
146
146
 
147
+ // compute perspective divide
147
148
  const d = 1 / Math.abs(up.w);
149
+
148
150
  up.x *= d;
149
151
  up.y *= d;
150
152
  up.z *= d;
@@ -5,7 +5,8 @@
5
5
  import Vector2 from "../../../../core/geom/Vector2.js";
6
6
  import ObservedBoolean from "../../../../core/model/ObservedBoolean.js";
7
7
  import { BinaryClassSerializationAdapter } from "../../storage/binary/BinaryClassSerializationAdapter.js";
8
- import { computeHashFloat, computeHashIntegerArray } from "../../../../core/math/MathUtils.js";
8
+ import { computeHashIntegerArray } from "../../../../core/collection/array/computeHashIntegerArray.js";
9
+ import { computeHashFloat } from "../../../../core/math/hash/computeHashFloat.js";
9
10
 
10
11
  /**
11
12
  * @readonly
@@ -37,7 +37,7 @@ export class BinarySerializationRegistry {
37
37
  * @returns {boolean}
38
38
  */
39
39
  registerAdapter(adapter, className) {
40
- assert.notEqual(adapter, undefined, 'adapter is undefined');
40
+ assert.defined(adapter, 'adapter');
41
41
  assert.ok(adapter.isBinaryClassSerializationAdapter, 'adapter is not a BinaryClassSerializationAdapter');
42
42
 
43
43
  if (className === undefined) {
@@ -38,7 +38,7 @@ export class AbstractContextSystem extends System {
38
38
  // TODO
39
39
  },
40
40
  (ctx) => {
41
- ctx.unlink();
41
+ //ctx.unlink();
42
42
  }
43
43
  );
44
44
 
@@ -8,7 +8,7 @@ import PhysicalBody from '../components/PhysicalBody.js';
8
8
  import Motion from '../components/Motion.js';
9
9
  import Renderable from '../components/Renderable.js';
10
10
  import { Matrix4 as ThreeMatrix4, Vector3 as ThreeVector3 } from 'three';
11
- import { solveQuadratic } from "../../../core/math/MathUtils.js";
11
+ import { solveQuadratic } from "../../../core/math/solveQuadratic.js";
12
12
 
13
13
  /**
14
14
  * Return the firing solution for a projectile starting at 'src' with
@@ -10,10 +10,10 @@ import PhysicalBody from '../components/PhysicalBody.js';
10
10
  import Motion from '../components/Motion.js';
11
11
  import { Transform } from '../transform/Transform.js';
12
12
  import Steering, { SteeringEvents, SteeringFlags } from '../components/Steering.js';
13
- import { solveQuadratic } from "../../../core/math/MathUtils.js";
14
13
  import Vector3 from "../../../core/geom/Vector3.js";
15
14
  import { alignToVector } from "../terrain/ecs/ClingToTerrainSystem.js";
16
15
  import { v3_dot } from "../../../core/geom/v3_dot.js";
16
+ import { solveQuadratic } from "../../../core/math/solveQuadratic.js";
17
17
 
18
18
  /**
19
19
  *
@@ -13,6 +13,23 @@ class TagSystem extends System {
13
13
 
14
14
  this.entityManager = null;
15
15
  }
16
+
17
+ /**
18
+ *
19
+ * @param {string} tag
20
+ * @param {EntityComponentDataset} ecd
21
+ * @returns {number[]}
22
+ */
23
+ static find_entities_with_tag(tag, ecd) {
24
+ const r = [];
25
+ ecd.traverseComponents(Tag, (t, e) => {
26
+ if (t.contains(tag)) {
27
+ r.push(e);
28
+ }
29
+ });
30
+
31
+ return r;
32
+ }
16
33
  }
17
34
 
18
35
 
@@ -5,6 +5,7 @@ import { Cache } from "../../../../../core/cache/Cache.js";
5
5
  import { computeUTF8StringByteSize } from "../../../../../core/primitives/strings/StringUtils.js";
6
6
  import Signal from "../../../../../core/events/signal/Signal.js";
7
7
  import { computeStringHash } from "../../../../../core/primitives/strings/computeStringHash.js";
8
+ import { copy_Sampler2D_channel_data } from "../../../../graphics/texture/sampler/copy_Sampler2D_channel_data.js";
8
9
 
9
10
  /**
10
11
  *
@@ -107,33 +108,28 @@ export class TerrainLayer {
107
108
  .then(assert => {
108
109
  const image = assert.create();
109
110
 
110
- const s = image.width * image.height;
111
+ const source_item_size = image.itemSize;
111
112
 
112
- const data = image.data;
113
+ const source_data = image.data;
114
+
115
+ // RGB
116
+ const destination_item_size = 3;
113
117
 
114
118
  if (this.diffuse === null || this.diffuse.width !== image.width || this.diffuse.height !== image.height) {
115
119
  // loaded image does not match the side of the layer
116
- this.diffuse = Sampler2D.uint8(3, image.width, image.height);
120
+ this.diffuse = Sampler2D.uint8(destination_item_size, image.width, image.height);
117
121
  }
118
122
 
119
- const layerData = this.diffuse.data;
120
-
121
- // copy RGBA image data into the layer's RGB data
123
+ const source = new Sampler2D(source_data,source_item_size,image.width, image.height);
122
124
 
123
- for (let i = 0; i < s; i++) {
124
- const a4 = i * 4;
125
- const a3 = i * 3;
126
-
127
- layerData[a3] = data[a4];
128
- layerData[a3 + 1] = data[a4 + 1];
129
- layerData[a3 + 2] = data[a4 + 2];
130
- }
125
+ copy_Sampler2D_channel_data(source,this.diffuse);
131
126
 
132
127
  this.onChanged.send0();
133
128
 
134
- const cacheCopy = Sampler2D.uint8(3, image.width, image.height);
129
+ // write to cache
130
+ const cacheCopy = Sampler2D.uint8(destination_item_size, image.width, image.height);
135
131
 
136
- cacheCopy.data.set(layerData);
132
+ cacheCopy.data.set(this.diffuse.data);
137
133
 
138
134
  cache.put(path, cacheCopy);
139
135
 
@@ -14,7 +14,6 @@ import CheckersTexture from '../../../graphics/texture/CheckersTexture.js';
14
14
  import { MeshPhongMaterial } from 'three';
15
15
  import { assert } from "../../../../core/assert.js";
16
16
  import { Color } from "../../../../core/color/Color.js";
17
- import { randomFloatBetween } from "../../../../core/math/MathUtils.js";
18
17
  import { noop } from "../../../../core/function/Functions.js";
19
18
  import Vector3 from "../../../../core/geom/Vector3.js";
20
19
  import { SurfacePoint3 } from "../../../../core/geom/3d/SurfacePoint3.js";
@@ -24,6 +23,7 @@ import { traverseBinaryNodeUsingVisitor } from "../../../../core/bvh2/traversal/
24
23
  import { aabb2_overlapExists } from "../../../../core/geom/AABB2.js";
25
24
  import ObservedInteger from "../../../../core/model/ObservedInteger.js";
26
25
  import { NumericInterval } from "../../../../core/math/interval/NumericInterval.js";
26
+ import { randomFloatBetween } from "../../../../core/math/random/randomFloatBetween.js";
27
27
 
28
28
  class TerrainTileManager {
29
29
  /**
@@ -1,3 +1,5 @@
1
+ import { computeStringHash } from "../../../core/primitives/strings/computeStringHash.js";
2
+
1
3
  export class TooltipComponent {
2
4
  constructor() {
3
5
  /**
@@ -7,6 +9,19 @@ export class TooltipComponent {
7
9
  this.key = '';
8
10
  }
9
11
 
12
+ hash() {
13
+ return computeStringHash(this.key);
14
+ }
15
+
16
+ /**
17
+ *
18
+ * @param {TooltipComponent} other
19
+ * @return {boolean}
20
+ */
21
+ equals(other) {
22
+ return this.key === other.key;
23
+ }
24
+
10
25
  toJSON() {
11
26
  return {
12
27
  key: this.key
@@ -5,14 +5,13 @@
5
5
  import Vector3 from "../../../core/geom/Vector3.js";
6
6
  import Quaternion from "../../../core/geom/Quaternion.js";
7
7
  import { Matrix4 } from "../../../core/geom/Matrix4.js";
8
- import { Quaternion as ThreeQuaternion } from "three";
9
- import { composeMatrix4 } from "../../graphics/util/composeMatrix4.js";
8
+ import { compose_matrix4_array } from "../../graphics/util/composeMatrix4.js";
9
+ import { decompose_matrix_4_array } from "../../graphics/util/decompose_matrix_4_array.js";
10
10
 
11
11
  const delta = new Vector3();
12
12
 
13
13
  const m4_0 = new Matrix4();
14
14
  const m4_1 = new Matrix4();
15
- const threeQuaternion = new ThreeQuaternion();
16
15
 
17
16
  export class Transform {
18
17
  /**
@@ -166,9 +165,15 @@ export class Transform {
166
165
  * @param {Matrix4} matrix
167
166
  */
168
167
  fromThreeMatrix4(matrix) {
169
- matrix.decompose(this.position, threeQuaternion, this.scale);
168
+ this.fromMatrix4(matrix.elements);
169
+ }
170
170
 
171
- this.rotation.copy(threeQuaternion);
171
+ /**
172
+ *
173
+ * @param {mat4|number[]|Float32Array} m
174
+ */
175
+ fromMatrix4(m) {
176
+ decompose_matrix_4_array(m, this.position, this.rotation, this.scale);
172
177
  }
173
178
 
174
179
  /**
@@ -176,7 +181,15 @@ export class Transform {
176
181
  * @param {Matrix4} matrix
177
182
  */
178
183
  toThreeMatrix(matrix) {
179
- composeMatrix4(matrix, this.position, this.rotation, this.scale);
184
+ this.toMatrix4(matrix.elements);
185
+ }
186
+
187
+ /**
188
+ *
189
+ * @param {number[]|Float32Array} result
190
+ */
191
+ toMatrix4(result) {
192
+ compose_matrix4_array(result, this.position, this.rotation, this.scale);
180
193
  }
181
194
  }
182
195
 
@@ -40,6 +40,7 @@ import { ShadowMapRenderer } from "./shadows/ShadowMapRenderer.js";
40
40
  import { CameraViewManager } from "./render/view/CameraViewManager.js";
41
41
  import { StandardFrameBuffers } from "./StandardFrameBuffers.js";
42
42
  import { load_environment_map } from "./texture/cubemap/load_environment_map.js";
43
+ import { CompositingStages } from "./composit/CompositingStages.js";
43
44
 
44
45
  /**
45
46
  *
@@ -96,7 +97,13 @@ function GraphicsEngine(camera, entityManger) {
96
97
  preRender: new Signal(),
97
98
  postRender: new Signal(),
98
99
 
100
+ /**
101
+ * @deprecated
102
+ */
99
103
  preComposite: new Signal(),
104
+ /**
105
+ * @deprecated
106
+ */
100
107
  postComposite: new Signal(),
101
108
 
102
109
  buffersRendered: new Signal(),
@@ -370,7 +377,7 @@ GraphicsEngine.prototype.start = function () {
370
377
  const domElement = this.domElement = webGLRenderer.domElement;
371
378
  //disable selection
372
379
  const style = domElement.style;
373
- domElement.classList.add("renderer-engine-render-canvas");
380
+ domElement.classList.add("graphics-engine-render-canvas");
374
381
  style.userSelect = style.webkitUserSelect = style.mozUserSelect = "none";
375
382
  // see : https://www.w3.org/TR/pointerevents/#the-touch-action-css-property
376
383
  style.touchAction = "none";
@@ -628,16 +635,14 @@ GraphicsEngine.prototype.render = function (renderTarget) {
628
635
  //do the opaque pass
629
636
  this.renderOpaque();
630
637
 
638
+ this.layerComposer.composite(renderer, CompositingStages.POST_OPAQUE);
639
+
631
640
  this.on.buffersRendered.send3(renderer, camera, scene);
632
641
 
633
642
  // transparent pass
634
643
  this.renderTransparent();
635
644
 
636
- this.on.preComposite.send3(renderer, camera, scene);
637
-
638
- this.layerComposer.composite(renderer);
639
-
640
- this.on.postComposite.send3(renderer, camera, scene);
645
+ this.layerComposer.composite(renderer, CompositingStages.POST_TRANSPARENT);
641
646
 
642
647
 
643
648
  //dispatch post-render event
@@ -5,6 +5,7 @@ import { blendingType2three } from "../texture/sampler/blendingType2Three.js";
5
5
  import { ScreenSpaceQuadShader } from "../shaders/ScreenSpaceQuadShader.js";
6
6
  import { BlendingType } from "../texture/sampler/BlendingType.js";
7
7
  import { FULL_SCREEN_TRIANGLE_GEOMETRY } from "../geometry/FULL_SCREEN_TRIANGLE_GEOMETRY.js";
8
+ import Signal from "../../../core/events/signal/Signal.js";
8
9
 
9
10
  /**
10
11
  *
@@ -29,11 +30,15 @@ function assignMaterialBlending(material, blending) {
29
30
  export class CompositLayer {
30
31
  /**
31
32
  *
32
- * @param {WebGLRenderTarget} renderTarget
33
+ * @param {THREE.WebGLRenderTarget} renderTarget
33
34
  * @param {BlendingType} blending
34
35
  * @param {number} renderTargetScale
35
36
  */
36
- constructor({ renderTarget, blending, renderTargetScale = 1 }) {
37
+ constructor({
38
+ renderTarget,
39
+ blending,
40
+ renderTargetScale = 1
41
+ }) {
37
42
  /**
38
43
  * Human-readable name, useful for debugging
39
44
  * @type {string}
@@ -57,9 +62,13 @@ export class CompositLayer {
57
62
  */
58
63
  this.renderTargetScale = renderTargetScale;
59
64
 
60
- const material = this.buildMaterial();
65
+ this.object = new Mesh(FULL_SCREEN_TRIANGLE_GEOMETRY, this.buildMaterial());
61
66
 
62
- this.object = new Mesh(FULL_SCREEN_TRIANGLE_GEOMETRY, material);
67
+ /**
68
+ * Which compositing stage this layer belongs to, stages are rendered independently
69
+ * @type {number}
70
+ */
71
+ this.stage = 0;
63
72
 
64
73
  this.size = new Vector2();
65
74
 
@@ -74,6 +83,10 @@ export class CompositLayer {
74
83
  * @type {number}
75
84
  */
76
85
  this.__order = 0;
86
+
87
+ this.on = {
88
+ preRender: new Signal()
89
+ };
77
90
  }
78
91
 
79
92
  /**