@tresjs/cientos 5.5.0 → 5.7.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/dist/trescientos.d.ts +2555 -2548
- package/dist/trescientos.js +80 -63
- package/package.json +4 -4
package/dist/trescientos.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* name: @tresjs/cientos
|
|
3
|
-
* version: v5.
|
|
3
|
+
* version: v5.7.0
|
|
4
4
|
* (c) 2026
|
|
5
5
|
* description: Collection of useful helpers and fully functional, ready-made abstractions for Tres
|
|
6
6
|
* author: Alvaro Saburido <hola@alvarosaburido.dev> (https://github.com/alvarosabu/)
|
|
7
7
|
*/
|
|
8
8
|
import { Fragment, Suspense, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createVNode, defineComponent, inject, isReactive, isRef, mergeDefaults, mergeProps, nextTick, normalizeProps, onBeforeUnmount, onMounted, onUnmounted, openBlock, provide, reactive, ref, render, renderList, renderSlot, shallowReactive, shallowRef, toRaw, toRefs, toValue, triggerRef, unref, useAttrs, useSlots, watch, watchEffect, withAsyncContext, withCtx } from "vue";
|
|
9
|
-
import { buildGraph, extend, isObject3D, logError, logWarning, normalizeColor, normalizeVectorFlexibleParam, useLoader, useLoop, useTres, useTresContext } from "@tresjs/core";
|
|
9
|
+
import { buildGraph, createTimer, extend, isObject3D, logError, logWarning, normalizeColor, normalizeVectorFlexibleParam, useLoader, useLoop, useTres, useTresContext } from "@tresjs/core";
|
|
10
10
|
import * as THREE from "three";
|
|
11
|
-
import { AdditiveBlending, AlwaysStencilFunc, AnimationMixer, Audio, AudioListener, AudioLoader, BackSide, Box2, Box3, BoxGeometry, BufferAttribute, BufferGeometry, Camera, CatmullRomCurve3, ClampToEdgeWrapping, Color, CubeCamera, CubeReflectionMapping, CubeTextureLoader, CubicBezierCurve3, DataTexture, DefaultLoadingManager, DepthTexture, DirectionalLight, DoubleSide, EdgesGeometry, EqualStencilFunc, EquirectangularReflectionMapping, Euler, FloatType, FramebufferTexture, FrontSide, Group, HalfFloatType, IcosahedronGeometry, InstancedMesh, InterleavedBuffer, InterleavedBufferAttribute, KeepStencilOp, LOD, LinearFilter, MOUSE, MathUtils, Matrix4, Mesh, MeshBasicMaterial, MeshDepthMaterial, MeshLambertMaterial, MeshStandardMaterial, NearestFilter, NoBlending, NotEqualStencilFunc, Object3D, OrthographicCamera, PerspectiveCamera, Plane, PlaneGeometry, Points, PointsMaterial, QuadraticBezierCurve3, Quaternion, REVISION, RGBAFormat, RawShaderMaterial, Raycaster, RepeatWrapping, ReplaceStencilOp, Scene, ShaderChunk, ShaderMaterial, ShapeGeometry, SkinnedMesh, Sphere, Spherical, TOUCH, TangentSpaceNormalMap, Texture, TextureLoader,
|
|
11
|
+
import { AdditiveBlending, AlwaysStencilFunc, AnimationMixer, Audio, AudioListener, AudioLoader, BackSide, Box2, Box3, BoxGeometry, BufferAttribute, BufferGeometry, Camera, CatmullRomCurve3, ClampToEdgeWrapping, Color, CubeCamera, CubeReflectionMapping, CubeTextureLoader, CubicBezierCurve3, DataTexture, DefaultLoadingManager, DepthTexture, DirectionalLight, DoubleSide, EdgesGeometry, EqualStencilFunc, EquirectangularReflectionMapping, Euler, FloatType, FramebufferTexture, FrontSide, Group, HalfFloatType, IcosahedronGeometry, InstancedMesh, InterleavedBuffer, InterleavedBufferAttribute, KeepStencilOp, LOD, LinearFilter, MOUSE, MathUtils, Matrix4, Mesh, MeshBasicMaterial, MeshDepthMaterial, MeshLambertMaterial, MeshStandardMaterial, NearestFilter, NoBlending, NotEqualStencilFunc, Object3D, OrthographicCamera, PerspectiveCamera, Plane, PlaneGeometry, Points, PointsMaterial, QuadraticBezierCurve3, Quaternion, REVISION, RGBAFormat, RawShaderMaterial, Raycaster, RepeatWrapping, ReplaceStencilOp, Scene, ShaderChunk, ShaderMaterial, ShapeGeometry, SkinnedMesh, Sphere, Spherical, TOUCH, TangentSpaceNormalMap, Texture, TextureLoader, UVMapping, Uniform, UniformsUtils, UnsignedByteType, Vector2, Vector3, Vector4, VideoTexture, WebGLCubeRenderTarget, WebGLRenderTarget, WebGLRenderer } from "three";
|
|
12
12
|
import { tryOnScopeDispose, useDebounceFn, useElementSize, useEventListener, useMagicKeys, useMouse, useScroll, useWindowScroll, useWindowSize, watchThrottled, whenever } from "@vueuse/core";
|
|
13
13
|
import { DRACOLoader, FBXLoader, FontLoader, GLTFExporter, GLTFLoader, HorizontalBlurShader, Line2, LineGeometry, LineMaterial, MapControls, MarchingCubes, MeshSurfaceSampler, OrbitControls, PointerLockControls, PositionalAudioHelper, RGBELoader, Reflector, RoundedBoxGeometry, SVGLoader, SimplexNoise, Sky, TextGeometry, TransformControls, VerticalBlurShader, Water, toCreasedNormals } from "three-stdlib";
|
|
14
14
|
import BaseCameraControls, { default as CameraControls } from "camera-controls";
|
|
@@ -1703,10 +1703,12 @@ const getSeededRandomProps = (seed = 0, seedProps = defaultSeedProps) => {
|
|
|
1703
1703
|
* The precendence in creating the final elements' props is as follows:
|
|
1704
1704
|
*
|
|
1705
1705
|
* 1. `elements`
|
|
1706
|
-
* 2. `userDefaultElement` - `color`, `
|
|
1706
|
+
* 2. `userDefaultElement` - `color`, `texture` from component
|
|
1707
1707
|
* 3. seeded random props - if `seed` and/or `seedProps` is not `undefined`
|
|
1708
1708
|
* 4. system default
|
|
1709
1709
|
*
|
|
1710
|
+
* Note: `scale` and `distance` are applied as multipliers at render time, not as defaults.
|
|
1711
|
+
*
|
|
1710
1712
|
* @param elements - `undefined` or an array of (potentially) incomplete element props
|
|
1711
1713
|
* @param userDefaultElement - values to "fill in" missing partial elements fields – or overwrite seeded props
|
|
1712
1714
|
* @param seed - `undefined` or a number to seed random prop generation
|
|
@@ -1729,16 +1731,6 @@ const partialLensflarePropsArrayToLensflarePropsArray = (elements, userDefaultEl
|
|
|
1729
1731
|
const _seedProps = seedProps === void 0 || seedProps.length === 0 ? defaultSeedProps : seedProps;
|
|
1730
1732
|
return getSeededRandomProps(seed ?? 0, _seedProps).map((props) => Object.assign({}, props, userDefaultElement));
|
|
1731
1733
|
};
|
|
1732
|
-
function filterLensflareElementProps(props) {
|
|
1733
|
-
return filter(props, (v, k) => k in defaultLensflareElementProps && v !== void 0);
|
|
1734
|
-
}
|
|
1735
|
-
function filter(obj, predicate) {
|
|
1736
|
-
const result = {};
|
|
1737
|
-
Object.keys(obj).forEach((name) => {
|
|
1738
|
-
if (predicate(obj[name], name)) result[name] = obj[name];
|
|
1739
|
-
});
|
|
1740
|
-
return result;
|
|
1741
|
-
}
|
|
1742
1734
|
|
|
1743
1735
|
//#endregion
|
|
1744
1736
|
//#region src/core/abstractions/Lensflare/component.vue?vue&type=script&setup=true&lang.ts
|
|
@@ -1750,6 +1742,11 @@ var component_vue_vue_type_script_setup_true_lang_default$15 = /* @__PURE__ */ d
|
|
|
1750
1742
|
required: false,
|
|
1751
1743
|
default: 1
|
|
1752
1744
|
},
|
|
1745
|
+
distance: {
|
|
1746
|
+
type: Number,
|
|
1747
|
+
required: false,
|
|
1748
|
+
default: 1
|
|
1749
|
+
},
|
|
1753
1750
|
elements: {
|
|
1754
1751
|
type: Array,
|
|
1755
1752
|
required: false,
|
|
@@ -1770,16 +1767,6 @@ var component_vue_vue_type_script_setup_true_lang_default$15 = /* @__PURE__ */ d
|
|
|
1770
1767
|
required: false,
|
|
1771
1768
|
default: void 0
|
|
1772
1769
|
},
|
|
1773
|
-
distance: {
|
|
1774
|
-
type: Number,
|
|
1775
|
-
required: false,
|
|
1776
|
-
default: void 0
|
|
1777
|
-
},
|
|
1778
|
-
size: {
|
|
1779
|
-
type: Number,
|
|
1780
|
-
required: false,
|
|
1781
|
-
default: void 0
|
|
1782
|
-
},
|
|
1783
1770
|
texture: {
|
|
1784
1771
|
type: [Object, String],
|
|
1785
1772
|
required: false,
|
|
@@ -1788,9 +1775,17 @@ var component_vue_vue_type_script_setup_true_lang_default$15 = /* @__PURE__ */ d
|
|
|
1788
1775
|
},
|
|
1789
1776
|
setup(__props, { expose: __expose }) {
|
|
1790
1777
|
const props = __props;
|
|
1778
|
+
function pickDefined(obj) {
|
|
1779
|
+
const result = {};
|
|
1780
|
+
for (const [k, v] of Object.entries(obj)) if (v !== void 0) result[k] = v;
|
|
1781
|
+
return result;
|
|
1782
|
+
}
|
|
1791
1783
|
const lensflareRef = shallowRef();
|
|
1792
1784
|
const lensflareElementPropsArrayRef = shallowRef([]);
|
|
1793
|
-
const userDefaultLensflareElementPropsRef = shallowRef(
|
|
1785
|
+
const userDefaultLensflareElementPropsRef = shallowRef(pickDefined({
|
|
1786
|
+
color: props.color,
|
|
1787
|
+
texture: props.texture
|
|
1788
|
+
}));
|
|
1794
1789
|
__expose({ instance: lensflareRef });
|
|
1795
1790
|
const textureLoader = new TextureLoader();
|
|
1796
1791
|
const threeLensflare = new Lensflare();
|
|
@@ -1812,10 +1807,11 @@ var component_vue_vue_type_script_setup_true_lang_default$15 = /* @__PURE__ */ d
|
|
|
1812
1807
|
p.color = normalizeColor(p.color);
|
|
1813
1808
|
return p;
|
|
1814
1809
|
};
|
|
1815
|
-
const
|
|
1810
|
+
const applyScaleAndDistance = () => {
|
|
1816
1811
|
for (let i = lensflareElementPropsArrayRef.value.length - 1; i < threeElements.length; i++) threeElements[i].size = 0;
|
|
1817
1812
|
lensflareElementPropsArrayRef.value.forEach((elementProps, i) => {
|
|
1818
1813
|
threeElements[i].size = elementProps.size * props.scale;
|
|
1814
|
+
threeElements[i].distance = elementProps.distance * props.distance;
|
|
1819
1815
|
});
|
|
1820
1816
|
};
|
|
1821
1817
|
const updateThreeElements = () => {
|
|
@@ -1842,7 +1838,7 @@ var component_vue_vue_type_script_setup_true_lang_default$15 = /* @__PURE__ */ d
|
|
|
1842
1838
|
threeElement.distance = distance;
|
|
1843
1839
|
threeElement.color = normalizeColor(color);
|
|
1844
1840
|
});
|
|
1845
|
-
|
|
1841
|
+
applyScaleAndDistance();
|
|
1846
1842
|
};
|
|
1847
1843
|
onUnmounted(() => {
|
|
1848
1844
|
dispose();
|
|
@@ -1851,18 +1847,11 @@ var component_vue_vue_type_script_setup_true_lang_default$15 = /* @__PURE__ */ d
|
|
|
1851
1847
|
lensflareRef.value?.add(threeLensflare);
|
|
1852
1848
|
lensflareElementPropsArrayRef.value = partialLensflarePropsArrayToLensflarePropsArray(props.elements, userDefaultLensflareElementPropsRef.value, props.seed, props.seedProps);
|
|
1853
1849
|
});
|
|
1854
|
-
watch(() => [
|
|
1855
|
-
|
|
1856
|
-
props.distance,
|
|
1857
|
-
props.size,
|
|
1858
|
-
props.texture
|
|
1859
|
-
], () => {
|
|
1860
|
-
userDefaultLensflareElementPropsRef.value = {
|
|
1850
|
+
watch(() => [props.color, props.texture], () => {
|
|
1851
|
+
userDefaultLensflareElementPropsRef.value = pickDefined({
|
|
1861
1852
|
color: props.color,
|
|
1862
|
-
distance: props.distance,
|
|
1863
|
-
size: props.size,
|
|
1864
1853
|
texture: props.texture
|
|
1865
|
-
};
|
|
1854
|
+
});
|
|
1866
1855
|
});
|
|
1867
1856
|
watch(() => [
|
|
1868
1857
|
userDefaultLensflareElementPropsRef.value,
|
|
@@ -1872,8 +1861,8 @@ var component_vue_vue_type_script_setup_true_lang_default$15 = /* @__PURE__ */ d
|
|
|
1872
1861
|
], () => {
|
|
1873
1862
|
lensflareElementPropsArrayRef.value = partialLensflarePropsArrayToLensflarePropsArray(props.elements, userDefaultLensflareElementPropsRef.value, props.seed, props.seedProps);
|
|
1874
1863
|
});
|
|
1875
|
-
watch(() => props.scale, () => {
|
|
1876
|
-
|
|
1864
|
+
watch(() => [props.scale, props.distance], () => {
|
|
1865
|
+
applyScaleAndDistance();
|
|
1877
1866
|
});
|
|
1878
1867
|
watch(() => lensflareElementPropsArrayRef.value, () => {
|
|
1879
1868
|
updateThreeElements();
|
|
@@ -5417,8 +5406,8 @@ var HolographicMaterial = class extends ShaderMaterial {
|
|
|
5417
5406
|
blinkFresnelOnly: new Uniform(parameters.blinkFresnelOnly !== void 0 ? parameters.blinkFresnelOnly : true),
|
|
5418
5407
|
hologramOpacity: new Uniform(parameters.hologramOpacity !== void 0 ? parameters.hologramOpacity : 1)
|
|
5419
5408
|
};
|
|
5420
|
-
this.clock =
|
|
5421
|
-
|
|
5409
|
+
this.clock = createTimer();
|
|
5410
|
+
this.clock.start();
|
|
5422
5411
|
this.setValues(parameters);
|
|
5423
5412
|
this.depthTest = parameters.depthTest !== void 0 ? parameters.depthTest : false;
|
|
5424
5413
|
this.blending = parameters.blendMode !== void 0 ? parameters.blendMode : AdditiveBlending;
|
|
@@ -9987,14 +9976,15 @@ var ContactShadows_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */
|
|
|
9987
9976
|
};
|
|
9988
9977
|
}
|
|
9989
9978
|
function setSize(ps, pool$1) {
|
|
9990
|
-
const shadowCamera = pool$1.shadowCamera;
|
|
9991
|
-
shadowCamera.left = -ps.width / 2;
|
|
9992
|
-
shadowCamera.right = ps.width / 2;
|
|
9993
|
-
shadowCamera.top = ps.height / 2;
|
|
9994
|
-
shadowCamera.bottom = -ps.height / 2;
|
|
9995
|
-
shadowCamera.far = ps.far;
|
|
9996
9979
|
const w = ps.width * (Array.isArray(ps.scale) ? ps.scale[0] : ps.scale || 1);
|
|
9997
9980
|
const h = ps.height * (Array.isArray(ps.scale) ? ps.scale[1] : ps.scale || 1);
|
|
9981
|
+
const shadowCamera = pool$1.shadowCamera;
|
|
9982
|
+
shadowCamera.left = -w / 2;
|
|
9983
|
+
shadowCamera.right = w / 2;
|
|
9984
|
+
shadowCamera.top = h / 2;
|
|
9985
|
+
shadowCamera.bottom = -h / 2;
|
|
9986
|
+
shadowCamera.far = ps.far;
|
|
9987
|
+
shadowCamera.updateProjectionMatrix();
|
|
9998
9988
|
pool$1.shadowGroup.scale.set(w, ps.far, h);
|
|
9999
9989
|
}
|
|
10000
9990
|
function setResolution(resolution, pool$1) {
|
|
@@ -10440,15 +10430,41 @@ var Ocean_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineCo
|
|
|
10440
10430
|
type: null,
|
|
10441
10431
|
required: false,
|
|
10442
10432
|
default: FrontSide
|
|
10433
|
+
},
|
|
10434
|
+
speed: {
|
|
10435
|
+
type: Number,
|
|
10436
|
+
required: false,
|
|
10437
|
+
default: 1
|
|
10443
10438
|
}
|
|
10444
10439
|
},
|
|
10445
10440
|
setup(__props, { expose: __expose }) {
|
|
10446
|
-
const
|
|
10441
|
+
const props = __props;
|
|
10442
|
+
const { waterNormals, sunColor, waterColor, distortionScale, size, alpha, speed } = toRefs(props);
|
|
10447
10443
|
const { extend: extend$1, scene } = useTresContext();
|
|
10448
10444
|
extend$1({ Water });
|
|
10449
10445
|
const waterRef = shallowRef();
|
|
10450
10446
|
const sunRef = shallowRef();
|
|
10451
10447
|
const _fog = scene.value.fog !== void 0;
|
|
10448
|
+
function changeSunColor(val) {
|
|
10449
|
+
if (waterRef.value) waterRef.value.material.uniforms.sunColor.value.set(val);
|
|
10450
|
+
}
|
|
10451
|
+
function changeWaterColor(val) {
|
|
10452
|
+
if (waterRef.value) waterRef.value.material.uniforms.waterColor.value.set(val);
|
|
10453
|
+
}
|
|
10454
|
+
function changeDistortionScale(val) {
|
|
10455
|
+
if (waterRef.value) waterRef.value.material.uniforms.distortionScale.value = val;
|
|
10456
|
+
}
|
|
10457
|
+
function changeSize(val) {
|
|
10458
|
+
if (waterRef.value) waterRef.value.material.uniforms.size.value = val;
|
|
10459
|
+
}
|
|
10460
|
+
function changeAlpha(val) {
|
|
10461
|
+
if (waterRef.value) waterRef.value.material.uniforms.alpha.value = val;
|
|
10462
|
+
}
|
|
10463
|
+
watch(sunColor, changeSunColor);
|
|
10464
|
+
watch(waterColor, changeWaterColor);
|
|
10465
|
+
watch(distortionScale, changeDistortionScale);
|
|
10466
|
+
watch(size, changeSize);
|
|
10467
|
+
watch(alpha, changeAlpha);
|
|
10452
10468
|
__expose({ instance: waterRef });
|
|
10453
10469
|
scene.value.traverse((child) => {
|
|
10454
10470
|
if (Object.prototype.hasOwnProperty.call(child, "isSky")) sunRef.value = child;
|
|
@@ -10462,29 +10478,30 @@ var Ocean_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineCo
|
|
|
10462
10478
|
});
|
|
10463
10479
|
const normalMap = new TextureLoader().load(waterNormals.value);
|
|
10464
10480
|
normalMap.wrapS = normalMap.wrapT = RepeatWrapping;
|
|
10481
|
+
const initialParams = {
|
|
10482
|
+
textureWidth: props.textureWidth,
|
|
10483
|
+
textureHeight: props.textureHeight,
|
|
10484
|
+
waterNormals: normalMap,
|
|
10485
|
+
sunDirection: props.sunDirection,
|
|
10486
|
+
sunColor: props.sunColor,
|
|
10487
|
+
waterColor: props.waterColor,
|
|
10488
|
+
distortionScale: props.distortionScale,
|
|
10489
|
+
fog: _fog,
|
|
10490
|
+
size: props.size,
|
|
10491
|
+
clipBias: props.clipBias,
|
|
10492
|
+
alpha: props.alpha,
|
|
10493
|
+
side: props.side
|
|
10494
|
+
};
|
|
10465
10495
|
const { onBeforeRender } = useLoop();
|
|
10466
10496
|
onBeforeRender(({ delta }) => {
|
|
10467
|
-
if (waterRef.value) waterRef.value.material.uniforms.time.value += delta;
|
|
10497
|
+
if (waterRef.value) waterRef.value.material.uniforms.time.value += delta * speed.value;
|
|
10468
10498
|
});
|
|
10469
10499
|
return (_ctx, _cache) => {
|
|
10470
10500
|
return openBlock(), createElementBlock("TresWater", {
|
|
10471
10501
|
ref_key: "waterRef",
|
|
10472
10502
|
ref: waterRef,
|
|
10473
10503
|
"rotation-x": -Math.PI / 2,
|
|
10474
|
-
args: [void 0,
|
|
10475
|
-
textureWidth: unref(textureWidth),
|
|
10476
|
-
textureHeight: unref(textureHeight),
|
|
10477
|
-
waterNormals: unref(normalMap),
|
|
10478
|
-
sunDirection: unref(sunDirection),
|
|
10479
|
-
sunColor: unref(sunColor),
|
|
10480
|
-
waterColor: unref(waterColor),
|
|
10481
|
-
distortionScale: unref(distortionScale),
|
|
10482
|
-
fog: _fog,
|
|
10483
|
-
size: unref(size),
|
|
10484
|
-
clipBias: unref(clipBias),
|
|
10485
|
-
alpha: unref(alpha),
|
|
10486
|
-
side: unref(side)
|
|
10487
|
-
}]
|
|
10504
|
+
args: [void 0, initialParams]
|
|
10488
10505
|
}, [renderSlot(_ctx.$slots, "default", {}, () => [_cache[0] || (_cache[0] = createElementVNode("TresPlaneGeometry", { args: [1e4, 1e4] }, null, -1))])], 8, _hoisted_1$8);
|
|
10489
10506
|
};
|
|
10490
10507
|
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tresjs/cientos",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "5.
|
|
4
|
+
"version": "5.7.0",
|
|
5
5
|
"description": "Collection of useful helpers and fully functional, ready-made abstractions for Tres",
|
|
6
6
|
"author": "Alvaro Saburido <hola@alvarosaburido.dev> (https://github.com/alvarosabu/)",
|
|
7
7
|
"license": "MIT",
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"access": "public"
|
|
39
39
|
},
|
|
40
40
|
"peerDependencies": {
|
|
41
|
-
"@tresjs/core": "5.
|
|
41
|
+
"@tresjs/core": "5.8.0",
|
|
42
42
|
"three": ">=0.133",
|
|
43
43
|
"vue": ">=3.5.17"
|
|
44
44
|
},
|
|
@@ -72,8 +72,8 @@
|
|
|
72
72
|
"vite-plugin-glsl": "^1.5.1",
|
|
73
73
|
"vite-svg-loader": "^5.1.0",
|
|
74
74
|
"vue-tsc": "^3.2.1",
|
|
75
|
-
"@tresjs/
|
|
76
|
-
"@tresjs/
|
|
75
|
+
"@tresjs/eslint-config": "1.5.1",
|
|
76
|
+
"@tresjs/core": "5.8.0"
|
|
77
77
|
},
|
|
78
78
|
"nx": {
|
|
79
79
|
"implicitDependencies": [
|