@plastic-software/three 0.181.3 → 0.182.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/README.md +3 -4
- package/build/three.cjs +1192 -522
- package/build/three.core.js +345 -219
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +864 -328
- package/build/three.module.min.js +1 -1
- package/build/three.tsl.js +15 -3
- package/build/three.tsl.min.js +1 -1
- package/build/three.webgpu.js +3660 -1545
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +3659 -1544
- package/build/three.webgpu.nodes.min.js +1 -1
- package/examples/jsm/controls/MapControls.js +55 -1
- package/examples/jsm/controls/OrbitControls.js +6 -6
- package/examples/jsm/controls/TrackballControls.js +6 -6
- package/examples/jsm/csm/CSM.js +2 -1
- package/examples/jsm/environments/RoomEnvironment.js +2 -0
- package/examples/jsm/geometries/DecalGeometry.js +1 -1
- package/examples/jsm/helpers/LightProbeHelperGPU.js +1 -1
- package/examples/jsm/helpers/TextureHelperGPU.js +1 -1
- package/examples/jsm/inspector/Inspector.js +53 -9
- package/examples/jsm/inspector/RendererInspector.js +12 -2
- package/examples/jsm/inspector/tabs/Console.js +2 -2
- package/examples/jsm/inspector/tabs/Parameters.js +2 -2
- package/examples/jsm/inspector/tabs/Performance.js +2 -2
- package/examples/jsm/inspector/tabs/Viewer.js +4 -4
- package/examples/jsm/inspector/ui/Profiler.js +1836 -31
- package/examples/jsm/inspector/ui/Style.js +948 -13
- package/examples/jsm/inspector/ui/Tab.js +188 -1
- package/examples/jsm/inspector/ui/Values.js +17 -1
- package/examples/jsm/loaders/3DMLoader.js +5 -4
- package/examples/jsm/loaders/DRACOLoader.js +5 -5
- package/examples/jsm/loaders/FBXLoader.js +0 -2
- package/examples/jsm/loaders/HDRLoader.js +0 -1
- package/examples/jsm/loaders/KTX2Loader.js +16 -0
- package/examples/jsm/loaders/LDrawLoader.js +2 -3
- package/examples/jsm/loaders/PCDLoader.js +1 -0
- package/examples/jsm/loaders/SVGLoader.js +1 -1
- package/examples/jsm/loaders/TDSLoader.js +0 -2
- package/examples/jsm/loaders/TGALoader.js +0 -2
- package/examples/jsm/loaders/UltraHDRLoader.js +110 -137
- package/examples/jsm/loaders/VOXLoader.js +660 -117
- package/examples/jsm/loaders/VRMLLoader.js +2 -2
- package/examples/jsm/loaders/usd/USDCParser.js +1 -1
- package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +1 -1
- package/examples/jsm/materials/MeshGouraudMaterial.js +0 -1
- package/examples/jsm/materials/WoodNodeMaterial.js +11 -11
- package/examples/jsm/math/Octree.js +131 -1
- package/examples/jsm/misc/Volume.js +0 -1
- package/examples/jsm/misc/VolumeSlice.js +0 -1
- package/examples/jsm/objects/SkyMesh.js +13 -3
- package/examples/jsm/physics/AmmoPhysics.js +12 -7
- package/examples/jsm/physics/JoltPhysics.js +3 -1
- package/examples/jsm/physics/RapierPhysics.js +3 -1
- package/examples/jsm/postprocessing/OutputPass.js +9 -0
- package/examples/jsm/postprocessing/RenderPass.js +10 -0
- package/examples/jsm/postprocessing/UnrealBloomPass.js +48 -18
- package/examples/jsm/renderers/Projector.js +268 -30
- package/examples/jsm/renderers/SVGRenderer.js +191 -58
- package/examples/jsm/shaders/UnpackDepthRGBAShader.js +2 -4
- package/examples/jsm/transpiler/AST.js +44 -0
- package/examples/jsm/transpiler/GLSLDecoder.js +61 -4
- package/examples/jsm/transpiler/ShaderToyDecoder.js +2 -0
- package/examples/jsm/transpiler/TSLEncoder.js +46 -3
- package/examples/jsm/transpiler/TranspilerUtils.js +3 -3
- package/examples/jsm/transpiler/WGSLEncoder.js +27 -0
- package/examples/jsm/tsl/display/AnaglyphPassNode.js +2 -0
- package/examples/jsm/tsl/display/BloomNode.js +11 -1
- package/examples/jsm/tsl/display/GTAONode.js +3 -2
- package/examples/jsm/tsl/display/PixelationPassNode.js +2 -1
- package/examples/jsm/tsl/display/SSGINode.js +7 -19
- package/examples/jsm/tsl/display/SSRNode.js +1 -1
- package/examples/jsm/tsl/display/SSSNode.js +4 -2
- package/examples/jsm/tsl/display/StereoCompositePassNode.js +8 -1
- package/examples/jsm/tsl/display/TRAANode.js +265 -114
- package/examples/jsm/tsl/display/radialBlur.js +68 -0
- package/examples/jsm/utils/ShadowMapViewer.js +24 -10
- package/examples/jsm/utils/ShadowMapViewerGPU.js +1 -1
- package/examples/jsm/utils/WebGPUTextureUtils.js +1 -1
- package/package.json +14 -12
- package/src/Three.Core.js +1 -0
- package/src/Three.TSL.js +14 -2
- package/src/animation/AnimationUtils.js +1 -12
- package/src/animation/KeyframeTrack.js +1 -1
- package/src/animation/tracks/BooleanKeyframeTrack.js +1 -1
- package/src/animation/tracks/ColorKeyframeTrack.js +1 -1
- package/src/animation/tracks/NumberKeyframeTrack.js +1 -1
- package/src/animation/tracks/QuaternionKeyframeTrack.js +1 -1
- package/src/animation/tracks/StringKeyframeTrack.js +1 -1
- package/src/animation/tracks/VectorKeyframeTrack.js +1 -1
- package/src/constants.js +61 -5
- package/src/core/BufferGeometry.js +14 -2
- package/src/core/Raycaster.js +2 -2
- package/src/extras/PMREMGenerator.js +3 -10
- package/src/extras/TextureUtils.js +5 -1
- package/src/geometries/ExtrudeGeometry.js +2 -2
- package/src/geometries/PolyhedronGeometry.js +1 -1
- package/src/helpers/PointLightHelper.js +1 -1
- package/src/lights/DirectionalLight.js +13 -0
- package/src/lights/HemisphereLight.js +10 -0
- package/src/lights/Light.js +1 -11
- package/src/lights/LightProbe.js +0 -15
- package/src/lights/LightShadow.js +0 -3
- package/src/lights/PointLight.js +15 -0
- package/src/lights/PointLightShadow.js +0 -86
- package/src/lights/SpotLight.js +22 -1
- package/src/loaders/MaterialLoader.js +2 -1
- package/src/loaders/ObjectLoader.js +3 -1
- package/src/loaders/nodes/NodeLoader.js +2 -2
- package/src/materials/Material.js +2 -0
- package/src/materials/ShaderMaterial.js +20 -1
- package/src/materials/nodes/Line2NodeMaterial.js +2 -2
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +3 -2
- package/src/materials/nodes/MeshStandardNodeMaterial.js +5 -4
- package/src/materials/nodes/NodeMaterial.js +59 -3
- package/src/materials/nodes/manager/NodeMaterialObserver.js +1 -1
- package/src/math/Matrix4.js +40 -40
- package/src/math/Sphere.js +1 -1
- package/src/math/Vector3.js +0 -2
- package/src/nodes/TSL.js +4 -1
- package/src/nodes/accessors/BatchNode.js +10 -10
- package/src/nodes/accessors/BufferAttributeNode.js +98 -12
- package/src/nodes/accessors/BufferNode.js +29 -2
- package/src/nodes/accessors/ClippingNode.js +4 -4
- package/src/nodes/accessors/CubeTextureNode.js +20 -1
- package/src/nodes/accessors/InstanceNode.js +69 -29
- package/src/nodes/accessors/MaterialNode.js +9 -1
- package/src/nodes/accessors/MaterialReferenceNode.js +1 -2
- package/src/nodes/accessors/ModelNode.js +1 -1
- package/src/nodes/accessors/Normal.js +2 -2
- package/src/nodes/accessors/ReferenceBaseNode.js +4 -4
- package/src/nodes/accessors/ReferenceNode.js +4 -4
- package/src/nodes/accessors/RendererReferenceNode.js +1 -2
- package/src/nodes/accessors/SkinningNode.js +15 -2
- package/src/nodes/accessors/StorageBufferNode.js +4 -2
- package/src/nodes/accessors/Tangent.js +1 -11
- package/src/nodes/accessors/Texture3DNode.js +26 -1
- package/src/nodes/accessors/UniformArrayNode.js +2 -2
- package/src/nodes/accessors/UserDataNode.js +1 -2
- package/src/nodes/accessors/VertexColorNode.js +1 -2
- package/src/nodes/code/FunctionNode.js +1 -2
- package/src/nodes/core/ArrayNode.js +20 -1
- package/src/nodes/core/AssignNode.js +2 -2
- package/src/nodes/core/AttributeNode.js +2 -2
- package/src/nodes/core/ContextNode.js +103 -4
- package/src/nodes/core/NodeBuilder.js +56 -14
- package/src/nodes/core/NodeFrame.js +12 -4
- package/src/nodes/core/NodeUtils.js +5 -5
- package/src/nodes/core/ParameterNode.js +1 -2
- package/src/nodes/core/PropertyNode.js +19 -3
- package/src/nodes/core/StackNode.js +56 -8
- package/src/nodes/core/StructNode.js +1 -2
- package/src/nodes/core/StructTypeNode.js +11 -17
- package/src/nodes/core/UniformNode.js +19 -4
- package/src/nodes/core/VarNode.js +46 -21
- package/src/nodes/display/NormalMapNode.js +37 -2
- package/src/nodes/display/PassNode.js +77 -7
- package/src/nodes/display/ScreenNode.js +1 -0
- package/src/nodes/functions/BSDF/BRDF_GGX_Multiscatter.js +3 -3
- package/src/nodes/functions/BSDF/DFGLUT.js +56 -0
- package/src/nodes/functions/BSDF/EnvironmentBRDF.js +2 -2
- package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +1 -1
- package/src/nodes/functions/PhysicalLightingModel.js +102 -43
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +1 -2
- package/src/nodes/gpgpu/SubgroupFunctionNode.js +1 -1
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +2 -3
- package/src/nodes/lighting/AnalyticLightNode.js +53 -0
- package/src/nodes/lighting/LightsNode.js +2 -2
- package/src/nodes/lighting/PointShadowNode.js +141 -140
- package/src/nodes/lighting/ShadowFilterNode.js +53 -37
- package/src/nodes/lighting/ShadowNode.js +53 -19
- package/src/nodes/math/BitcountNode.js +433 -0
- package/src/nodes/math/PackFloatNode.js +98 -0
- package/src/nodes/math/UnpackFloatNode.js +96 -0
- package/src/nodes/pmrem/PMREMNode.js +1 -1
- package/src/nodes/tsl/TSLCore.js +4 -4
- package/src/nodes/utils/ArrayElementNode.js +13 -0
- package/src/nodes/utils/EventNode.js +1 -2
- package/src/nodes/utils/Packing.js +13 -1
- package/src/nodes/utils/PostProcessingUtils.js +33 -1
- package/src/nodes/utils/ReflectorNode.js +1 -1
- package/src/nodes/utils/SampleNode.js +1 -1
- package/src/nodes/utils/UVUtils.js +26 -0
- package/src/objects/BatchedMesh.js +5 -2
- package/src/objects/Line.js +1 -1
- package/src/objects/Mesh.js +1 -1
- package/src/objects/Points.js +1 -1
- package/src/objects/Skeleton.js +9 -0
- package/src/renderers/WebGLRenderer.js +145 -33
- package/src/renderers/common/Backend.js +8 -0
- package/src/renderers/common/Background.js +19 -9
- package/src/renderers/common/Binding.js +11 -0
- package/src/renderers/common/Bindings.js +7 -7
- package/src/renderers/common/Buffer.js +40 -0
- package/src/renderers/common/ChainMap.js +30 -6
- package/src/renderers/common/Geometries.js +12 -0
- package/src/renderers/common/RenderContexts.js +8 -1
- package/src/renderers/common/RenderObject.js +14 -1
- package/src/renderers/common/Renderer.js +53 -35
- package/src/renderers/common/Textures.js +1 -1
- package/src/renderers/common/UniformsGroup.js +1 -0
- package/src/renderers/common/XRManager.js +1 -0
- package/src/renderers/common/extras/PMREMGenerator.js +2 -8
- package/src/renderers/common/nodes/NodeUniformBuffer.js +52 -0
- package/src/renderers/shaders/DFGLUTData.js +19 -34
- package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +5 -2
- package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +8 -4
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +90 -51
- package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +194 -186
- package/src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk.js +3 -3
- package/src/renderers/shaders/ShaderLib/depth.glsl.js +3 -0
- package/src/renderers/shaders/ShaderLib/{distanceRGBA.glsl.js → distance.glsl.js} +1 -2
- package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +0 -1
- package/src/renderers/shaders/ShaderLib/meshnormal.glsl.js +1 -2
- package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +0 -1
- package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +4 -9
- package/src/renderers/shaders/ShaderLib/meshtoon.glsl.js +0 -1
- package/src/renderers/shaders/ShaderLib/shadow.glsl.js +0 -1
- package/src/renderers/shaders/ShaderLib/vsm.glsl.js +4 -6
- package/src/renderers/shaders/ShaderLib.js +3 -3
- package/src/renderers/webgl/WebGLCapabilities.js +3 -4
- package/src/renderers/webgl/WebGLLights.js +18 -1
- package/src/renderers/webgl/WebGLOutput.js +267 -0
- package/src/renderers/webgl/WebGLProgram.js +43 -107
- package/src/renderers/webgl/WebGLPrograms.js +35 -45
- package/src/renderers/webgl/WebGLShadowMap.js +188 -25
- package/src/renderers/webgl/WebGLState.js +20 -20
- package/src/renderers/webgl/WebGLTextures.js +89 -28
- package/src/renderers/webgl/WebGLUniforms.js +40 -3
- package/src/renderers/webgl/WebGLUtils.js +6 -2
- package/src/renderers/webgl-fallback/WebGLBackend.js +79 -13
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +59 -7
- package/src/renderers/webgl-fallback/utils/WebGLState.js +18 -3
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +5 -3
- package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +9 -9
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +6 -2
- package/src/renderers/webgpu/WebGPUBackend.js +61 -4
- package/src/renderers/webgpu/WebGPURenderer.js +1 -1
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +65 -23
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +4 -17
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +354 -186
- package/src/renderers/webgpu/utils/WebGPUConstants.js +2 -0
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +20 -7
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +40 -17
- package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +7 -7
- package/src/renderers/webgpu/utils/WebGPUUtils.js +7 -5
- package/src/textures/CubeDepthTexture.js +76 -0
- package/src/textures/Source.js +1 -1
- package/src/textures/Texture.js +1 -1
- package/src/utils.js +13 -1
- package/src/nodes/functions/BSDF/DFGApprox.js +0 -71
|
@@ -1,7 +1,12 @@
|
|
|
1
|
-
import { MOUSE, TOUCH } from 'three';
|
|
1
|
+
import { MOUSE, TOUCH, Plane, Raycaster, Vector2, Vector3 } from 'three';
|
|
2
2
|
|
|
3
3
|
import { OrbitControls } from './OrbitControls.js';
|
|
4
4
|
|
|
5
|
+
const _plane = new Plane();
|
|
6
|
+
const _raycaster = new Raycaster();
|
|
7
|
+
const _mouse = new Vector2();
|
|
8
|
+
const _panCurrent = new Vector3();
|
|
9
|
+
|
|
5
10
|
/**
|
|
6
11
|
* This class is intended for transforming a camera over a map from bird's eye perspective.
|
|
7
12
|
* The class shares its implementation with {@link OrbitControls} but uses a specific preset
|
|
@@ -55,6 +60,55 @@ class MapControls extends OrbitControls {
|
|
|
55
60
|
*/
|
|
56
61
|
this.touches = { ONE: TOUCH.PAN, TWO: TOUCH.DOLLY_ROTATE };
|
|
57
62
|
|
|
63
|
+
this._panWorldStart = new Vector3();
|
|
64
|
+
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
_handleMouseDownPan( event ) {
|
|
68
|
+
|
|
69
|
+
super._handleMouseDownPan( event );
|
|
70
|
+
|
|
71
|
+
this._panOffset.set( 0, 0, 0 );
|
|
72
|
+
|
|
73
|
+
if ( this.screenSpacePanning === true ) return;
|
|
74
|
+
|
|
75
|
+
_plane.setFromNormalAndCoplanarPoint( this.object.up, this.target );
|
|
76
|
+
|
|
77
|
+
const element = this.domElement;
|
|
78
|
+
const rect = element.getBoundingClientRect();
|
|
79
|
+
_mouse.x = ( ( event.clientX - rect.left ) / rect.width ) * 2 - 1;
|
|
80
|
+
_mouse.y = - ( ( event.clientY - rect.top ) / rect.height ) * 2 + 1;
|
|
81
|
+
|
|
82
|
+
_raycaster.setFromCamera( _mouse, this.object );
|
|
83
|
+
_raycaster.ray.intersectPlane( _plane, this._panWorldStart );
|
|
84
|
+
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
_handleMouseMovePan( event ) {
|
|
88
|
+
|
|
89
|
+
if ( this.screenSpacePanning === true ) {
|
|
90
|
+
|
|
91
|
+
super._handleMouseMovePan( event );
|
|
92
|
+
return;
|
|
93
|
+
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
const element = this.domElement;
|
|
97
|
+
const rect = element.getBoundingClientRect();
|
|
98
|
+
_mouse.x = ( ( event.clientX - rect.left ) / rect.width ) * 2 - 1;
|
|
99
|
+
_mouse.y = - ( ( event.clientY - rect.top ) / rect.height ) * 2 + 1;
|
|
100
|
+
|
|
101
|
+
_raycaster.setFromCamera( _mouse, this.object );
|
|
102
|
+
|
|
103
|
+
if ( _raycaster.ray.intersectPlane( _plane, _panCurrent ) ) {
|
|
104
|
+
|
|
105
|
+
_panCurrent.sub( this._panWorldStart );
|
|
106
|
+
this._panOffset.copy( _panCurrent ).negate();
|
|
107
|
+
|
|
108
|
+
this.update();
|
|
109
|
+
|
|
110
|
+
}
|
|
111
|
+
|
|
58
112
|
}
|
|
59
113
|
|
|
60
114
|
}
|
|
@@ -482,8 +482,8 @@ class OrbitControls extends Controls {
|
|
|
482
482
|
disconnect() {
|
|
483
483
|
|
|
484
484
|
this.domElement.removeEventListener( 'pointerdown', this._onPointerDown );
|
|
485
|
-
this.domElement.removeEventListener( 'pointermove', this._onPointerMove );
|
|
486
|
-
this.domElement.removeEventListener( 'pointerup', this._onPointerUp );
|
|
485
|
+
this.domElement.ownerDocument.removeEventListener( 'pointermove', this._onPointerMove );
|
|
486
|
+
this.domElement.ownerDocument.removeEventListener( 'pointerup', this._onPointerUp );
|
|
487
487
|
this.domElement.removeEventListener( 'pointercancel', this._onPointerUp );
|
|
488
488
|
|
|
489
489
|
this.domElement.removeEventListener( 'wheel', this._onMouseWheel );
|
|
@@ -1458,8 +1458,8 @@ function onPointerDown( event ) {
|
|
|
1458
1458
|
|
|
1459
1459
|
this.domElement.setPointerCapture( event.pointerId );
|
|
1460
1460
|
|
|
1461
|
-
this.domElement.addEventListener( 'pointermove', this._onPointerMove );
|
|
1462
|
-
this.domElement.addEventListener( 'pointerup', this._onPointerUp );
|
|
1461
|
+
this.domElement.ownerDocument.addEventListener( 'pointermove', this._onPointerMove );
|
|
1462
|
+
this.domElement.ownerDocument.addEventListener( 'pointerup', this._onPointerUp );
|
|
1463
1463
|
|
|
1464
1464
|
}
|
|
1465
1465
|
|
|
@@ -1509,8 +1509,8 @@ function onPointerUp( event ) {
|
|
|
1509
1509
|
|
|
1510
1510
|
this.domElement.releasePointerCapture( event.pointerId );
|
|
1511
1511
|
|
|
1512
|
-
this.domElement.removeEventListener( 'pointermove', this._onPointerMove );
|
|
1513
|
-
this.domElement.removeEventListener( 'pointerup', this._onPointerUp );
|
|
1512
|
+
this.domElement.ownerDocument.removeEventListener( 'pointermove', this._onPointerMove );
|
|
1513
|
+
this.domElement.ownerDocument.removeEventListener( 'pointerup', this._onPointerUp );
|
|
1514
1514
|
|
|
1515
1515
|
this.dispatchEvent( _endEvent );
|
|
1516
1516
|
|
|
@@ -291,8 +291,8 @@ class TrackballControls extends Controls {
|
|
|
291
291
|
window.removeEventListener( 'keyup', this._onKeyUp );
|
|
292
292
|
|
|
293
293
|
this.domElement.removeEventListener( 'pointerdown', this._onPointerDown );
|
|
294
|
-
this.domElement.removeEventListener( 'pointermove', this._onPointerMove );
|
|
295
|
-
this.domElement.removeEventListener( 'pointerup', this._onPointerUp );
|
|
294
|
+
this.domElement.ownerDocument.removeEventListener( 'pointermove', this._onPointerMove );
|
|
295
|
+
this.domElement.ownerDocument.removeEventListener( 'pointerup', this._onPointerUp );
|
|
296
296
|
this.domElement.removeEventListener( 'pointercancel', this._onPointerCancel );
|
|
297
297
|
this.domElement.removeEventListener( 'wheel', this._onMouseWheel );
|
|
298
298
|
this.domElement.removeEventListener( 'contextmenu', this._onContextMenu );
|
|
@@ -660,8 +660,8 @@ function onPointerDown( event ) {
|
|
|
660
660
|
|
|
661
661
|
this.domElement.setPointerCapture( event.pointerId );
|
|
662
662
|
|
|
663
|
-
this.domElement.addEventListener( 'pointermove', this._onPointerMove );
|
|
664
|
-
this.domElement.addEventListener( 'pointerup', this._onPointerUp );
|
|
663
|
+
this.domElement.ownerDocument.addEventListener( 'pointermove', this._onPointerMove );
|
|
664
|
+
this.domElement.ownerDocument.addEventListener( 'pointerup', this._onPointerUp );
|
|
665
665
|
|
|
666
666
|
}
|
|
667
667
|
|
|
@@ -719,8 +719,8 @@ function onPointerUp( event ) {
|
|
|
719
719
|
|
|
720
720
|
this.domElement.releasePointerCapture( event.pointerId );
|
|
721
721
|
|
|
722
|
-
this.domElement.removeEventListener( 'pointermove', this._onPointerMove );
|
|
723
|
-
this.domElement.removeEventListener( 'pointerup', this._onPointerUp );
|
|
722
|
+
this.domElement.ownerDocument.removeEventListener( 'pointermove', this._onPointerMove );
|
|
723
|
+
this.domElement.ownerDocument.removeEventListener( 'pointerup', this._onPointerUp );
|
|
724
724
|
|
|
725
725
|
}
|
|
726
726
|
|
package/examples/jsm/csm/CSM.js
CHANGED
|
@@ -13,6 +13,7 @@ import { CSMShader } from './CSMShader.js';
|
|
|
13
13
|
const _cameraToLightMatrix = new Matrix4();
|
|
14
14
|
const _lightSpaceFrustum = new CSMFrustum( { webGL: true } );
|
|
15
15
|
const _center = new Vector3();
|
|
16
|
+
const _origin = new Vector3();
|
|
16
17
|
const _bbox = new Box3();
|
|
17
18
|
const _uniformArray = [];
|
|
18
19
|
const _logArray = [];
|
|
@@ -367,7 +368,7 @@ export class CSM {
|
|
|
367
368
|
|
|
368
369
|
// for each frustum we need to find its min-max box aligned with the light orientation
|
|
369
370
|
// the position in _lightOrientationMatrix does not matter, as we transform there and back
|
|
370
|
-
_lightOrientationMatrix.lookAt(
|
|
371
|
+
_lightOrientationMatrix.lookAt( _origin, this.lightDirection, _up );
|
|
371
372
|
_lightOrientationMatrixInverse.copy( _lightOrientationMatrix ).invert();
|
|
372
373
|
|
|
373
374
|
for ( let i = 0; i < frustums.length; i ++ ) {
|
|
@@ -35,7 +35,7 @@ class DecalGeometry extends BufferGeometry {
|
|
|
35
35
|
* @param {Mesh} [mesh] - The base mesh the decal should be projected on.
|
|
36
36
|
* @param {Vector3} [position] - The position of the decal projector.
|
|
37
37
|
* @param {Euler} [orientation] - The orientation of the decal projector.
|
|
38
|
-
* @param {Vector3} [size] -
|
|
38
|
+
* @param {Vector3} [size] - The scale of the decal projector.
|
|
39
39
|
*/
|
|
40
40
|
constructor( mesh = new Mesh(), position = new Vector3(), orientation = new Euler(), size = new Vector3( 1, 1, 1 ) ) {
|
|
41
41
|
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
PlaneGeometry,
|
|
7
7
|
DoubleSide,
|
|
8
8
|
Vector3,
|
|
9
|
-
} from 'three';
|
|
9
|
+
} from 'three/webgpu';
|
|
10
10
|
import { texture as textureNode, cubeTexture, texture3D, float, vec4, attribute } from 'three/tsl';
|
|
11
11
|
import { mergeGeometries } from '../utils/BufferGeometryUtils.js';
|
|
12
12
|
|
|
@@ -8,7 +8,29 @@ import { Viewer } from './tabs/Viewer.js';
|
|
|
8
8
|
import { setText, splitPath, splitCamelCase } from './ui/utils.js';
|
|
9
9
|
|
|
10
10
|
import { QuadMesh, NodeMaterial, CanvasTarget, setConsoleFunction, REVISION, NoToneMapping } from 'three/webgpu';
|
|
11
|
-
import { renderOutput, vec3, vec4 } from 'three/tsl';
|
|
11
|
+
import { renderOutput, vec2, vec3, vec4, Fn, screenUV, step, OnMaterialUpdate, uniform } from 'three/tsl';
|
|
12
|
+
|
|
13
|
+
const aspectRatioUV = /*@__PURE__*/ Fn( ( [ uv, textureNode ] ) => {
|
|
14
|
+
|
|
15
|
+
const aspect = uniform( 0 );
|
|
16
|
+
|
|
17
|
+
OnMaterialUpdate( () => {
|
|
18
|
+
|
|
19
|
+
const { width, height } = textureNode.value;
|
|
20
|
+
|
|
21
|
+
aspect.value = width / height;
|
|
22
|
+
|
|
23
|
+
} );
|
|
24
|
+
|
|
25
|
+
const centered = uv.sub( 0.5 );
|
|
26
|
+
const corrected = vec2( centered.x.div( aspect ), centered.y );
|
|
27
|
+
const finalUV = corrected.add( 0.5 );
|
|
28
|
+
|
|
29
|
+
const inBounds = step( 0.0, finalUV.x ).mul( step( finalUV.x, 1.0 ) ).mul( step( 0.0, finalUV.y ) ).mul( step( finalUV.y, 1.0 ) );
|
|
30
|
+
|
|
31
|
+
return vec3( finalUV, inBounds );
|
|
32
|
+
|
|
33
|
+
} );
|
|
12
34
|
|
|
13
35
|
class Inspector extends RendererInspector {
|
|
14
36
|
|
|
@@ -20,7 +42,10 @@ class Inspector extends RendererInspector {
|
|
|
20
42
|
|
|
21
43
|
const profiler = new Profiler();
|
|
22
44
|
|
|
23
|
-
const parameters = new Parameters(
|
|
45
|
+
const parameters = new Parameters( {
|
|
46
|
+
builtin: true,
|
|
47
|
+
icon: '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M14 6m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0" /><path d="M4 6l8 0" /><path d="M16 6l4 0" /><path d="M8 12m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0" /><path d="M4 12l2 0" /><path d="M10 12l10 0" /><path d="M17 18m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0" /><path d="M4 18l11 0" /><path d="M19 18l1 0" /></svg>'
|
|
48
|
+
} );
|
|
24
49
|
parameters.hide();
|
|
25
50
|
profiler.addTab( parameters );
|
|
26
51
|
|
|
@@ -31,18 +56,22 @@ class Inspector extends RendererInspector {
|
|
|
31
56
|
const performance = new Performance();
|
|
32
57
|
profiler.addTab( performance );
|
|
33
58
|
|
|
34
|
-
const
|
|
35
|
-
profiler.addTab(
|
|
59
|
+
const consoleTab = new Console();
|
|
60
|
+
profiler.addTab( consoleTab );
|
|
36
61
|
|
|
37
|
-
profiler.
|
|
62
|
+
profiler.loadLayout();
|
|
38
63
|
|
|
39
|
-
|
|
64
|
+
if ( ! profiler.activeTabId ) {
|
|
65
|
+
|
|
66
|
+
profiler.setActiveTab( performance.id );
|
|
67
|
+
|
|
68
|
+
}
|
|
40
69
|
|
|
41
70
|
this.statsData = new Map();
|
|
42
71
|
this.canvasNodes = new Map();
|
|
43
72
|
this.profiler = profiler;
|
|
44
73
|
this.performance = performance;
|
|
45
|
-
this.console =
|
|
74
|
+
this.console = consoleTab;
|
|
46
75
|
this.parameters = parameters;
|
|
47
76
|
this.viewer = viewer;
|
|
48
77
|
this.once = {};
|
|
@@ -178,7 +207,12 @@ class Inspector extends RendererInspector {
|
|
|
178
207
|
if ( this.parameters.isVisible === false ) {
|
|
179
208
|
|
|
180
209
|
this.parameters.show();
|
|
181
|
-
|
|
210
|
+
|
|
211
|
+
if ( this.parameters.isDetached === false ) {
|
|
212
|
+
|
|
213
|
+
this.profiler.setActiveTab( this.parameters.id );
|
|
214
|
+
|
|
215
|
+
}
|
|
182
216
|
|
|
183
217
|
}
|
|
184
218
|
|
|
@@ -266,7 +300,17 @@ class Inspector extends RendererInspector {
|
|
|
266
300
|
|
|
267
301
|
const { path, name } = splitPath( splitCamelCase( node.getName() || '(unnamed)' ) );
|
|
268
302
|
|
|
269
|
-
|
|
303
|
+
const target = node.context( { getUV: ( textureNode ) => {
|
|
304
|
+
|
|
305
|
+
const uvData = aspectRatioUV( screenUV, textureNode );
|
|
306
|
+
const correctedUV = uvData.xy;
|
|
307
|
+
const mask = uvData.z;
|
|
308
|
+
|
|
309
|
+
return correctedUV.mul( mask );
|
|
310
|
+
|
|
311
|
+
} } );
|
|
312
|
+
|
|
313
|
+
let output = vec4( vec3( target ), 1 );
|
|
270
314
|
output = renderOutput( output, NoToneMapping, renderer.outputColorSpace );
|
|
271
315
|
output = output.context( { inspector: true } );
|
|
272
316
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
import { InspectorBase, TimestampQuery } from 'three/webgpu';
|
|
2
|
+
import { InspectorBase, TimestampQuery, warnOnce } from 'three/webgpu';
|
|
3
3
|
|
|
4
4
|
class ObjectStats {
|
|
5
5
|
|
|
@@ -330,7 +330,17 @@ export class RendererInspector extends InspectorBase {
|
|
|
330
330
|
|
|
331
331
|
inspect( node ) {
|
|
332
332
|
|
|
333
|
-
this.currentNodes
|
|
333
|
+
const currentNodes = this.currentNodes;
|
|
334
|
+
|
|
335
|
+
if ( currentNodes !== null ) {
|
|
336
|
+
|
|
337
|
+
currentNodes.push( node );
|
|
338
|
+
|
|
339
|
+
} else {
|
|
340
|
+
|
|
341
|
+
warnOnce( 'RendererInspector: Unable to inspect node outside of frame scope. Use "renderer.setAnimationLoop()".' );
|
|
342
|
+
|
|
343
|
+
}
|
|
334
344
|
|
|
335
345
|
}
|
|
336
346
|
|
|
@@ -299,9 +299,9 @@ class ParametersGroup {
|
|
|
299
299
|
|
|
300
300
|
class Parameters extends Tab {
|
|
301
301
|
|
|
302
|
-
constructor() {
|
|
302
|
+
constructor( options = {} ) {
|
|
303
303
|
|
|
304
|
-
super( 'Parameters' );
|
|
304
|
+
super( 'Parameters', options );
|
|
305
305
|
|
|
306
306
|
const paramList = new List( 'Property', 'Value' );
|
|
307
307
|
paramList.domElement.classList.add( 'parameters' );
|
|
@@ -6,9 +6,9 @@ import { createValueSpan, setText } from '../ui/utils.js';
|
|
|
6
6
|
|
|
7
7
|
class Performance extends Tab {
|
|
8
8
|
|
|
9
|
-
constructor() {
|
|
9
|
+
constructor( options = {} ) {
|
|
10
10
|
|
|
11
|
-
super( 'Performance' );
|
|
11
|
+
super( 'Performance', options );
|
|
12
12
|
|
|
13
13
|
const perfList = new List( 'Name', 'CPU', 'GPU', 'Total' );
|
|
14
14
|
perfList.setGridStyle( 'minmax(200px, 2fr) 80px 80px 80px' );
|
|
@@ -6,13 +6,13 @@ import { RendererUtils, NoToneMapping, LinearSRGBColorSpace } from 'three/webgpu
|
|
|
6
6
|
|
|
7
7
|
class Viewer extends Tab {
|
|
8
8
|
|
|
9
|
-
constructor() {
|
|
9
|
+
constructor( options = {} ) {
|
|
10
10
|
|
|
11
|
-
super( 'Viewer' );
|
|
11
|
+
super( 'Viewer', options );
|
|
12
12
|
|
|
13
13
|
const nodeList = new List( 'Viewer', 'Name' );
|
|
14
14
|
nodeList.setGridStyle( '150px minmax(200px, 2fr)' );
|
|
15
|
-
nodeList.domElement.style.minWidth = '
|
|
15
|
+
nodeList.domElement.style.minWidth = '400px';
|
|
16
16
|
|
|
17
17
|
const scrollWrapper = document.createElement( 'div' );
|
|
18
18
|
scrollWrapper.className = 'list-scroll-wrapper';
|
|
@@ -70,7 +70,7 @@ class Viewer extends Tab {
|
|
|
70
70
|
|
|
71
71
|
update( renderer, canvasDataList ) {
|
|
72
72
|
|
|
73
|
-
if ( ! this.isActive ) return;
|
|
73
|
+
if ( ! this.isActive && ! this.isDetached ) return;
|
|
74
74
|
|
|
75
75
|
//
|
|
76
76
|
|