super-three 0.168.0 → 0.169.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/build/three.cjs +369 -131
- package/build/three.module.js +369 -131
- package/build/three.module.min.js +1 -1
- package/build/three.webgpu.js +24644 -22406
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +79941 -0
- package/build/three.webgpu.nodes.min.js +6 -0
- package/examples/jsm/Addons.js +0 -6
- package/examples/jsm/controls/TrackballControls.js +32 -12
- package/examples/jsm/controls/TransformControls.js +97 -62
- package/examples/jsm/exporters/DRACOExporter.js +4 -2
- package/examples/jsm/exporters/EXRExporter.js +19 -11
- package/examples/jsm/exporters/KTX2Exporter.js +21 -13
- package/examples/jsm/exporters/OBJExporter.js +5 -1
- package/examples/jsm/exporters/PLYExporter.js +9 -7
- package/examples/jsm/geometries/DecalGeometry.js +4 -1
- package/examples/jsm/geometries/InstancedPointsGeometry.js +1 -1
- package/examples/jsm/helpers/LightProbeHelper.js +1 -1
- package/examples/jsm/helpers/LightProbeHelperGPU.js +65 -0
- package/examples/jsm/libs/basis/basis_transcoder.js +8 -10
- package/examples/jsm/libs/basis/basis_transcoder.wasm +0 -0
- package/examples/jsm/libs/ktx-parse.module.js +1 -1
- package/examples/jsm/lights/LightProbeGenerator.js +24 -10
- package/examples/jsm/loaders/ColladaLoader.js +9 -6
- package/examples/jsm/loaders/DRACOLoader.js +3 -1
- package/examples/jsm/loaders/FBXLoader.js +30 -20
- package/examples/jsm/loaders/GLTFLoader.js +5 -10
- package/examples/jsm/loaders/KTX2Loader.js +10 -7
- package/examples/jsm/loaders/MTLLoader.js +4 -3
- package/examples/jsm/loaders/MaterialXLoader.js +29 -10
- package/examples/jsm/loaders/OBJLoader.js +5 -3
- package/examples/jsm/loaders/PCDLoader.js +5 -4
- package/examples/jsm/loaders/PDBLoader.js +3 -2
- package/examples/jsm/loaders/PLYLoader.js +8 -5
- package/examples/jsm/loaders/STLLoader.js +3 -2
- package/examples/jsm/loaders/VRMLLoader.js +10 -10
- package/examples/jsm/loaders/VTKLoader.js +4 -3
- package/examples/jsm/loaders/XYZLoader.js +3 -2
- package/examples/jsm/misc/Timer.js +1 -1
- package/examples/jsm/modifiers/CurveModifierGPU.js +233 -0
- package/examples/jsm/objects/LensflareMesh.js +322 -0
- package/examples/jsm/objects/SkyMesh.js +1 -2
- package/examples/jsm/objects/Water2Mesh.js +2 -3
- package/examples/jsm/objects/WaterMesh.js +1 -2
- package/examples/jsm/physics/JoltPhysics.js +1 -1
- package/examples/jsm/physics/RapierPhysics.js +1 -1
- package/examples/jsm/transpiler/GLSLDecoder.js +1 -1
- package/examples/jsm/transpiler/ShaderToyDecoder.js +2 -2
- package/examples/jsm/utils/GeometryCompressionUtils.js +37 -122
- package/examples/jsm/utils/ShadowMapViewer.js +3 -8
- package/examples/jsm/utils/ShadowMapViewerGPU.js +201 -0
- package/examples/jsm/utils/SkeletonUtils.js +84 -66
- package/examples/jsm/utils/TextureUtils.js +1 -0
- package/examples/jsm/utils/TextureUtilsGPU.js +63 -0
- package/examples/jsm/webxr/XRControllerModelFactory.js +1 -1
- package/package.json +2 -2
- package/src/Three.WebGPU.Nodes.js +200 -0
- package/src/Three.WebGPU.js +2 -1
- package/src/audio/Audio.js +2 -2
- package/src/constants.js +1 -1
- package/src/core/BufferAttribute.js +0 -9
- package/src/core/Clock.js +1 -1
- package/src/core/InterleavedBuffer.js +0 -9
- package/src/extras/Controls.js +1 -1
- package/src/geometries/CylinderGeometry.js +11 -4
- package/src/loaders/MaterialLoader.js +7 -1
- package/src/loaders/nodes/NodeLoader.js +24 -4
- package/src/loaders/nodes/NodeMaterialLoader.js +21 -17
- package/src/loaders/nodes/NodeObjectLoader.js +19 -0
- package/src/materials/nodes/InstancedPointsNodeMaterial.js +19 -34
- package/src/materials/nodes/Line2NodeMaterial.js +26 -26
- package/src/materials/nodes/LineBasicNodeMaterial.js +7 -3
- package/src/materials/nodes/LineDashedNodeMaterial.js +7 -3
- package/src/materials/nodes/MeshBasicNodeMaterial.js +7 -3
- package/src/materials/nodes/MeshLambertNodeMaterial.js +7 -3
- package/src/materials/nodes/MeshMatcapNodeMaterial.js +7 -3
- package/src/materials/nodes/MeshNormalNodeMaterial.js +7 -3
- package/src/materials/nodes/MeshPhongNodeMaterial.js +7 -3
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +6 -3
- package/src/materials/nodes/MeshSSSNodeMaterial.js +6 -3
- package/src/materials/nodes/MeshStandardNodeMaterial.js +7 -3
- package/src/materials/nodes/MeshToonNodeMaterial.js +7 -3
- package/src/materials/nodes/NodeMaterial.js +20 -45
- package/src/materials/nodes/NodeMaterials.js +2 -0
- package/src/materials/nodes/PointsNodeMaterial.js +7 -3
- package/src/materials/nodes/ShadowNodeMaterial.js +7 -3
- package/src/materials/nodes/SpriteNodeMaterial.js +39 -6
- package/src/materials/nodes/VolumeNodeMaterial.js +13 -9
- package/src/materials/nodes/manager/NodeMaterialObserver.js +302 -0
- package/src/math/Triangle.js +24 -0
- package/src/nodes/Nodes.js +3 -3
- package/src/nodes/TSL.js +96 -93
- package/src/nodes/accessors/BatchNode.js +7 -3
- package/src/nodes/accessors/BufferAttributeNode.js +6 -3
- package/src/nodes/accessors/BufferNode.js +6 -3
- package/src/nodes/accessors/Camera.js +10 -16
- package/src/nodes/accessors/ClippingNode.js +7 -3
- package/src/nodes/accessors/CubeTextureNode.js +6 -3
- package/src/nodes/accessors/InstanceNode.js +11 -11
- package/src/nodes/accessors/InstancedPointsMaterialNode.js +6 -3
- package/src/nodes/accessors/Lights.js +51 -0
- package/src/nodes/accessors/MaterialNode.js +8 -4
- package/src/nodes/accessors/MaterialReferenceNode.js +6 -3
- package/src/nodes/accessors/ModelNode.js +42 -7
- package/src/nodes/accessors/ModelViewProjectionNode.js +9 -5
- package/src/nodes/accessors/MorphNode.js +7 -3
- package/src/nodes/accessors/Normal.js +32 -6
- package/src/nodes/accessors/Object3DNode.js +11 -27
- package/src/nodes/accessors/PointUVNode.js +7 -3
- package/src/nodes/accessors/ReferenceBaseNode.js +32 -4
- package/src/nodes/accessors/ReferenceNode.js +40 -3
- package/src/nodes/accessors/RendererReferenceNode.js +9 -3
- package/src/nodes/accessors/SceneNode.js +7 -3
- package/src/nodes/accessors/SkinningNode.js +7 -3
- package/src/nodes/accessors/StorageBufferNode.js +21 -3
- package/src/nodes/accessors/StorageTextureNode.js +7 -4
- package/src/nodes/accessors/Texture3DNode.js +7 -4
- package/src/nodes/accessors/TextureNode.js +19 -8
- package/src/nodes/accessors/TextureSizeNode.js +8 -5
- package/src/nodes/accessors/UniformArrayNode.js +12 -9
- package/src/nodes/accessors/UserDataNode.js +9 -6
- package/src/nodes/accessors/VelocityNode.js +74 -23
- package/src/nodes/accessors/VertexColorNode.js +6 -3
- package/src/nodes/code/CodeNode.js +7 -3
- package/src/nodes/code/ExpressionNode.js +8 -4
- package/src/nodes/code/FunctionCallNode.js +6 -3
- package/src/nodes/code/FunctionNode.js +6 -3
- package/src/nodes/code/ScriptableNode.js +11 -6
- package/src/nodes/code/ScriptableValueNode.js +7 -3
- package/src/nodes/core/AssignNode.js +9 -6
- package/src/nodes/core/AttributeNode.js +7 -3
- package/src/nodes/core/BypassNode.js +8 -4
- package/src/nodes/core/CacheNode.js +8 -4
- package/src/nodes/core/ConstNode.js +6 -3
- package/src/nodes/core/ContextNode.js +7 -3
- package/src/nodes/core/IndexNode.js +25 -3
- package/src/nodes/core/InputNode.js +7 -3
- package/src/nodes/core/MRTNode.js +6 -3
- package/src/nodes/core/Node.js +10 -51
- package/src/nodes/core/NodeBuilder.js +71 -5
- package/src/nodes/core/NodeUtils.js +48 -6
- package/src/nodes/core/OutputStructNode.js +8 -4
- package/src/nodes/core/ParameterNode.js +6 -3
- package/src/nodes/core/PropertyNode.js +7 -3
- package/src/nodes/core/StackNode.js +7 -3
- package/src/nodes/core/StructTypeNode.js +7 -3
- package/src/nodes/core/TempNode.js +8 -4
- package/src/nodes/core/UniformGroupNode.js +10 -6
- package/src/nodes/core/UniformNode.js +6 -3
- package/src/nodes/core/VarNode.js +8 -4
- package/src/nodes/core/VaryingNode.js +7 -3
- package/src/nodes/display/AfterImageNode.js +6 -0
- package/src/nodes/display/AnaglyphPassNode.js +6 -0
- package/src/nodes/display/AnamorphicNode.js +6 -0
- package/src/nodes/display/BloomNode.js +6 -0
- package/src/nodes/display/BumpMapNode.js +6 -0
- package/src/nodes/display/ColorSpaceFunctions.js +4 -4
- package/src/nodes/display/ColorSpaceNode.js +43 -14
- package/src/nodes/display/DenoiseNode.js +6 -3
- package/src/nodes/display/DepthOfFieldNode.js +6 -3
- package/src/nodes/display/DotScreenNode.js +8 -5
- package/src/nodes/display/FXAANode.js +6 -3
- package/src/nodes/display/FilmNode.js +6 -3
- package/src/nodes/display/FrontFacingNode.js +7 -3
- package/src/nodes/display/GTAONode.js +6 -3
- package/src/nodes/display/GaussianBlurNode.js +6 -3
- package/src/nodes/display/Lut3DNode.js +6 -3
- package/src/nodes/display/NormalMapNode.js +8 -6
- package/src/nodes/display/ParallaxBarrierPassNode.js +8 -5
- package/src/nodes/display/PassNode.js +18 -7
- package/src/nodes/display/PixelationPassNode.js +12 -5
- package/src/nodes/display/PosterizeNode.js +6 -3
- package/src/nodes/display/RGBShiftNode.js +6 -3
- package/src/nodes/display/RenderOutputNode.js +12 -8
- package/src/nodes/display/SSAAPassNode.js +6 -3
- package/src/nodes/display/ScreenNode.js +181 -0
- package/src/nodes/display/SobelOperatorNode.js +6 -3
- package/src/nodes/display/StereoCompositePassNode.js +6 -3
- package/src/nodes/display/StereoPassNode.js +6 -3
- package/src/nodes/display/ToneMappingFunctions.js +12 -12
- package/src/nodes/display/ToneMappingNode.js +8 -7
- package/src/nodes/display/ToonOutlinePassNode.js +111 -0
- package/src/nodes/display/TransitionNode.js +6 -3
- package/src/nodes/display/ViewportDepthNode.js +7 -3
- package/src/nodes/display/ViewportDepthTextureNode.js +8 -5
- package/src/nodes/display/ViewportSharedTextureNode.js +8 -5
- package/src/nodes/display/ViewportTextureNode.js +8 -5
- package/src/nodes/fog/FogExp2Node.js +6 -3
- package/src/nodes/fog/FogNode.js +7 -3
- package/src/nodes/fog/FogRangeNode.js +6 -3
- package/src/nodes/functions/PhysicalLightingModel.js +2 -2
- package/src/nodes/functions/material/getShIrradianceAt.js +28 -0
- package/src/nodes/geometry/RangeNode.js +7 -3
- package/src/nodes/gpgpu/AtomicFunctionNode.js +99 -0
- package/src/nodes/gpgpu/BarrierNode.js +40 -0
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +98 -0
- package/src/nodes/gpgpu/ComputeNode.js +8 -4
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +100 -0
- package/src/nodes/lighting/AONode.js +6 -3
- package/src/nodes/lighting/AmbientLightNode.js +6 -3
- package/src/nodes/lighting/AnalyticLightNode.js +198 -30
- package/src/nodes/lighting/BasicEnvironmentNode.js +6 -3
- package/src/nodes/lighting/BasicLightMapNode.js +6 -3
- package/src/nodes/lighting/DirectionalLightNode.js +7 -4
- package/src/nodes/lighting/EnvironmentNode.js +6 -3
- package/src/nodes/lighting/HemisphereLightNode.js +10 -6
- package/src/nodes/lighting/IESSpotLightNode.js +6 -3
- package/src/nodes/lighting/IrradianceNode.js +6 -3
- package/src/nodes/lighting/LightProbeNode.js +8 -31
- package/src/nodes/lighting/LightingContextNode.js +6 -3
- package/src/nodes/lighting/LightingNode.js +7 -3
- package/src/nodes/lighting/LightsNode.js +24 -5
- package/src/nodes/lighting/PointLightNode.js +11 -7
- package/src/nodes/lighting/RectAreaLightNode.js +11 -7
- package/src/nodes/lighting/SpotLightNode.js +13 -10
- package/src/nodes/math/ConditionalNode.js +23 -6
- package/src/nodes/math/MathNode.js +6 -3
- package/src/nodes/math/OperatorNode.js +6 -3
- package/src/nodes/pmrem/PMREMNode.js +6 -3
- package/src/nodes/utils/ArrayElementNode.js +8 -4
- package/src/nodes/utils/ConvertNode.js +7 -3
- package/src/nodes/utils/CubeMapNode.js +6 -3
- package/src/nodes/utils/EquirectUVNode.js +6 -3
- package/src/nodes/utils/FlipNode.js +7 -4
- package/src/nodes/utils/FunctionOverloadingNode.js +7 -3
- package/src/nodes/utils/JoinNode.js +6 -3
- package/src/nodes/utils/LoopNode.js +7 -3
- package/src/nodes/utils/MatcapUVNode.js +6 -3
- package/src/nodes/utils/MaxMipLevelNode.js +6 -3
- package/src/nodes/utils/OscNode.js +7 -3
- package/src/nodes/utils/RTTNode.js +6 -3
- package/src/nodes/utils/ReflectorNode.js +8 -5
- package/src/nodes/utils/RemapNode.js +7 -3
- package/src/nodes/utils/RotateNode.js +6 -3
- package/src/nodes/utils/SetNode.js +7 -4
- package/src/nodes/utils/SplitNode.js +7 -3
- package/src/nodes/utils/SpriteSheetUVNode.js +7 -3
- package/src/nodes/utils/StorageArrayElementNode.js +9 -8
- package/src/nodes/utils/TimerNode.js +6 -3
- package/src/nodes/utils/TriplanarTexturesNode.js +7 -3
- package/src/nodes/utils/ViewportUtils.js +2 -2
- package/src/objects/BatchedMesh.js +76 -10
- package/src/objects/LOD.js +21 -0
- package/src/objects/Line.js +1 -0
- package/src/objects/Mesh.js +7 -23
- package/src/objects/Points.js +2 -0
- package/src/renderers/WebGLRenderer.js +64 -41
- package/src/renderers/common/BundleGroup.js +26 -0
- package/src/renderers/common/ClippingContext.js +4 -3
- package/src/renderers/common/RenderContext.js +4 -5
- package/src/renderers/common/RenderObject.js +116 -5
- package/src/renderers/common/RenderObjects.js +8 -1
- package/src/renderers/common/Renderer.js +57 -49
- package/src/renderers/common/extras/PMREMGenerator.js +7 -9
- package/src/renderers/common/nodes/NodeBuilderState.js +3 -3
- package/src/renderers/common/nodes/Nodes.js +33 -14
- package/src/renderers/shaders/ShaderLib/sprite.glsl.js +2 -4
- package/src/renderers/webgl/WebGLAttributes.js +45 -14
- package/src/renderers/webgl/WebGLCapabilities.js +9 -0
- package/src/renderers/webgl/WebGLProgram.js +2 -0
- package/src/renderers/webgl/WebGLPrograms.js +21 -17
- package/src/renderers/webgl/WebGLState.js +21 -0
- package/src/renderers/webgl/WebGLTextures.js +22 -0
- package/src/renderers/webgl-fallback/WebGLBackend.js +50 -45
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +4 -4
- package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +6 -0
- package/src/renderers/webgl-fallback/utils/WebGLState.js +1 -4
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +61 -16
- package/src/renderers/webgpu/WebGPUBackend.js +33 -25
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +42 -0
- package/src/renderers/webgpu/WebGPURenderer.js +5 -2
- package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +59 -0
- package/src/renderers/{common → webgpu}/nodes/StandardNodeLibrary.js +11 -11
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +91 -11
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +6 -16
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +1 -1
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +7 -5
- package/src/renderers/webgpu/utils/WebGPUUtils.js +1 -1
- package/src/utils.js +33 -1
- package/examples/jsm/geometries/SDFGeometryGenerator.js +0 -144
- package/examples/jsm/loaders/TiltLoader.js +0 -520
- package/examples/jsm/utils/GPUStatsPanel.js +0 -95
- package/examples/jsm/utils/PackedPhongMaterial.js +0 -178
- package/src/nodes/display/ViewportNode.js +0 -138
- package/src/nodes/lighting/LightNode.js +0 -57
- package/src/renderers/common/StandardRenderer.js +0 -18
package/examples/jsm/Addons.js
CHANGED
|
@@ -124,7 +124,6 @@ export * from './loaders/TDSLoader.js';
|
|
|
124
124
|
export * from './loaders/TGALoader.js';
|
|
125
125
|
export * from './loaders/TIFFLoader.js';
|
|
126
126
|
export * from './loaders/TTFLoader.js';
|
|
127
|
-
export * from './loaders/TiltLoader.js';
|
|
128
127
|
export * from './loaders/USDZLoader.js';
|
|
129
128
|
export * from './loaders/VOXLoader.js';
|
|
130
129
|
export * from './loaders/VRMLLoader.js';
|
|
@@ -172,9 +171,6 @@ export * from './objects/ShadowMesh.js';
|
|
|
172
171
|
export * from './objects/Sky.js';
|
|
173
172
|
export * from './objects/Water.js';
|
|
174
173
|
export { Water as Water2 } from './objects/Water2.js';
|
|
175
|
-
export * from './objects/SkyMesh.js';
|
|
176
|
-
export * from './objects/WaterMesh.js';
|
|
177
|
-
export { WaterMesh as Water2Mesh } from './objects/Water2Mesh.js';
|
|
178
174
|
|
|
179
175
|
export * from './physics/AmmoPhysics.js';
|
|
180
176
|
export * from './physics/RapierPhysics.js';
|
|
@@ -271,11 +267,9 @@ export * from './textures/FlakesTexture.js';
|
|
|
271
267
|
|
|
272
268
|
export * as BufferGeometryUtils from './utils/BufferGeometryUtils.js';
|
|
273
269
|
export * as CameraUtils from './utils/CameraUtils.js';
|
|
274
|
-
export * from './utils/GPUStatsPanel.js';
|
|
275
270
|
export * as GeometryCompressionUtils from './utils/GeometryCompressionUtils.js';
|
|
276
271
|
export * as GeometryUtils from './utils/GeometryUtils.js';
|
|
277
272
|
export * from './utils/LDrawUtils.js';
|
|
278
|
-
export * from './utils/PackedPhongMaterial.js';
|
|
279
273
|
export * as SceneUtils from './utils/SceneUtils.js';
|
|
280
274
|
export * from './utils/ShadowMapViewer.js';
|
|
281
275
|
export * as SkeletonUtils from './utils/SkeletonUtils.js';
|
|
@@ -618,23 +618,43 @@ function onKeyDown( event ) {
|
|
|
618
618
|
|
|
619
619
|
function onMouseDown( event ) {
|
|
620
620
|
|
|
621
|
-
|
|
621
|
+
let mouseAction;
|
|
622
622
|
|
|
623
|
-
|
|
623
|
+
switch ( event.button ) {
|
|
624
624
|
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
625
|
+
case 0:
|
|
626
|
+
mouseAction = this.mouseButtons.LEFT;
|
|
627
|
+
break;
|
|
628
|
+
|
|
629
|
+
case 1:
|
|
630
|
+
mouseAction = this.mouseButtons.MIDDLE;
|
|
631
|
+
break;
|
|
628
632
|
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
633
|
+
case 2:
|
|
634
|
+
mouseAction = this.mouseButtons.RIGHT;
|
|
635
|
+
break;
|
|
632
636
|
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
break;
|
|
637
|
+
default:
|
|
638
|
+
mouseAction = - 1;
|
|
636
639
|
|
|
637
|
-
|
|
640
|
+
}
|
|
641
|
+
|
|
642
|
+
switch ( mouseAction ) {
|
|
643
|
+
|
|
644
|
+
case MOUSE.DOLLY:
|
|
645
|
+
this.state = _STATE.ZOOM;
|
|
646
|
+
break;
|
|
647
|
+
|
|
648
|
+
case MOUSE.ROTATE:
|
|
649
|
+
this.state = _STATE.ROTATE;
|
|
650
|
+
break;
|
|
651
|
+
|
|
652
|
+
case MOUSE.PAN:
|
|
653
|
+
this.state = _STATE.PAN;
|
|
654
|
+
break;
|
|
655
|
+
|
|
656
|
+
default:
|
|
657
|
+
this.state = _STATE.NONE;
|
|
638
658
|
|
|
639
659
|
}
|
|
640
660
|
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
BoxGeometry,
|
|
3
3
|
BufferGeometry,
|
|
4
|
+
Controls,
|
|
4
5
|
CylinderGeometry,
|
|
5
6
|
DoubleSide,
|
|
6
7
|
Euler,
|
|
@@ -36,32 +37,22 @@ const _mouseDownEvent = { type: 'mouseDown', mode: null };
|
|
|
36
37
|
const _mouseUpEvent = { type: 'mouseUp', mode: null };
|
|
37
38
|
const _objectChangeEvent = { type: 'objectChange' };
|
|
38
39
|
|
|
39
|
-
class TransformControls extends
|
|
40
|
+
class TransformControls extends Controls {
|
|
40
41
|
|
|
41
|
-
constructor( camera, domElement ) {
|
|
42
|
+
constructor( camera, domElement = null ) {
|
|
42
43
|
|
|
43
|
-
super();
|
|
44
|
-
|
|
45
|
-
if ( domElement === undefined ) {
|
|
46
|
-
|
|
47
|
-
console.warn( 'THREE.TransformControls: The second parameter "domElement" is now mandatory.' );
|
|
48
|
-
domElement = document;
|
|
44
|
+
super( undefined, domElement );
|
|
49
45
|
|
|
50
|
-
|
|
46
|
+
const root = new TransformControlsRoot( this );
|
|
47
|
+
this._root = root;
|
|
51
48
|
|
|
52
|
-
|
|
49
|
+
const gizmo = new TransformControlsGizmo();
|
|
50
|
+
this._gizmo = gizmo;
|
|
51
|
+
root.add( gizmo );
|
|
53
52
|
|
|
54
|
-
|
|
55
|
-
this.
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
const _gizmo = new TransformControlsGizmo();
|
|
59
|
-
this._gizmo = _gizmo;
|
|
60
|
-
this.add( _gizmo );
|
|
61
|
-
|
|
62
|
-
const _plane = new TransformControlsPlane();
|
|
63
|
-
this._plane = _plane;
|
|
64
|
-
this.add( _plane );
|
|
53
|
+
const plane = new TransformControlsPlane();
|
|
54
|
+
this._plane = plane;
|
|
55
|
+
root.add( plane );
|
|
65
56
|
|
|
66
57
|
const scope = this;
|
|
67
58
|
|
|
@@ -83,8 +74,8 @@ class TransformControls extends Object3D {
|
|
|
83
74
|
if ( propValue !== value ) {
|
|
84
75
|
|
|
85
76
|
propValue = value;
|
|
86
|
-
|
|
87
|
-
|
|
77
|
+
plane[ propName ] = value;
|
|
78
|
+
gizmo[ propName ] = value;
|
|
88
79
|
|
|
89
80
|
scope.dispatchEvent( { type: propName + '-changed', value: value } );
|
|
90
81
|
scope.dispatchEvent( _changeEvent );
|
|
@@ -96,8 +87,8 @@ class TransformControls extends Object3D {
|
|
|
96
87
|
} );
|
|
97
88
|
|
|
98
89
|
scope[ propName ] = defaultValue;
|
|
99
|
-
|
|
100
|
-
|
|
90
|
+
plane[ propName ] = defaultValue;
|
|
91
|
+
gizmo[ propName ] = defaultValue;
|
|
101
92
|
|
|
102
93
|
}
|
|
103
94
|
|
|
@@ -172,50 +163,38 @@ class TransformControls extends Object3D {
|
|
|
172
163
|
this._onPointerMove = onPointerMove.bind( this );
|
|
173
164
|
this._onPointerUp = onPointerUp.bind( this );
|
|
174
165
|
|
|
175
|
-
|
|
176
|
-
this.domElement.addEventListener( 'pointermove', this._onPointerHover );
|
|
177
|
-
this.domElement.addEventListener( 'pointerup', this._onPointerUp );
|
|
178
|
-
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
// updateMatrixWorld updates key transformation variables
|
|
182
|
-
updateMatrixWorld( force ) {
|
|
183
|
-
|
|
184
|
-
if ( this.object !== undefined ) {
|
|
166
|
+
if ( domElement !== null ) {
|
|
185
167
|
|
|
186
|
-
this.
|
|
187
|
-
|
|
188
|
-
if ( this.object.parent === null ) {
|
|
189
|
-
|
|
190
|
-
console.error( 'TransformControls: The attached 3D object must be a part of the scene graph.' );
|
|
191
|
-
|
|
192
|
-
} else {
|
|
168
|
+
this.connect();
|
|
193
169
|
|
|
194
|
-
|
|
170
|
+
}
|
|
195
171
|
|
|
196
|
-
|
|
172
|
+
}
|
|
197
173
|
|
|
198
|
-
|
|
174
|
+
connect() {
|
|
199
175
|
|
|
200
|
-
|
|
201
|
-
|
|
176
|
+
this.domElement.addEventListener( 'pointerdown', this._onPointerDown );
|
|
177
|
+
this.domElement.addEventListener( 'pointermove', this._onPointerHover );
|
|
178
|
+
this.domElement.addEventListener( 'pointerup', this._onPointerUp );
|
|
202
179
|
|
|
203
|
-
|
|
180
|
+
this.domElement.style.touchAction = 'none'; // disable touch scroll
|
|
204
181
|
|
|
205
|
-
|
|
206
|
-
this.camera.matrixWorld.decompose( this.cameraPosition, this.cameraQuaternion, this._cameraScale );
|
|
182
|
+
}
|
|
207
183
|
|
|
208
|
-
|
|
184
|
+
disconnect() {
|
|
209
185
|
|
|
210
|
-
|
|
186
|
+
this.domElement.removeEventListener( 'pointerdown', this._onPointerDown );
|
|
187
|
+
this.domElement.removeEventListener( 'pointermove', this._onPointerHover );
|
|
188
|
+
this.domElement.removeEventListener( 'pointermove', this._onPointerMove );
|
|
189
|
+
this.domElement.removeEventListener( 'pointerup', this._onPointerUp );
|
|
211
190
|
|
|
212
|
-
|
|
191
|
+
this.domElement.style.touchAction = 'auto';
|
|
213
192
|
|
|
214
|
-
|
|
193
|
+
}
|
|
215
194
|
|
|
216
|
-
|
|
195
|
+
getHelper() {
|
|
217
196
|
|
|
218
|
-
|
|
197
|
+
return this._root;
|
|
219
198
|
|
|
220
199
|
}
|
|
221
200
|
|
|
@@ -555,10 +534,7 @@ class TransformControls extends Object3D {
|
|
|
555
534
|
|
|
556
535
|
dispose() {
|
|
557
536
|
|
|
558
|
-
this.
|
|
559
|
-
this.domElement.removeEventListener( 'pointermove', this._onPointerHover );
|
|
560
|
-
this.domElement.removeEventListener( 'pointermove', this._onPointerMove );
|
|
561
|
-
this.domElement.removeEventListener( 'pointerup', this._onPointerUp );
|
|
537
|
+
this.disconnect();
|
|
562
538
|
|
|
563
539
|
this.traverse( function ( child ) {
|
|
564
540
|
|
|
@@ -573,7 +549,7 @@ class TransformControls extends Object3D {
|
|
|
573
549
|
attach( object ) {
|
|
574
550
|
|
|
575
551
|
this.object = object;
|
|
576
|
-
this.visible = true;
|
|
552
|
+
this._root.visible = true;
|
|
577
553
|
|
|
578
554
|
return this;
|
|
579
555
|
|
|
@@ -583,9 +559,10 @@ class TransformControls extends Object3D {
|
|
|
583
559
|
detach() {
|
|
584
560
|
|
|
585
561
|
this.object = undefined;
|
|
586
|
-
this.visible = false;
|
|
587
562
|
this.axis = null;
|
|
588
563
|
|
|
564
|
+
this._root.visible = false;
|
|
565
|
+
|
|
589
566
|
return this;
|
|
590
567
|
|
|
591
568
|
}
|
|
@@ -778,6 +755,64 @@ const _v1 = new Vector3();
|
|
|
778
755
|
const _v2 = new Vector3();
|
|
779
756
|
const _v3 = new Vector3();
|
|
780
757
|
|
|
758
|
+
class TransformControlsRoot extends Object3D {
|
|
759
|
+
|
|
760
|
+
constructor( controls ) {
|
|
761
|
+
|
|
762
|
+
super();
|
|
763
|
+
|
|
764
|
+
this.isTransformControlsRoot = true;
|
|
765
|
+
|
|
766
|
+
this.controls = controls;
|
|
767
|
+
this.visible = false;
|
|
768
|
+
|
|
769
|
+
}
|
|
770
|
+
|
|
771
|
+
// updateMatrixWorld updates key transformation variables
|
|
772
|
+
updateMatrixWorld( force ) {
|
|
773
|
+
|
|
774
|
+
const controls = this.controls;
|
|
775
|
+
|
|
776
|
+
if ( controls.object !== undefined ) {
|
|
777
|
+
|
|
778
|
+
controls.object.updateMatrixWorld();
|
|
779
|
+
|
|
780
|
+
if ( controls.object.parent === null ) {
|
|
781
|
+
|
|
782
|
+
console.error( 'TransformControls: The attached 3D object must be a part of the scene graph.' );
|
|
783
|
+
|
|
784
|
+
} else {
|
|
785
|
+
|
|
786
|
+
controls.object.parent.matrixWorld.decompose( controls._parentPosition, controls._parentQuaternion, controls._parentScale );
|
|
787
|
+
|
|
788
|
+
}
|
|
789
|
+
|
|
790
|
+
controls.object.matrixWorld.decompose( controls.worldPosition, controls.worldQuaternion, controls._worldScale );
|
|
791
|
+
|
|
792
|
+
controls._parentQuaternionInv.copy( controls._parentQuaternion ).invert();
|
|
793
|
+
controls._worldQuaternionInv.copy( controls.worldQuaternion ).invert();
|
|
794
|
+
|
|
795
|
+
}
|
|
796
|
+
|
|
797
|
+
controls.camera.updateMatrixWorld();
|
|
798
|
+
controls.camera.matrixWorld.decompose( controls.cameraPosition, controls.cameraQuaternion, controls._cameraScale );
|
|
799
|
+
|
|
800
|
+
if ( controls.camera.isOrthographicCamera ) {
|
|
801
|
+
|
|
802
|
+
controls.camera.getWorldDirection( controls.eye ).negate();
|
|
803
|
+
|
|
804
|
+
} else {
|
|
805
|
+
|
|
806
|
+
controls.eye.copy( controls.cameraPosition ).sub( controls.worldPosition ).normalize();
|
|
807
|
+
|
|
808
|
+
}
|
|
809
|
+
|
|
810
|
+
super.updateMatrixWorld( force );
|
|
811
|
+
|
|
812
|
+
}
|
|
813
|
+
|
|
814
|
+
}
|
|
815
|
+
|
|
781
816
|
class TransformControlsGizmo extends Object3D {
|
|
782
817
|
|
|
783
818
|
constructor() {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Color } from 'three';
|
|
1
|
+
import { Color, ColorManagement, SRGBColorSpace } from 'three';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* Export draco compressed files from threejs geometry objects.
|
|
@@ -227,7 +227,9 @@ function createVertexColorSRGBArray( attribute ) {
|
|
|
227
227
|
|
|
228
228
|
for ( let i = 0, il = count; i < il; i ++ ) {
|
|
229
229
|
|
|
230
|
-
_color.fromBufferAttribute( attribute, i )
|
|
230
|
+
_color.fromBufferAttribute( attribute, i );
|
|
231
|
+
|
|
232
|
+
ColorManagement.fromWorkingColorSpace( _color, SRGBColorSpace );
|
|
231
233
|
|
|
232
234
|
array[ i * itemSize ] = _color.r;
|
|
233
235
|
array[ i * itemSize + 1 ] = _color.g;
|
|
@@ -21,20 +21,20 @@ const ZIP_COMPRESSION = 3;
|
|
|
21
21
|
|
|
22
22
|
class EXRExporter {
|
|
23
23
|
|
|
24
|
-
parse( arg1, arg2, arg3 ) {
|
|
24
|
+
async parse( arg1, arg2, arg3 ) {
|
|
25
25
|
|
|
26
|
-
if ( ! arg1 || ! ( arg1.isWebGLRenderer || arg1.isDataTexture ) ) {
|
|
26
|
+
if ( ! arg1 || ! ( arg1.isWebGLRenderer || arg1.isWebGPURenderer || arg1.isDataTexture ) ) {
|
|
27
27
|
|
|
28
28
|
throw Error( 'EXRExporter.parse: Unsupported first parameter, expected instance of WebGLRenderer or DataTexture.' );
|
|
29
29
|
|
|
30
|
-
} else if ( arg1.isWebGLRenderer ) {
|
|
30
|
+
} else if ( arg1.isWebGLRenderer || arg1.isWebGPURenderer ) {
|
|
31
31
|
|
|
32
32
|
const renderer = arg1, renderTarget = arg2, options = arg3;
|
|
33
33
|
|
|
34
34
|
supportedRTT( renderTarget );
|
|
35
35
|
|
|
36
36
|
const info = buildInfoRTT( renderTarget, options ),
|
|
37
|
-
dataBuffer = getPixelData( renderer, renderTarget, info ),
|
|
37
|
+
dataBuffer = await getPixelData( renderer, renderTarget, info ),
|
|
38
38
|
rawContentBuffer = reorganizeDataBuffer( dataBuffer, info ),
|
|
39
39
|
chunks = compressData( rawContentBuffer, info );
|
|
40
40
|
|
|
@@ -61,7 +61,7 @@ class EXRExporter {
|
|
|
61
61
|
|
|
62
62
|
function supportedRTT( renderTarget ) {
|
|
63
63
|
|
|
64
|
-
if ( ! renderTarget || ! renderTarget.
|
|
64
|
+
if ( ! renderTarget || ! renderTarget.isRenderTarget ) {
|
|
65
65
|
|
|
66
66
|
throw Error( 'EXRExporter.parse: Unsupported second parameter, expected instance of WebGLRenderTarget.' );
|
|
67
67
|
|
|
@@ -189,22 +189,30 @@ function buildInfoDT( texture, options = {} ) {
|
|
|
189
189
|
|
|
190
190
|
}
|
|
191
191
|
|
|
192
|
-
function getPixelData( renderer, rtt, info ) {
|
|
192
|
+
async function getPixelData( renderer, rtt, info ) {
|
|
193
193
|
|
|
194
194
|
let dataBuffer;
|
|
195
195
|
|
|
196
|
-
if (
|
|
196
|
+
if ( renderer.isWebGLRenderer ) {
|
|
197
197
|
|
|
198
|
-
|
|
198
|
+
if ( info.type === FloatType ) {
|
|
199
|
+
|
|
200
|
+
dataBuffer = new Float32Array( info.width * info.height * info.numInputChannels );
|
|
201
|
+
|
|
202
|
+
} else {
|
|
203
|
+
|
|
204
|
+
dataBuffer = new Uint16Array( info.width * info.height * info.numInputChannels );
|
|
205
|
+
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
await renderer.readRenderTargetPixelsAsync( rtt, 0, 0, info.width, info.height, dataBuffer );
|
|
199
209
|
|
|
200
210
|
} else {
|
|
201
211
|
|
|
202
|
-
dataBuffer =
|
|
212
|
+
dataBuffer = await renderer.readRenderTargetPixelsAsync( rtt, 0, 0, info.width, info.height );
|
|
203
213
|
|
|
204
214
|
}
|
|
205
215
|
|
|
206
|
-
renderer.readRenderTargetPixels( rtt, 0, 0, info.width, info.height, dataBuffer );
|
|
207
|
-
|
|
208
216
|
return dataBuffer;
|
|
209
217
|
|
|
210
218
|
}
|
|
@@ -111,7 +111,7 @@ const ERROR_COLOR_SPACE = 'THREE.KTX2Exporter: Supported color spaces are SRGBCo
|
|
|
111
111
|
|
|
112
112
|
export class KTX2Exporter {
|
|
113
113
|
|
|
114
|
-
parse( arg1, arg2 ) {
|
|
114
|
+
async parse( arg1, arg2 ) {
|
|
115
115
|
|
|
116
116
|
let texture;
|
|
117
117
|
|
|
@@ -119,9 +119,9 @@ export class KTX2Exporter {
|
|
|
119
119
|
|
|
120
120
|
texture = arg1;
|
|
121
121
|
|
|
122
|
-
} else if ( arg1.isWebGLRenderer && arg2.
|
|
122
|
+
} else if ( ( arg1.isWebGLRenderer || arg1.isWebGPURenderer ) && arg2.isRenderTarget ) {
|
|
123
123
|
|
|
124
|
-
texture = toDataTexture( arg1, arg2 );
|
|
124
|
+
texture = await toDataTexture( arg1, arg2 );
|
|
125
125
|
|
|
126
126
|
} else {
|
|
127
127
|
|
|
@@ -235,32 +235,40 @@ export class KTX2Exporter {
|
|
|
235
235
|
|
|
236
236
|
}
|
|
237
237
|
|
|
238
|
-
function toDataTexture( renderer, rtt ) {
|
|
238
|
+
async function toDataTexture( renderer, rtt ) {
|
|
239
239
|
|
|
240
240
|
const channelCount = getChannelCount( rtt.texture );
|
|
241
241
|
|
|
242
242
|
let view;
|
|
243
243
|
|
|
244
|
-
if (
|
|
244
|
+
if ( renderer.isWebGLRenderer ) {
|
|
245
245
|
|
|
246
|
-
|
|
246
|
+
if ( rtt.texture.type === FloatType ) {
|
|
247
247
|
|
|
248
|
-
|
|
248
|
+
view = new Float32Array( rtt.width * rtt.height * channelCount );
|
|
249
249
|
|
|
250
|
-
|
|
250
|
+
} else if ( rtt.texture.type === HalfFloatType ) {
|
|
251
251
|
|
|
252
|
-
|
|
252
|
+
view = new Uint16Array( rtt.width * rtt.height * channelCount );
|
|
253
253
|
|
|
254
|
-
|
|
254
|
+
} else if ( rtt.texture.type === UnsignedByteType ) {
|
|
255
|
+
|
|
256
|
+
view = new Uint8Array( rtt.width * rtt.height * channelCount );
|
|
257
|
+
|
|
258
|
+
} else {
|
|
259
|
+
|
|
260
|
+
throw new Error( ERROR_TYPE );
|
|
261
|
+
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
await renderer.readRenderTargetPixelsAsync( rtt, 0, 0, rtt.width, rtt.height, view );
|
|
255
265
|
|
|
256
266
|
} else {
|
|
257
267
|
|
|
258
|
-
|
|
268
|
+
view = await renderer.readRenderTargetPixelsAsync( rtt, 0, 0, rtt.width, rtt.height );
|
|
259
269
|
|
|
260
270
|
}
|
|
261
271
|
|
|
262
|
-
renderer.readRenderTargetPixels( rtt, 0, 0, rtt.width, rtt.height, view );
|
|
263
|
-
|
|
264
272
|
return new DataTexture( view, rtt.width, rtt.height, rtt.texture.format, rtt.texture.type );
|
|
265
273
|
|
|
266
274
|
}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Color,
|
|
3
|
+
ColorManagement,
|
|
3
4
|
Matrix3,
|
|
5
|
+
SRGBColorSpace,
|
|
4
6
|
Vector2,
|
|
5
7
|
Vector3
|
|
6
8
|
} from 'three';
|
|
@@ -226,7 +228,9 @@ class OBJExporter {
|
|
|
226
228
|
|
|
227
229
|
if ( colors !== undefined ) {
|
|
228
230
|
|
|
229
|
-
color.fromBufferAttribute( colors, i )
|
|
231
|
+
color.fromBufferAttribute( colors, i );
|
|
232
|
+
|
|
233
|
+
ColorManagement.fromWorkingColorSpace( color, SRGBColorSpace );
|
|
230
234
|
|
|
231
235
|
output += ' ' + color.r + ' ' + color.g + ' ' + color.b;
|
|
232
236
|
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Matrix3,
|
|
3
3
|
Vector3,
|
|
4
|
-
Color
|
|
4
|
+
Color,
|
|
5
|
+
ColorManagement,
|
|
6
|
+
SRGBColorSpace
|
|
5
7
|
} from 'three';
|
|
6
8
|
|
|
7
9
|
/**
|
|
@@ -302,9 +304,9 @@ class PLYExporter {
|
|
|
302
304
|
|
|
303
305
|
if ( colors != null ) {
|
|
304
306
|
|
|
305
|
-
tempColor
|
|
306
|
-
|
|
307
|
-
|
|
307
|
+
tempColor.fromBufferAttribute( colors, i );
|
|
308
|
+
|
|
309
|
+
ColorManagement.fromWorkingColorSpace( tempColor, SRGBColorSpace );
|
|
308
310
|
|
|
309
311
|
output.setUint8( vOffset, Math.floor( tempColor.r * 255 ) );
|
|
310
312
|
vOffset += 1;
|
|
@@ -461,9 +463,9 @@ class PLYExporter {
|
|
|
461
463
|
|
|
462
464
|
if ( colors != null ) {
|
|
463
465
|
|
|
464
|
-
tempColor
|
|
465
|
-
|
|
466
|
-
|
|
466
|
+
tempColor.fromBufferAttribute( colors, i );
|
|
467
|
+
|
|
468
|
+
ColorManagement.fromWorkingColorSpace( tempColor, SRGBColorSpace );
|
|
467
469
|
|
|
468
470
|
line += ' ' +
|
|
469
471
|
Math.floor( tempColor.r * 255 ) + ' ' +
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
BufferGeometry,
|
|
3
3
|
Float32BufferAttribute,
|
|
4
|
+
Matrix3,
|
|
4
5
|
Matrix4,
|
|
5
6
|
Vector3
|
|
6
7
|
} from 'three';
|
|
@@ -36,6 +37,8 @@ class DecalGeometry extends BufferGeometry {
|
|
|
36
37
|
|
|
37
38
|
const plane = new Vector3();
|
|
38
39
|
|
|
40
|
+
const normalMatrix = new Matrix3().getNormalMatrix( mesh.matrixWorld );
|
|
41
|
+
|
|
39
42
|
// this matrix represents the transformation of the decal projector
|
|
40
43
|
|
|
41
44
|
const projectorMatrix = new Matrix4();
|
|
@@ -146,7 +149,7 @@ class DecalGeometry extends BufferGeometry {
|
|
|
146
149
|
vertex.applyMatrix4( mesh.matrixWorld );
|
|
147
150
|
vertex.applyMatrix4( projectorMatrixInverse );
|
|
148
151
|
|
|
149
|
-
normal.
|
|
152
|
+
normal.applyNormalMatrix( normalMatrix );
|
|
150
153
|
|
|
151
154
|
decalVertices.push( new DecalVertex( vertex.clone(), normal.clone() ) );
|
|
152
155
|
|
|
@@ -20,7 +20,7 @@ class InstancedPointsGeometry extends InstancedBufferGeometry {
|
|
|
20
20
|
this.type = 'InstancedPointsGeometry';
|
|
21
21
|
|
|
22
22
|
const positions = [ - 1, 1, 0, 1, 1, 0, - 1, - 1, 0, 1, - 1, 0 ];
|
|
23
|
-
const uvs = [
|
|
23
|
+
const uvs = [ 0, 1, 1, 1, 0, 0, 1, 0 ];
|
|
24
24
|
const index = [ 0, 2, 1, 2, 3, 1 ];
|
|
25
25
|
|
|
26
26
|
this.setIndex( index );
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Mesh,
|
|
3
|
+
NodeMaterial,
|
|
4
|
+
SphereGeometry
|
|
5
|
+
} from 'three';
|
|
6
|
+
import { float, Fn, getShIrradianceAt, normalWorld, uniformArray, uniform, vec4 } from 'three/tsl';
|
|
7
|
+
|
|
8
|
+
class LightProbeHelper extends Mesh {
|
|
9
|
+
|
|
10
|
+
constructor( lightProbe, size = 1 ) {
|
|
11
|
+
|
|
12
|
+
const sh = uniformArray( lightProbe.sh.coefficients );
|
|
13
|
+
const intensity = uniform( lightProbe.intensity );
|
|
14
|
+
|
|
15
|
+
const RECIPROCAL_PI = float( 1 / Math.PI );
|
|
16
|
+
|
|
17
|
+
const fragmentNode = Fn( () => {
|
|
18
|
+
|
|
19
|
+
const irradiance = getShIrradianceAt( normalWorld, sh );
|
|
20
|
+
|
|
21
|
+
const outgoingLight = RECIPROCAL_PI.mul( irradiance ).mul( intensity );
|
|
22
|
+
|
|
23
|
+
return vec4( outgoingLight, 1.0 );
|
|
24
|
+
|
|
25
|
+
} )();
|
|
26
|
+
|
|
27
|
+
const material = new NodeMaterial();
|
|
28
|
+
material.fragmentNode = fragmentNode;
|
|
29
|
+
|
|
30
|
+
const geometry = new SphereGeometry( 1, 32, 16 );
|
|
31
|
+
|
|
32
|
+
super( geometry, material );
|
|
33
|
+
|
|
34
|
+
this.lightProbe = lightProbe;
|
|
35
|
+
this.size = size;
|
|
36
|
+
this.type = 'LightProbeHelper';
|
|
37
|
+
|
|
38
|
+
this._intensity = intensity;
|
|
39
|
+
this._sh = sh;
|
|
40
|
+
|
|
41
|
+
this.onBeforeRender();
|
|
42
|
+
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
dispose() {
|
|
46
|
+
|
|
47
|
+
this.geometry.dispose();
|
|
48
|
+
this.material.dispose();
|
|
49
|
+
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
onBeforeRender() {
|
|
53
|
+
|
|
54
|
+
this.position.copy( this.lightProbe.position );
|
|
55
|
+
|
|
56
|
+
this.scale.set( 1, 1, 1 ).multiplyScalar( this.size );
|
|
57
|
+
|
|
58
|
+
this._intensity.value = this.lightProbe.intensity;
|
|
59
|
+
this._sh.array = this.lightProbe.sh.coefficients;
|
|
60
|
+
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
export { LightProbeHelper };
|