super-three 0.155.0 → 0.157.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 +361 -324
- package/build/three.js +361 -324
- package/build/three.min.js +2 -2
- package/build/three.module.js +354 -323
- package/build/three.module.min.js +1 -1
- package/examples/jsm/capabilities/WebGL.js +17 -0
- package/examples/jsm/controls/DragControls.js +3 -2
- package/examples/jsm/controls/OrbitControls.js +13 -5
- package/examples/jsm/csm/CSMShader.js +59 -21
- package/examples/jsm/exporters/EXRExporter.js +102 -24
- package/examples/jsm/exporters/GLTFExporter.js +1 -1
- package/examples/jsm/libs/rhino3dm/rhino3dm.js +8726 -4
- package/examples/jsm/libs/rhino3dm/rhino3dm.module.js +8737 -4
- package/examples/jsm/libs/rhino3dm/rhino3dm.wasm +0 -0
- package/examples/jsm/libs/tween.module.js +790 -735
- package/examples/jsm/libs/utif.module.js +1644 -1558
- package/examples/jsm/lights/LightProbeGenerator.js +37 -3
- package/examples/jsm/lines/LineMaterial.js +90 -156
- package/examples/jsm/loaders/3DMLoader.js +378 -104
- package/examples/jsm/loaders/DDSLoader.js +46 -3
- package/examples/jsm/loaders/EXRLoader.js +4 -4
- package/examples/jsm/loaders/FBXLoader.js +2 -0
- package/examples/jsm/loaders/GLTFLoader.js +18 -8
- package/examples/jsm/loaders/KTX2Loader.js +126 -77
- package/examples/jsm/loaders/LDrawLoader.js +22 -16
- package/examples/jsm/loaders/LogLuvLoader.js +2 -2
- package/examples/jsm/loaders/MMDLoader.js +10 -7
- package/examples/jsm/loaders/RGBELoader.js +48 -66
- package/examples/jsm/loaders/STLLoader.js +7 -0
- package/examples/jsm/loaders/USDZLoader.js +215 -12
- package/examples/jsm/materials/MeshGouraudMaterial.js +22 -18
- package/examples/jsm/nodes/Nodes.js +8 -1
- package/examples/jsm/nodes/accessors/BitangentNode.js +1 -1
- package/examples/jsm/nodes/accessors/BufferAttributeNode.js +30 -4
- package/examples/jsm/nodes/accessors/BufferNode.js +1 -1
- package/examples/jsm/nodes/accessors/CameraNode.js +1 -1
- package/examples/jsm/nodes/accessors/CubeTextureNode.js +19 -4
- package/examples/jsm/nodes/accessors/ExtendedMaterialNode.js +4 -5
- package/examples/jsm/nodes/accessors/InstanceNode.js +2 -2
- package/examples/jsm/nodes/accessors/LineMaterialNode.js +29 -0
- package/examples/jsm/nodes/accessors/MaterialNode.js +23 -13
- package/examples/jsm/nodes/accessors/MaterialReferenceNode.js +12 -9
- package/examples/jsm/nodes/accessors/ModelNode.js +1 -1
- package/examples/jsm/nodes/accessors/ModelViewProjectionNode.js +5 -4
- package/examples/jsm/nodes/accessors/MorphNode.js +4 -4
- package/examples/jsm/nodes/accessors/NormalNode.js +1 -1
- package/examples/jsm/nodes/accessors/Object3DNode.js +3 -3
- package/examples/jsm/nodes/accessors/PointUVNode.js +1 -1
- package/examples/jsm/nodes/accessors/PositionNode.js +1 -1
- package/examples/jsm/nodes/accessors/ReferenceNode.js +13 -7
- package/examples/jsm/nodes/accessors/ReflectVectorNode.js +2 -2
- package/examples/jsm/nodes/accessors/SceneNode.js +2 -2
- package/examples/jsm/nodes/accessors/SkinningNode.js +2 -2
- package/examples/jsm/nodes/accessors/StorageBufferNode.js +1 -1
- package/examples/jsm/nodes/accessors/TangentNode.js +1 -1
- package/examples/jsm/nodes/accessors/TextureBicubicNode.js +2 -2
- package/examples/jsm/nodes/accessors/TextureNode.js +18 -8
- package/examples/jsm/nodes/accessors/TextureSizeNode.js +2 -2
- package/examples/jsm/nodes/accessors/TextureStoreNode.js +29 -0
- package/examples/jsm/nodes/accessors/UVNode.js +1 -1
- package/examples/jsm/nodes/accessors/UserDataNode.js +2 -2
- package/examples/jsm/nodes/code/CodeNode.js +1 -1
- package/examples/jsm/nodes/code/ExpressionNode.js +1 -1
- package/examples/jsm/nodes/code/FunctionCallNode.js +1 -1
- package/examples/jsm/nodes/code/FunctionNode.js +18 -7
- package/examples/jsm/nodes/code/ScriptableNode.js +2 -2
- package/examples/jsm/nodes/code/ScriptableValueNode.js +2 -2
- package/examples/jsm/nodes/core/ArrayUniformNode.js +1 -1
- package/examples/jsm/nodes/core/AttributeNode.js +3 -3
- package/examples/jsm/nodes/core/BypassNode.js +1 -1
- package/examples/jsm/nodes/core/CacheNode.js +1 -1
- package/examples/jsm/nodes/core/ConstNode.js +1 -1
- package/examples/jsm/nodes/core/ContextNode.js +2 -2
- package/examples/jsm/nodes/core/IndexNode.js +1 -1
- package/examples/jsm/nodes/core/InputNode.js +1 -1
- package/examples/jsm/nodes/core/Node.js +45 -14
- package/examples/jsm/nodes/core/NodeBuilder.js +83 -15
- package/examples/jsm/nodes/core/NodeFrame.js +37 -14
- package/examples/jsm/nodes/core/NodeUniform.js +1 -1
- package/examples/jsm/nodes/core/OutputStructNode.js +62 -0
- package/examples/jsm/nodes/core/PropertyNode.js +3 -1
- package/examples/jsm/nodes/core/StackNode.js +5 -5
- package/examples/jsm/nodes/core/StructTypeNode.js +24 -0
- package/examples/jsm/nodes/core/TempNode.js +1 -1
- package/examples/jsm/nodes/core/UniformNode.js +3 -1
- package/examples/jsm/nodes/core/VarNode.js +1 -1
- package/examples/jsm/nodes/core/VaryingNode.js +1 -1
- package/examples/jsm/nodes/core/constants.js +1 -1
- package/examples/jsm/nodes/display/BlendModeNode.js +2 -2
- package/examples/jsm/nodes/display/BumpMapNode.js +2 -2
- package/examples/jsm/nodes/display/ColorAdjustmentNode.js +2 -2
- package/examples/jsm/nodes/display/ColorSpaceNode.js +2 -2
- package/examples/jsm/nodes/display/FrontFacingNode.js +1 -1
- package/examples/jsm/nodes/display/NormalMapNode.js +2 -2
- package/examples/jsm/nodes/display/PosterizeNode.js +2 -2
- package/examples/jsm/nodes/display/ToneMappingNode.js +2 -2
- package/examples/jsm/nodes/display/ViewportDepthNode.js +2 -2
- package/examples/jsm/nodes/display/ViewportDepthTextureNode.js +1 -1
- package/examples/jsm/nodes/display/ViewportNode.js +21 -7
- package/examples/jsm/nodes/display/ViewportSharedTextureNode.js +1 -1
- package/examples/jsm/nodes/display/ViewportTextureNode.js +1 -1
- package/examples/jsm/nodes/fog/FogExp2Node.js +2 -2
- package/examples/jsm/nodes/fog/FogNode.js +2 -2
- package/examples/jsm/nodes/fog/FogRangeNode.js +2 -2
- package/examples/jsm/nodes/geometry/RangeNode.js +2 -2
- package/examples/jsm/nodes/gpgpu/ComputeNode.js +1 -1
- package/examples/jsm/nodes/lighting/AONode.js +2 -2
- package/examples/jsm/nodes/lighting/AmbientLightNode.js +3 -3
- package/examples/jsm/nodes/lighting/AnalyticLightNode.js +4 -4
- package/examples/jsm/nodes/lighting/DirectionalLightNode.js +4 -4
- package/examples/jsm/nodes/lighting/EnvironmentNode.js +2 -2
- package/examples/jsm/nodes/lighting/HemisphereLightNode.js +3 -3
- package/examples/jsm/nodes/lighting/IESSpotLightNode.js +2 -2
- package/examples/jsm/nodes/lighting/LightNode.js +2 -2
- package/examples/jsm/nodes/lighting/LightingContextNode.js +3 -3
- package/examples/jsm/nodes/lighting/LightingNode.js +1 -1
- package/examples/jsm/nodes/lighting/LightsNode.js +4 -4
- package/examples/jsm/nodes/lighting/PointLightNode.js +3 -3
- package/examples/jsm/nodes/lighting/SpotLightNode.js +4 -4
- package/examples/jsm/nodes/materials/Line2NodeMaterial.js +449 -0
- package/examples/jsm/nodes/materials/LineBasicNodeMaterial.js +1 -1
- package/examples/jsm/nodes/materials/LineDashedNodeMaterial.js +54 -0
- package/examples/jsm/nodes/materials/Materials.js +2 -0
- package/examples/jsm/nodes/materials/MeshBasicNodeMaterial.js +1 -1
- package/examples/jsm/nodes/materials/MeshLambertNodeMaterial.js +2 -2
- package/examples/jsm/nodes/materials/MeshNormalNodeMaterial.js +2 -2
- package/examples/jsm/nodes/materials/MeshPhongNodeMaterial.js +3 -3
- package/examples/jsm/nodes/materials/MeshPhysicalNodeMaterial.js +6 -6
- package/examples/jsm/nodes/materials/MeshStandardNodeMaterial.js +3 -3
- package/examples/jsm/nodes/materials/NodeMaterial.js +39 -29
- package/examples/jsm/nodes/materials/PointsNodeMaterial.js +1 -1
- package/examples/jsm/nodes/materials/SpriteNodeMaterial.js +2 -2
- package/examples/jsm/nodes/math/CondNode.js +1 -1
- package/examples/jsm/nodes/math/HashNode.js +34 -0
- package/examples/jsm/nodes/math/MathNode.js +2 -2
- package/examples/jsm/nodes/math/OperatorNode.js +1 -1
- package/examples/jsm/nodes/procedural/CheckerNode.js +3 -3
- package/examples/jsm/nodes/shadernode/ShaderNode.js +85 -28
- package/examples/jsm/nodes/utils/ArrayElementNode.js +1 -1
- package/examples/jsm/nodes/utils/ConvertNode.js +1 -1
- package/examples/jsm/nodes/utils/DiscardNode.js +1 -1
- package/examples/jsm/nodes/utils/EquirectUVNode.js +2 -2
- package/examples/jsm/nodes/utils/JoinNode.js +1 -1
- package/examples/jsm/nodes/utils/LoopNode.js +11 -11
- package/examples/jsm/nodes/utils/MatcapUVNode.js +2 -2
- package/examples/jsm/nodes/utils/MaxMipLevelNode.js +1 -1
- package/examples/jsm/nodes/utils/OscNode.js +2 -2
- package/examples/jsm/nodes/utils/PackingNode.js +2 -2
- package/examples/jsm/nodes/utils/RemapNode.js +2 -2
- package/examples/jsm/nodes/utils/RotateUVNode.js +2 -2
- package/examples/jsm/nodes/utils/SetNode.js +62 -0
- package/examples/jsm/nodes/utils/SpecularMIPLevelNode.js +2 -2
- package/examples/jsm/nodes/utils/SplitNode.js +2 -2
- package/examples/jsm/nodes/utils/SpriteSheetUVNode.js +2 -2
- package/examples/jsm/nodes/utils/TimerNode.js +2 -2
- package/examples/jsm/nodes/utils/TriplanarTexturesNode.js +2 -2
- package/examples/jsm/objects/Sky.js +1 -3
- package/examples/jsm/postprocessing/FilmPass.js +3 -5
- package/examples/jsm/postprocessing/OutputPass.js +3 -2
- package/examples/jsm/postprocessing/RenderPass.js +30 -12
- package/examples/jsm/postprocessing/SAOPass.js +23 -98
- package/examples/jsm/postprocessing/SSAOPass.js +10 -30
- package/examples/jsm/renderers/common/Backend.js +11 -8
- package/examples/jsm/renderers/common/Background.js +2 -2
- package/examples/jsm/renderers/common/Binding.js +6 -0
- package/examples/jsm/renderers/common/Bindings.js +4 -5
- package/examples/jsm/renderers/common/Pipelines.js +9 -9
- package/examples/jsm/renderers/common/RenderContext.js +3 -0
- package/examples/jsm/renderers/common/RenderContexts.js +26 -1
- package/examples/jsm/renderers/common/RenderList.js +12 -4
- package/examples/jsm/renderers/common/RenderObject.js +43 -15
- package/examples/jsm/renderers/common/RenderObjects.js +8 -14
- package/examples/jsm/renderers/common/Renderer.js +52 -16
- package/examples/jsm/renderers/common/SampledTexture.js +6 -3
- package/examples/jsm/renderers/common/Sampler.js +1 -1
- package/examples/jsm/renderers/common/StorageBuffer.js +1 -1
- package/examples/jsm/renderers/common/StorageTexture.js +19 -0
- package/examples/jsm/renderers/common/Textures.js +166 -21
- package/examples/jsm/renderers/common/nodes/NodeBuilderState.js +35 -0
- package/examples/jsm/renderers/common/nodes/NodeSampledTexture.js +21 -11
- package/examples/jsm/renderers/common/nodes/NodeSampler.js +1 -7
- package/examples/jsm/renderers/common/nodes/Nodes.js +79 -18
- package/examples/jsm/renderers/webgl/WebGLBackend.js +702 -0
- package/examples/jsm/renderers/webgl/nodes/GLSLNodeBuilder.js +207 -20
- package/examples/jsm/renderers/webgl/utils/WebGLAttributeUtils.js +84 -0
- package/examples/jsm/renderers/webgl/utils/WebGLExtensions.js +26 -0
- package/examples/jsm/renderers/webgl/utils/WebGLState.js +529 -0
- package/examples/jsm/renderers/webgl/utils/WebGLTextureUtils.js +212 -0
- package/examples/jsm/renderers/webgl/utils/WebGLUtils.js +242 -0
- package/examples/jsm/renderers/webgl-legacy/nodes/GLSL1NodeBuilder.js +340 -0
- package/examples/jsm/renderers/{webgl → webgl-legacy}/nodes/WebGLNodeBuilder.js +4 -4
- package/examples/jsm/renderers/{webgl → webgl-legacy}/nodes/WebGLNodes.js +14 -2
- package/examples/jsm/renderers/webgpu/WebGPUBackend.js +282 -43
- package/examples/jsm/renderers/webgpu/WebGPURenderer.js +18 -2
- package/examples/jsm/renderers/webgpu/nodes/WGSLNodeBuilder.js +93 -60
- package/examples/jsm/renderers/webgpu/nodes/WGSLNodeFunction.js +2 -2
- package/examples/jsm/renderers/webgpu/utils/WebGPUBindingUtils.js +15 -2
- package/examples/jsm/renderers/webgpu/utils/WebGPUPipelineUtils.js +39 -14
- package/examples/jsm/renderers/webgpu/utils/WebGPUTexturePassUtils.js +285 -0
- package/examples/jsm/renderers/webgpu/utils/WebGPUTextureUtils.js +205 -284
- package/examples/jsm/renderers/webgpu/utils/WebGPUUtils.js +6 -5
- package/examples/jsm/shaders/FilmShader.js +11 -54
- package/examples/jsm/shaders/GammaCorrectionShader.js +1 -1
- package/examples/jsm/shaders/MMDToonShader.js +4 -4
- package/examples/jsm/shaders/OutputShader.js +2 -2
- package/examples/jsm/shaders/SAOShader.js +0 -13
- package/examples/jsm/shaders/SSAOShader.js +33 -26
- package/examples/jsm/shaders/SubsurfaceScatteringShader.js +6 -6
- package/examples/jsm/utils/BufferGeometryUtils.js +6 -4
- package/package.json +1 -1
- package/src/Three.js +1 -2
- package/src/animation/AnimationUtils.js +3 -20
- package/src/animation/KeyframeTrack.js +8 -8
- package/src/audio/Audio.js +6 -0
- package/src/cameras/Camera.js +1 -5
- package/src/cameras/CubeCamera.js +14 -8
- package/src/constants.js +10 -1
- package/src/core/Object3D.js +1 -14
- package/src/core/RenderTarget.js +16 -7
- package/src/core/UniformsGroup.js +2 -2
- package/src/extras/core/CurvePath.js +4 -1
- package/src/loaders/DataTextureLoader.js +0 -2
- package/src/loaders/MaterialLoader.js +1 -1
- package/src/loaders/ObjectLoader.js +6 -0
- package/src/materials/Material.js +10 -10
- package/src/math/Color.js +1 -5
- package/src/math/ColorManagement.js +82 -60
- package/src/math/Vector2.js +2 -2
- package/src/math/Vector3.js +3 -3
- package/src/math/Vector4.js +4 -4
- package/src/objects/Line.js +1 -1
- package/src/objects/Mesh.js +1 -1
- package/src/objects/Points.js +1 -1
- package/src/objects/Sprite.js +2 -2
- package/src/renderers/WebGLRenderer.js +42 -51
- package/src/renderers/shaders/ShaderChunk/aomap_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/clearcoat_normal_fragment_begin.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/colorspace_pars_fragment.glsl.js +35 -2
- package/src/renderers/shaders/ShaderChunk/common.glsl.js +0 -9
- package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +19 -15
- package/src/renderers/shaders/ShaderChunk/lights_fragment_end.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +4 -4
- package/src/renderers/shaders/ShaderChunk/lights_lambert_pars_fragment.glsl.js +3 -3
- package/src/renderers/shaders/ShaderChunk/lights_pars_begin.glsl.js +11 -6
- package/src/renderers/shaders/ShaderChunk/lights_phong_pars_fragment.glsl.js +4 -4
- package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +16 -16
- package/src/renderers/shaders/ShaderChunk/lights_toon_pars_fragment.glsl.js +3 -3
- package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +11 -1
- package/src/renderers/shaders/ShaderChunk/normal_fragment_begin.glsl.js +1 -1
- package/src/renderers/shaders/ShaderLib/background.glsl.js +8 -0
- package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +1 -1
- package/src/renderers/shaders/UniformsUtils.js +2 -2
- package/src/renderers/webgl/WebGLBackground.js +9 -17
- package/src/renderers/webgl/WebGLLights.js +14 -3
- package/src/renderers/webgl/WebGLProgram.js +36 -5
- package/src/renderers/webgl/WebGLPrograms.js +9 -1
- package/src/renderers/webgl/WebGLTextures.js +19 -8
- package/src/renderers/webgl/WebGLUtils.js +25 -20
- package/src/scenes/Fog.js +1 -0
- package/src/scenes/FogExp2.js +1 -0
- package/src/textures/Source.js +2 -2
- package/src/textures/Texture.js +2 -2
- package/src/utils.js +9 -1
- package/examples/jsm/renderers/webgpu/utils/WebGPUTextureMipmapUtils.js +0 -163
- package/src/lights/AmbientLightProbe.js +0 -21
- package/src/lights/HemisphereLightProbe.js +0 -30
- /package/examples/jsm/renderers/{webgl → webgl-legacy}/nodes/SlotNode.js +0 -0
|
@@ -1520,19 +1520,19 @@ class LDrawPartsGeometryCache {
|
|
|
1520
1520
|
const group = info.group;
|
|
1521
1521
|
if ( info.faces.length > 0 ) {
|
|
1522
1522
|
|
|
1523
|
-
group.add( createObject( info.faces, 3, false, info.totalFaces ) );
|
|
1523
|
+
group.add( createObject( this.loader, info.faces, 3, false, info.totalFaces ) );
|
|
1524
1524
|
|
|
1525
1525
|
}
|
|
1526
1526
|
|
|
1527
1527
|
if ( info.lineSegments.length > 0 ) {
|
|
1528
1528
|
|
|
1529
|
-
group.add( createObject( info.lineSegments, 2 ) );
|
|
1529
|
+
group.add( createObject( this.loader, info.lineSegments, 2 ) );
|
|
1530
1530
|
|
|
1531
1531
|
}
|
|
1532
1532
|
|
|
1533
1533
|
if ( info.conditionalSegments.length > 0 ) {
|
|
1534
1534
|
|
|
1535
|
-
group.add( createObject( info.conditionalSegments, 2, true ) );
|
|
1535
|
+
group.add( createObject( this.loader, info.conditionalSegments, 2, true ) );
|
|
1536
1536
|
|
|
1537
1537
|
}
|
|
1538
1538
|
|
|
@@ -1640,7 +1640,7 @@ function sortByMaterial( a, b ) {
|
|
|
1640
1640
|
|
|
1641
1641
|
}
|
|
1642
1642
|
|
|
1643
|
-
function createObject( elements, elementSize, isConditionalSegments = false, totalElements = null ) {
|
|
1643
|
+
function createObject( loader, elements, elementSize, isConditionalSegments = false, totalElements = null ) {
|
|
1644
1644
|
|
|
1645
1645
|
// Creates a LineSegments (elementSize = 2) or a Mesh (elementSize = 3 )
|
|
1646
1646
|
// With per face / segment material, implemented with mesh groups and materials array
|
|
@@ -1759,11 +1759,13 @@ function createObject( elements, elementSize, isConditionalSegments = false, tot
|
|
|
1759
1759
|
|
|
1760
1760
|
if ( isConditionalSegments ) {
|
|
1761
1761
|
|
|
1762
|
-
|
|
1762
|
+
const edgeMaterial = loader.edgeMaterialCache.get( material );
|
|
1763
|
+
|
|
1764
|
+
materials.push( loader.conditionalEdgeMaterialCache.get( edgeMaterial ) );
|
|
1763
1765
|
|
|
1764
1766
|
} else {
|
|
1765
1767
|
|
|
1766
|
-
materials.push(
|
|
1768
|
+
materials.push( loader.edgeMaterialCache.get( material ) );
|
|
1767
1769
|
|
|
1768
1770
|
}
|
|
1769
1771
|
|
|
@@ -1886,6 +1888,8 @@ class LDrawLoader extends Loader {
|
|
|
1886
1888
|
// Array of THREE.Material
|
|
1887
1889
|
this.materials = [];
|
|
1888
1890
|
this.materialLibrary = {};
|
|
1891
|
+
this.edgeMaterialCache = new WeakMap();
|
|
1892
|
+
this.conditionalEdgeMaterialCache = new WeakMap();
|
|
1889
1893
|
|
|
1890
1894
|
// This also allows to handle the embedded text files ("0 FILE" lines)
|
|
1891
1895
|
this.partsCache = new LDrawPartsGeometryCache( this );
|
|
@@ -1906,8 +1910,8 @@ class LDrawLoader extends Loader {
|
|
|
1906
1910
|
this.missingColorMaterial = new MeshStandardMaterial( { name: Loader.DEFAULT_MATERIAL_NAME, color: 0xFF00FF, roughness: 0.3, metalness: 0 } );
|
|
1907
1911
|
this.missingEdgeColorMaterial = new LineBasicMaterial( { name: Loader.DEFAULT_MATERIAL_NAME, color: 0xFF00FF } );
|
|
1908
1912
|
this.missingConditionalEdgeColorMaterial = new LDrawConditionalLineMaterial( { name: Loader.DEFAULT_MATERIAL_NAME, fog: true, color: 0xFF00FF } );
|
|
1909
|
-
this.
|
|
1910
|
-
this.
|
|
1913
|
+
this.edgeMaterialCache.set( this.missingColorMaterial, this.missingEdgeColorMaterial );
|
|
1914
|
+
this.conditionalEdgeMaterialCache.set( this.missingEdgeColorMaterial, this.missingConditionalEdgeColorMaterial );
|
|
1911
1915
|
|
|
1912
1916
|
}
|
|
1913
1917
|
|
|
@@ -2126,11 +2130,11 @@ class LDrawLoader extends Loader {
|
|
|
2126
2130
|
|
|
2127
2131
|
if ( c.isLineSegments ) {
|
|
2128
2132
|
|
|
2129
|
-
material =
|
|
2133
|
+
material = loader.edgeMaterialCache.get( material );
|
|
2130
2134
|
|
|
2131
2135
|
if ( c.isConditionalLine ) {
|
|
2132
2136
|
|
|
2133
|
-
material =
|
|
2137
|
+
material = loader.conditionalEdgeMaterialCache.get( material );
|
|
2134
2138
|
|
|
2135
2139
|
}
|
|
2136
2140
|
|
|
@@ -2151,7 +2155,7 @@ class LDrawLoader extends Loader {
|
|
|
2151
2155
|
getMainEdgeMaterial() {
|
|
2152
2156
|
|
|
2153
2157
|
const mat = this.getMaterial( MAIN_EDGE_COLOUR_CODE );
|
|
2154
|
-
return mat ?
|
|
2158
|
+
return mat ? this.edgeMaterialCache.get( mat ) : null;
|
|
2155
2159
|
|
|
2156
2160
|
}
|
|
2157
2161
|
|
|
@@ -2236,7 +2240,7 @@ class LDrawLoader extends Loader {
|
|
|
2236
2240
|
}
|
|
2237
2241
|
|
|
2238
2242
|
// Get the edge material for this triangle material
|
|
2239
|
-
edgeMaterial =
|
|
2243
|
+
edgeMaterial = this.edgeMaterialCache.get( edgeMaterial );
|
|
2240
2244
|
|
|
2241
2245
|
}
|
|
2242
2246
|
|
|
@@ -2380,7 +2384,7 @@ class LDrawLoader extends Loader {
|
|
|
2380
2384
|
edgeMaterial.name = name + ' - Edge';
|
|
2381
2385
|
|
|
2382
2386
|
// This is the material used for conditional edges
|
|
2383
|
-
|
|
2387
|
+
const conditionalEdgeMaterial = new LDrawConditionalLineMaterial( {
|
|
2384
2388
|
|
|
2385
2389
|
fog: true,
|
|
2386
2390
|
transparent: isTransparent,
|
|
@@ -2389,15 +2393,17 @@ class LDrawLoader extends Loader {
|
|
|
2389
2393
|
opacity: alpha,
|
|
2390
2394
|
|
|
2391
2395
|
} );
|
|
2392
|
-
|
|
2393
|
-
|
|
2396
|
+
conditionalEdgeMaterial.userData.code = code;
|
|
2397
|
+
conditionalEdgeMaterial.name = name + ' - Conditional Edge';
|
|
2398
|
+
|
|
2399
|
+
this.conditionalEdgeMaterialCache.set( edgeMaterial, conditionalEdgeMaterial );
|
|
2394
2400
|
|
|
2395
2401
|
}
|
|
2396
2402
|
|
|
2397
2403
|
material.userData.code = code;
|
|
2398
2404
|
material.name = name;
|
|
2399
2405
|
|
|
2400
|
-
|
|
2406
|
+
this.edgeMaterialCache.set( material, edgeMaterial );
|
|
2401
2407
|
|
|
2402
2408
|
this.addMaterial( material );
|
|
2403
2409
|
|
|
@@ -393,7 +393,7 @@ UTIF.toRGBA = function ( out, type ) {
|
|
|
393
393
|
break;
|
|
394
394
|
|
|
395
395
|
default:
|
|
396
|
-
|
|
396
|
+
throw new Error( 'THREE.LogLuvLoader: Unsupported texture data type: ' + type );
|
|
397
397
|
|
|
398
398
|
}
|
|
399
399
|
|
|
@@ -451,7 +451,7 @@ UTIF.toRGBA = function ( out, type ) {
|
|
|
451
451
|
|
|
452
452
|
} else {
|
|
453
453
|
|
|
454
|
-
|
|
454
|
+
throw new Error( 'THREE.LogLuvLoader: Unsupported Photometric interpretation: ' + intp );
|
|
455
455
|
|
|
456
456
|
}
|
|
457
457
|
|
|
@@ -27,6 +27,7 @@ import {
|
|
|
27
27
|
Skeleton,
|
|
28
28
|
SkinnedMesh,
|
|
29
29
|
SrcAlphaFactor,
|
|
30
|
+
SRGBColorSpace,
|
|
30
31
|
TextureLoader,
|
|
31
32
|
Uint16BufferAttribute,
|
|
32
33
|
Vector3,
|
|
@@ -1133,17 +1134,18 @@ class MaterialBuilder {
|
|
|
1133
1134
|
* MMDToonMaterial doesn't have ambient. Set it to emissive instead.
|
|
1134
1135
|
* It'll be too bright if material has map texture so using coef 0.2.
|
|
1135
1136
|
*/
|
|
1136
|
-
params.diffuse = new Color().
|
|
1137
|
+
params.diffuse = new Color().setRGB(
|
|
1138
|
+
material.diffuse[ 0 ],
|
|
1139
|
+
material.diffuse[ 1 ],
|
|
1140
|
+
material.diffuse[ 2 ],
|
|
1141
|
+
SRGBColorSpace
|
|
1142
|
+
);
|
|
1137
1143
|
params.opacity = material.diffuse[ 3 ];
|
|
1138
|
-
params.specular = new Color().
|
|
1144
|
+
params.specular = new Color().setRGB( ...material.specular, SRGBColorSpace );
|
|
1139
1145
|
params.shininess = material.shininess;
|
|
1140
|
-
params.emissive = new Color().
|
|
1146
|
+
params.emissive = new Color().setRGB( ...material.ambient, SRGBColorSpace );
|
|
1141
1147
|
params.transparent = params.opacity !== 1.0;
|
|
1142
1148
|
|
|
1143
|
-
params.diffuse.convertSRGBToLinear();
|
|
1144
|
-
params.specular.convertSRGBToLinear();
|
|
1145
|
-
params.emissive.convertSRGBToLinear();
|
|
1146
|
-
|
|
1147
1149
|
//
|
|
1148
1150
|
|
|
1149
1151
|
params.fog = true;
|
|
@@ -1452,6 +1454,7 @@ class MaterialBuilder {
|
|
|
1452
1454
|
t.flipY = false;
|
|
1453
1455
|
t.wrapS = RepeatWrapping;
|
|
1454
1456
|
t.wrapT = RepeatWrapping;
|
|
1457
|
+
t.colorSpace = SRGBColorSpace;
|
|
1455
1458
|
|
|
1456
1459
|
for ( let i = 0; i < texture.readyCallbacks.length; i ++ ) {
|
|
1457
1460
|
|
|
@@ -25,10 +25,6 @@ class RGBELoader extends DataTextureLoader {
|
|
|
25
25
|
parse( buffer ) {
|
|
26
26
|
|
|
27
27
|
const
|
|
28
|
-
/* return codes for rgbe routines */
|
|
29
|
-
//RGBE_RETURN_SUCCESS = 0,
|
|
30
|
-
RGBE_RETURN_FAILURE = - 1,
|
|
31
|
-
|
|
32
28
|
/* default error routine. change this to change error handling */
|
|
33
29
|
rgbe_read_error = 1,
|
|
34
30
|
rgbe_write_error = 2,
|
|
@@ -38,19 +34,14 @@ class RGBELoader extends DataTextureLoader {
|
|
|
38
34
|
|
|
39
35
|
switch ( rgbe_error_code ) {
|
|
40
36
|
|
|
41
|
-
case rgbe_read_error:
|
|
42
|
-
|
|
43
|
-
case
|
|
44
|
-
break;
|
|
45
|
-
case rgbe_format_error: console.error( 'THREE.RGBELoader Bad File Format: ' + ( msg || '' ) );
|
|
46
|
-
break;
|
|
37
|
+
case rgbe_read_error: throw new Error( 'THREE.RGBELoader: Read Error: ' + ( msg || '' ) );
|
|
38
|
+
case rgbe_write_error: throw new Error( 'THREE.RGBELoader: Write Error: ' + ( msg || '' ) );
|
|
39
|
+
case rgbe_format_error: throw new Error( 'THREE.RGBELoader: Bad File Format: ' + ( msg || '' ) );
|
|
47
40
|
default:
|
|
48
|
-
case rgbe_memory_error:
|
|
41
|
+
case rgbe_memory_error: throw new Error( 'THREE.RGBELoader: Memory Error: ' + ( msg || '' ) );
|
|
49
42
|
|
|
50
43
|
}
|
|
51
44
|
|
|
52
|
-
return RGBE_RETURN_FAILURE;
|
|
53
|
-
|
|
54
45
|
},
|
|
55
46
|
|
|
56
47
|
/* offsets to red, green, and blue components in a data (float) pixel */
|
|
@@ -138,14 +129,14 @@ class RGBELoader extends DataTextureLoader {
|
|
|
138
129
|
|
|
139
130
|
if ( buffer.pos >= buffer.byteLength || ! ( line = fgets( buffer ) ) ) {
|
|
140
131
|
|
|
141
|
-
|
|
132
|
+
rgbe_error( rgbe_read_error, 'no header found' );
|
|
142
133
|
|
|
143
134
|
}
|
|
144
135
|
|
|
145
136
|
/* if you want to require the magic token then uncomment the next line */
|
|
146
137
|
if ( ! ( match = line.match( magic_token_re ) ) ) {
|
|
147
138
|
|
|
148
|
-
|
|
139
|
+
rgbe_error( rgbe_format_error, 'bad initial token' );
|
|
149
140
|
|
|
150
141
|
}
|
|
151
142
|
|
|
@@ -199,13 +190,13 @@ class RGBELoader extends DataTextureLoader {
|
|
|
199
190
|
|
|
200
191
|
if ( ! ( header.valid & RGBE_VALID_FORMAT ) ) {
|
|
201
192
|
|
|
202
|
-
|
|
193
|
+
rgbe_error( rgbe_format_error, 'missing format specifier' );
|
|
203
194
|
|
|
204
195
|
}
|
|
205
196
|
|
|
206
197
|
if ( ! ( header.valid & RGBE_VALID_DIMENSIONS ) ) {
|
|
207
198
|
|
|
208
|
-
|
|
199
|
+
rgbe_error( rgbe_format_error, 'missing image size specifier' );
|
|
209
200
|
|
|
210
201
|
}
|
|
211
202
|
|
|
@@ -231,7 +222,7 @@ class RGBELoader extends DataTextureLoader {
|
|
|
231
222
|
|
|
232
223
|
if ( scanline_width !== ( ( buffer[ 2 ] << 8 ) | buffer[ 3 ] ) ) {
|
|
233
224
|
|
|
234
|
-
|
|
225
|
+
rgbe_error( rgbe_format_error, 'wrong scanline width' );
|
|
235
226
|
|
|
236
227
|
}
|
|
237
228
|
|
|
@@ -239,7 +230,7 @@ class RGBELoader extends DataTextureLoader {
|
|
|
239
230
|
|
|
240
231
|
if ( ! data_rgba.length ) {
|
|
241
232
|
|
|
242
|
-
|
|
233
|
+
rgbe_error( rgbe_memory_error, 'unable to allocate buffer space' );
|
|
243
234
|
|
|
244
235
|
}
|
|
245
236
|
|
|
@@ -255,7 +246,7 @@ class RGBELoader extends DataTextureLoader {
|
|
|
255
246
|
|
|
256
247
|
if ( pos + 4 > buffer.byteLength ) {
|
|
257
248
|
|
|
258
|
-
|
|
249
|
+
rgbe_error( rgbe_read_error );
|
|
259
250
|
|
|
260
251
|
}
|
|
261
252
|
|
|
@@ -266,7 +257,7 @@ class RGBELoader extends DataTextureLoader {
|
|
|
266
257
|
|
|
267
258
|
if ( ( 2 != rgbeStart[ 0 ] ) || ( 2 != rgbeStart[ 1 ] ) || ( ( ( rgbeStart[ 2 ] << 8 ) | rgbeStart[ 3 ] ) != scanline_width ) ) {
|
|
268
259
|
|
|
269
|
-
|
|
260
|
+
rgbe_error( rgbe_format_error, 'bad rgbe scanline format' );
|
|
270
261
|
|
|
271
262
|
}
|
|
272
263
|
|
|
@@ -282,7 +273,7 @@ class RGBELoader extends DataTextureLoader {
|
|
|
282
273
|
|
|
283
274
|
if ( ( 0 === count ) || ( ptr + count > ptr_end ) ) {
|
|
284
275
|
|
|
285
|
-
|
|
276
|
+
rgbe_error( rgbe_format_error, 'bad scanline data' );
|
|
286
277
|
|
|
287
278
|
}
|
|
288
279
|
|
|
@@ -362,70 +353,61 @@ class RGBELoader extends DataTextureLoader {
|
|
|
362
353
|
byteArray.pos = 0;
|
|
363
354
|
const rgbe_header_info = RGBE_ReadHeader( byteArray );
|
|
364
355
|
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
h = rgbe_header_info.height,
|
|
369
|
-
image_rgba_data = RGBE_ReadPixels_RLE( byteArray.subarray( byteArray.pos ), w, h );
|
|
370
|
-
|
|
371
|
-
if ( RGBE_RETURN_FAILURE !== image_rgba_data ) {
|
|
372
|
-
|
|
373
|
-
let data, type;
|
|
374
|
-
let numElements;
|
|
375
|
-
|
|
376
|
-
switch ( this.type ) {
|
|
377
|
-
|
|
378
|
-
case FloatType:
|
|
356
|
+
const w = rgbe_header_info.width,
|
|
357
|
+
h = rgbe_header_info.height,
|
|
358
|
+
image_rgba_data = RGBE_ReadPixels_RLE( byteArray.subarray( byteArray.pos ), w, h );
|
|
379
359
|
|
|
380
|
-
numElements = image_rgba_data.length / 4;
|
|
381
|
-
const floatArray = new Float32Array( numElements * 4 );
|
|
382
360
|
|
|
383
|
-
|
|
361
|
+
let data, type;
|
|
362
|
+
let numElements;
|
|
384
363
|
|
|
385
|
-
|
|
364
|
+
switch ( this.type ) {
|
|
386
365
|
|
|
387
|
-
|
|
366
|
+
case FloatType:
|
|
388
367
|
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
break;
|
|
368
|
+
numElements = image_rgba_data.length / 4;
|
|
369
|
+
const floatArray = new Float32Array( numElements * 4 );
|
|
392
370
|
|
|
393
|
-
|
|
371
|
+
for ( let j = 0; j < numElements; j ++ ) {
|
|
394
372
|
|
|
395
|
-
|
|
396
|
-
const halfArray = new Uint16Array( numElements * 4 );
|
|
373
|
+
RGBEByteToRGBFloat( image_rgba_data, j * 4, floatArray, j * 4 );
|
|
397
374
|
|
|
398
|
-
|
|
375
|
+
}
|
|
399
376
|
|
|
400
|
-
|
|
377
|
+
data = floatArray;
|
|
378
|
+
type = FloatType;
|
|
379
|
+
break;
|
|
401
380
|
|
|
402
|
-
|
|
381
|
+
case HalfFloatType:
|
|
403
382
|
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
break;
|
|
383
|
+
numElements = image_rgba_data.length / 4;
|
|
384
|
+
const halfArray = new Uint16Array( numElements * 4 );
|
|
407
385
|
|
|
408
|
-
|
|
386
|
+
for ( let j = 0; j < numElements; j ++ ) {
|
|
409
387
|
|
|
410
|
-
|
|
411
|
-
break;
|
|
388
|
+
RGBEByteToRGBHalf( image_rgba_data, j * 4, halfArray, j * 4 );
|
|
412
389
|
|
|
413
390
|
}
|
|
414
391
|
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
header: rgbe_header_info.string,
|
|
419
|
-
gamma: rgbe_header_info.gamma,
|
|
420
|
-
exposure: rgbe_header_info.exposure,
|
|
421
|
-
type: type
|
|
422
|
-
};
|
|
392
|
+
data = halfArray;
|
|
393
|
+
type = HalfFloatType;
|
|
394
|
+
break;
|
|
423
395
|
|
|
424
|
-
|
|
396
|
+
default:
|
|
397
|
+
|
|
398
|
+
throw new Error( 'THREE.RGBELoader: Unsupported type: ' + this.type );
|
|
399
|
+
break;
|
|
425
400
|
|
|
426
401
|
}
|
|
427
402
|
|
|
428
|
-
return
|
|
403
|
+
return {
|
|
404
|
+
width: w, height: h,
|
|
405
|
+
data: data,
|
|
406
|
+
header: rgbe_header_info.string,
|
|
407
|
+
gamma: rgbe_header_info.gamma,
|
|
408
|
+
exposure: rgbe_header_info.exposure,
|
|
409
|
+
type: type
|
|
410
|
+
};
|
|
429
411
|
|
|
430
412
|
}
|
|
431
413
|
|
|
@@ -274,6 +274,7 @@ class STLLoader extends Loader {
|
|
|
274
274
|
const geometry = new BufferGeometry();
|
|
275
275
|
const patternSolid = /solid([\s\S]*?)endsolid/g;
|
|
276
276
|
const patternFace = /facet([\s\S]*?)endfacet/g;
|
|
277
|
+
const patternName = /solid\s(.+)/;
|
|
277
278
|
let faceCounter = 0;
|
|
278
279
|
|
|
279
280
|
const patternFloat = /[\s]+([+-]?(?:\d*)(?:\.\d*)?(?:[eE][+-]?\d+)?)/.source;
|
|
@@ -282,6 +283,7 @@ class STLLoader extends Loader {
|
|
|
282
283
|
|
|
283
284
|
const vertices = [];
|
|
284
285
|
const normals = [];
|
|
286
|
+
const groupNames = [];
|
|
285
287
|
|
|
286
288
|
const normal = new Vector3();
|
|
287
289
|
|
|
@@ -297,6 +299,9 @@ class STLLoader extends Loader {
|
|
|
297
299
|
|
|
298
300
|
const solid = result[ 0 ];
|
|
299
301
|
|
|
302
|
+
const name = ( result = patternName.exec( solid ) ) !== null ? result[ 1 ] : '';
|
|
303
|
+
groupNames.push( name );
|
|
304
|
+
|
|
300
305
|
while ( ( result = patternFace.exec( solid ) ) !== null ) {
|
|
301
306
|
|
|
302
307
|
let vertexCountPerFace = 0;
|
|
@@ -345,6 +350,8 @@ class STLLoader extends Loader {
|
|
|
345
350
|
const start = startVertex;
|
|
346
351
|
const count = endVertex - startVertex;
|
|
347
352
|
|
|
353
|
+
geometry.userData.groupNames = groupNames;
|
|
354
|
+
|
|
348
355
|
geometry.addGroup( start, count, groupCount );
|
|
349
356
|
groupCount ++;
|
|
350
357
|
|