@woosh/meep-engine 2.37.18 → 2.38.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/core/assert.js +1 -1
- package/core/binary/float2uint8.js +8 -0
- package/core/binary/uint82float.js +8 -0
- package/core/bvh2/bvh3/ExplicitBinaryBoundingVolumeHierarchy.js +6 -4
- package/core/collection/array/array_get_index_in_range.js +16 -0
- package/core/collection/array/typed/isTypedArray.js +20 -0
- package/core/collection/array/typedArrayToDataType.js +1 -0
- package/{engine/navigation/grid → core/collection/heap}/BinaryHeap.js +6 -1
- package/{engine/navigation/grid → core/collection/heap}/FastBinaryHeap.js +3 -2
- package/{engine/navigation/grid → core/collection/heap}/FastBinaryHeap.spec.js +3 -3
- package/core/collection/heap/Uin32Heap.spec.js +59 -0
- package/core/collection/heap/Uint32Heap.js +385 -0
- package/core/collection/list/List.d.ts +1 -1
- package/core/collection/table/RowFirstTable.js +34 -0
- package/core/collection/table/RowFirstTable.spec.js +59 -1
- package/core/color/Color.js +83 -1
- package/core/color/YCbCr_to_rgb_uint24.js +3 -4
- package/core/color/hsv2rgb.js +4 -3
- package/core/color/linear_to_sRGB.js +4 -5
- package/core/color/rgb2hex.js +1 -1
- package/core/color/rgb2uint24.js +6 -4
- package/core/color/rgb_to_YCbCr_uint24.js +11 -13
- package/core/events/signal/Signal.d.ts +11 -9
- package/core/events/signal/Signal.spec.js +16 -0
- package/core/geom/2d/quad-tree/qt_collect_by_circle.js +67 -0
- package/core/geom/3d/topology/computeTopoMeshVertexDuplicates.js +9 -6
- package/core/geom/3d/topology/expandConnectivityByLocality.js +5 -5
- package/core/geom/3d/topology/query/query_edge_is_boundary.js +7 -0
- package/core/geom/3d/topology/query/query_edge_is_manifold.js +13 -0
- package/core/geom/3d/topology/query/query_edge_is_manifold_or_boundary.js +11 -0
- package/core/geom/3d/topology/query/query_edge_is_wire.js +13 -0
- package/core/geom/3d/topology/query/query_edge_other_vertex.js +20 -0
- package/core/geom/3d/topology/query/query_edge_share_vert.js +9 -0
- package/core/geom/3d/topology/query/query_face_get_other_edges.js +39 -0
- package/core/geom/3d/topology/query/query_face_next_vertex.js +19 -0
- package/core/geom/3d/topology/query/query_face_prev_vertex.js +18 -0
- package/core/geom/3d/topology/query/query_vertex_in_edge.js +14 -0
- package/core/geom/3d/topology/query/query_vertex_pair_share_face.js +24 -0
- package/core/geom/3d/topology/query/query_vertices_in_edge.js +19 -0
- package/core/geom/3d/topology/simplify/collapseEdge.spec.js +3 -5
- package/core/geom/3d/topology/simplify/collapse_all_degenerate_edges.js +8 -10
- package/core/geom/3d/topology/simplify/compute_face_normal_change_dot_product.js +12 -2
- package/core/geom/3d/topology/simplify/decimate_edge_collapse_snap.js +277 -0
- package/core/geom/3d/topology/simplify/edge_collapse_quadratic.js +126 -0
- package/core/geom/3d/topology/simplify/prototypeMeshSimplification.js +502 -0
- package/core/geom/3d/topology/simplify/quadratic/Quadratic3.js +37 -5
- package/core/geom/3d/topology/simplify/quadratic/build_vertex_quadratics.js +86 -1
- package/core/geom/3d/topology/simplify/simplifyTopoMesh.js +4 -4
- package/core/geom/3d/topology/simplify/simplifyTopoMesh2.js +119 -0
- package/core/geom/3d/topology/simplify/tm_edge_collapse_is_degenerate_flip.js +81 -0
- package/core/geom/3d/topology/{TopoEdge.js → struct/TopoEdge.js} +47 -20
- package/core/geom/3d/topology/{TopoEdge.spec.js → struct/TopoEdge.spec.js} +0 -0
- package/core/geom/3d/topology/{TopoMesh.js → struct/TopoMesh.js} +20 -41
- package/core/geom/3d/topology/{TopoTriangle.js → struct/TopoTriangle.js} +15 -25
- package/core/geom/3d/topology/{TopoVertex.js → struct/TopoVertex.js} +21 -4
- package/core/geom/3d/topology/{TopoVertex.spec.js → struct/TopoVertex.spec.js} +0 -0
- package/core/geom/3d/topology/tm_edge_kill.js +24 -0
- package/core/geom/3d/topology/tm_edge_splice.js +42 -0
- package/core/geom/3d/topology/tm_face_area.js +18 -0
- package/core/geom/3d/topology/tm_face_kill.js +12 -0
- package/core/geom/3d/topology/tm_face_normal.js +14 -0
- package/core/geom/3d/topology/tm_kill_only_edge.js +35 -0
- package/core/geom/3d/topology/tm_kill_only_face.js +12 -0
- package/core/geom/3d/topology/tm_kill_only_vert.js +14 -0
- package/core/geom/3d/topology/tm_vert_kill.js +19 -0
- package/core/geom/3d/topology/tm_vert_splice.js +64 -0
- package/core/geom/3d/topology/tm_vertex_compute_normal.js +42 -0
- package/core/geom/3d/topology/topoMeshToBufferGeometry.js +18 -4
- package/core/geom/3d/topology/weld_duplicate_vertices.js +63 -0
- package/core/geom/Quaternion.d.ts +21 -1
- package/core/geom/Quaternion.js +279 -200
- package/core/geom/Quaternion.spec.js +71 -2
- package/core/geom/Vector2.js +3 -3
- package/core/geom/Vector3.d.ts +2 -0
- package/core/geom/Vector3.js +31 -7
- package/core/geom/Vector3.schema.json +16 -0
- package/core/geom/Vector4.js +16 -0
- package/core/geom/packing/MaxRectangles.js +1 -1
- package/core/graph/cluster_mesh_metis.js +16 -0
- package/core/graph/coarsen_graph.js +1 -1
- package/core/graph/graph_k_means_cluster.js +1 -1
- package/core/json/JsonUtils.js +2 -20
- package/core/math/bell_membership_function.js +19 -0
- package/core/math/exp2.js +8 -0
- package/core/math/interval/NumericInterval.js +17 -0
- package/core/math/physics/brdf/brdf_burley.js +25 -0
- package/core/math/physics/bsdf/bsdf_schlick.js +22 -0
- package/core/math/physics/irradiance/interpolate_irradiance_linear.js +18 -0
- package/{engine/sound/ecs/emitter/attenuate/attenuateSoundLogarithmic.js → core/math/physics/irradiance/interpolate_irradiance_lograrithmic.js} +2 -2
- package/{engine/sound/ecs/emitter/attenuate/attenuateSoundSmith.js → core/math/physics/irradiance/interpolate_irradiance_smith.js} +1 -1
- package/core/math/random/seededRandom.js +2 -31
- package/core/math/random/seededRandom_Mulberry32.js +31 -0
- package/core/math/random/seededRandom_sine.js +33 -0
- package/core/model/ObservedEnum.js +8 -0
- package/editor/Editor.js +97 -1
- package/editor/actions/concrete/ModifyPatchSampler2DAction.js +118 -0
- package/editor/actions/concrete/ModifyPatchSampler2DAction.spec.js +30 -0
- package/editor/actions/concrete/PatchTerrainHeightAction.js +13 -105
- package/editor/ecs/component/FieldDescriptor.js +34 -0
- package/editor/ecs/component/FieldValueAdapter.js +20 -0
- package/editor/ecs/component/TypeEditor.js +33 -0
- package/editor/ecs/component/TypeSchema.d.ts +38 -0
- package/editor/ecs/component/createFieldEditor.js +90 -0
- package/editor/ecs/component/createObjectEditor.js +266 -60
- package/editor/ecs/component/editors/ColorEditor.js +39 -0
- package/editor/ecs/component/editors/HTMLElementEditor.js +17 -0
- package/editor/ecs/component/editors/ImagePathEditor.js +50 -0
- package/editor/ecs/component/editors/NumericIntervalEditor.js +86 -0
- package/editor/ecs/component/editors/ObservedBooleanEditor.js +13 -0
- package/editor/ecs/component/editors/ObservedEnumEditor.js +32 -0
- package/editor/ecs/component/editors/ObservedIntegerEditor.js +43 -0
- package/editor/ecs/component/editors/ObservedStringEditor.js +51 -0
- package/editor/ecs/component/editors/Sampler2DEditor.js +107 -0
- package/editor/ecs/component/editors/collection/ListEditor.js +83 -0
- package/editor/ecs/component/editors/common/BitFlagsEditor.js +80 -0
- package/editor/ecs/component/editors/common/EnumEditor.js +41 -0
- package/editor/ecs/component/editors/common/makeV3_editor.js +85 -0
- package/editor/ecs/component/editors/common/noEditor.js +9 -0
- package/editor/ecs/component/editors/ecs/GridObstacleEditor.js +17 -0
- package/editor/ecs/component/editors/ecs/MinimapMarkerEditor.js +16 -0
- package/editor/ecs/component/editors/ecs/ParameterLookupTableEditor.js +44 -0
- package/editor/ecs/component/editors/ecs/ParameterTrackEditor.js +17 -0
- package/editor/ecs/component/editors/ecs/ParticleEmitterEditor.js +58 -0
- package/editor/ecs/component/editors/ecs/ParticleEmitterLayerEditor.js +54 -0
- package/editor/ecs/component/editors/ecs/SimulationStepDefinitionEditor.js +21 -0
- package/editor/ecs/component/editors/ecs/Trail2DEditor.js +33 -0
- package/editor/ecs/component/editors/ecs/TransformEditor.js +23 -0
- package/editor/ecs/component/editors/ecs/terrain/SplatMappingEditor.js +21 -0
- package/editor/ecs/component/editors/ecs/terrain/TerrainEditor.js +89 -0
- package/editor/ecs/component/editors/ecs/terrain/TerrainLayerEditor.js +18 -0
- package/editor/ecs/component/editors/ecs/terrain/TerrainLayersEditor.js +22 -0
- package/editor/ecs/component/editors/ecs/terrain/TerrainOverlayEditor.js +20 -0
- package/editor/ecs/component/editors/geom/QuaternionEditor.js +56 -0
- package/editor/ecs/component/editors/geom/Vector1Editor.js +57 -0
- package/editor/ecs/component/editors/geom/Vector2Editor.js +11 -0
- package/editor/ecs/component/editors/geom/Vector3Editor.js +13 -0
- package/editor/ecs/component/editors/geom/Vector4Editor.js +12 -0
- package/editor/ecs/component/editors/primitive/ArrayEditor.js +46 -0
- package/editor/ecs/component/editors/primitive/BooleanEditor.js +27 -0
- package/editor/ecs/component/editors/primitive/FunctionEditor.js +29 -0
- package/editor/ecs/component/editors/primitive/NumberEditor.js +60 -0
- package/editor/ecs/component/editors/primitive/ObjectEditor.js +12 -0
- package/editor/ecs/component/editors/primitive/StringEditor.js +31 -0
- package/editor/ecs/component/editors/three/BufferGeometryEditor.js +28 -0
- package/editor/ecs/component/editors/three/MaterialEditor.js +27 -0
- package/editor/ecs/component/editors/three/MeshEditor.js +35 -0
- package/editor/ecs/component/editors/three/TextureEditor.js +32 -0
- package/editor/ecs/component/findNearestRegisteredType.js +59 -0
- package/editor/ecs/component/prototypeObjectEditor.js +379 -0
- package/editor/tools/SelectionTool.js +1 -1
- package/editor/tools/paint/TerrainHeightPaintTool.js +88 -68
- package/editor/tools/paint/TerrainPaintTool.js +2 -1
- package/editor/tools/paint/TerrainTexturePaintTool.js +8 -73
- package/editor/view/EditorView.js +1 -1
- package/editor/view/ecs/ComponentControlView.js +2 -30
- package/editor/view/ecs/EntityEditor.js +61 -139
- package/editor/view/ecs/components/GridObstacleController.js +4 -4
- package/editor/view/ecs/components/TerrainController.js +1 -1
- package/editor/view/ecs/components/common/NumberController.js +19 -7
- package/editor/view/node-graph/NodeGraphView.js +2 -2
- package/editor/view/node-graph/NodeView.js +7 -9
- package/engine/animation/keyed2/AnimationTrack.js +1 -1
- package/engine/asset/AssetManager.d.ts +1 -1
- package/engine/asset/AssetManager.js +390 -388
- package/engine/asset/loaders/gltf/extensions/MSFT_texture_dds.js +14 -2
- package/engine/ecs/components/TagEditor.js +15 -0
- package/engine/ecs/fow/FogOfWarEditor.js +13 -0
- package/engine/ecs/parent/ParentEntitySystem.js +57 -0
- package/engine/ecs/terrain/ecs/OffsetScaleTransform2D.d.ts +6 -0
- package/engine/ecs/terrain/ecs/Terrain.js +44 -43
- package/engine/ecs/terrain/ecs/TerrainSystem.js +2 -2
- package/engine/ecs/terrain/ecs/layers/TerrainLayer.js +1 -1
- package/engine/ecs/terrain/ecs/splat/SplatMapping.js +26 -28
- package/engine/ecs/terrain/overlay/TerrainOverlay.js +71 -66
- package/engine/ecs/terrain/tiles/TerrainTileManager.js +23 -0
- package/engine/ecs/terrain/util/loadVisibleTerrainTiles.js +1 -1
- package/engine/ecs/terrain/util/paintTerrainOverlayViaLookupTable.js +13 -7
- package/engine/ecs/terrain/util/tensionOptimizeUV.js +1 -1
- package/engine/ecs/transform/Transform.d.ts +2 -0
- package/engine/ecs/transform/Transform.editor.schema.json +16 -0
- package/engine/ecs/transform/Transform.js +3 -0
- package/engine/graphics/ecs/highlight/HighlightEditor.js +17 -0
- package/engine/graphics/ecs/light/Light.js +0 -47
- package/engine/graphics/ecs/light/LightSerializationAdapter.js +50 -0
- package/engine/graphics/ecs/mesh/MeshEditor.js +28 -0
- package/engine/graphics/ecs/mesh-v2/DrawMode.js +2 -1
- package/engine/graphics/ecs/mesh-v2/aggregate/prototypeSGMesh.js +3 -3
- package/engine/graphics/ecs/mesh-v2/build_three_object.js +3 -1
- package/engine/graphics/ecs/mesh-v2/sg_compute_hierarchy_bounding_box_by_parent_entity.js +31 -0
- package/engine/graphics/ecs/mesh-v2/sg_hierarchy_compute_bounding_box_via_parent_entity.d.ts +4 -0
- package/engine/graphics/ecs/sprite/Sprite.js +11 -0
- package/engine/graphics/ecs/sprite/SpriteSystemPE.js +133 -0
- package/engine/graphics/ecs/sprite/prototypeSpriteSystem.js +1570 -0
- package/engine/graphics/micron/build/PatchRepresentation.js +7 -3
- package/engine/graphics/micron/build/buildMicronGeometryFromBufferGeometry.js +18 -8
- package/engine/graphics/micron/build/clustering/build_clustering_2.js +1 -1
- package/engine/graphics/micron/build/clustering/build_leaf_patches.js +2 -2
- package/engine/graphics/micron/build/clustering/build_leaf_patches_metis.js +1 -1
- package/engine/graphics/micron/build/hierarchy/buildAbstractPatchHierarchy.js +21 -3
- package/engine/graphics/micron/build/hierarchy/merge_patches.js +96 -43
- package/engine/graphics/micron/build/hierarchy/qvdr_build_simplified_clusters.js +11 -5
- package/engine/graphics/micron/format/VirtualGeometry.js +46 -3
- package/engine/graphics/micron/format/micron_build_proxy_geometry.js +4 -2
- package/engine/graphics/micron/prototypeVirtualGeometry.js +47 -10
- package/engine/graphics/micron/render/instanced/shader/shader_rewrite_standard.js +17 -17
- package/engine/graphics/micron/render/refinement/get_geometry_patch_cut.js +15 -3
- package/engine/graphics/micron/simplifyGeometry.js +1 -1
- package/engine/graphics/particles/particular/engine/ParticularEngine.js +5 -0
- package/engine/graphics/particles/particular/engine/emitter/ParticleLayer.js +17 -9
- package/engine/graphics/particles/particular/engine/renderers/ParticleRenderer.js +12 -10
- package/engine/graphics/particles/particular/engine/renderers/billboard/ParticleBillboardMaterial.js +7 -2
- package/engine/graphics/particles/particular/engine/renderers/billboard/SoftBillboardParticlePool.js +27 -0
- package/engine/graphics/particles/particular/engine/renderers/billboard/SoftBillboardParticleRenderer.js +80 -0
- package/engine/graphics/particles/particular/engine/shader/ShaderManager.js +16 -4
- package/engine/graphics/shaders/TerrainShader.js +8 -8
- package/engine/graphics/texture/atlas/TextureAtlasDebugger.js +2 -1
- package/engine/graphics/texture/sampler/Sampler2D.js +206 -201
- package/engine/graphics/texture/sampler/Sampler2D.spec.js +34 -35
- package/engine/graphics/texture/sampler/bicubic.js +59 -0
- package/engine/graphics/texture/sampler/downsampleSample2D.spec.js +2 -2
- package/engine/graphics/texture/sampler/genericResampleSampler2D.js +0 -2
- package/engine/graphics/texture/sampler/prototypeSamplerFiltering.js +146 -0
- package/engine/graphics/texture/sampler/{downsampleSampler2D.js → sampler2D_scale_down_linear.js} +8 -4
- package/engine/graphics/texture/sampler/sampler2_d_scale_down_lanczos.js +140 -0
- package/engine/graphics/texture/sampler/scaleSampler2D.js +3 -3
- package/engine/graphics/texture/sampler/writeSampler2DDataToDataTexture.js +1 -1
- package/engine/graphics/util/ScaleObject3ToBox.js +14 -1
- package/engine/graphics/util/makeMeshPreviewScene.js +2 -1
- package/engine/grid/components/GridObstacle.js +0 -44
- package/engine/grid/components/GridObstacleSerializationAdapter.js +46 -0
- package/engine/input/devices/PointerDevice.d.ts +1 -1
- package/engine/input/devices/PointerDevice.js +17 -2
- package/engine/input/ecs/util/TerrainCameraTargetSampler.js +2 -2
- package/engine/navigation/ecs/components/Path.d.ts +2 -0
- package/engine/navigation/ecs/components/Path.js +6 -1
- package/engine/navigation/ecs/components/computeNonuniformCatmullRomSplineSample.js +117 -0
- package/engine/navigation/grid/AStar.js +1 -1
- package/engine/navigation/grid/GridField.js +3 -2
- package/engine/platform/GetURLHash.js +27 -0
- package/engine/platform/WebEnginePlatform.js +1 -22
- package/engine/sound/ecs/emitter/SoundEmitter.js +10 -6
- package/engine/ui/DraggableAspect.js +2 -2
- package/generation/GridGenerator.js +7 -6
- package/generation/example/SampleGenerator0.js +39 -35
- package/generation/example/filters/SampleGroundMoistureFilter.js +58 -17
- package/generation/example/generators/interactive/mir_generator_place_buff_objects.js +7 -6
- package/generation/example/generators/mir_generator_place_bases.js +7 -3
- package/generation/example/generators/mir_generator_place_road_decorators.js +3 -3
- package/generation/example/generators/mir_generator_place_starting_point.js +3 -2
- package/generation/example/themes/SampleTheme0.js +11 -7
- package/generation/filtering/numeric/CellFilterLiteralFloat.js +5 -0
- package/generation/filtering/numeric/complex/CellFilterDilate.js +36 -0
- package/generation/filtering/numeric/complex/CellFilterGaussianBlur.js +15 -5
- package/generation/filtering/numeric/complex/CellFilterSimplexNoise.js +53 -1
- package/generation/filtering/numeric/math/CellFilterMax2.js +3 -0
- package/generation/filtering/numeric/math/CellFilterMembershipGeneralizedBell.js +55 -0
- package/generation/filtering/numeric/sampling/AbstractCellFilterSampleGridLayer.js +42 -0
- package/generation/filtering/numeric/sampling/CellFilterSampleLayerCubic.js +36 -0
- package/generation/filtering/numeric/sampling/CellFilterSampleLayerLinear.js +41 -0
- package/generation/grid/GridData.d.ts +5 -1
- package/generation/grid/GridData.js +35 -36
- package/generation/grid/MarkerMatchCounter.js +5 -3
- package/generation/grid/generation/discrete/GridTaskConnectRooms.js +1 -1
- package/generation/grid/generation/discrete/layer/GridTaskBuildSourceDistanceMap.js +1 -1
- package/generation/grid/generation/discrete/layer/GridTaskDistanceToMarkers.js +1 -1
- package/generation/grid/generation/road/GridTaskGenerateRoads.js +1 -1
- package/generation/markers/GridActionRuleSet.js +15 -32
- package/generation/markers/GridCellActionPlaceMarker.js +12 -8
- package/generation/markers/debug/visualizeMarkers.js +56 -36
- package/generation/markers/emitter/MarkerNodeEmitterFromAction.js +8 -8
- package/generation/markers/prototypeGridCellActionPlaceMarker.js +209 -0
- package/generation/markers/transform/MarkerNodeTransformerOffsetPosition.js +1 -5
- package/generation/markers/transform/MarkerNodeTransformerYRotateByFilterGradient.spec.js +2 -2
- package/generation/placement/GridCellPlacementRule.js +31 -25
- package/generation/theme/ThemeEngine.js +1 -1
- package/package.json +1 -1
- package/samples/terrain/from_image.js +7 -3
- package/samples/terrain/main.js +1 -1
- package/view/View.js +23 -1
- package/view/common/LabelView.js +1 -1
- package/view/compose3x3transform.js +32 -8
- package/view/controller/dat/DatGuiUtils.js +1 -1
- package/view/elements/DropDownSelectionView.js +11 -3
- package/view/elements/image/ImageView.js +3 -1
- package/core/model/ObservedReal.js +0 -55
- package/editor/ecs/component/ObjectEditor.js +0 -0
- package/engine/graphics/particles/particular/engine/renderers/SoftBillboardParticleRenderer.js +0 -7
- package/engine/sound/ecs/emitter/attenuate/attenuateSoundLinear.js +0 -11
- package/generation/filtering/numeric/CellFilterReadGridLayer.js +0 -73
|
@@ -23,10 +23,10 @@ export function shader_rewrite_standard(shader, uniforms, spec, column_count) {
|
|
|
23
23
|
vx_lb_preamble.add('precision mediump isampler2D;');
|
|
24
24
|
|
|
25
25
|
vx_lb_preamble.add('attribute float micron_patch_address;');
|
|
26
|
-
vx_lb_preamble.add('attribute float micron_instance_id;');
|
|
27
26
|
vx_lb_preamble.add('attribute mat4 micron_patch_transform;');
|
|
28
27
|
|
|
29
28
|
if (DEBUG_PATCHES) {
|
|
29
|
+
// vx_lb_preamble.add('attribute float micron_instance_id;');
|
|
30
30
|
vx_lb_preamble.add('varying float v_micron_patch_address;');
|
|
31
31
|
vx_lb_preamble.add('varying float v_vertex_id;');
|
|
32
32
|
vx_lb_preamble.add('varying float v_micron_instance_id;');
|
|
@@ -62,7 +62,7 @@ export function shader_rewrite_standard(shader, uniforms, spec, column_count) {
|
|
|
62
62
|
DEBUG_PATCHES ? `
|
|
63
63
|
v_micron_patch_address = micron_patch_address;
|
|
64
64
|
v_vertex_id = float(gl_VertexID);
|
|
65
|
-
v_micron_instance_id = float(micron_instance_id);
|
|
65
|
+
// v_micron_instance_id = float(micron_instance_id);
|
|
66
66
|
` : ''
|
|
67
67
|
}
|
|
68
68
|
int micron_patch_slot_column = micron_patch_address_int % ${column_count};
|
|
@@ -187,17 +187,17 @@ export function shader_rewrite_standard(shader, uniforms, spec, column_count) {
|
|
|
187
187
|
}
|
|
188
188
|
|
|
189
189
|
// shader.defines.USE_COLOR = true;
|
|
190
|
-
|
|
190
|
+
//
|
|
191
191
|
// rewrittenVertexShader = rewrittenVertexShader.replace(
|
|
192
192
|
// '#include <color_vertex>',
|
|
193
193
|
// `
|
|
194
194
|
// #include <color_vertex>
|
|
195
|
-
// vColor = vec3(1.0);
|
|
196
|
-
//
|
|
197
|
-
//
|
|
198
|
-
//
|
|
199
|
-
//
|
|
200
|
-
//
|
|
195
|
+
// //vColor = vec3(1.0);
|
|
196
|
+
// vColor.xyz = vec3(
|
|
197
|
+
// sin(float(micron_patch_address)*123.1),
|
|
198
|
+
// sin(float(micron_patch_address)*11.7),
|
|
199
|
+
// sin(float(micron_patch_address)*932.183)
|
|
200
|
+
// );
|
|
201
201
|
// `
|
|
202
202
|
// );
|
|
203
203
|
|
|
@@ -229,16 +229,16 @@ export function shader_rewrite_standard(shader, uniforms, spec, column_count) {
|
|
|
229
229
|
|
|
230
230
|
shader.fragmentShader = shader.fragmentShader.replace(
|
|
231
231
|
'#include <dithering_fragment>',
|
|
232
|
-
// `gl_FragColor.rgb = vec3(
|
|
233
|
-
// sin(v_micron_patch_address*123.1)*0.5 + 0.5,
|
|
234
|
-
// sin(v_micron_patch_address*11.7)*0.5 + 0.5,
|
|
235
|
-
// sin(v_micron_patch_address*932.183)*0.5 + 0.5
|
|
236
|
-
// );`
|
|
237
232
|
`gl_FragColor.rgb = vec3(
|
|
238
|
-
sin(
|
|
239
|
-
sin(
|
|
240
|
-
sin(
|
|
233
|
+
sin(v_micron_patch_address*123.1)*0.5 + 0.5,
|
|
234
|
+
sin(v_micron_patch_address*11.7)*0.5 + 0.5,
|
|
235
|
+
sin(v_micron_patch_address*932.183)*0.5 + 0.5
|
|
241
236
|
);`
|
|
237
|
+
// `gl_FragColor.rgb = vec3(
|
|
238
|
+
// sin(v_micron_instance_id*123.1)*0.5 + 0.5,
|
|
239
|
+
// sin(v_micron_instance_id*11.7)*0.5 + 0.5,
|
|
240
|
+
// sin(v_micron_instance_id*932.183)*0.5 + 0.5
|
|
241
|
+
// );`
|
|
242
242
|
// `gl_FragColor.rgb = vec3(
|
|
243
243
|
// v_vertex_id*0.0026041666666666665,
|
|
244
244
|
// 1.0,
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { BitSet } from "../../../../../core/binary/BitSet.js";
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
aabb3_array_intersects_frustum_array
|
|
4
|
+
} from "../../../../../core/bvh2/aabb3/aabb3_array_intersects_frustum_array.js";
|
|
3
5
|
import { aabb3_estimate_projected_area2 } from "../../../../../core/geom/3d/aabb/aabb3_estimate_projected_area2.js";
|
|
4
6
|
|
|
5
7
|
|
|
@@ -39,7 +41,8 @@ export function get_geometry_patch_cut(
|
|
|
39
41
|
|
|
40
42
|
const geometry_id = geometry.id;
|
|
41
43
|
|
|
42
|
-
|
|
44
|
+
const destination_patch_address = destination.patch_count;
|
|
45
|
+
let output_patch_cursor = destination_patch_address;
|
|
43
46
|
|
|
44
47
|
let i;
|
|
45
48
|
let stack_cursor = 1;
|
|
@@ -114,5 +117,14 @@ export function get_geometry_patch_cut(
|
|
|
114
117
|
|
|
115
118
|
}
|
|
116
119
|
|
|
117
|
-
|
|
120
|
+
// this is to make sure geometry container has enough space
|
|
121
|
+
// NOTE: capacity grows after attempted patch writes, so some data will be missing, which means we must re-do the work
|
|
122
|
+
if (!destination.ensureCapacity(output_patch_cursor)) {
|
|
123
|
+
// redo the work
|
|
124
|
+
get_geometry_patch_cut(destination, spec, geometry, instance_id, transform);
|
|
125
|
+
} else {
|
|
126
|
+
|
|
127
|
+
destination.patch_count = output_patch_cursor;
|
|
128
|
+
|
|
129
|
+
}
|
|
118
130
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { TopoMesh } from "../../../core/geom/3d/topology/TopoMesh.js";
|
|
1
|
+
import { TopoMesh } from "../../../core/geom/3d/topology/struct/TopoMesh.js";
|
|
2
2
|
import { simplifyTopoMesh } from "../../../core/geom/3d/topology/simplify/simplifyTopoMesh.js";
|
|
3
3
|
import { topoMeshToBufferGeometry } from "../../../core/geom/3d/topology/topoMeshToBufferGeometry.js";
|
|
4
4
|
|
|
@@ -140,6 +140,11 @@ ParticularEngine.prototype.advanceEmitter = function (emitter, timeDelta) {
|
|
|
140
140
|
|
|
141
141
|
const step = steps[type];
|
|
142
142
|
|
|
143
|
+
if (step === undefined) {
|
|
144
|
+
// no step definition
|
|
145
|
+
continue;
|
|
146
|
+
}
|
|
147
|
+
|
|
143
148
|
step.emitter = emitter;
|
|
144
149
|
step.timeDelta = timeDelta;
|
|
145
150
|
step.particles = emitter.particles;
|
|
@@ -14,6 +14,8 @@ import { EmissionShapeType } from "./EmissionShapeType.js";
|
|
|
14
14
|
import { computeHashIntegerArray } from "../../../../../../core/collection/array/computeHashIntegerArray.js";
|
|
15
15
|
import { computeHashFloat } from "../../../../../../core/math/hash/computeHashFloat.js";
|
|
16
16
|
|
|
17
|
+
const aabb3 = new AABB3(0, 0, 0, 0, 0, 0);
|
|
18
|
+
|
|
17
19
|
function ParticleLayer() {
|
|
18
20
|
/**
|
|
19
21
|
*
|
|
@@ -30,24 +32,26 @@ function ParticleLayer() {
|
|
|
30
32
|
|
|
31
33
|
/**
|
|
32
34
|
* Determines a range of particle life expectancy
|
|
35
|
+
* @readonly
|
|
33
36
|
* @type {NumericInterval}
|
|
34
37
|
*/
|
|
35
38
|
this.particleLife = new NumericInterval(1, 1);
|
|
36
39
|
|
|
37
40
|
/**
|
|
38
|
-
*
|
|
41
|
+
* @readonly
|
|
39
42
|
* @type {NumericInterval}
|
|
40
43
|
*/
|
|
41
44
|
this.particleSize = new NumericInterval(0.1, 0.2);
|
|
42
45
|
|
|
43
46
|
/**
|
|
44
|
-
*
|
|
47
|
+
* @readonly
|
|
45
48
|
* @type {NumericInterval}
|
|
46
49
|
*/
|
|
47
50
|
this.particleRotation = new NumericInterval(0, 0);
|
|
48
51
|
|
|
49
52
|
/**
|
|
50
53
|
* Rotation speed of individual particles in Rad/s
|
|
54
|
+
* @readonly
|
|
51
55
|
* @type {NumericInterval}
|
|
52
56
|
*/
|
|
53
57
|
this.particleRotationSpeed = new NumericInterval(0, 0);
|
|
@@ -77,31 +81,31 @@ function ParticleLayer() {
|
|
|
77
81
|
this.emissionImmediate = 0;
|
|
78
82
|
|
|
79
83
|
/**
|
|
80
|
-
*
|
|
84
|
+
* @readonly
|
|
81
85
|
* @type {ParameterTrackSet}
|
|
82
86
|
*/
|
|
83
87
|
this.parameterTracks = new ParameterTrackSet();
|
|
84
88
|
|
|
85
89
|
/**
|
|
86
|
-
*
|
|
90
|
+
* @readonly
|
|
87
91
|
* @type {Vector3}
|
|
88
92
|
*/
|
|
89
93
|
this.position = new Vector3(0, 0, 0);
|
|
90
94
|
|
|
91
95
|
/**
|
|
92
|
-
*
|
|
96
|
+
* @readonly
|
|
93
97
|
* @type {Vector3}
|
|
94
98
|
*/
|
|
95
99
|
this.scale = new Vector3(1, 1, 1);
|
|
96
100
|
|
|
97
101
|
/**
|
|
98
|
-
*
|
|
102
|
+
* @readonly
|
|
99
103
|
* @type {ConicRay}
|
|
100
104
|
*/
|
|
101
105
|
this.particleVelocityDirection = new ConicRay();
|
|
102
106
|
|
|
103
107
|
/**
|
|
104
|
-
*
|
|
108
|
+
* @readonly
|
|
105
109
|
* @type {NumericInterval}
|
|
106
110
|
*/
|
|
107
111
|
this.particleSpeed = new NumericInterval(0, 0);
|
|
@@ -120,14 +124,19 @@ function ParticleLayer() {
|
|
|
120
124
|
|
|
121
125
|
/**
|
|
122
126
|
* Simulation steps that are to be applied
|
|
127
|
+
* @readonly
|
|
123
128
|
* @type {List<SimulationStepDefinition>}
|
|
124
129
|
*/
|
|
125
130
|
this.steps = new List();
|
|
126
131
|
|
|
132
|
+
/**
|
|
133
|
+
* transient property
|
|
134
|
+
* @type {number}
|
|
135
|
+
*/
|
|
127
136
|
this.scaledSpriteHalfSize = -1;
|
|
128
137
|
|
|
129
138
|
/**
|
|
130
|
-
*
|
|
139
|
+
* @readonly
|
|
131
140
|
* @type {AABB3}
|
|
132
141
|
*/
|
|
133
142
|
this.baseBoundingBox = new AABB3(0, 0, 0, 0, 0, 0);
|
|
@@ -159,7 +168,6 @@ ParticleLayer.prototype.computeScaledSpriteHalfSize = function () {
|
|
|
159
168
|
return maxParticleSize / 2;
|
|
160
169
|
};
|
|
161
170
|
|
|
162
|
-
const aabb3 = new AABB3(0, 0, 0, 0, 0, 0);
|
|
163
171
|
|
|
164
172
|
/**
|
|
165
173
|
* Bounding box without taking sprite size into account
|
|
@@ -1,26 +1,28 @@
|
|
|
1
|
-
import { Group } from "three";
|
|
2
|
-
|
|
3
1
|
/**
|
|
4
2
|
* Abstract base class for a particle renderer
|
|
5
3
|
*/
|
|
6
4
|
export class ParticleRenderer {
|
|
7
5
|
|
|
6
|
+
|
|
8
7
|
constructor() {
|
|
9
8
|
|
|
10
9
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
build_start() {
|
|
13
|
+
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
build_end() {
|
|
16
17
|
|
|
17
18
|
}
|
|
18
19
|
|
|
19
20
|
/**
|
|
20
|
-
*
|
|
21
|
-
* @param {
|
|
21
|
+
*
|
|
22
|
+
* @param {ParticleLayer} layer
|
|
22
23
|
*/
|
|
23
|
-
|
|
24
|
+
add(layer) {
|
|
24
25
|
|
|
25
26
|
}
|
|
27
|
+
|
|
26
28
|
}
|
package/engine/graphics/particles/particular/engine/renderers/billboard/ParticleBillboardMaterial.js
CHANGED
|
@@ -314,11 +314,16 @@ function make_fragment_shader() {
|
|
|
314
314
|
|
|
315
315
|
struct LambertMaterial {
|
|
316
316
|
vec3 diffuseColor;
|
|
317
|
+
float opacity;
|
|
317
318
|
};
|
|
318
319
|
|
|
319
320
|
void RE_Direct_Lambert( const in IncidentLight directLight, const in GeometricContext geometry, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {
|
|
320
|
-
float
|
|
321
|
+
float unsaturated_direction_dot = dot( geometry.normal, directLight.direction );
|
|
322
|
+
|
|
323
|
+
float dotNL = saturate( unsaturated_direction_dot );
|
|
324
|
+
|
|
321
325
|
vec3 irradiance = dotNL * directLight.color;
|
|
326
|
+
|
|
322
327
|
reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
|
|
323
328
|
}
|
|
324
329
|
|
|
@@ -373,7 +378,7 @@ function make_fragment_shader() {
|
|
|
373
378
|
|
|
374
379
|
vec3 transformedNormal = construct_spherical_normal_from_point_coord(gl_PointCoord.xy);
|
|
375
380
|
|
|
376
|
-
LambertMaterial material = LambertMaterial(texel.rgb);
|
|
381
|
+
LambertMaterial material = LambertMaterial(texel.rgb, texel.a);
|
|
377
382
|
ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );
|
|
378
383
|
|
|
379
384
|
${CHUNK_LAMBERT_LIGHTING}
|
package/engine/graphics/particles/particular/engine/renderers/billboard/SoftBillboardParticlePool.js
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { ParticlePool } from "../../emitter/ParticlePool.js";
|
|
2
|
+
import { PARTICULAR_PARTICLE_SPECIFICATION } from "../../emitter/PARTICULAR_PARTICLE_SPECIFICATION.js";
|
|
3
|
+
|
|
4
|
+
export class SoftBillboardParticlePool {
|
|
5
|
+
__pool = new ParticlePool(PARTICULAR_PARTICLE_SPECIFICATION);
|
|
6
|
+
|
|
7
|
+
get particle_count() {
|
|
8
|
+
// TODO implement
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
*
|
|
13
|
+
* @param {ParticleLayer} layer
|
|
14
|
+
*/
|
|
15
|
+
add(layer) {
|
|
16
|
+
// TODO implement
|
|
17
|
+
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
sort() {
|
|
21
|
+
// TODO implement
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
dispose() {
|
|
25
|
+
// TODO implement
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { ParticleRenderer } from "../ParticleRenderer.js";
|
|
2
|
+
import { ShaderManager } from "../../shader/ShaderManager.js";
|
|
3
|
+
|
|
4
|
+
export class SoftBillboardParticleRenderer extends ParticleRenderer {
|
|
5
|
+
/**
|
|
6
|
+
*
|
|
7
|
+
* @type {Map<Material, SoftBillboardParticlePool>}
|
|
8
|
+
* @private
|
|
9
|
+
*/
|
|
10
|
+
__pools = new Map();
|
|
11
|
+
/**
|
|
12
|
+
*
|
|
13
|
+
* @private
|
|
14
|
+
* @type {ShaderManager}
|
|
15
|
+
*/
|
|
16
|
+
__shaders;
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
*
|
|
20
|
+
* @param {Engine} engine
|
|
21
|
+
*/
|
|
22
|
+
constructor(engine) {
|
|
23
|
+
super();
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
this.__shaders = new ShaderManager(engine.assetManager, engine.graphics.getMaterialManager());
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
build_start() {
|
|
30
|
+
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
build_end() {
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
*
|
|
40
|
+
* @param {ParticleLayer} layer
|
|
41
|
+
* @returns {SoftBillboardParticlePool}
|
|
42
|
+
* @private
|
|
43
|
+
*/
|
|
44
|
+
__obtain_pool(layer) {
|
|
45
|
+
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
*
|
|
50
|
+
* @param {ParticleLayer} layer
|
|
51
|
+
*/
|
|
52
|
+
add(layer) {
|
|
53
|
+
// TODO test frustum visibility
|
|
54
|
+
|
|
55
|
+
const pool = this.__obtain_pool(layer);
|
|
56
|
+
|
|
57
|
+
pool.add(layer);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
__sort() {
|
|
61
|
+
for (const [mat, pool] of this.__pools) {
|
|
62
|
+
pool.sort();
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// TODO sort pools themselves
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Release resources
|
|
70
|
+
*/
|
|
71
|
+
dispose() {
|
|
72
|
+
for (const [mat, pool] of this.__pools) {
|
|
73
|
+
pool.dispose();
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
this.__pools.clear();
|
|
77
|
+
|
|
78
|
+
this.__shaders.dispose();
|
|
79
|
+
}
|
|
80
|
+
}
|
|
@@ -219,17 +219,22 @@ export class ShaderManager {
|
|
|
219
219
|
|
|
220
220
|
this.materialMap.forEach(function (entry) {
|
|
221
221
|
|
|
222
|
-
entry.emitters
|
|
222
|
+
const emitters = entry.emitters;
|
|
223
|
+
const emitter_count = emitters.length;
|
|
224
|
+
|
|
225
|
+
for (let i = 0; i < emitter_count; i++) {
|
|
226
|
+
const emitter = emitters[i];
|
|
223
227
|
//mark sprites for an update
|
|
224
228
|
emitter.setFlag(ParticleEmitterFlag.SpritesNeedUpdate);
|
|
225
|
-
}
|
|
229
|
+
}
|
|
230
|
+
|
|
226
231
|
});
|
|
227
232
|
|
|
228
233
|
// console.timeEnd("ShaderManager.updateSpriteTexture");
|
|
229
234
|
}
|
|
230
235
|
|
|
231
236
|
/**
|
|
232
|
-
*
|
|
237
|
+
* @private
|
|
233
238
|
* @returns {Material}
|
|
234
239
|
* @param {ParticleEmitter} emitter
|
|
235
240
|
*/
|
|
@@ -249,7 +254,7 @@ export class ShaderManager {
|
|
|
249
254
|
|
|
250
255
|
const ref = this.__material_manager.obtain(shader);
|
|
251
256
|
|
|
252
|
-
// TODO track
|
|
257
|
+
// TODO track reference and release it eventually
|
|
253
258
|
|
|
254
259
|
return ref.getValue();
|
|
255
260
|
}
|
|
@@ -424,6 +429,13 @@ export class ShaderManager {
|
|
|
424
429
|
|
|
425
430
|
this.__common_uniforms.resolution.value.set(x, y);
|
|
426
431
|
}
|
|
432
|
+
|
|
433
|
+
/**
|
|
434
|
+
* Dispose of any used resources
|
|
435
|
+
*/
|
|
436
|
+
dispose() {
|
|
437
|
+
// TODO implement
|
|
438
|
+
}
|
|
427
439
|
}
|
|
428
440
|
|
|
429
441
|
/**
|
|
@@ -6,7 +6,6 @@ import ShaderChunks from './lib/ShaderChunks.js';
|
|
|
6
6
|
|
|
7
7
|
function vertex() {
|
|
8
8
|
return `
|
|
9
|
-
|
|
10
9
|
#define PHYSICAL
|
|
11
10
|
#define STANDARD
|
|
12
11
|
|
|
@@ -86,7 +85,6 @@ function vertex() {
|
|
|
86
85
|
|
|
87
86
|
function fragment() {
|
|
88
87
|
return `
|
|
89
|
-
|
|
90
88
|
#define PHYSICAL
|
|
91
89
|
#define STANDARD
|
|
92
90
|
|
|
@@ -305,6 +303,8 @@ function fragment() {
|
|
|
305
303
|
|
|
306
304
|
${ShaderChunks.clouds_pars_fragment}
|
|
307
305
|
|
|
306
|
+
out highp vec4 pc_fragColor;
|
|
307
|
+
|
|
308
308
|
void main() {
|
|
309
309
|
vec4 splatDiffuseColor = computeSplatMix(vUv);
|
|
310
310
|
|
|
@@ -363,30 +363,30 @@ function fragment() {
|
|
|
363
363
|
|
|
364
364
|
vec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance;
|
|
365
365
|
|
|
366
|
-
|
|
366
|
+
pc_fragColor = vec4( outgoingLight, diffuseColor.a );
|
|
367
367
|
|
|
368
368
|
#if defined( TONE_MAPPING )
|
|
369
|
-
|
|
369
|
+
pc_fragColor.rgb = toneMapping( pc_fragColor.rgb );
|
|
370
370
|
#endif
|
|
371
371
|
|
|
372
372
|
//encode fragment
|
|
373
|
-
|
|
373
|
+
pc_fragColor = linearToOutputTexel( pc_fragColor );
|
|
374
374
|
#ifdef USE_FOG
|
|
375
375
|
#ifdef FOG_EXP2
|
|
376
376
|
float fogFactor = 1.0 - exp( - fogDensity * fogDensity * fogDepth * fogDepth );
|
|
377
377
|
#else
|
|
378
378
|
float fogFactor = smoothstep( fogNear, fogFar, fogDepth );
|
|
379
379
|
#endif
|
|
380
|
-
|
|
380
|
+
pc_fragColor.rgb = mix( pc_fragColor.rgb, fogColor, fogFactor );
|
|
381
381
|
#endif
|
|
382
382
|
|
|
383
383
|
#ifdef PREMULTIPLIED_ALPHA
|
|
384
384
|
// Get get normal blending with premultipled, use with CustomBlending, OneFactor, OneMinusSrcAlphaFactor, AddEquation.
|
|
385
|
-
|
|
385
|
+
pc_fragColor.rgb *= pc_fragColor.a;
|
|
386
386
|
#endif
|
|
387
387
|
|
|
388
388
|
#ifdef DITHERING
|
|
389
|
-
|
|
389
|
+
pc_fragColor.rgb = dithering( pc_fragColor.rgb );
|
|
390
390
|
#endif
|
|
391
391
|
}
|
|
392
392
|
`;
|