@woosh/meep-engine 2.56.1 → 2.58.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (322) hide show
  1. package/editor/Editor.js +4 -4
  2. package/editor/ecs/component/editors/ColorEditor.js +1 -1
  3. package/editor/ecs/component/editors/ImagePathEditor.js +2 -2
  4. package/editor/ecs/component/editors/{LargeStrongEditor.js → LargeStringEditor.js} +1 -1
  5. package/editor/process/symbolic/buildThreeJSHelperEntity.js +3 -3
  6. package/editor/process/symbolic/makeGridPositionSymbolDisplay.js +3 -3
  7. package/editor/process/symbolic/makePositionedIconDisplaySymbol.js +3 -3
  8. package/editor/tools/GridPaintTool.js +3 -3
  9. package/editor/tools/TopDownCameraControlTool.js +1 -1
  10. package/editor/tools/TransformTool.js +1 -1
  11. package/editor/tools/engine/Tool.js +9 -23
  12. package/editor/tools/engine/ToolEngine.js +5 -7
  13. package/editor/tools/paint/TerrainHeightPaintTool.js +2 -2
  14. package/editor/tools/paint/TerrainPaintTool.js +2 -2
  15. package/editor/tools/paint/TerrainTexturePaintTool.js +2 -2
  16. package/editor/tools/v2/prototypeTransformControls.js +3 -3
  17. package/editor/view/ecs/ComponentControlView.js +2 -1
  18. package/package.json +1 -1
  19. package/samples/generation/main.js +2 -2
  20. package/samples/terrain/from_image.js +2 -2
  21. package/samples/terrain/from_image_2.js +4 -4
  22. package/src/core/binary/byteArrayToString.js +28 -0
  23. package/src/core/binary/downloadAsFile.js +28 -0
  24. package/src/core/binary/downloadUrlAsFile.js +14 -0
  25. package/src/core/binary/jsonToStringToByteArray.js +27 -0
  26. package/src/core/binary/stringToByteArray.js +24 -0
  27. package/src/core/bvh2/BinaryNode.spec.js +2 -1
  28. package/src/core/bvh2/bvh3/query/compute_tight_near_far_clipping_planes.js +1 -1
  29. package/src/core/bvh2/traversal/ThreeClippingPlaneComputingBVHVisitor.js +1 -1
  30. package/src/core/bvh2/traversal/__process_point_if_within_planes.js +1 -1
  31. package/src/core/cache/LoadingCache.js +3 -2
  32. package/src/core/collection/array/arraySetSortingDiff.spec.js +12 -12
  33. package/src/core/collection/array/weightedRandomFromArray.js +2 -2
  34. package/src/core/color/Color.js +6 -6
  35. package/src/core/color/Color.spec.js +27 -1
  36. package/src/core/color/YCbCr/YCbCr.spec.js +16 -0
  37. package/src/core/color/{YCbCr_to_rgb_uint24.js → YCbCr/YCbCr_to_rgb_uint24.js} +6 -6
  38. package/src/core/color/YCbCr/rgb_to_YCbCr_uint24.js +16 -0
  39. package/src/core/color/{hex2rgb.js → hex/hex2rgb.js} +1 -1
  40. package/src/core/color/{rgb2hex.js → hex/rgb2hex.js} +1 -1
  41. package/src/core/color/{hsv2rgb.js → hsv/hsv2rgb.js} +3 -3
  42. package/src/core/color/hsv/rgb2hsv.js +49 -0
  43. package/src/core/color/{kelvin_to_rgb.js → kelvin/kelvin_to_rgb.js} +1 -1
  44. package/src/core/color/{kelvin_to_rgb.spec.js → kelvin/kelvin_to_rgb.spec.js} +2 -2
  45. package/src/core/color/{prototype_kelvin_to_rgb.js → kelvin/prototype_kelvin_to_rgb.js} +5 -5
  46. package/src/core/color/{rgb_to_kelvin.spec.js → kelvin/rgb_to_kelvin.spec.js} +1 -1
  47. package/src/core/color/{parseColor.js → parse_color.js} +5 -5
  48. package/src/core/color/parse_color.spec.js +18 -0
  49. package/src/core/color/rgb2uint24.js +3 -3
  50. package/src/core/color/sRGB/sRGB.spec.js +16 -0
  51. package/src/core/color/xyz/XYZ.spec.js +16 -0
  52. package/src/core/color/xyz/rgb_to_xyz.js +15 -0
  53. package/src/core/color/xyz/xyz_to_rgb.js +14 -0
  54. package/src/core/events/signal/Signal.js +5 -0
  55. package/src/core/events/signal/{signalAggregateByTimeWindow.js → signal_aggregate_by_time_window.js} +1 -1
  56. package/src/core/events/signal/{SignalUtils.js → signal_filter.js} +1 -2
  57. package/src/core/fsm/simple/SimpleStateMachine.spec.js +34 -2
  58. package/src/core/geom/2d/spline_bezier2_2d.js +26 -0
  59. package/src/core/geom/2d/spline_bezier2_2d.spec.js +16 -0
  60. package/src/core/geom/3d/SurfacePoint3.js +1 -1
  61. package/src/core/geom/3d/aabb/aabb3_compute_plane_side.js +1 -1
  62. package/src/core/geom/3d/aabb/aabb3_detailed_volume_intersection.js +1 -1
  63. package/src/core/geom/3d/aabb/aabb3_transformed_compute_plane_side.js +1 -1
  64. package/src/core/geom/3d/compute_circle_bounding_box.js +1 -1
  65. package/src/core/geom/3d/cone/computeConeBoundingBox.js +1 -1
  66. package/src/core/geom/3d/frustum/frustum3_computeNearestPointToPoint.js +1 -1
  67. package/src/core/geom/3d/line/line3_computeSegmentPointDistance_sqr.js +1 -1
  68. package/src/core/geom/3d/line/line3_compute_nearest_point_to_point.js +1 -1
  69. package/src/core/geom/3d/matrix/m4_multiply.js +2 -2
  70. package/src/core/geom/3d/matrix/m4_multiply.spec.js +11 -0
  71. package/src/core/geom/3d/matrix/m4_multiply_alphatensor.spec.js +11 -0
  72. package/src/core/geom/3d/morton/split_by_2.js +1 -1
  73. package/src/core/geom/3d/normal/hemioct/unit_hemioct.spec.js +1 -1
  74. package/src/core/geom/3d/normal/spherical/sphere_map_transform.js +1 -1
  75. package/src/core/geom/3d/plane/is_point_within_planes.js +1 -1
  76. package/src/core/geom/3d/plane/lerp_planes_to_array.js +1 -1
  77. package/src/core/geom/3d/plane/plane3_compute_convex_3_plane_intersection.js +1 -1
  78. package/src/core/geom/3d/plane/plane3_compute_line_segment_intersection.js +1 -1
  79. package/src/core/geom/3d/plane/plane3_compute_ray_intersection.js +1 -1
  80. package/src/core/geom/3d/plane/plane3_lerp.js +2 -2
  81. package/src/core/geom/3d/plane/plane3_projectPoint.js +1 -1
  82. package/src/core/geom/3d/plane/plane3_slerp.js +3 -3
  83. package/src/core/geom/3d/ray/ray_computeNearestPointToPoint.js +1 -1
  84. package/src/core/geom/3d/ray/ray_distance_to_point.js +1 -1
  85. package/src/core/geom/3d/shape/UnionShape3D.js +3 -3
  86. package/src/core/geom/3d/shape/UnitCubeShape3D.js +1 -1
  87. package/src/core/geom/3d/shape/UnitSphereShape3D.js +1 -1
  88. package/src/core/geom/3d/shape/util/shape_to_visual_entity.js +10 -10
  89. package/src/core/geom/3d/sphere/sphere_intersects_ray.js +1 -1
  90. package/src/core/geom/3d/tetrahedra/TetrahedralMesh.js +6 -0
  91. package/src/core/geom/3d/tetrahedra/compute_bounding_simplex_3d.js +1 -1
  92. package/src/core/geom/3d/tetrahedra/compute_bounding_simplex_3d.spec.js +1 -1
  93. package/src/core/geom/3d/tetrahedra/compute_circumsphere.js +1 -1
  94. package/src/core/geom/3d/tetrahedra/delaunay/compute_delaunay_tetrahedral_mesh.js +1 -0
  95. package/src/core/geom/3d/tetrahedra/delaunay/compute_delaunay_tetrahedral_mesh.spec.js +10 -2
  96. package/src/core/geom/3d/tetrahedra/prototypeTetrahedraBuilder.js +2 -2
  97. package/src/core/geom/3d/topology/bounds/computeTriangleClusterNormalBoundingCone.js +1 -1
  98. package/src/core/geom/3d/topology/samples/sampleFloodFill.js +4 -4
  99. package/src/core/geom/3d/topology/simplify/compute_face_normal_change_dot_product.js +1 -1
  100. package/src/core/geom/3d/topology/simplify/quadratic/Quadratic3.js +1 -1
  101. package/src/core/geom/3d/topology/simplify/tm_edge_collapse_is_degenerate_flip.js +2 -2
  102. package/src/core/geom/3d/topology/struct/TopoVertex.js +1 -1
  103. package/src/core/geom/3d/topology/util/compute_face_connection_weight.js +2 -2
  104. package/src/core/geom/3d/triangle/computeTrianglePlaneSide.js +1 -1
  105. package/src/core/geom/3d/triangle/computeTriangleRayIntersection.js +1 -1
  106. package/src/core/geom/3d/triangle/computeTriangleRayIntersectionBarycentricEdge.js +1 -1
  107. package/src/core/geom/3d/v3_compute_triangle_normal.js +1 -1
  108. package/src/core/geom/Quaternion.js +1 -1
  109. package/src/core/geom/Vector3.js +7 -7
  110. package/src/core/geom/Vector3.spec.js +68 -1
  111. package/src/core/geom/mat2/m2_add.js +17 -0
  112. package/src/core/geom/mat2/m2_determinant.js +8 -0
  113. package/src/core/geom/mat2/m2_multiply.js +17 -0
  114. package/src/core/geom/mat2/m2_multiply_scalar.js +18 -0
  115. package/src/core/geom/mat2/m2_multiply_transposed.js +18 -0
  116. package/src/core/geom/mat2/m2_sub_transposed.js +17 -0
  117. package/src/{view → core/geom/mat3}/m3_cm_compose_transform.js +0 -29
  118. package/src/core/geom/mat3/m3_cm_extract_rotation.js +8 -0
  119. package/src/core/geom/mat3/m3_cm_from_translation.js +19 -0
  120. package/src/{view/multiplyMatrices3.js → core/geom/mat3/m3_multiply.js} +2 -2
  121. package/src/{view → core/geom/mat3}/m3_rm_compose_transform.js +0 -9
  122. package/src/core/geom/mat3/m3_rm_extract_scale.js +7 -0
  123. package/src/core/geom/{3d/vector/allocate_v3.js → vec3/v3_allocate.js} +1 -1
  124. package/src/core/geom/{v3_angle_between.js → vec3/v3_angle_between.js} +1 -1
  125. package/src/core/geom/vec3/v3_dot_array_array.js +20 -0
  126. package/src/core/geom/{v3_lerp.js → vec3/v3_lerp.js} +1 -1
  127. package/src/core/graph/SquareMatrix.js +26 -3
  128. package/src/core/graph/SquareMatrix.spec.js +52 -2
  129. package/src/core/math/clamp01.js +1 -0
  130. package/src/core/math/fract.js +3 -1
  131. package/src/core/math/inverseLerp.js +7 -5
  132. package/src/core/math/lerp.js +5 -5
  133. package/src/core/math/physics/spring/computeHookeForce.js +9 -0
  134. package/src/core/math/remap.js +19 -0
  135. package/src/core/math/remap.spec.js +15 -0
  136. package/src/core/math/smoothStep.spec.js +16 -0
  137. package/src/core/math/spline/spline_bezier2.js +13 -0
  138. package/src/core/math/spline/spline_bezier2.spec.js +13 -0
  139. package/src/core/model/object/compareValues.js +2 -2
  140. package/src/core/model/object/read_property.js +10 -2
  141. package/src/core/model/object/write_property.js +3 -23
  142. package/src/core/model/object/write_property.spec.js +26 -0
  143. package/src/core/primitives/numbers/number_pretty_print.spec.js +19 -0
  144. package/src/core/process/action/AsynchronousDelayAction.js +2 -2
  145. package/src/core/process/executor/profile/ConcurrentExecutorProfiler.js +1 -1
  146. package/src/engine/EngineHarness.js +7 -7
  147. package/src/engine/EntityCreator.js +5 -5
  148. package/src/engine/__module.js +1 -1
  149. package/src/engine/achievements/AchievementManager.js +2 -2
  150. package/src/engine/animation/AnimationUtils.js +4 -4
  151. package/src/engine/animation/behavior/animateProperty.js +2 -2
  152. package/src/engine/animation/curve/draw/build_plot_entity_from_array.js +3 -3
  153. package/src/engine/animation/playAnimationTrack.js +3 -3
  154. package/src/engine/animation/playTrackRealTime.js +3 -3
  155. package/src/engine/animation/removeEntityWithMeshParticlesEffect.js +2 -2
  156. package/src/engine/control/ControlContext.js +7 -7
  157. package/src/engine/ecs/{EntityBuilder.d.ts → Entity.d.ts} +5 -5
  158. package/src/engine/ecs/{EntityBuilder.js → Entity.js} +29 -29
  159. package/src/engine/ecs/{EntityBuilder.spec.js → Entity.spec.js} +17 -17
  160. package/src/engine/ecs/EntityBlueprint.d.ts +2 -2
  161. package/src/engine/ecs/EntityBlueprint.js +3 -3
  162. package/src/engine/ecs/EntityBlueprint.spec.js +2 -2
  163. package/src/engine/ecs/{EntityBuilderFlags.js → EntityFlags.js} +1 -1
  164. package/src/engine/ecs/EntityObserver.spec.js +8 -8
  165. package/src/engine/ecs/dynamic_actions/DynamicActorSystem.js +5 -5
  166. package/src/engine/ecs/foliage/ecs/InstancedMeshUtils.js +3 -3
  167. package/src/engine/ecs/gui/menu/radial/RadialContextMenu.d.ts +2 -2
  168. package/src/engine/ecs/gui/menu/radial/RadialContextMenu.js +5 -5
  169. package/src/engine/ecs/ik/OneBoneSurfaceAlignmentSolver.js +2 -2
  170. package/src/engine/ecs/ik/TwoBoneInverseKinematicsSolver.js +2 -2
  171. package/src/engine/ecs/parent/EntityNode.d.ts +3 -3
  172. package/src/engine/ecs/parent/EntityNode.js +5 -5
  173. package/src/engine/ecs/parent/testHuDPerf.js +2 -2
  174. package/src/engine/ecs/speaker/VoiceSystem.js +5 -5
  175. package/src/engine/ecs/systems/SteeringSystem.js +1 -1
  176. package/src/engine/ecs/terrain/ecs/splat/SplatMapOptimizerDebugger.js +1 -1
  177. package/src/engine/ecs/tooltip/testTooltipComponentSystem.js +3 -3
  178. package/src/engine/graphics/camera/makeOrbitalCameraController.js +3 -3
  179. package/src/engine/graphics/camera/testClippingPlaneComputation.js +3 -3
  180. package/src/engine/graphics/debug/createDebugLabel.js +3 -3
  181. package/src/engine/graphics/ecs/camera/Camera.js +1 -1
  182. package/src/engine/graphics/ecs/camera/CameraClippingPlaneComputer.js +1 -1
  183. package/src/engine/graphics/ecs/camera/filter/setup_filtered_camera_controller.js +3 -3
  184. package/src/engine/graphics/ecs/decal/v2/FPDecalSystem.js +3 -11
  185. package/src/engine/graphics/ecs/decal/v2/prototypeDecalEditor.js +3 -3
  186. package/src/engine/graphics/ecs/decal/v2/prototypeDecalSystem.js +14 -14
  187. package/src/engine/graphics/ecs/highlight/Highlight.js +20 -102
  188. package/src/engine/graphics/ecs/mesh/Mesh.js +12 -18
  189. package/src/engine/graphics/ecs/mesh/MeshSystem.js +41 -26
  190. package/src/engine/graphics/ecs/mesh-v2/ShadedGeometrySystem.js +1 -1
  191. package/src/engine/graphics/ecs/mesh-v2/aggregate/prototypeSGMesh.js +3 -3
  192. package/src/engine/graphics/ecs/mesh-v2/sample/prototypeShadedGeometry.js +5 -5
  193. package/src/engine/graphics/ecs/mesh-v2/sample/prototype_sg_raycast.js +6 -6
  194. package/src/engine/graphics/ecs/path/ribbon/RibbonPathBuilder.js +3 -3
  195. package/src/engine/graphics/ecs/path/testPathDisplaySystem.js +3 -3
  196. package/src/engine/graphics/ecs/path/tube/build/TubePathBuilder.js +4 -4
  197. package/src/engine/graphics/ecs/path/tube/build/makeTubeGeometry.js +1 -1
  198. package/src/engine/graphics/ecs/path/tube/build/make_cap.js +3 -3
  199. package/src/engine/graphics/ecs/path/tube/build/make_ring_vertices.js +1 -1
  200. package/src/engine/graphics/ecs/path/tube/prototypeAnimatedPathMask.js +3 -3
  201. package/src/engine/graphics/ecs/sprite/SpriteSystemPE.js +2 -2
  202. package/src/engine/graphics/ecs/sprite/prototypeSpriteSystem.js +2 -2
  203. package/src/engine/graphics/geometry/MikkT/InitTriInfo.js +5 -6
  204. package/src/engine/graphics/geometry/MikkT/MikkTSpace.js +3 -3
  205. package/src/engine/graphics/geometry/MikkT/NormalizeSafe.js +1 -2
  206. package/src/engine/graphics/geometry/MikkT/STSpace.js +3 -3
  207. package/src/engine/graphics/geometry/MikkT/v3_scale_dot_sub_normalize.js +2 -2
  208. package/src/engine/graphics/geometry/bvh/buffered/BVHGeometryRaycaster.js +1 -1
  209. package/src/engine/graphics/geometry/clipping/ClippedGeometry.js +1 -1
  210. package/src/engine/graphics/geometry/optimization/merge/prototypeGeometryMerge.js +4 -4
  211. package/src/engine/graphics/impostors/octahedral/prototypeBaker.js +7 -7
  212. package/src/engine/graphics/particles/node-based/editor/ParticleSpecificationEditorView.js +1 -1
  213. package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.js +102 -95
  214. package/src/engine/graphics/particles/particular/engine/emitter/ParticleLayer.spec.js +25 -0
  215. package/src/engine/graphics/particles/particular/engine/emitter/ParticlePool.js +0 -35
  216. package/src/engine/graphics/particles/particular/engine/emitter/ParticlePool.spec.js +39 -2
  217. package/src/engine/graphics/particles/particular/engine/renderers/billboard/prototypeBillboardRenderer.js +2 -2
  218. package/src/engine/graphics/particles/particular/engine/shader/ShaderManager.js +22 -6
  219. package/src/engine/graphics/particles/particular/engine/utils/volume/ParticleVolume.d.ts +2 -2
  220. package/src/engine/graphics/particles/particular/engine/utils/volume/ParticleVolume.js +3 -3
  221. package/src/engine/graphics/particles/particular/engine/utils/volume/prototypeParticleVolume.js +10 -10
  222. package/src/engine/graphics/render/buffer/buffers/prototypeNormalFrameBuffer.js +2 -2
  223. package/src/engine/graphics/render/buffer/simple-fx/taa/prototypeTAA.js +2 -2
  224. package/src/engine/graphics/render/forward_plus/LightManager.js +1 -1
  225. package/src/engine/graphics/render/forward_plus/plugin/ptototypeFPPlugin.js +13 -13
  226. package/src/engine/graphics/render/forward_plus/prototype/prototypeLightManager.js +3 -3
  227. package/src/engine/graphics/render/forward_plus/query/detailed_sphere_frustum_intersection_test.js +1 -1
  228. package/src/engine/graphics/render/layers/RenderLayerUtils.js +1 -1
  229. package/src/engine/graphics/render/visibility/hiz/prototypeHiZ.js +8 -7
  230. package/src/engine/graphics/sh3/LightProbeVolume.js +3 -3
  231. package/src/engine/graphics/sh3/path_tracer/PathTracer.js +2 -2
  232. package/src/engine/graphics/sh3/path_tracer/prototypePathTracer.js +2 -2
  233. package/src/engine/graphics/sh3/path_tracer/random_in_hemisphere.js +1 -1
  234. package/src/engine/graphics/sh3/path_tracer/ray_hit_apply_transform.js +1 -1
  235. package/src/engine/graphics/sh3/path_tracer/ray_reflect.js +1 -1
  236. package/src/engine/graphics/sh3/prototypeSH3Probe.js +3 -3
  237. package/src/engine/graphics/sh3/sky/hosek/data.js +3744 -0
  238. package/src/engine/graphics/sh3/sky/hosek/sky_hosek_compute_irradiance_by_direction.js +10 -3786
  239. package/src/engine/graphics/sh3/visualise_probe.js +3 -3
  240. package/src/engine/graphics/shadows/testShadowMapRendering.js +3 -3
  241. package/src/engine/graphics/texture/atlas/AbstractTextureAtlas.js +1 -1
  242. package/src/engine/graphics/texture/atlas/AtlasPatch.js +0 -1
  243. package/src/engine/graphics/texture/atlas/AtlasPatchFlag.js +8 -1
  244. package/src/engine/graphics/texture/atlas/CachingTextureAtlas.js +25 -0
  245. package/src/engine/graphics/texture/atlas/CachingTextureAtlas.spec.js +54 -0
  246. package/src/engine/graphics/texture/atlas/ManagedTextureAtlas.js +101 -160
  247. package/src/engine/graphics/texture/atlas/TextureAtlas.js +18 -1
  248. package/src/engine/graphics/texture/sampler/downloadSamplerAsPNG.js +1 -1
  249. package/src/engine/graphics/texture/sampler/sampler2d_ensure_uint8_RGBA.js +22 -0
  250. package/src/engine/graphics/texture/sprite/prototypeSpriteCutoutGeometry.js +2 -2
  251. package/src/engine/graphics/util/projectSphere.js +1 -1
  252. package/src/engine/input/ecs/controllers/KeyboardCameraController.js +2 -2
  253. package/src/engine/input/ecs/util/TopDownCameraControllerHelper.js +2 -2
  254. package/src/engine/intelligence/behavior/composite/ParallelBehavior.spec.js +13 -12
  255. package/src/engine/navigation/ecs/components/Path.js +1 -1
  256. package/src/engine/physics/fluid/prototype.js +3 -3
  257. package/src/engine/physics/mls-mpm/MLS_MPM.js +11 -106
  258. package/src/engine/reference/v2/Reference.js +6 -2
  259. package/src/engine/save/storage/JsonStringCodec.js +1 -1
  260. package/src/engine/save/storage/LocalStorage.js +2 -1
  261. package/src/engine/sound/ecs/emitter/SoundEmitter.js +7 -7
  262. package/src/engine/sound/ecs/emitter/SoundTrack.js +6 -6
  263. package/src/engine/ui/GUIEngine.js +4 -4
  264. package/src/engine/ui/notification/NotificationManager.js +3 -3
  265. package/src/generation/filtering/numeric/complex/CellFilterAngleToNormal.js +1 -1
  266. package/src/generation/grid/generation/road/GridTaskGenerateRoads.js +2 -4
  267. package/src/generation/markers/debug/visualizeMarkers.js +2 -2
  268. package/src/generation/markers/prototypeGridCellActionPlaceMarker.js +2 -2
  269. package/src/generation/placement/action/random/weighted/CellActionSelectWeightedRandom.js +2 -2
  270. package/src/generation/theme/ThemeEngine.js +2 -2
  271. package/src/generation/theme/ThemeEngine.spec.js +7 -0
  272. package/src/view/View.js +21 -13
  273. package/src/view/elements/ColorPickerView.js +2 -2
  274. package/src/view/minimap/gl/MarkerGL.js +20 -18
  275. package/src/view/minimap/gl/MinimapMarkersGL.js +2 -1
  276. package/editor/tools/FoliagePaintTool.js +0 -168
  277. package/editor/tools/engine/ToolStateMachine.js +0 -53
  278. package/src/core/NumberFormat.js +0 -4
  279. package/src/core/binary/ByteArrayTools.js +0 -137
  280. package/src/core/binary/NaiveBitSet.js +0 -69
  281. package/src/core/binary/objects/StandardTypeBuilder.js +0 -126
  282. package/src/core/binary/serde/JsonSerializer.js +0 -113
  283. package/src/core/color/rgb2hsv.js +0 -47
  284. package/src/core/color/rgb_to_YCbCr_uint24.js +0 -16
  285. package/src/core/fsm/StateMachine.js +0 -440
  286. package/src/core/fsm/Transition.js +0 -65
  287. package/src/core/geom/Bezier.js +0 -24
  288. package/src/core/geom/Bezier.spec.js +0 -16
  289. package/src/core/math/spline/quadraticCurve.js +0 -11
  290. package/src/core/math/spline/quadraticCurve.spec.js +0 -13
  291. package/src/core/primitives/numbers/compareNumbers.js +0 -9
  292. package/src/engine/graphics/ecs/decal/Decal.js +0 -10
  293. package/src/engine/graphics/ecs/decal/DecalSystem.js +0 -99
  294. package/src/engine/graphics/ecs/decal/threejs/DecalGeometry.js +0 -298
  295. package/src/engine/graphics/ecs/trail/Trail.js +0 -83
  296. package/src/engine/graphics/ecs/trail/TrailMaterial.js +0 -67
  297. package/src/engine/graphics/ecs/trail/TrailMaterial2.js +0 -73
  298. package/src/engine/graphics/ecs/trail/TrailSystem.js +0 -162
  299. package/src/engine/graphics/ecs/water2/NodeWaterShader1.js +0 -213
  300. package/src/engine/graphics/ecs/water2/shader/JBWaterShader.js +0 -315
  301. package/src/engine/graphics/geometry/MikkT/Length.js +0 -10
  302. package/src/engine/graphics/texture/ImageLoader.js +0 -33
  303. package/src/engine/graphics/three/DDSLoader.js +0 -286
  304. package/src/engine/graphics/three/Water2.js +0 -343
  305. package/src/engine/physics/spring/computeHookeForce.js +0 -9
  306. package/src/engine/reference/v1/ReferenceManager.js +0 -124
  307. /package/src/core/color/{hex2rgb.spec.js → hex/hex2rgb.spec.js} +0 -0
  308. /package/src/core/color/{rgb2hex.spec.js → hex/rgb2hex.spec.js} +0 -0
  309. /package/src/core/color/{hsv2rgb.spec.js → hsv/hsv2rgb.spec.js} +0 -0
  310. /package/src/core/color/{rgb_to_kelvin.js → kelvin/rgb_to_kelvin.js} +0 -0
  311. /package/src/core/color/{linear_to_sRGB.js → sRGB/linear_to_sRGB.js} +0 -0
  312. /package/src/core/color/{sRGB_to_linear.js → sRGB/sRGB_to_linear.js} +0 -0
  313. /package/src/core/geom/{m3_determinant.js → mat3/m3_determinant.js} +0 -0
  314. /package/src/core/geom/{v3_distance.js → vec3/v3_distance.js} +0 -0
  315. /package/src/core/geom/{v3_distance_above_plane.js → vec3/v3_distance_above_plane.js} +0 -0
  316. /package/src/core/geom/{v3_distance_above_plane.spec.js → vec3/v3_distance_above_plane.spec.js} +0 -0
  317. /package/src/core/geom/{v3_distance_sqr.d.ts → vec3/v3_distance_sqr.d.ts} +0 -0
  318. /package/src/core/geom/{v3_distance_sqr.js → vec3/v3_distance_sqr.js} +0 -0
  319. /package/src/core/geom/{v3_dot.js → vec3/v3_dot.js} +0 -0
  320. /package/src/core/geom/{v3_length.js → vec3/v3_length.js} +0 -0
  321. /package/src/core/geom/{v3_length_sqr.js → vec3/v3_length_sqr.js} +0 -0
  322. /package/src/core/geom/{v3_slerp.js → vec3/v3_slerp.js} +0 -0
@@ -1,33 +0,0 @@
1
- /**
2
- * Created by Alex on 16/10/2014.
3
- */
4
-
5
-
6
-
7
- export default function loadImage(url, callback) {
8
- const img = new Image();
9
- img.onload = function () {
10
- const imgWidth = img.width;
11
- const imgHeight = img.height;
12
- //
13
- const canvas = document.createElement('canvas');
14
- canvas.width = imgWidth;
15
- canvas.height = imgHeight;
16
- const context = canvas.getContext('2d');
17
-
18
- context.drawImage(img, 0, 0, imgWidth, imgHeight);
19
- const imgd = context.getImageData(0, 0, imgWidth, imgHeight);
20
-
21
- callback({
22
- width: imgWidth,
23
- height: imgHeight,
24
- data: imgd.data,
25
- canvas: canvas
26
- });
27
- };
28
- img.onerror = function () {
29
- console.error("failed to load image " + url);
30
- };
31
- // load img source
32
- img.src = url;
33
- };
@@ -1,286 +0,0 @@
1
- import * as THREE from 'three';
2
-
3
- /*
4
- * @author mrdoob / http://mrdoob.com/
5
- */
6
-
7
- function DDSLoader() {
8
-
9
- this._parser = DDSLoader.parse;
10
-
11
- }
12
-
13
- DDSLoader.prototype = Object.create(THREE.CompressedTextureLoader.prototype);
14
- DDSLoader.prototype.constructor = DDSLoader;
15
-
16
- DDSLoader.parse = function (buffer, loadMipmaps) {
17
-
18
- const dds = { mipmaps: [], width: 0, height: 0, format: null, mipmapCount: 1 };
19
-
20
- // Adapted from @toji's DDS utils
21
- // https://github.com/toji/webgl-texture-utils/blob/master/texture-util/dds.js
22
-
23
- // All values and structures referenced from:
24
- // http://msdn.microsoft.com/en-us/library/bb943991.aspx/
25
-
26
- const DDS_MAGIC = 0x20534444;
27
-
28
- const DDSD_CAPS = 0x1,
29
- DDSD_HEIGHT = 0x2,
30
- DDSD_WIDTH = 0x4,
31
- DDSD_PITCH = 0x8,
32
- DDSD_PIXELFORMAT = 0x1000,
33
- DDSD_MIPMAPCOUNT = 0x20000,
34
- DDSD_LINEARSIZE = 0x80000,
35
- DDSD_DEPTH = 0x800000;
36
-
37
- const DDSCAPS_COMPLEX = 0x8,
38
- DDSCAPS_MIPMAP = 0x400000,
39
- DDSCAPS_TEXTURE = 0x1000;
40
-
41
- const DDSCAPS2_CUBEMAP = 0x200,
42
- DDSCAPS2_CUBEMAP_POSITIVEX = 0x400,
43
- DDSCAPS2_CUBEMAP_NEGATIVEX = 0x800,
44
- DDSCAPS2_CUBEMAP_POSITIVEY = 0x1000,
45
- DDSCAPS2_CUBEMAP_NEGATIVEY = 0x2000,
46
- DDSCAPS2_CUBEMAP_POSITIVEZ = 0x4000,
47
- DDSCAPS2_CUBEMAP_NEGATIVEZ = 0x8000,
48
- DDSCAPS2_VOLUME = 0x200000;
49
-
50
- const DDPF_ALPHAPIXELS = 0x1,
51
- DDPF_ALPHA = 0x2,
52
- DDPF_FOURCC = 0x4,
53
- DDPF_RGB = 0x40,
54
- DDPF_YUV = 0x200,
55
- DDPF_LUMINANCE = 0x20000;
56
-
57
- function fourCCToInt32(value) {
58
-
59
- return value.charCodeAt(0) +
60
- (value.charCodeAt(1) << 8) +
61
- (value.charCodeAt(2) << 16) +
62
- (value.charCodeAt(3) << 24);
63
-
64
- }
65
-
66
- function int32ToFourCC(value) {
67
-
68
- return String.fromCharCode(
69
- value & 0xff,
70
- (value >> 8) & 0xff,
71
- (value >> 16) & 0xff,
72
- (value >> 24) & 0xff
73
- );
74
-
75
- }
76
-
77
- function loadARGBMip(buffer, dataOffset, width, height) {
78
-
79
- const dataLength = width * height * 4;
80
- const srcBuffer = new Uint8Array(buffer, dataOffset, dataLength);
81
- const byteArray = new Uint8Array(dataLength);
82
- let dst = 0;
83
- let src = 0;
84
- for (let y = 0; y < height; y++) {
85
-
86
- for (let x = 0; x < width; x++) {
87
-
88
- const b = srcBuffer[src];
89
- src++;
90
- const g = srcBuffer[src];
91
- src++;
92
- const r = srcBuffer[src];
93
- src++;
94
- const a = srcBuffer[src];
95
- src++;
96
- byteArray[dst] = r;
97
- dst++; //r
98
- byteArray[dst] = g;
99
- dst++; //g
100
- byteArray[dst] = b;
101
- dst++; //b
102
- byteArray[dst] = a;
103
- dst++; //a
104
-
105
- }
106
-
107
- }
108
- return byteArray;
109
-
110
- }
111
-
112
- const FOURCC_DXT1 = fourCCToInt32("DXT1");
113
- const FOURCC_DXT3 = fourCCToInt32("DXT3");
114
- const FOURCC_DXT5 = fourCCToInt32("DXT5");
115
- const FOURCC_ETC1 = fourCCToInt32("ETC1");
116
-
117
- const headerLengthInt = 31; // The header length in 32 bit ints
118
-
119
- // Offsets into the header array
120
-
121
- const off_magic = 0;
122
-
123
- const off_size = 1;
124
- const off_flags = 2;
125
- const off_height = 3;
126
- const off_width = 4;
127
-
128
- const off_mipmapCount = 7;
129
-
130
- const off_pfFlags = 20;
131
- const off_pfFourCC = 21;
132
- const off_RGBBitCount = 22;
133
- const off_RBitMask = 23;
134
- const off_GBitMask = 24;
135
- const off_BBitMask = 25;
136
- const off_ABitMask = 26;
137
-
138
- const off_caps = 27;
139
- const off_caps2 = 28;
140
- const off_caps3 = 29;
141
- const off_caps4 = 30;
142
-
143
- // Parse header
144
-
145
- const header = new Int32Array(buffer, 0, headerLengthInt);
146
-
147
- if (header[off_magic] !== DDS_MAGIC) {
148
-
149
- console.error('THREE.DDSLoader.parse: Invalid magic number in DDS header.');
150
- return dds;
151
-
152
- }
153
-
154
- if (!header[off_pfFlags] & DDPF_FOURCC) {
155
-
156
- console.error('THREE.DDSLoader.parse: Unsupported format, must contain a FourCC code.');
157
- return dds;
158
-
159
- }
160
-
161
- let blockBytes;
162
-
163
- const fourCC = header[off_pfFourCC];
164
-
165
- let isRGBAUncompressed = false;
166
-
167
- switch (fourCC) {
168
-
169
- case FOURCC_DXT1:
170
-
171
- blockBytes = 8;
172
- dds.format = THREE.RGB_S3TC_DXT1_Format;
173
- break;
174
-
175
- case FOURCC_DXT3:
176
-
177
- blockBytes = 16;
178
- dds.format = THREE.RGBA_S3TC_DXT3_Format;
179
- break;
180
-
181
- case FOURCC_DXT5:
182
-
183
- blockBytes = 16;
184
- dds.format = THREE.RGBA_S3TC_DXT5_Format;
185
- break;
186
-
187
- case FOURCC_ETC1:
188
-
189
- blockBytes = 8;
190
- dds.format = THREE.RGB_ETC1_Format;
191
- break;
192
-
193
- default:
194
-
195
- if (header[off_RGBBitCount] === 32
196
- && header[off_RBitMask] & 0xff0000
197
- && header[off_GBitMask] & 0xff00
198
- && header[off_BBitMask] & 0xff
199
- && header[off_ABitMask] & 0xff000000) {
200
-
201
- isRGBAUncompressed = true;
202
- blockBytes = 64;
203
- dds.format = THREE.RGBAFormat;
204
-
205
- } else {
206
-
207
- console.error('THREE.DDSLoader.parse: Unsupported FourCC code ', int32ToFourCC(fourCC));
208
- return dds;
209
-
210
- }
211
-
212
- }
213
-
214
- dds.mipmapCount = 1;
215
-
216
- if (header[off_flags] & DDSD_MIPMAPCOUNT && loadMipmaps !== false) {
217
-
218
- dds.mipmapCount = Math.max(1, header[off_mipmapCount]);
219
-
220
- }
221
-
222
- const caps2 = header[off_caps2];
223
- dds.isCubemap = caps2 & DDSCAPS2_CUBEMAP ? true : false;
224
- if (dds.isCubemap && (
225
- !(caps2 & DDSCAPS2_CUBEMAP_POSITIVEX) ||
226
- !(caps2 & DDSCAPS2_CUBEMAP_NEGATIVEX) ||
227
- !(caps2 & DDSCAPS2_CUBEMAP_POSITIVEY) ||
228
- !(caps2 & DDSCAPS2_CUBEMAP_NEGATIVEY) ||
229
- !(caps2 & DDSCAPS2_CUBEMAP_POSITIVEZ) ||
230
- !(caps2 & DDSCAPS2_CUBEMAP_NEGATIVEZ)
231
- )) {
232
-
233
- console.error('THREE.DDSLoader.parse: Incomplete cubemap faces');
234
- return dds;
235
-
236
- }
237
-
238
- dds.width = header[off_width];
239
- dds.height = header[off_height];
240
-
241
- let dataOffset = header[off_size] + 4;
242
-
243
- // Extract mipmaps buffers
244
-
245
- const faces = dds.isCubemap ? 6 : 1;
246
-
247
- for (let face = 0; face < faces; face++) {
248
-
249
- let width = dds.width;
250
- let height = dds.height;
251
-
252
- for (let i = 0; i < dds.mipmapCount; i++) {
253
-
254
- let byteArray, dataLength;
255
-
256
- if (isRGBAUncompressed) {
257
-
258
- byteArray = loadARGBMip(buffer, dataOffset, width, height);
259
- dataLength = byteArray.length;
260
-
261
- } else {
262
-
263
- dataLength = Math.max(4, width) / 4 * Math.max(4, height) / 4 * blockBytes;
264
- byteArray = new Uint8Array(buffer, dataOffset, dataLength);
265
-
266
- }
267
-
268
- const mipmap = { "data": byteArray, "width": width, "height": height };
269
- dds.mipmaps.push(mipmap);
270
-
271
- dataOffset += dataLength;
272
-
273
- width = Math.max(width >> 1, 1);
274
- height = Math.max(height >> 1, 1);
275
-
276
- }
277
-
278
- }
279
-
280
- return dds;
281
-
282
- };
283
-
284
- export {
285
- DDSLoader
286
- };
@@ -1,343 +0,0 @@
1
- /**
2
- * @author Mugen87 / https://github.com/Mugen87
3
- *
4
- * References:
5
- * http://www.valvesoftware.com/publications/2010/siggraph2010_vlachos_waterflow.pdf
6
- * http://graphicsrunner.blogspot.de/2010/08/water-using-flow-maps.html
7
- *
8
- */
9
-
10
- import {
11
- Clock,
12
- Color,
13
- Matrix4,
14
- Mesh,
15
- RepeatWrapping,
16
- ShaderMaterial,
17
- TextureLoader,
18
- UniformsLib,
19
- UniformsUtils,
20
- Vector2,
21
- Vector4
22
- } from 'three';
23
- import { Reflector } from "./Reflector.js";
24
- import { Refractor } from "./Refractor.js";
25
-
26
-
27
- function Water(geometry, options) {
28
-
29
- Mesh.call(this, geometry);
30
-
31
- this.type = 'Water';
32
-
33
- const scope = this;
34
-
35
- options = options || {};
36
-
37
- const color = (options.color !== undefined) ? new Color(options.color) : new Color(0xFFFFFF);
38
- const textureWidth = options.textureWidth || 512;
39
- const textureHeight = options.textureHeight || 512;
40
- const clipBias = options.clipBias || 0;
41
- const flowDirection = options.flowDirection || new Vector2(1, 0);
42
- const flowSpeed = options.flowSpeed || 0.03;
43
- const reflectivity = options.reflectivity || 0.02;
44
- const scale = options.scale || 1;
45
-
46
- const shader = WaterShader;
47
-
48
- const textureLoader = new TextureLoader();
49
-
50
- const flowMap = options.flowMap || undefined;
51
- const normalMap0 = options.normalMap0 || textureLoader.load('textures/water/Water_1_M_Normal.jpg');
52
- const normalMap1 = options.normalMap1 || textureLoader.load('textures/water/Water_2_M_Normal.jpg');
53
-
54
- const cycle = 0.15; // a cycle of a flow map phase
55
- const halfCycle = cycle * 0.5;
56
- const textureMatrix = new Matrix4();
57
- const clock = new Clock();
58
-
59
- // internal components
60
-
61
- const reflector = new Reflector(geometry, {
62
- textureWidth: textureWidth,
63
- textureHeight: textureHeight,
64
- clipBias: clipBias
65
- });
66
-
67
- const refractor = new Refractor(geometry, {
68
- textureWidth: textureWidth,
69
- textureHeight: textureHeight,
70
- clipBias: clipBias
71
- });
72
-
73
- reflector.matrixAutoUpdate = false;
74
- refractor.matrixAutoUpdate = false;
75
-
76
- // material
77
-
78
- this.material = new ShaderMaterial({
79
- uniforms: UniformsUtils.merge([
80
- UniformsLib['fog'],
81
- shader.uniforms
82
- ]),
83
- vertexShader: shader.vertexShader,
84
- fragmentShader: shader.fragmentShader,
85
- transparent: true,
86
- fog: true
87
- });
88
-
89
- if (flowMap !== undefined) {
90
-
91
- this.material.defines.USE_FLOWMAP = '';
92
- this.material.uniforms.tFlowMap = {
93
- type: 't',
94
- value: flowMap
95
- };
96
-
97
- } else {
98
-
99
- this.material.uniforms.flowDirection = {
100
- type: 'v2',
101
- value: flowDirection
102
- };
103
-
104
- }
105
-
106
- // maps
107
-
108
- normalMap0.wrapS = normalMap0.wrapT = RepeatWrapping;
109
- normalMap1.wrapS = normalMap1.wrapT = RepeatWrapping;
110
-
111
- this.material.uniforms.tReflectionMap.value = reflector.getRenderTarget().texture;
112
- this.material.uniforms.tRefractionMap.value = refractor.getRenderTarget().texture;
113
- this.material.uniforms.tNormalMap0.value = normalMap0;
114
- this.material.uniforms.tNormalMap1.value = normalMap1;
115
-
116
- // water
117
-
118
- this.material.uniforms.color.value = color;
119
- this.material.uniforms.reflectivity.value = reflectivity;
120
- this.material.uniforms.textureMatrix.value = textureMatrix;
121
-
122
- // inital values
123
-
124
- this.material.uniforms.config.value.x = 0; // flowMapOffset0
125
- this.material.uniforms.config.value.y = halfCycle; // flowMapOffset1
126
- this.material.uniforms.config.value.z = halfCycle; // halfCycle
127
- this.material.uniforms.config.value.w = scale; // scale
128
-
129
- // functions
130
-
131
- function updateTextureMatrix(camera) {
132
-
133
- textureMatrix.set(
134
- 0.5, 0.0, 0.0, 0.5,
135
- 0.0, 0.5, 0.0, 0.5,
136
- 0.0, 0.0, 0.5, 0.5,
137
- 0.0, 0.0, 0.0, 1.0
138
- );
139
-
140
- textureMatrix.multiply(camera.projectionMatrix);
141
- textureMatrix.multiply(camera.matrixWorldInverse);
142
- textureMatrix.multiply(scope.matrixWorld);
143
-
144
- }
145
-
146
- function updateFlow() {
147
-
148
- const delta = clock.getDelta();
149
- const config = scope.material.uniforms.config;
150
-
151
- config.value.x += flowSpeed * delta; // flowMapOffset0
152
- config.value.y = config.value.x + halfCycle; // flowMapOffset1
153
-
154
- // Important: The distance between offsets should be always the value of "halfCycle".
155
- // Moreover, both offsets should be in the range of [ 0, cycle ].
156
- // This approach ensures a smooth water flow and avoids "reset" effects.
157
-
158
- if (config.value.x >= cycle) {
159
-
160
- config.value.x = 0;
161
- config.value.y = halfCycle;
162
-
163
- } else if (config.value.y >= cycle) {
164
-
165
- config.value.y = config.value.y - cycle;
166
-
167
- }
168
-
169
- }
170
-
171
- //
172
-
173
- this.onBeforeRender = function (renderer, scene, camera) {
174
-
175
- updateTextureMatrix(camera);
176
- updateFlow();
177
-
178
- scope.visible = false;
179
-
180
- reflector.matrixWorld.copy(scope.matrixWorld);
181
- refractor.matrixWorld.copy(scope.matrixWorld);
182
-
183
- reflector.onBeforeRender(renderer, scene, camera);
184
- refractor.onBeforeRender(renderer, scene, camera);
185
-
186
- scope.visible = true;
187
-
188
- };
189
-
190
- }
191
-
192
- Water.prototype = Object.create(Mesh.prototype);
193
- Water.prototype.constructor = Water;
194
-
195
- const WaterShader = {
196
-
197
- uniforms: {
198
-
199
- 'color': {
200
- type: 'c',
201
- value: null
202
- },
203
-
204
- 'reflectivity': {
205
- type: 'f',
206
- value: 0
207
- },
208
-
209
- 'tReflectionMap': {
210
- type: 't',
211
- value: null
212
- },
213
-
214
- 'tRefractionMap': {
215
- type: 't',
216
- value: null
217
- },
218
-
219
- 'tNormalMap0': {
220
- type: 't',
221
- value: null
222
- },
223
-
224
- 'tNormalMap1': {
225
- type: 't',
226
- value: null
227
- },
228
-
229
- 'textureMatrix': {
230
- type: 'm4',
231
- value: null
232
- },
233
-
234
- 'config': {
235
- type: 'v4',
236
- value: new Vector4()
237
- }
238
-
239
- },
240
-
241
- vertexShader: [
242
-
243
- '#include <fog_pars_vertex>',
244
-
245
- 'uniform mat4 textureMatrix;',
246
-
247
- 'varying vec4 vCoord;',
248
- 'varying vec2 vUv;',
249
- 'varying vec3 vToEye;',
250
-
251
- 'void main() {',
252
-
253
- ' vUv = uv;',
254
- ' vCoord = textureMatrix * vec4( position, 1.0 );',
255
-
256
- ' vec4 worldPosition = modelMatrix * vec4( position, 1.0 );',
257
- ' vToEye = cameraPosition - worldPosition.xyz;',
258
-
259
- ' vec4 mvPosition = viewMatrix * worldPosition;', // used in fog_vertex
260
- ' gl_Position = projectionMatrix * mvPosition;',
261
-
262
- ' #include <fog_vertex>',
263
-
264
- '}'
265
-
266
- ].join('\n'),
267
-
268
- fragmentShader: [
269
-
270
- '#include <fog_pars_fragment>',
271
-
272
- 'uniform sampler2D tReflectionMap;',
273
- 'uniform sampler2D tRefractionMap;',
274
- 'uniform sampler2D tNormalMap0;',
275
- 'uniform sampler2D tNormalMap1;',
276
-
277
- '#ifdef USE_FLOWMAP',
278
- ' uniform sampler2D tFlowMap;',
279
- '#else',
280
- ' uniform vec2 flowDirection;',
281
- '#endif',
282
-
283
- 'uniform vec3 color;',
284
- 'uniform float reflectivity;',
285
- 'uniform vec4 config;',
286
-
287
- 'varying vec4 vCoord;',
288
- 'varying vec2 vUv;',
289
- 'varying vec3 vToEye;',
290
-
291
- 'void main() {',
292
-
293
- ' float flowMapOffset0 = config.x;',
294
- ' float flowMapOffset1 = config.y;',
295
- ' float halfCycle = config.z;',
296
- ' float scale = config.w;',
297
-
298
- ' vec3 toEye = normalize( vToEye );',
299
-
300
- // determine flow direction
301
- ' vec2 flow;',
302
- ' #ifdef USE_FLOWMAP',
303
- ' flow = texture2D( tFlowMap, vUv ).rg * 2.0 - 1.0;',
304
- ' #else',
305
- ' flow = flowDirection;',
306
- ' #endif',
307
- ' flow.x *= - 1.0;',
308
-
309
- // sample normal maps (distort uvs with flowdata)
310
- ' vec4 normalColor0 = texture2D( tNormalMap0, ( vUv * scale ) + flow * flowMapOffset0 );',
311
- ' vec4 normalColor1 = texture2D( tNormalMap1, ( vUv * scale ) + flow * flowMapOffset1 );',
312
-
313
- // linear interpolate to get the final normal color
314
- ' float flowLerp = abs( halfCycle - flowMapOffset0 ) / halfCycle;',
315
- ' vec4 normalColor = mix( normalColor0, normalColor1, flowLerp );',
316
-
317
- // calculate normal vector
318
- ' vec3 normal = normalize( vec3( normalColor.r * 2.0 - 1.0, normalColor.b, normalColor.g * 2.0 - 1.0 ) );',
319
-
320
- // calculate the fresnel term to blend reflection and refraction maps
321
- ' float theta = max( dot( toEye, normal ), 0.0 );',
322
- ' float reflectance = reflectivity + ( 1.0 - reflectivity ) * pow( ( 1.0 - theta ), 5.0 );',
323
-
324
- // calculate final uv coords
325
- ' vec3 coord = vCoord.xyz / vCoord.w;',
326
- ' vec2 uv = coord.xy + coord.z * normal.xz * 0.05;',
327
-
328
- ' vec4 reflectColor = texture2D( tReflectionMap, vec2( 1.0 - uv.x, uv.y ) );',
329
- ' vec4 refractColor = texture2D( tRefractionMap, uv );',
330
-
331
- // multiply water color with the mix of both textures
332
- ' gl_FragColor = vec4( color, 1.0 ) * mix( refractColor, reflectColor, reflectance );',
333
-
334
- ' #include <tonemapping_fragment>',
335
- ' #include <encodings_fragment>',
336
- ' #include <fog_fragment>',
337
-
338
- '}'
339
-
340
- ].join('\n')
341
- };
342
-
343
- export { Water };
@@ -1,9 +0,0 @@
1
- /**
2
- *
3
- * @param {number} displacement
4
- * @param {number} stiffness
5
- * @return {number}
6
- */
7
- export function computeHookeForce(displacement, stiffness) {
8
- return -stiffness * displacement;
9
- }