@needle-tools/engine 4.13.1 → 4.14.0-beta
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/CHANGELOG.md +9 -0
- package/components.needle.json +1 -1
- package/dist/generateMeshBVH.worker-DiCnZlf3.js +21 -0
- package/dist/gltf-progressive-Bm_6aEi4.js +1528 -0
- package/dist/gltf-progressive-BttGBXw6.umd.cjs +10 -0
- package/dist/gltf-progressive-T5WKTux5.min.js +10 -0
- package/dist/loader.worker-BqODMeeW.js +23 -0
- package/dist/{materialx-B9ddsHcF.min.js → materialx-CJyQZtjt.min.js} +1 -1
- package/dist/{materialx-fkoFuRh3.js → materialx-DMs1E08Z.js} +2 -2
- package/dist/{materialx-BF23AVE8.umd.cjs → materialx-DaKKOoVk.umd.cjs} +1 -1
- package/dist/needle-engine.bundle-BW2VusZV.min.js +1646 -0
- package/dist/{needle-engine.bundle-tjI5Fq2c.umd.cjs → needle-engine.bundle-Cb5bKEqa.umd.cjs} +152 -159
- package/dist/{needle-engine.bundle-DauZUYl7.js → needle-engine.bundle-D9VPvp5o.js} +7798 -7497
- package/dist/needle-engine.d.ts +779 -42
- package/dist/needle-engine.js +416 -415
- package/dist/needle-engine.min.js +1 -1
- package/dist/needle-engine.umd.cjs +1 -1
- package/dist/{postprocessing-BVNrgYZK.min.js → postprocessing-CctM1XIO.min.js} +1 -1
- package/dist/{postprocessing-DdM-tz1j.js → postprocessing-DGm6qJ-I.js} +2 -2
- package/dist/{postprocessing-CI2TjWpu.umd.cjs → postprocessing-Dbl2PJpd.umd.cjs} +1 -1
- package/dist/{three-BW2s1Yl-.umd.cjs → three-BjYim-vL.umd.cjs} +4 -4
- package/dist/{three-VvRoMeIN.js → three-Bvk2VKbF.js} +4210 -4210
- package/dist/{three-I__hSXzr.min.js → three-IG2qPafA.min.js} +33 -33
- package/dist/{three-examples-Bpfu6ke_.umd.cjs → three-examples-BMmNgNCN.umd.cjs} +1 -1
- package/dist/{three-examples-BhfOE7NG.js → three-examples-CMYCd5nH.js} +1 -1
- package/dist/{three-examples-D8zAE_7t.min.js → three-examples-CQl1fFZp.min.js} +1 -1
- package/dist/{three-mesh-ui-C3QbemOV.min.js → three-mesh-ui-5HVE2RV-.min.js} +1 -1
- package/dist/{three-mesh-ui-CcMp-FQm.js → three-mesh-ui-BlakAItG.js} +1 -1
- package/dist/{three-mesh-ui-BU55xDxJ.umd.cjs → three-mesh-ui-D828VbQp.umd.cjs} +1 -1
- package/dist/{vendor-DW7zqjuT.min.js → vendor-BxK0WKmT.min.js} +1 -1
- package/dist/{vendor-COVQl0b8.umd.cjs → vendor-CIDkyBaO.umd.cjs} +1 -1
- package/dist/{vendor-BiyIZ61v.js → vendor-ixwD-vv2.js} +1 -1
- package/lib/engine/api.d.ts +1 -0
- package/lib/engine/api.js +1 -0
- package/lib/engine/api.js.map +1 -1
- package/lib/engine/engine_context.js +12 -2
- package/lib/engine/engine_context.js.map +1 -1
- package/lib/engine/engine_lightdata.js +8 -6
- package/lib/engine/engine_lightdata.js.map +1 -1
- package/lib/engine/engine_materialpropertyblock.d.ts +259 -0
- package/lib/engine/engine_materialpropertyblock.js +682 -0
- package/lib/engine/engine_materialpropertyblock.js.map +1 -0
- package/lib/engine/engine_utils.d.ts +1 -0
- package/lib/engine/engine_utils.js +1 -0
- package/lib/engine/engine_utils.js.map +1 -1
- package/lib/engine/engine_utils_screenshot.d.ts +171 -14
- package/lib/engine/engine_utils_screenshot.js +65 -0
- package/lib/engine/engine_utils_screenshot.js.map +1 -1
- package/lib/engine/engine_utils_screenshot.xr.d.ts +1 -1
- package/lib/engine/engine_utils_screenshot.xr.js +1 -1
- package/lib/engine/extensions/NEEDLE_techniques_webgl.js +3 -0
- package/lib/engine/extensions/NEEDLE_techniques_webgl.js.map +1 -1
- package/lib/engine/xr/NeedleXRSession.d.ts +5 -0
- package/lib/engine/xr/NeedleXRSession.js +5 -0
- package/lib/engine/xr/NeedleXRSession.js.map +1 -1
- package/lib/engine-components/Camera.js.map +1 -1
- package/lib/engine-components/DropListener.js.map +1 -1
- package/lib/engine-components/Duplicatable.js.map +1 -1
- package/lib/engine-components/GroundProjection.js.map +1 -1
- package/lib/engine-components/NeedleMenu.js.map +1 -1
- package/lib/engine-components/NestedGltf.js.map +1 -1
- package/lib/engine-components/ReflectionProbe.d.ts +32 -4
- package/lib/engine-components/ReflectionProbe.js +58 -88
- package/lib/engine-components/ReflectionProbe.js.map +1 -1
- package/lib/engine-components/Renderer.d.ts +2 -0
- package/lib/engine-components/Renderer.js +30 -6
- package/lib/engine-components/Renderer.js.map +1 -1
- package/lib/engine-components/RendererLightmap.d.ts +13 -9
- package/lib/engine-components/RendererLightmap.js +67 -81
- package/lib/engine-components/RendererLightmap.js.map +1 -1
- package/lib/engine-components/SeeThrough.d.ts +0 -2
- package/lib/engine-components/SeeThrough.js +114 -88
- package/lib/engine-components/SeeThrough.js.map +1 -1
- package/lib/engine-components/SmoothFollow.js.map +1 -1
- package/lib/engine-components/VideoPlayer.js +6 -0
- package/lib/engine-components/VideoPlayer.js.map +1 -1
- package/lib/engine-components/ui/Button.js.map +1 -1
- package/lib/engine-components/ui/Raycaster.js.map +1 -1
- package/lib/engine-components/utils/OpenURL.d.ts +1 -0
- package/lib/engine-components/utils/OpenURL.js +1 -0
- package/lib/engine-components/utils/OpenURL.js.map +1 -1
- package/lib/engine-components/web/CursorFollow.d.ts +1 -0
- package/lib/engine-components/web/CursorFollow.js +1 -0
- package/lib/engine-components/web/CursorFollow.js.map +1 -1
- package/lib/engine-components/web/ScrollFollow.d.ts +1 -0
- package/lib/engine-components/web/ScrollFollow.js +1 -0
- package/lib/engine-components/web/ScrollFollow.js.map +1 -1
- package/lib/engine-components/web/ViewBox.d.ts +2 -2
- package/lib/engine-components/web/ViewBox.js +2 -2
- package/lib/engine-components/web/ViewBox.js.map +1 -1
- package/lib/engine-components/webxr/WebARCameraBackground.d.ts +9 -0
- package/lib/engine-components/webxr/WebARCameraBackground.js +9 -0
- package/lib/engine-components/webxr/WebARCameraBackground.js.map +1 -1
- package/lib/engine-components/webxr/WebXR.d.ts +1 -0
- package/lib/engine-components/webxr/WebXR.js +1 -0
- package/lib/engine-components/webxr/WebXR.js.map +1 -1
- package/lib/engine-components/webxr/WebXRPlaneTracking.js.map +1 -1
- package/lib/engine-components/webxr/controllers/XRControllerFollow.js.map +1 -1
- package/lib/engine-components/webxr/controllers/XRControllerMovement.js.map +1 -1
- package/package.json +5 -5
- package/plugins/vite/build-pipeline.js +16 -2
- package/src/engine/api.ts +1 -0
- package/src/engine/engine_context.ts +17 -3
- package/src/engine/engine_lightdata.ts +8 -6
- package/src/engine/engine_materialpropertyblock.ts +866 -0
- package/src/engine/engine_utils.ts +1 -0
- package/src/engine/engine_utils_screenshot.ts +241 -17
- package/src/engine/engine_utils_screenshot.xr.ts +1 -1
- package/src/engine/extensions/NEEDLE_techniques_webgl.ts +3 -0
- package/src/engine/xr/NeedleXRSession.ts +5 -0
- package/src/engine-components/Camera.ts +2 -2
- package/src/engine-components/ContactShadows.ts +1 -1
- package/src/engine-components/DropListener.ts +1 -1
- package/src/engine-components/Duplicatable.ts +1 -1
- package/src/engine-components/GroundProjection.ts +3 -0
- package/src/engine-components/NeedleMenu.ts +3 -0
- package/src/engine-components/NestedGltf.ts +1 -1
- package/src/engine-components/ReflectionProbe.ts +64 -105
- package/src/engine-components/Renderer.ts +34 -6
- package/src/engine-components/RendererLightmap.ts +75 -87
- package/src/engine-components/SeeThrough.ts +124 -109
- package/src/engine-components/SmoothFollow.ts +2 -2
- package/src/engine-components/VideoPlayer.ts +6 -0
- package/src/engine-components/ui/Button.ts +1 -1
- package/src/engine-components/ui/Raycaster.ts +1 -1
- package/src/engine-components/utils/OpenURL.ts +1 -0
- package/src/engine-components/web/CursorFollow.ts +1 -0
- package/src/engine-components/web/ScrollFollow.ts +1 -0
- package/src/engine-components/web/ViewBox.ts +9 -2
- package/src/engine-components/webxr/WebARCameraBackground.ts +12 -3
- package/src/engine-components/webxr/WebXR.ts +1 -0
- package/src/engine-components/webxr/WebXRPlaneTracking.ts +3 -3
- package/src/engine-components/webxr/controllers/XRControllerFollow.ts +1 -1
- package/src/engine-components/webxr/controllers/XRControllerMovement.ts +4 -4
- package/dist/generateMeshBVH.worker-iyfPIK6R.js +0 -21
- package/dist/gltf-progressive-BURrJW0U.umd.cjs +0 -8
- package/dist/gltf-progressive-DHLDFNvQ.min.js +0 -8
- package/dist/gltf-progressive-eiJCrjLb.js +0 -1400
- package/dist/loader.worker-C1GG9A7C.js +0 -23
- package/dist/needle-engine.bundle-BNIUpreS.min.js +0 -1653
- package/src/include/three/DragControls.js +0 -232
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { NEEDLE_progressive } from "@needle-tools/gltf-progressive";
|
|
2
|
-
import { Group, Mesh,
|
|
2
|
+
import { Group, Mesh, ShaderMaterial, Vector2, Vector4 } from "three";
|
|
3
3
|
import { getParam } from "../engine/engine_utils.js";
|
|
4
|
+
import { MaterialPropertyBlock } from "../engine/engine_materialpropertyblock.js";
|
|
4
5
|
const debug = getParam("debuglightmaps");
|
|
5
|
-
|
|
6
|
-
const $lightmapVersion = Symbol("lightmap-material-version");
|
|
6
|
+
const $lightmapKey = Symbol("lightmapKey");
|
|
7
7
|
/**
|
|
8
8
|
* This component is automatically added by the {@link Renderer} component if the object has lightmap uvs AND we have a lightmap.
|
|
9
9
|
*
|
|
@@ -18,10 +18,13 @@ export class RendererLightmap {
|
|
|
18
18
|
if (tex !== this.lightmapTexture) {
|
|
19
19
|
this.lightmapTexture = tex;
|
|
20
20
|
this.applyLightmap();
|
|
21
|
+
this.updatePropertyBlockTexture();
|
|
21
22
|
if (this.lightmapTexture) {
|
|
22
23
|
NEEDLE_progressive.assignTextureLOD(this.lightmapTexture, 0).then(res => {
|
|
23
|
-
if (res?.isTexture)
|
|
24
|
+
if (res?.isTexture) {
|
|
24
25
|
this.lightmapTexture = res;
|
|
26
|
+
this.updatePropertyBlockTexture();
|
|
27
|
+
}
|
|
25
28
|
});
|
|
26
29
|
}
|
|
27
30
|
}
|
|
@@ -29,12 +32,10 @@ export class RendererLightmap {
|
|
|
29
32
|
lightmapIndex = -1;
|
|
30
33
|
lightmapScaleOffset = new Vector4(1, 1, 0, 0);
|
|
31
34
|
renderer;
|
|
32
|
-
|
|
35
|
+
_isApplied = false;
|
|
33
36
|
get context() { return this.renderer.context; }
|
|
34
37
|
get gameObject() { return this.renderer.gameObject; }
|
|
35
38
|
lightmapTexture = null;
|
|
36
|
-
lightmapScaleOffsetUniform = { value: new Vector4(1, 1, 0, 0) };
|
|
37
|
-
lightmapUniform = { value: null };
|
|
38
39
|
constructor(renderer) {
|
|
39
40
|
this.renderer = renderer;
|
|
40
41
|
}
|
|
@@ -46,8 +47,10 @@ export class RendererLightmap {
|
|
|
46
47
|
this.lightmapScaleOffset = lightmapScaleOffset;
|
|
47
48
|
this.lightmapTexture = lightmapTexture;
|
|
48
49
|
NEEDLE_progressive.assignTextureLOD(lightmapTexture, 0).then(res => {
|
|
49
|
-
if (res?.isTexture)
|
|
50
|
+
if (res?.isTexture) {
|
|
50
51
|
this.lightmapTexture = res;
|
|
52
|
+
this.updatePropertyBlockTexture();
|
|
53
|
+
}
|
|
51
54
|
});
|
|
52
55
|
if (debug == "show") {
|
|
53
56
|
console.log("Lightmap:", this.gameObject.name, lightmapIndex, "\nScaleOffset:", lightmapScaleOffset, "\nTexture:", lightmapTexture);
|
|
@@ -57,17 +60,17 @@ export class RendererLightmap {
|
|
|
57
60
|
console.log("Use debuglightmaps=show to render lightmaps only in the scene.");
|
|
58
61
|
this.applyLightmap();
|
|
59
62
|
}
|
|
60
|
-
updateLightmapUniforms(
|
|
61
|
-
const uniforms = material["uniforms"];
|
|
62
|
-
if (uniforms && uniforms.lightmap) {
|
|
63
|
-
this.lightmapScaleOffsetUniform.value = this.lightmapScaleOffset;
|
|
64
|
-
uniforms.lightmapScaleOffset = this.lightmapScaleOffsetUniform;
|
|
65
|
-
}
|
|
63
|
+
updateLightmapUniforms(_material) {
|
|
66
64
|
}
|
|
67
65
|
/**
|
|
68
|
-
* Apply the lightmap to the object
|
|
66
|
+
* Apply the lightmap to the object using MaterialPropertyBlock instead of cloning materials.
|
|
67
|
+
* The lightmap texture and its per-object UV transform are set as overrides via PropertyBlock.
|
|
68
|
+
* Three.js reads material.lightMap to determine shader defines and upload uniforms,
|
|
69
|
+
* and uses texture.offset/repeat to compute lightMapTransform in the vertex shader.
|
|
69
70
|
*/
|
|
70
71
|
applyLightmap() {
|
|
72
|
+
if (this._isApplied)
|
|
73
|
+
return;
|
|
71
74
|
if (this.gameObject.type === "Object3D") {
|
|
72
75
|
if (debug)
|
|
73
76
|
console.warn("Can not add lightmap. Is this object missing a renderer?", this.gameObject.name);
|
|
@@ -75,22 +78,56 @@ export class RendererLightmap {
|
|
|
75
78
|
}
|
|
76
79
|
const mesh = this.gameObject;
|
|
77
80
|
this.ensureLightmapUvs(mesh);
|
|
81
|
+
if (this.lightmapIndex >= 0 && this.lightmapTexture) {
|
|
82
|
+
this.lightmapTexture.channel = 1;
|
|
83
|
+
const so = this.lightmapScaleOffset;
|
|
84
|
+
for (let i = 0; i < this.renderer.sharedMaterials.length; i++) {
|
|
85
|
+
const mat = this.renderer.sharedMaterials[i];
|
|
86
|
+
if (!mat)
|
|
87
|
+
continue;
|
|
88
|
+
// If the material doesn't support lightmaps, skip it
|
|
89
|
+
if (mat["lightMap"] === undefined)
|
|
90
|
+
continue;
|
|
91
|
+
if (debug)
|
|
92
|
+
console.log("Setting lightmap on material", mat.name, "for renderer", this.renderer.name);
|
|
93
|
+
// Use property block to set lightMap with per-object UV transform.
|
|
94
|
+
// The texture transform differentiates cache keys per object and
|
|
95
|
+
// PropertyBlock handles save/restore of the shared texture's offset/repeat.
|
|
96
|
+
const propertyBlock = MaterialPropertyBlock.get(this.gameObject);
|
|
97
|
+
propertyBlock.setOverride("lightMap", this.lightmapTexture, {
|
|
98
|
+
offset: new Vector2(so.z, 1 - so.y - so.w),
|
|
99
|
+
repeat: new Vector2(so.x, so.y)
|
|
100
|
+
});
|
|
101
|
+
mat[$lightmapKey] = true;
|
|
102
|
+
}
|
|
103
|
+
this._isApplied = true;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
/** Update the lightMap override on all property blocks (e.g. after LOD swap) */
|
|
107
|
+
updatePropertyBlockTexture() {
|
|
108
|
+
if (!this._isApplied || !this.lightmapTexture)
|
|
109
|
+
return;
|
|
110
|
+
this.lightmapTexture.channel = 1;
|
|
111
|
+
const so = this.lightmapScaleOffset;
|
|
112
|
+
const propertyBlock = MaterialPropertyBlock.get(this.gameObject);
|
|
113
|
+
propertyBlock.setOverride("lightMap", this.lightmapTexture, {
|
|
114
|
+
offset: new Vector2(so.z, 1 - so.y - so.w),
|
|
115
|
+
repeat: new Vector2(so.x, so.y)
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Remove the lightmap from the object
|
|
120
|
+
*/
|
|
121
|
+
onUnset() {
|
|
78
122
|
for (let i = 0; i < this.renderer.sharedMaterials.length; i++) {
|
|
79
123
|
const mat = this.renderer.sharedMaterials[i];
|
|
80
|
-
if (
|
|
81
|
-
|
|
82
|
-
const newMat = this.ensureLightmapMaterial(mat, i);
|
|
83
|
-
if (mat !== newMat) {
|
|
84
|
-
this.renderer.sharedMaterials[i] = newMat;
|
|
124
|
+
if (mat) {
|
|
125
|
+
delete mat[$lightmapKey];
|
|
85
126
|
}
|
|
86
127
|
}
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
for (const mat of this.renderer.sharedMaterials) {
|
|
91
|
-
if (mat)
|
|
92
|
-
this.assignLightmapTexture(mat);
|
|
93
|
-
}
|
|
128
|
+
const block = MaterialPropertyBlock.get(this.gameObject);
|
|
129
|
+
if (block) {
|
|
130
|
+
block.removeOveride("lightMap");
|
|
94
131
|
}
|
|
95
132
|
}
|
|
96
133
|
ensureLightmapUvs(object) {
|
|
@@ -105,58 +142,8 @@ export class RendererLightmap {
|
|
|
105
142
|
}
|
|
106
143
|
}
|
|
107
144
|
}
|
|
108
|
-
ensureLightmapMaterial(material, index) {
|
|
109
|
-
if (!material.userData)
|
|
110
|
-
material.userData = {};
|
|
111
|
-
// if (material instanceof MeshPhysicalMaterial) {
|
|
112
|
-
// return material;
|
|
113
|
-
// }
|
|
114
|
-
// check if the material version has changed and only then clone the material
|
|
115
|
-
if (this.clonedMaterials[index] !== material) {
|
|
116
|
-
if (debug) {
|
|
117
|
-
++cloningCounter;
|
|
118
|
-
if (cloningCounter++ < 1000) {
|
|
119
|
-
console.warn(`Cloning material for lightmap ${this.renderer.name}: '${material.name}'`);
|
|
120
|
-
}
|
|
121
|
-
else if (cloningCounter === 1000) {
|
|
122
|
-
console.warn(`Further material cloning for lightmaps suppressed to avoid flooding the console.`);
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
const mat = material.clone();
|
|
126
|
-
if (!mat.name?.includes("(lightmap)"))
|
|
127
|
-
mat.name = material.name + " (lightmap)";
|
|
128
|
-
material = mat;
|
|
129
|
-
material.onBeforeCompile = this.onBeforeCompile;
|
|
130
|
-
this.clonedMaterials[index] = material;
|
|
131
|
-
}
|
|
132
|
-
return material;
|
|
133
|
-
}
|
|
134
|
-
assignLightmapTexture(material) {
|
|
135
|
-
if (!material)
|
|
136
|
-
return;
|
|
137
|
-
if (material instanceof MeshPhysicalMaterial && material.transmission > 0) {
|
|
138
|
-
return;
|
|
139
|
-
}
|
|
140
|
-
const hasChanged = material.lightMap !== this.lightmapTexture || material[$lightmapVersion] !== material.version;
|
|
141
|
-
if (!hasChanged) {
|
|
142
|
-
return;
|
|
143
|
-
}
|
|
144
|
-
if (debug)
|
|
145
|
-
console.log(`Assigning lightmap texture ${this.renderer.name}: '${material.name}' (${material.version} ${material[$lightmapVersion]})`);
|
|
146
|
-
// assign the lightmap
|
|
147
|
-
material.lightMap = this.lightmapTexture;
|
|
148
|
-
material.needsUpdate = true;
|
|
149
|
-
// store the version of the material
|
|
150
|
-
material[$lightmapVersion] = material.version;
|
|
151
|
-
}
|
|
152
|
-
onBeforeCompile = (shader, _) => {
|
|
153
|
-
if (debug === "verbose")
|
|
154
|
-
console.log("Lightmaps, before compile\n", shader);
|
|
155
|
-
this.lightmapScaleOffsetUniform.value = this.lightmapScaleOffset;
|
|
156
|
-
this.lightmapUniform.value = this.lightmapTexture;
|
|
157
|
-
shader.uniforms.lightmapScaleOffset = this.lightmapScaleOffsetUniform;
|
|
158
|
-
};
|
|
159
145
|
setLightmapDebugMaterial() {
|
|
146
|
+
const so = this.lightmapScaleOffset;
|
|
160
147
|
// debug lightmaps
|
|
161
148
|
this.gameObject["material"] = new ShaderMaterial({
|
|
162
149
|
vertexShader: `
|
|
@@ -170,7 +157,6 @@ export class RendererLightmap {
|
|
|
170
157
|
fragmentShader: `
|
|
171
158
|
uniform sampler2D lightMap;
|
|
172
159
|
uniform float lightMapIntensity;
|
|
173
|
-
uniform vec4 lightmapScaleOffset;
|
|
174
160
|
varying vec2 vUv1;
|
|
175
161
|
|
|
176
162
|
// took from threejs 05fc79cd52b79e8c3e8dec1e7dca72c5c39983a4
|
|
@@ -179,8 +165,8 @@ export class RendererLightmap {
|
|
|
179
165
|
}
|
|
180
166
|
|
|
181
167
|
void main() {
|
|
182
|
-
vec2 lUv = vUv1.xy *
|
|
183
|
-
|
|
168
|
+
vec2 lUv = vUv1.xy * vec2(${so.x.toFixed(6)}, ${so.y.toFixed(6)}) + vec2(${so.z.toFixed(6)}, ${(1 - so.y - so.w).toFixed(6)});
|
|
169
|
+
|
|
184
170
|
vec4 lightMapTexel = texture2D( lightMap, lUv);
|
|
185
171
|
gl_FragColor = lightMapTexel;
|
|
186
172
|
gl_FragColor.a = 1.;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RendererLightmap.js","sourceRoot":"","sources":["../../src/engine-components/RendererLightmap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"RendererLightmap.js","sourceRoot":"","sources":["../../src/engine-components/RendererLightmap.ts"],"names":[],"mappings":"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"}
|
|
@@ -127,8 +127,6 @@ export declare class SeeThrough extends Behaviour {
|
|
|
127
127
|
* @internal
|
|
128
128
|
*/
|
|
129
129
|
update(): void;
|
|
130
|
-
private readonly rendererMaterials;
|
|
131
|
-
private readonly rendererMaterialsOriginal;
|
|
132
130
|
private updateDirection;
|
|
133
131
|
/**
|
|
134
132
|
* Update the alpha of the object's materials towards the target alpha over the given duration.
|
|
@@ -11,9 +11,22 @@ import { serializable } from "../engine/engine_serialization_decorator.js";
|
|
|
11
11
|
import { getTempVector } from "../engine/engine_three_utils.js";
|
|
12
12
|
import { getParam } from "../engine/engine_utils.js";
|
|
13
13
|
import { Behaviour } from "./Component.js";
|
|
14
|
-
import { USDZExporter } from "./export/usdz/USDZExporter.js";
|
|
15
14
|
import { Renderer } from "./Renderer.js";
|
|
15
|
+
import { MaterialPropertyBlock } from "../engine/engine_materialpropertyblock.js";
|
|
16
16
|
const debugSeeThrough = getParam("debugseethrough");
|
|
17
|
+
// type MaterialState = {
|
|
18
|
+
// opacity: number,
|
|
19
|
+
// transparent: boolean,
|
|
20
|
+
// alphaHash: boolean
|
|
21
|
+
// }
|
|
22
|
+
// type MaterialWithState = Material & {
|
|
23
|
+
// /** Original values */
|
|
24
|
+
// userData: {
|
|
25
|
+
// seeThrough: {
|
|
26
|
+
// initial: MaterialState,
|
|
27
|
+
// }
|
|
28
|
+
// }
|
|
29
|
+
// };
|
|
17
30
|
let i = 0;
|
|
18
31
|
/**
|
|
19
32
|
* Automatically fades objects to transparent when they obscure a reference point from the camera's view.
|
|
@@ -142,26 +155,24 @@ export class SeeThrough extends Behaviour {
|
|
|
142
155
|
onEnable() {
|
|
143
156
|
this._needsUpdate = true;
|
|
144
157
|
this._renderer = null;
|
|
145
|
-
SeeThroughUsdzExporterPlugin.components.push(this);
|
|
158
|
+
// SeeThroughUsdzExporterPlugin.components.push(this);
|
|
146
159
|
}
|
|
147
160
|
/** @internal */
|
|
148
161
|
onDisable() {
|
|
149
|
-
this._renderer?.forEach(r => {
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
if (index !== -1)
|
|
164
|
-
SeeThroughUsdzExporterPlugin.components.splice(index, 1);
|
|
162
|
+
// this._renderer?.forEach(r => {
|
|
163
|
+
// const original = this.rendererMaterialsOriginal.get(r);
|
|
164
|
+
// for (let i = 0; i < r.sharedMaterials.length; i++) {
|
|
165
|
+
// const mat = r.sharedMaterials[i];
|
|
166
|
+
// if (!mat) continue;
|
|
167
|
+
// if (original && original[i]) {
|
|
168
|
+
// r.sharedMaterials[i] = original[i];
|
|
169
|
+
// }
|
|
170
|
+
// }
|
|
171
|
+
// this.rendererMaterials.delete(r);
|
|
172
|
+
// this.rendererMaterialsOriginal.delete(r);
|
|
173
|
+
// });
|
|
174
|
+
// const index = SeeThroughUsdzExporterPlugin.components.indexOf(this);
|
|
175
|
+
// if (index !== -1) SeeThroughUsdzExporterPlugin.components.splice(index, 1);
|
|
165
176
|
}
|
|
166
177
|
/**
|
|
167
178
|
* @internal
|
|
@@ -195,8 +206,8 @@ export class SeeThrough extends Behaviour {
|
|
|
195
206
|
this.updateAlpha(1, this.fadeDuration);
|
|
196
207
|
}
|
|
197
208
|
}
|
|
198
|
-
rendererMaterials = new WeakMap();
|
|
199
|
-
rendererMaterialsOriginal = new WeakMap();
|
|
209
|
+
// private readonly rendererMaterials = new WeakMap<Renderer, Array<MaterialWithState>>();
|
|
210
|
+
// private readonly rendererMaterialsOriginal = new WeakMap<Renderer, Array<Material>>();
|
|
200
211
|
updateDirection() {
|
|
201
212
|
this.referencePoint ??= this.context.scene;
|
|
202
213
|
this._referencePointVector.copy(this.gameObject.worldPosition.sub(this.referencePoint.worldPosition));
|
|
@@ -221,62 +232,69 @@ export class SeeThrough extends Behaviour {
|
|
|
221
232
|
else {
|
|
222
233
|
renderer.gameObject.raycastAllowed = true;
|
|
223
234
|
}
|
|
224
|
-
if (!this.rendererMaterials.has(renderer)) {
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
const materials = renderer.hasLightmap ? renderer.sharedMaterials : this.rendererMaterials.get(renderer);
|
|
235
|
+
// if (!this.rendererMaterials.has(renderer)) {
|
|
236
|
+
// const originalMaterials = new Array<Material>();
|
|
237
|
+
// const clonedMaterials = new Array<MaterialWithState>();
|
|
238
|
+
// // We clone the materials once and store them, so we can modify the opacity without affecting other objects using the same material. This could potentially be optimized further to re-use materials between renderers if multiple renderers use the same material.
|
|
239
|
+
// for (let i = 0; i < renderer.sharedMaterials.length; i++) {
|
|
240
|
+
// const mat = renderer.sharedMaterials[i];
|
|
241
|
+
// if (!mat) continue;
|
|
242
|
+
// originalMaterials.push(mat);
|
|
243
|
+
// const matClone = mat.clone() as MaterialWithState;
|
|
244
|
+
// // @ts-ignore
|
|
245
|
+
// matClone.userData = mat.userData || {};
|
|
246
|
+
// matClone.userData.seeThrough = {
|
|
247
|
+
// initial: {
|
|
248
|
+
// opacity: matClone.opacity,
|
|
249
|
+
// transparent: matClone.transparent,
|
|
250
|
+
// alphaHash: matClone.alphaHash
|
|
251
|
+
// }
|
|
252
|
+
// }
|
|
253
|
+
// clonedMaterials.push(matClone);
|
|
254
|
+
// // renderer.sharedMaterials[i] = matClone;
|
|
255
|
+
// }
|
|
256
|
+
// this.rendererMaterials.set(renderer, clonedMaterials);
|
|
257
|
+
// this.rendererMaterialsOriginal.set(renderer, originalMaterials);
|
|
258
|
+
// }
|
|
259
|
+
const materials = renderer.sharedMaterials; // : this.rendererMaterials.get(renderer);
|
|
250
260
|
if (!materials)
|
|
251
261
|
return;
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
262
|
+
const block = MaterialPropertyBlock.get(renderer.gameObject);
|
|
263
|
+
const currentOpacity = (block.getOverride("opacity")?.value ?? materials[0].opacity ?? 1);
|
|
264
|
+
let newAlpha = Mathf.lerp(currentOpacity, targetAlpha, duration <= 0 ? 1 : this.context.time.deltaTime / duration);
|
|
265
|
+
;
|
|
266
|
+
if (newAlpha >= 0.99)
|
|
267
|
+
newAlpha = 1;
|
|
268
|
+
else if (newAlpha <= 0.01)
|
|
269
|
+
newAlpha = 0;
|
|
270
|
+
// const currentTransparent = (block.getOverride("transparent")?.value ?? materials[0].transparent ?? false) as boolean;
|
|
271
|
+
block.setOverride("alphaHash", this.useAlphaHash);
|
|
272
|
+
block.setOverride("opacity", newAlpha);
|
|
273
|
+
block.setOverride("transparent", newAlpha >= 0.99999 ? false : !this.useAlphaHash);
|
|
274
|
+
// for (const mat of materials) {
|
|
275
|
+
// if (!mat) continue;
|
|
276
|
+
// let newAlpha = Mathf.lerp(mat.opacity, targetAlpha, duration <= 0 ? 1 : this.context.time.deltaTime / duration);;
|
|
277
|
+
// if (newAlpha >= 0.99) newAlpha = 1;
|
|
278
|
+
// else if (newAlpha <= 0.01) newAlpha = 0;
|
|
279
|
+
// const wasTransparent = mat.transparent;
|
|
280
|
+
// const wasAlphaHash = mat.alphaHash;
|
|
281
|
+
// const previousOpacity = mat.opacity;
|
|
282
|
+
// mat.alphaHash = this.useAlphaHash;
|
|
283
|
+
// if (mat.userData && "seeThrough" in mat.userData) {
|
|
284
|
+
// const initial = mat.userData.seeThrough.initial as MaterialState;
|
|
285
|
+
// mat.opacity = initial.opacity * newAlpha;
|
|
286
|
+
// mat.transparent = mat.opacity >= 1 ? initial.transparent : !this.useAlphaHash;
|
|
287
|
+
// }
|
|
288
|
+
// else {
|
|
289
|
+
// mat.transparent = mat.opacity >= 1 ? false : !this.useAlphaHash;
|
|
290
|
+
// }
|
|
291
|
+
// if (wasTransparent !== mat.transparent
|
|
292
|
+
// || wasAlphaHash !== mat.alphaHash
|
|
293
|
+
// || mat.opacity !== previousOpacity // MeshPhysicsMaterial needs that and maybe other materials too...
|
|
294
|
+
// ) {
|
|
295
|
+
// mat.needsUpdate = true;
|
|
296
|
+
// }
|
|
297
|
+
// }
|
|
280
298
|
});
|
|
281
299
|
}
|
|
282
300
|
}
|
|
@@ -299,18 +317,26 @@ __decorate([
|
|
|
299
317
|
serializable()
|
|
300
318
|
], SeeThrough.prototype, "autoUpdate", void 0);
|
|
301
319
|
;
|
|
302
|
-
class SeeThroughUsdzExporterPlugin {
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
const
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
}
|
|
320
|
+
// class SeeThroughUsdzExporterPlugin implements IUSDExporterExtension {
|
|
321
|
+
// static readonly components: SeeThrough[] = [];
|
|
322
|
+
// get extensionName() {
|
|
323
|
+
// return "SeeThrough";
|
|
324
|
+
// }
|
|
325
|
+
// // onExportObject(object: Object3D<Object3DEventMap>, model: USDObject, context: USDZExporterContext) {
|
|
326
|
+
// // const component = SeeThroughUsdzExporterPlugin.components.find(c => c.gameObject === object);
|
|
327
|
+
// // if(!component) return;
|
|
328
|
+
// // console.log("OH MY GOD SEE THROUGH USDZ EXPORTER", component, model);
|
|
329
|
+
// // model.materialName = "AlphaHashMaterialInstance"; // we could make this unique per object if needed
|
|
330
|
+
// // model.addEventListener("serialize", (writer, context) => {
|
|
331
|
+
// // writer.appendLine(`# SeeThrough component on ${object.name}`);
|
|
332
|
+
// // });
|
|
333
|
+
// // }
|
|
334
|
+
// }
|
|
335
|
+
// const seeThroughUsdzExporterPlugin = new SeeThroughUsdzExporterPlugin();
|
|
336
|
+
// USDZExporter.beforeExport.addEventListener(args => {
|
|
337
|
+
// if (SeeThroughUsdzExporterPlugin.components.length === 0) return;
|
|
338
|
+
// if (args.exporter.extensions.includes(seeThroughUsdzExporterPlugin) === false) {
|
|
339
|
+
// args.exporter.extensions.push(seeThroughUsdzExporterPlugin);
|
|
340
|
+
// }
|
|
341
|
+
// });
|
|
316
342
|
//# sourceMappingURL=SeeThrough.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SeeThrough.js","sourceRoot":"","sources":["../../src/engine-components/SeeThrough.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAY,QAAQ,EAAoB,OAAO,EAAE,MAAM,OAAO,CAAC;AAEtE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,6CAA6C,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAErD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"SeeThrough.js","sourceRoot":"","sources":["../../src/engine-components/SeeThrough.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SmoothFollow.js","sourceRoot":"","sources":["../../src/engine-components/SmoothFollow.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEtD,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,MAAM,mCAAmC,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,6CAA6C,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAEvF,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AACH,MAAM,OAAO,YAAa,SAAQ,SAAS;IAEvC;;OAEG;IAEH,MAAM,GAAoB,IAAI,CAAC;IAE/B;;;;;;OAMG;IAEH,YAAY,
|
|
1
|
+
{"version":3,"file":"SmoothFollow.js","sourceRoot":"","sources":["../../src/engine-components/SmoothFollow.ts"],"names":[],"mappings":"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"}
|
|
@@ -567,11 +567,17 @@ export class VideoPlayer extends Behaviour {
|
|
|
567
567
|
const fieldName = "map";
|
|
568
568
|
const videoMaterial = this._videoMaterial;
|
|
569
569
|
if (!this.targetMaterialProperty) {
|
|
570
|
+
if (debug && videoMaterial[fieldName] === undefined) {
|
|
571
|
+
console.warn(`The target material does not have a '${fieldName}' property, video might not render correctly.`);
|
|
572
|
+
}
|
|
570
573
|
videoMaterial[fieldName] = this._videoTexture;
|
|
571
574
|
}
|
|
572
575
|
else {
|
|
573
576
|
switch (this.targetMaterialProperty) {
|
|
574
577
|
default:
|
|
578
|
+
if (debug && videoMaterial[this.targetMaterialProperty] === undefined) {
|
|
579
|
+
console.warn(`The target material does not have a '${this.targetMaterialProperty}' property, video might not render correctly.`);
|
|
580
|
+
}
|
|
575
581
|
videoMaterial[fieldName] = this._videoTexture;
|
|
576
582
|
break;
|
|
577
583
|
// doesnt render:
|