super-three 0.167.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 +532 -173
- package/build/three.module.js +532 -174
- package/build/three.module.min.js +1 -1
- package/build/three.webgpu.js +18173 -14266
- 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 -4
- package/examples/jsm/animation/AnimationClipCreator.js +1 -1
- package/examples/jsm/capabilities/WebGL.js +27 -21
- package/examples/jsm/controls/ArcballControls.js +174 -158
- package/examples/jsm/controls/DragControls.js +260 -132
- package/examples/jsm/controls/FirstPersonControls.js +175 -163
- package/examples/jsm/controls/FlyControls.js +194 -188
- package/examples/jsm/controls/OrbitControls.js +777 -786
- package/examples/jsm/controls/PointerLockControls.js +24 -15
- package/examples/jsm/controls/TrackballControls.js +469 -448
- package/examples/jsm/controls/TransformControls.js +97 -62
- package/examples/jsm/effects/AnaglyphEffect.js +6 -13
- package/examples/jsm/effects/ParallaxBarrierEffect.js +17 -11
- package/examples/jsm/effects/StereoEffect.js +6 -1
- package/examples/jsm/environments/RoomEnvironment.js +1 -1
- package/examples/jsm/exporters/DRACOExporter.js +4 -2
- package/examples/jsm/exporters/EXRExporter.js +19 -11
- package/examples/jsm/exporters/GLTFExporter.js +6 -1
- 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/exporters/USDZExporter.js +29 -8
- package/examples/jsm/geometries/DecalGeometry.js +4 -1
- package/examples/jsm/geometries/InstancedPointsGeometry.js +1 -1
- package/examples/jsm/helpers/LightProbeHelper.js +43 -44
- 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 +27 -12
- package/examples/jsm/loaders/MTLLoader.js +4 -3
- package/examples/jsm/loaders/MaterialXLoader.js +40 -14
- package/examples/jsm/loaders/OBJLoader.js +5 -3
- package/examples/jsm/loaders/PCDLoader.js +14 -13
- 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 +187 -0
- package/examples/jsm/objects/Water2Mesh.js +158 -0
- package/examples/jsm/objects/WaterMesh.js +101 -0
- package/examples/jsm/physics/JoltPhysics.js +1 -1
- package/examples/jsm/physics/RapierPhysics.js +21 -1
- package/examples/jsm/postprocessing/OutlinePass.js +31 -46
- package/examples/jsm/postprocessing/SSAARenderPass.js +3 -1
- package/examples/jsm/shaders/BleachBypassShader.js +1 -2
- package/examples/jsm/shaders/OutputShader.js +1 -1
- package/examples/jsm/transpiler/GLSLDecoder.js +1 -1
- package/examples/jsm/transpiler/ShaderToyDecoder.js +2 -2
- package/examples/jsm/transpiler/TSLEncoder.js +8 -8
- 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 +2 -1
- package/examples/jsm/utils/TextureUtilsGPU.js +63 -0
- package/examples/jsm/webxr/XRControllerModelFactory.js +1 -1
- package/package.json +3 -2
- package/src/Three.WebGPU.Nodes.js +200 -0
- package/src/Three.WebGPU.js +7 -0
- package/src/Three.js +1 -0
- 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 +32 -0
- package/src/geometries/CylinderGeometry.js +11 -4
- package/src/loaders/MaterialLoader.js +7 -1
- package/src/loaders/ObjectLoader.js +3 -3
- package/src/{nodes/loaders → loaders/nodes}/NodeLoader.js +25 -5
- package/src/{nodes/loaders → loaders/nodes}/NodeMaterialLoader.js +21 -18
- package/src/{nodes/loaders → loaders/nodes}/NodeObjectLoader.js +19 -0
- package/src/materials/Material.js +4 -7
- package/src/materials/nodes/InstancedPointsNodeMaterial.js +156 -0
- package/src/{nodes/materials → materials/nodes}/Line2NodeMaterial.js +56 -59
- package/src/{nodes/materials → materials/nodes}/LineBasicNodeMaterial.js +8 -5
- package/src/{nodes/materials → materials/nodes}/LineDashedNodeMaterial.js +12 -10
- package/src/{nodes/materials → materials/nodes}/MeshBasicNodeMaterial.js +16 -12
- package/src/{nodes/materials → materials/nodes}/MeshLambertNodeMaterial.js +10 -6
- package/src/{nodes/materials → materials/nodes}/MeshMatcapNodeMaterial.js +13 -9
- package/src/{nodes/materials → materials/nodes}/MeshNormalNodeMaterial.js +13 -9
- package/src/{nodes/materials → materials/nodes}/MeshPhongNodeMaterial.js +14 -9
- package/src/{nodes/materials → materials/nodes}/MeshPhysicalNodeMaterial.js +22 -18
- package/src/{nodes/materials → materials/nodes}/MeshSSSNodeMaterial.js +10 -7
- package/src/{nodes/materials → materials/nodes}/MeshStandardNodeMaterial.js +22 -12
- package/src/{nodes/materials → materials/nodes}/MeshToonNodeMaterial.js +9 -5
- package/src/{nodes/materials → materials/nodes}/NodeMaterial.js +71 -115
- package/src/{nodes/materials/Materials.js → materials/nodes/NodeMaterials.js} +3 -1
- package/src/{nodes/materials → materials/nodes}/PointsNodeMaterial.js +8 -5
- package/src/{nodes/materials → materials/nodes}/ShadowNodeMaterial.js +9 -5
- package/src/{nodes/materials → materials/nodes}/SpriteNodeMaterial.js +47 -14
- package/src/{nodes/materials → materials/nodes}/VolumeNodeMaterial.js +24 -22
- package/src/materials/nodes/manager/NodeMaterialObserver.js +302 -0
- package/src/math/Triangle.js +24 -0
- package/src/nodes/Nodes.js +103 -159
- package/src/nodes/TSL.js +179 -0
- package/src/nodes/accessors/AccessorsUtils.js +8 -8
- package/src/nodes/accessors/BatchNode.js +53 -21
- package/src/nodes/accessors/{BitangentNode.js → Bitangent.js} +9 -9
- package/src/nodes/accessors/BufferAttributeNode.js +8 -5
- package/src/nodes/accessors/BufferNode.js +7 -4
- package/src/nodes/accessors/Camera.js +13 -0
- package/src/nodes/accessors/ClippingNode.js +19 -13
- package/src/nodes/accessors/CubeTextureNode.js +9 -8
- package/src/nodes/accessors/InstanceNode.js +19 -15
- package/src/nodes/accessors/InstancedPointsMaterialNode.js +8 -5
- package/src/nodes/accessors/Lights.js +51 -0
- package/src/nodes/accessors/MaterialNode.js +56 -55
- package/src/nodes/accessors/MaterialProperties.js +3 -0
- package/src/nodes/accessors/MaterialReferenceNode.js +9 -4
- package/src/nodes/accessors/ModelNode.js +47 -12
- package/src/nodes/accessors/ModelViewProjectionNode.js +12 -9
- package/src/nodes/accessors/MorphNode.js +17 -13
- package/src/nodes/accessors/Normal.js +88 -0
- package/src/nodes/accessors/Object3DNode.js +17 -33
- package/src/nodes/accessors/PointUVNode.js +9 -5
- package/src/nodes/accessors/Position.js +10 -0
- package/src/nodes/accessors/ReferenceBaseNode.js +171 -0
- package/src/nodes/accessors/ReferenceNode.js +50 -7
- package/src/nodes/accessors/ReflectVector.js +10 -0
- package/src/nodes/accessors/RendererReferenceNode.js +12 -6
- package/src/nodes/accessors/SceneNode.js +9 -6
- package/src/nodes/accessors/SkinningNode.js +88 -21
- package/src/nodes/accessors/StorageBufferNode.js +22 -5
- package/src/nodes/accessors/StorageTextureNode.js +9 -6
- package/src/nodes/accessors/Tangent.js +22 -0
- package/src/nodes/accessors/Texture3DNode.js +16 -13
- package/src/nodes/accessors/{TextureBicubicNode.js → TextureBicubic.js} +3 -32
- package/src/nodes/accessors/TextureNode.js +29 -23
- package/src/nodes/accessors/TextureSizeNode.js +10 -9
- package/src/nodes/accessors/{UniformsNode.js → UniformArrayNode.js} +26 -14
- package/src/nodes/accessors/UserDataNode.js +10 -7
- package/src/nodes/accessors/VelocityNode.js +134 -0
- package/src/nodes/accessors/VertexColorNode.js +7 -4
- package/src/nodes/code/CodeNode.js +9 -5
- package/src/nodes/code/ExpressionNode.js +10 -6
- package/src/nodes/code/FunctionCallNode.js +8 -5
- package/src/nodes/code/FunctionNode.js +8 -23
- package/src/nodes/code/ScriptableNode.js +13 -10
- package/src/nodes/code/ScriptableValueNode.js +9 -7
- package/src/nodes/core/AssignNode.js +12 -9
- package/src/nodes/core/AttributeNode.js +12 -21
- package/src/nodes/core/BypassNode.js +11 -7
- package/src/nodes/core/CacheNode.js +10 -6
- package/src/nodes/core/ConstNode.js +6 -3
- package/src/nodes/core/ContextNode.js +21 -11
- package/src/nodes/core/IndexNode.js +35 -8
- package/src/nodes/core/InputNode.js +7 -3
- package/src/nodes/core/MRTNode.js +16 -7
- package/src/nodes/core/Node.js +19 -40
- package/src/nodes/core/NodeBuilder.js +117 -38
- package/src/nodes/core/NodeUtils.js +49 -6
- package/src/nodes/core/OutputStructNode.js +10 -6
- package/src/nodes/core/ParameterNode.js +7 -4
- package/src/nodes/core/PropertyNode.js +36 -32
- package/src/nodes/core/StackNode.js +31 -11
- package/src/nodes/core/StructTypeNode.js +7 -3
- package/src/nodes/core/TempNode.js +8 -4
- package/src/nodes/core/UniformGroupNode.js +14 -11
- package/src/nodes/core/UniformNode.js +7 -4
- package/src/nodes/core/VarNode.js +12 -8
- package/src/nodes/core/VaryingNode.js +10 -6
- package/src/nodes/display/AfterImageNode.js +15 -9
- package/src/nodes/display/AnaglyphPassNode.js +67 -0
- package/src/nodes/display/AnamorphicNode.js +17 -11
- package/src/nodes/display/BleachBypass.js +26 -0
- package/src/nodes/display/BlendMode.js +54 -0
- package/src/nodes/display/BloomNode.js +27 -19
- package/src/nodes/display/BumpMapNode.js +13 -12
- package/src/nodes/display/ColorAdjustment.js +46 -0
- package/src/nodes/display/ColorSpaceFunctions.js +38 -0
- package/src/nodes/display/ColorSpaceNode.js +67 -61
- package/src/nodes/display/DenoiseNode.js +23 -17
- package/src/nodes/display/DepthOfFieldNode.js +12 -7
- package/src/nodes/display/DotScreenNode.js +13 -22
- package/src/nodes/display/FXAANode.js +21 -16
- package/src/nodes/display/FilmNode.js +11 -7
- package/src/nodes/display/FrontFacingNode.js +10 -6
- package/src/nodes/display/GTAONode.js +22 -15
- package/src/nodes/display/GaussianBlurNode.js +14 -8
- package/src/nodes/display/Lut3DNode.js +10 -6
- package/src/nodes/display/MotionBlur.js +25 -0
- package/src/nodes/display/NormalMapNode.js +13 -13
- package/src/nodes/display/ParallaxBarrierPassNode.js +58 -0
- package/src/nodes/display/PassNode.js +95 -8
- package/src/nodes/display/PixelationPassNode.js +20 -8
- package/src/nodes/display/PosterizeNode.js +8 -7
- package/src/nodes/display/RGBShiftNode.js +11 -7
- package/src/nodes/display/RenderOutputNode.js +15 -11
- package/src/nodes/display/SSAAPassNode.js +287 -0
- package/src/nodes/display/ScreenNode.js +181 -0
- package/src/nodes/display/Sepia.js +17 -0
- package/src/nodes/display/SobelOperatorNode.js +13 -8
- package/src/nodes/display/StereoCompositePassNode.js +110 -0
- package/src/nodes/display/StereoPassNode.js +83 -0
- package/src/nodes/display/ToneMappingFunctions.js +190 -0
- package/src/nodes/display/ToneMappingNode.js +15 -175
- package/src/nodes/display/ToonOutlinePassNode.js +111 -0
- package/src/nodes/display/TransitionNode.js +12 -8
- package/src/nodes/display/ViewportDepthNode.js +34 -29
- package/src/nodes/display/ViewportDepthTextureNode.js +10 -9
- package/src/nodes/display/ViewportSharedTextureNode.js +10 -9
- package/src/nodes/display/ViewportTextureNode.js +11 -11
- package/src/nodes/fog/FogExp2Node.js +8 -7
- package/src/nodes/fog/FogNode.js +10 -8
- package/src/nodes/fog/FogRangeNode.js +8 -7
- package/src/nodes/functions/BSDF/BRDF_GGX.js +4 -4
- package/src/nodes/functions/BSDF/BRDF_Lambert.js +2 -2
- package/src/nodes/functions/BSDF/BRDF_Sheen.js +6 -6
- package/src/nodes/functions/BSDF/DFGApprox.js +2 -2
- package/src/nodes/functions/BSDF/D_GGX.js +2 -2
- package/src/nodes/functions/BSDF/D_GGX_Anisotropic.js +3 -3
- package/src/nodes/functions/BSDF/EnvironmentBRDF.js +2 -2
- package/src/nodes/functions/BSDF/F_Schlick.js +2 -2
- package/src/nodes/functions/BSDF/LTC.js +6 -6
- package/src/nodes/functions/BSDF/Schlick_to_F0.js +2 -2
- package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +2 -2
- package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +2 -2
- package/src/nodes/functions/BasicLightingModel.js +1 -1
- package/src/nodes/functions/PhongLightingModel.js +5 -5
- package/src/nodes/functions/PhysicalLightingModel.js +34 -33
- package/src/nodes/functions/ShadowMaskModel.js +1 -1
- package/src/nodes/functions/ToonLightingModel.js +3 -3
- package/src/nodes/functions/material/getGeometryRoughness.js +4 -4
- package/src/nodes/functions/material/getRoughness.js +2 -2
- package/src/nodes/functions/material/getShIrradianceAt.js +28 -0
- package/src/nodes/geometry/RangeNode.js +9 -5
- 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 +10 -6
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +100 -0
- package/src/nodes/lighting/AONode.js +6 -3
- package/src/nodes/lighting/AmbientLightNode.js +6 -8
- package/src/nodes/lighting/AnalyticLightNode.js +225 -36
- package/src/nodes/lighting/BasicEnvironmentNode.js +8 -4
- package/src/nodes/lighting/BasicLightMapNode.js +7 -4
- package/src/nodes/lighting/DirectionalLightNode.js +7 -9
- package/src/nodes/lighting/EnvironmentNode.js +23 -19
- package/src/nodes/lighting/HemisphereLightNode.js +11 -11
- package/src/nodes/lighting/IESSpotLightNode.js +7 -9
- package/src/nodes/lighting/IrradianceNode.js +6 -3
- package/src/nodes/lighting/LightProbeNode.js +53 -0
- package/src/nodes/lighting/LightUtils.js +3 -3
- package/src/nodes/lighting/LightingContextNode.js +19 -18
- package/src/nodes/lighting/LightingNode.js +7 -3
- package/src/nodes/lighting/LightsNode.js +112 -75
- package/src/nodes/lighting/PointLightNode.js +12 -13
- package/src/nodes/lighting/RectAreaLightNode.js +11 -11
- package/src/nodes/lighting/SpotLightNode.js +14 -16
- package/src/nodes/materialx/MaterialXNodes.js +2 -2
- package/src/nodes/materialx/lib/mx_hsv.js +36 -31
- package/src/nodes/materialx/lib/mx_noise.js +96 -96
- package/src/nodes/materialx/lib/mx_transform_color.js +2 -2
- package/src/nodes/math/{CondNode.js → ConditionalNode.js} +38 -10
- package/src/nodes/math/Hash.js +13 -0
- package/src/nodes/math/MathNode.js +127 -124
- package/src/nodes/math/MathUtils.js +0 -7
- package/src/nodes/math/OperatorNode.js +97 -52
- package/src/nodes/math/TriNoise3D.js +19 -29
- package/src/nodes/pmrem/PMREMNode.js +61 -15
- package/src/nodes/pmrem/PMREMUtils.js +46 -46
- package/src/nodes/procedural/Checker.js +14 -0
- package/src/nodes/tsl/TSLBase.js +30 -0
- package/src/nodes/{shadernode/ShaderNode.js → tsl/TSLCore.js} +105 -97
- package/src/nodes/utils/ArrayElementNode.js +8 -4
- package/src/nodes/utils/ConvertNode.js +7 -3
- package/src/nodes/utils/CubeMapNode.js +160 -0
- package/src/nodes/utils/Discard.js +8 -0
- package/src/nodes/utils/EquirectUVNode.js +9 -6
- package/src/nodes/utils/FlipNode.js +68 -0
- package/src/nodes/utils/FunctionOverloadingNode.js +9 -5
- package/src/nodes/utils/JoinNode.js +6 -3
- package/src/nodes/utils/LoopNode.js +16 -6
- package/src/nodes/utils/MatcapUVNode.js +10 -7
- package/src/nodes/utils/MaxMipLevelNode.js +8 -5
- package/src/nodes/utils/OscNode.js +12 -8
- package/src/nodes/utils/Packing.js +4 -0
- package/src/nodes/utils/RTTNode.js +11 -8
- package/src/nodes/utils/ReflectorNode.js +12 -4
- package/src/nodes/utils/RemapNode.js +12 -8
- package/src/nodes/utils/RotateNode.js +8 -13
- package/src/nodes/utils/SetNode.js +7 -4
- package/src/nodes/utils/SplitNode.js +7 -3
- package/src/nodes/utils/SpriteSheetUVNode.js +10 -6
- package/src/nodes/utils/SpriteUtils.js +47 -0
- package/src/nodes/utils/StorageArrayElementNode.js +11 -12
- package/src/nodes/utils/TimerNode.js +8 -5
- package/src/nodes/utils/TriplanarTexturesNode.js +11 -9
- package/src/nodes/utils/UVUtils.js +19 -0
- package/src/nodes/utils/ViewportUtils.js +14 -0
- package/src/objects/BatchedMesh.js +78 -13
- 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 +88 -41
- package/src/renderers/common/Backend.js +2 -2
- package/src/renderers/common/Background.js +3 -1
- package/src/renderers/common/BindGroup.js +3 -1
- package/src/renderers/common/Bindings.js +13 -15
- package/src/renderers/common/BundleGroup.js +26 -0
- package/src/renderers/common/ClippingContext.js +15 -5
- package/src/renderers/common/CubeRenderTarget.js +9 -3
- package/src/renderers/common/PostProcessing.js +4 -1
- package/src/renderers/common/QuadMesh.js +2 -0
- package/src/renderers/common/RenderContext.js +23 -0
- package/src/renderers/common/RenderList.js +1 -1
- package/src/renderers/common/RenderObject.js +117 -6
- package/src/renderers/common/RenderObjects.js +8 -1
- package/src/renderers/common/Renderer.js +128 -94
- package/src/renderers/common/SampledTexture.js +12 -3
- package/src/renderers/common/Textures.js +8 -12
- package/src/renderers/common/extras/PMREMGenerator.js +19 -22
- package/src/renderers/common/nodes/NodeBuilderState.js +4 -4
- package/src/renderers/common/nodes/NodeLibrary.js +118 -0
- package/src/renderers/common/nodes/NodeSampledTexture.js +2 -2
- package/src/renderers/common/nodes/Nodes.js +65 -19
- package/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js +2 -2
- 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 +3 -1
- package/src/renderers/webgl/WebGLPrograms.js +21 -17
- package/src/renderers/webgl/WebGLProperties.js +7 -0
- package/src/renderers/webgl/WebGLState.js +21 -0
- package/src/renderers/webgl/WebGLTextures.js +83 -4
- package/src/renderers/webgl-fallback/WebGLBackend.js +135 -110
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +60 -12
- package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +6 -0
- package/src/renderers/webgl-fallback/utils/WebGLState.js +20 -2
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +89 -37
- package/src/renderers/webgpu/WebGPUBackend.js +112 -86
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +42 -0
- package/src/renderers/webgpu/WebGPURenderer.js +9 -6
- package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +59 -0
- package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +105 -0
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +189 -73
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +6 -16
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +45 -21
- package/src/renderers/webgpu/utils/WebGPUConstants.js +2 -1
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +7 -16
- package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +62 -5
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +43 -26
- package/src/renderers/webgpu/utils/WebGPUUtils.js +19 -2
- package/src/renderers/webxr/WebXRManager.js +32 -25
- package/src/utils.js +33 -1
- package/examples/jsm/geometries/SDFGeometryGenerator.js +0 -144
- package/examples/jsm/loaders/LogLuvLoader.js +0 -606
- 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/accessors/CameraNode.js +0 -19
- package/src/nodes/accessors/NormalNode.js +0 -14
- package/src/nodes/accessors/PositionNode.js +0 -10
- package/src/nodes/accessors/ReflectVectorNode.js +0 -10
- package/src/nodes/accessors/TangentNode.js +0 -23
- package/src/nodes/core/NodeKeywords.js +0 -80
- package/src/nodes/display/BlendModeNode.js +0 -128
- package/src/nodes/display/ColorAdjustmentNode.js +0 -104
- package/src/nodes/display/ViewportNode.js +0 -137
- package/src/nodes/lighting/LightNode.js +0 -57
- package/src/nodes/materials/InstancedPointsNodeMaterial.js +0 -162
- package/src/nodes/math/HashNode.js +0 -34
- package/src/nodes/procedural/CheckerNode.js +0 -42
- package/src/nodes/utils/DiscardNode.js +0 -28
- package/src/nodes/utils/PackingNode.js +0 -55
- package/src/nodes/utils/RotateUVNode.js +0 -35
- /package/src/nodes/accessors/{UVNode.js → UV.js} +0 -0
|
@@ -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,16 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
LinearFilter,
|
|
3
3
|
Matrix3,
|
|
4
|
-
Mesh,
|
|
5
4
|
NearestFilter,
|
|
6
|
-
OrthographicCamera,
|
|
7
|
-
PlaneGeometry,
|
|
8
5
|
RGBAFormat,
|
|
9
|
-
Scene,
|
|
10
6
|
ShaderMaterial,
|
|
11
7
|
StereoCamera,
|
|
12
8
|
WebGLRenderTarget
|
|
13
9
|
} from 'three';
|
|
10
|
+
import { FullScreenQuad } from '../postprocessing/Pass.js';
|
|
14
11
|
|
|
15
12
|
class AnaglyphEffect {
|
|
16
13
|
|
|
@@ -30,10 +27,6 @@ class AnaglyphEffect {
|
|
|
30
27
|
- 0.00155529, - 0.0184503, 1.2264
|
|
31
28
|
] );
|
|
32
29
|
|
|
33
|
-
const _camera = new OrthographicCamera( - 1, 1, 1, - 1, 0, 1 );
|
|
34
|
-
|
|
35
|
-
const _scene = new Scene();
|
|
36
|
-
|
|
37
30
|
const _stereo = new StereoCamera();
|
|
38
31
|
|
|
39
32
|
const _params = { minFilter: LinearFilter, magFilter: NearestFilter, format: RGBAFormat };
|
|
@@ -99,8 +92,7 @@ class AnaglyphEffect {
|
|
|
99
92
|
|
|
100
93
|
} );
|
|
101
94
|
|
|
102
|
-
const
|
|
103
|
-
_scene.add( _mesh );
|
|
95
|
+
const _quad = new FullScreenQuad( _material );
|
|
104
96
|
|
|
105
97
|
this.setSize = function ( width, height ) {
|
|
106
98
|
|
|
@@ -132,7 +124,7 @@ class AnaglyphEffect {
|
|
|
132
124
|
renderer.render( scene, _stereo.cameraR );
|
|
133
125
|
|
|
134
126
|
renderer.setRenderTarget( null );
|
|
135
|
-
|
|
127
|
+
_quad.render( renderer );
|
|
136
128
|
|
|
137
129
|
renderer.setRenderTarget( currentRenderTarget );
|
|
138
130
|
|
|
@@ -142,8 +134,9 @@ class AnaglyphEffect {
|
|
|
142
134
|
|
|
143
135
|
_renderTargetL.dispose();
|
|
144
136
|
_renderTargetR.dispose();
|
|
145
|
-
|
|
146
|
-
|
|
137
|
+
|
|
138
|
+
_material.dispose();
|
|
139
|
+
_quad.dispose();
|
|
147
140
|
|
|
148
141
|
};
|
|
149
142
|
|
|
@@ -1,24 +1,17 @@
|
|
|
1
1
|
import {
|
|
2
2
|
LinearFilter,
|
|
3
|
-
Mesh,
|
|
4
3
|
NearestFilter,
|
|
5
|
-
OrthographicCamera,
|
|
6
|
-
PlaneGeometry,
|
|
7
4
|
RGBAFormat,
|
|
8
|
-
Scene,
|
|
9
5
|
ShaderMaterial,
|
|
10
6
|
StereoCamera,
|
|
11
7
|
WebGLRenderTarget
|
|
12
8
|
} from 'three';
|
|
9
|
+
import { FullScreenQuad } from '../postprocessing/Pass.js';
|
|
13
10
|
|
|
14
11
|
class ParallaxBarrierEffect {
|
|
15
12
|
|
|
16
13
|
constructor( renderer ) {
|
|
17
14
|
|
|
18
|
-
const _camera = new OrthographicCamera( - 1, 1, 1, - 1, 0, 1 );
|
|
19
|
-
|
|
20
|
-
const _scene = new Scene();
|
|
21
|
-
|
|
22
15
|
const _stereo = new StereoCamera();
|
|
23
16
|
|
|
24
17
|
const _params = { minFilter: LinearFilter, magFilter: NearestFilter, format: RGBAFormat };
|
|
@@ -77,8 +70,7 @@ class ParallaxBarrierEffect {
|
|
|
77
70
|
|
|
78
71
|
} );
|
|
79
72
|
|
|
80
|
-
const
|
|
81
|
-
_scene.add( mesh );
|
|
73
|
+
const _quad = new FullScreenQuad( _material );
|
|
82
74
|
|
|
83
75
|
this.setSize = function ( width, height ) {
|
|
84
76
|
|
|
@@ -93,6 +85,8 @@ class ParallaxBarrierEffect {
|
|
|
93
85
|
|
|
94
86
|
this.render = function ( scene, camera ) {
|
|
95
87
|
|
|
88
|
+
const currentRenderTarget = renderer.getRenderTarget();
|
|
89
|
+
|
|
96
90
|
if ( scene.matrixWorldAutoUpdate === true ) scene.updateMatrixWorld();
|
|
97
91
|
|
|
98
92
|
if ( camera.parent === null && camera.matrixWorldAutoUpdate === true ) camera.updateMatrixWorld();
|
|
@@ -108,7 +102,19 @@ class ParallaxBarrierEffect {
|
|
|
108
102
|
renderer.render( scene, _stereo.cameraR );
|
|
109
103
|
|
|
110
104
|
renderer.setRenderTarget( null );
|
|
111
|
-
|
|
105
|
+
_quad.render( renderer );
|
|
106
|
+
|
|
107
|
+
renderer.setRenderTarget( currentRenderTarget );
|
|
108
|
+
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
this.dispose = function () {
|
|
112
|
+
|
|
113
|
+
_renderTargetL.dispose();
|
|
114
|
+
_renderTargetR.dispose();
|
|
115
|
+
|
|
116
|
+
_material.dispose();
|
|
117
|
+
_quad.dispose();
|
|
112
118
|
|
|
113
119
|
};
|
|
114
120
|
|
|
@@ -31,9 +31,12 @@ class StereoEffect {
|
|
|
31
31
|
|
|
32
32
|
_stereo.update( camera );
|
|
33
33
|
|
|
34
|
+
const currentAutoClear = renderer.autoClear;
|
|
34
35
|
renderer.getSize( size );
|
|
35
36
|
|
|
36
|
-
|
|
37
|
+
renderer.autoClear = false;
|
|
38
|
+
renderer.clear();
|
|
39
|
+
|
|
37
40
|
renderer.setScissorTest( true );
|
|
38
41
|
|
|
39
42
|
renderer.setScissor( 0, 0, size.width / 2, size.height );
|
|
@@ -46,6 +49,8 @@ class StereoEffect {
|
|
|
46
49
|
|
|
47
50
|
renderer.setScissorTest( false );
|
|
48
51
|
|
|
52
|
+
renderer.autoClear = currentAutoClear;
|
|
53
|
+
|
|
49
54
|
};
|
|
50
55
|
|
|
51
56
|
}
|
|
@@ -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
|
}
|
|
@@ -2837,7 +2837,12 @@ class GLTFMaterialsVolumeExtension {
|
|
|
2837
2837
|
|
|
2838
2838
|
}
|
|
2839
2839
|
|
|
2840
|
-
|
|
2840
|
+
if ( material.attenuationDistance !== Infinity ) {
|
|
2841
|
+
|
|
2842
|
+
extensionDef.attenuationDistance = material.attenuationDistance;
|
|
2843
|
+
|
|
2844
|
+
}
|
|
2845
|
+
|
|
2841
2846
|
extensionDef.attenuationColor = material.attenuationColor.toArray();
|
|
2842
2847
|
|
|
2843
2848
|
materialDef.extensions = materialDef.extensions || {};
|
|
@@ -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 ) + ' ' +
|