super-three 0.157.1 → 0.160.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -4
- package/build/three.cjs +3100 -1537
- package/build/three.js +3100 -1537
- package/build/three.min.js +1 -1
- package/build/three.module.js +3093 -1538
- package/build/three.module.min.js +1 -1
- package/examples/jsm/Addons.js +291 -0
- package/examples/jsm/controls/FlyControls.js +26 -0
- package/examples/jsm/controls/OrbitControls.js +62 -41
- package/examples/jsm/controls/TransformControls.js +27 -11
- package/examples/jsm/csm/CSMShader.js +53 -48
- package/examples/jsm/exporters/GLTFExporter.js +151 -3
- package/examples/jsm/exporters/USDZExporter.js +27 -19
- package/examples/jsm/geometries/InstancedPointsGeometry.js +174 -0
- package/examples/jsm/geometries/SDFGeometryGenerator.js +144 -0
- package/examples/jsm/helpers/TextureHelper.js +237 -0
- package/examples/jsm/interactive/HTMLMesh.js +9 -2
- package/examples/jsm/libs/lottie_canvas.module.js +6 -1
- package/examples/jsm/libs/opentype.module.js +13 -75
- package/examples/jsm/libs/surfaceNet.js +201 -0
- package/examples/jsm/lines/LineMaterial.js +16 -33
- package/examples/jsm/loaders/ColladaLoader.js +0 -6
- package/examples/jsm/loaders/DRACOLoader.js +4 -3
- package/examples/jsm/loaders/FBXLoader.js +294 -124
- package/examples/jsm/loaders/GLTFLoader.js +83 -6
- package/examples/jsm/loaders/LUTImageLoader.js +162 -0
- package/examples/jsm/loaders/MaterialXLoader.js +73 -54
- package/examples/jsm/loaders/NRRDLoader.js +0 -13
- package/examples/jsm/loaders/SVGLoader.js +4 -4
- package/examples/jsm/loaders/USDZLoader.js +3 -17
- package/examples/jsm/loaders/lwo/IFFParser.js +89 -93
- package/examples/jsm/materials/MeshGouraudMaterial.js +2 -0
- package/examples/jsm/math/Capsule.js +0 -55
- package/examples/jsm/math/Octree.js +85 -7
- package/examples/jsm/misc/Timer.js +119 -0
- package/examples/jsm/misc/TubePainter.js +3 -6
- package/examples/jsm/modifiers/CurveModifier.js +20 -2
- package/examples/jsm/modifiers/SimplifyModifier.js +103 -11
- package/examples/jsm/modifiers/TessellateModifier.js +3 -3
- package/examples/jsm/nodes/Nodes.js +16 -12
- package/examples/jsm/nodes/accessors/CameraNode.js +18 -2
- package/examples/jsm/nodes/accessors/CubeTextureNode.js +5 -73
- package/examples/jsm/nodes/accessors/InstanceNode.js +3 -3
- package/examples/jsm/nodes/accessors/InstancedPointsMaterialNode.js +21 -0
- package/examples/jsm/nodes/accessors/MaterialNode.js +68 -31
- package/examples/jsm/nodes/accessors/MaterialReferenceNode.js +11 -2
- package/examples/jsm/nodes/accessors/ModelNode.js +1 -2
- package/examples/jsm/nodes/accessors/ModelViewProjectionNode.js +12 -3
- package/examples/jsm/nodes/accessors/MorphNode.js +191 -16
- package/examples/jsm/nodes/accessors/NormalNode.js +1 -1
- package/examples/jsm/nodes/accessors/PositionNode.js +1 -1
- package/examples/jsm/nodes/accessors/ReferenceNode.js +25 -1
- package/examples/jsm/nodes/accessors/SkinningNode.js +13 -3
- package/examples/jsm/nodes/accessors/TextureNode.js +123 -37
- package/examples/jsm/nodes/code/CodeNode.js +3 -3
- package/examples/jsm/nodes/code/FunctionNode.js +1 -1
- package/examples/jsm/nodes/core/AssignNode.js +72 -0
- package/examples/jsm/nodes/core/AttributeNode.js +7 -1
- package/examples/jsm/nodes/core/CacheNode.js +4 -1
- package/examples/jsm/nodes/core/ConstNode.js +1 -1
- package/examples/jsm/nodes/core/LightingModel.js +3 -1
- package/examples/jsm/nodes/core/Node.js +13 -15
- package/examples/jsm/nodes/core/NodeBuilder.js +209 -42
- package/examples/jsm/nodes/core/NodeFrame.js +10 -8
- package/examples/jsm/nodes/core/NodeUniform.js +12 -0
- package/examples/jsm/nodes/core/NodeUtils.js +7 -9
- package/examples/jsm/nodes/core/OutputStructNode.js +4 -4
- package/examples/jsm/nodes/core/ParameterNode.js +33 -0
- package/examples/jsm/nodes/core/PropertyNode.js +15 -6
- package/examples/jsm/nodes/core/StackNode.js +7 -17
- package/examples/jsm/nodes/core/StructTypeNode.js +4 -4
- package/examples/jsm/nodes/core/TempNode.js +1 -1
- package/examples/jsm/nodes/core/UniformGroup.js +13 -0
- package/examples/jsm/nodes/core/UniformGroupNode.js +36 -0
- package/examples/jsm/nodes/core/UniformNode.js +17 -0
- package/examples/jsm/nodes/core/VarNode.js +7 -34
- package/examples/jsm/nodes/core/VaryingNode.js +3 -7
- package/examples/jsm/nodes/display/BumpMapNode.js +35 -13
- package/examples/jsm/nodes/display/ColorAdjustmentNode.js +6 -10
- package/examples/jsm/nodes/display/GaussianBlurNode.js +170 -0
- package/examples/jsm/nodes/display/NormalMapNode.js +3 -1
- package/examples/jsm/nodes/display/PassNode.js +182 -0
- package/examples/jsm/nodes/display/ViewportDepthNode.js +31 -3
- package/examples/jsm/nodes/display/ViewportDepthTextureNode.js +2 -2
- package/examples/jsm/nodes/display/ViewportNode.js +17 -10
- package/examples/jsm/nodes/functions/BSDF/BRDF_Sheen.js +20 -6
- package/examples/jsm/nodes/functions/BSDF/DFGApprox.js +8 -7
- package/examples/jsm/nodes/functions/BSDF/D_GGX.js +8 -3
- package/examples/jsm/nodes/functions/BSDF/Schlick_to_F0.js +8 -0
- package/examples/jsm/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +8 -0
- package/examples/jsm/nodes/functions/PhysicalLightingModel.js +93 -43
- package/examples/jsm/nodes/gpgpu/ComputeNode.js +2 -2
- package/examples/jsm/nodes/lighting/AmbientLightNode.js +1 -1
- package/examples/jsm/nodes/lighting/AnalyticLightNode.js +55 -6
- package/examples/jsm/nodes/lighting/DirectionalLightNode.js +1 -1
- package/examples/jsm/nodes/lighting/EnvironmentNode.js +8 -18
- package/examples/jsm/nodes/lighting/LightingContextNode.js +21 -57
- package/examples/jsm/nodes/lighting/LightsNode.js +80 -20
- package/examples/jsm/nodes/lighting/PointLightNode.js +1 -1
- package/examples/jsm/nodes/lighting/SpotLightNode.js +1 -1
- package/examples/jsm/nodes/materials/InstancedPointsNodeMaterial.js +162 -0
- package/examples/jsm/nodes/materials/Line2NodeMaterial.js +76 -77
- package/examples/jsm/nodes/materials/LineDashedNodeMaterial.js +5 -5
- package/examples/jsm/nodes/materials/Materials.js +1 -0
- package/examples/jsm/nodes/materials/MeshBasicNodeMaterial.js +1 -0
- package/examples/jsm/nodes/materials/MeshNormalNodeMaterial.js +3 -3
- package/examples/jsm/nodes/materials/MeshPhongNodeMaterial.js +3 -3
- package/examples/jsm/nodes/materials/MeshPhysicalNodeMaterial.js +47 -20
- package/examples/jsm/nodes/materials/MeshStandardNodeMaterial.js +6 -6
- package/examples/jsm/nodes/materials/NodeMaterial.js +82 -60
- package/examples/jsm/nodes/materials/PointsNodeMaterial.js +0 -10
- package/examples/jsm/nodes/materials/SpriteNodeMaterial.js +0 -7
- package/examples/jsm/nodes/materialx/MaterialXNodes.js +10 -10
- package/examples/jsm/nodes/materialx/lib/mx_hsv.js +128 -54
- package/examples/jsm/nodes/materialx/lib/mx_noise.js +1430 -618
- package/examples/jsm/nodes/materialx/lib/mx_transform_color.js +24 -14
- package/examples/jsm/nodes/math/MathNode.js +2 -0
- package/examples/jsm/nodes/math/OperatorNode.js +24 -27
- package/examples/jsm/nodes/shadernode/ShaderNode.js +158 -10
- package/examples/jsm/nodes/utils/ArrayElementNode.js +2 -0
- package/examples/jsm/nodes/utils/DiscardNode.js +3 -2
- package/examples/jsm/nodes/utils/FunctionOverloadingNode.js +95 -0
- package/examples/jsm/nodes/utils/JoinNode.js +11 -1
- package/examples/jsm/nodes/utils/LoopNode.js +36 -24
- package/examples/jsm/nodes/utils/RemapNode.js +2 -2
- package/examples/jsm/nodes/utils/SplitNode.js +10 -2
- package/examples/jsm/nodes/utils/TriplanarTexturesNode.js +3 -3
- package/examples/jsm/objects/InstancedPoints.js +21 -0
- package/examples/jsm/objects/Lensflare.js +20 -0
- package/examples/jsm/objects/QuadMesh.js +60 -0
- package/examples/jsm/objects/ReflectorForSSRPass.js +3 -0
- package/examples/jsm/objects/Refractor.js +3 -0
- package/examples/jsm/objects/Sky.js +5 -3
- package/examples/jsm/objects/Water.js +5 -2
- package/examples/jsm/objects/Water2.js +3 -0
- package/examples/jsm/physics/AmmoPhysics.js +21 -0
- package/examples/jsm/physics/RapierPhysics.js +21 -0
- package/examples/jsm/postprocessing/BokehPass.js +3 -2
- package/examples/jsm/postprocessing/GTAOPass.js +572 -0
- package/examples/jsm/postprocessing/LUTPass.js +2 -1
- package/examples/jsm/postprocessing/OutputPass.js +3 -0
- package/examples/jsm/postprocessing/Pass.js +14 -3
- package/examples/jsm/postprocessing/SAOPass.js +0 -1
- package/examples/jsm/postprocessing/SMAAPass.js +0 -2
- package/examples/jsm/postprocessing/TAARenderPass.js +1 -2
- package/examples/jsm/renderers/CSS3DRenderer.js +3 -9
- package/examples/jsm/renderers/SVGRenderer.js +9 -6
- package/examples/jsm/renderers/common/Animation.js +10 -21
- package/examples/jsm/renderers/common/Backend.js +19 -3
- package/examples/jsm/renderers/common/Background.js +20 -22
- package/examples/jsm/renderers/common/Bindings.js +31 -22
- package/examples/jsm/renderers/common/ChainMap.js +3 -3
- package/examples/jsm/renderers/common/Color4.js +37 -0
- package/examples/jsm/renderers/common/Geometries.js +4 -4
- package/examples/jsm/renderers/common/Info.js +12 -2
- package/examples/jsm/renderers/common/Pipelines.js +3 -51
- package/examples/jsm/renderers/common/PostProcessing.js +25 -0
- package/examples/jsm/renderers/common/RenderContext.js +1 -1
- package/examples/jsm/renderers/common/RenderContexts.js +1 -1
- package/examples/jsm/renderers/common/RenderObject.js +21 -2
- package/examples/jsm/renderers/common/RenderObjects.js +5 -3
- package/examples/jsm/renderers/common/Renderer.js +137 -37
- package/examples/jsm/renderers/common/StorageTexture.js +1 -0
- package/examples/jsm/renderers/common/Textures.js +8 -37
- package/examples/jsm/renderers/common/nodes/NodeBuilderState.js +10 -2
- package/examples/jsm/renderers/common/nodes/NodeUniformsGroup.js +44 -0
- package/examples/jsm/renderers/common/nodes/Nodes.js +121 -19
- package/examples/jsm/renderers/webgl/WebGLBackend.js +366 -67
- package/examples/jsm/renderers/webgl/nodes/GLSLNodeBuilder.js +183 -38
- package/examples/jsm/renderers/webgl/utils/WebGLAttributeUtils.js +92 -5
- package/examples/jsm/renderers/webgl/utils/WebGLCapabilities.js +36 -0
- package/examples/jsm/renderers/webgl/utils/WebGLExtensions.js +11 -1
- package/examples/jsm/renderers/webgl/utils/WebGLState.js +14 -2
- package/examples/jsm/renderers/webgl/utils/WebGLTextureUtils.js +71 -2
- package/examples/jsm/renderers/webgl/utils/WebGLUtils.js +42 -0
- package/examples/jsm/renderers/webgl-legacy/nodes/SlotNode.js +1 -1
- package/examples/jsm/renderers/webgl-legacy/nodes/WebGLNodeBuilder.js +33 -3
- package/examples/jsm/renderers/webgl-legacy/nodes/WebGLNodes.js +4 -14
- package/examples/jsm/renderers/webgpu/WebGPUBackend.js +188 -137
- package/examples/jsm/renderers/webgpu/WebGPURenderer.js +1 -1
- package/examples/jsm/renderers/webgpu/nodes/WGSLNodeBuilder.js +241 -90
- package/examples/jsm/renderers/webgpu/utils/WebGPUAttributeUtils.js +15 -10
- package/examples/jsm/renderers/webgpu/utils/WebGPUBindingUtils.js +11 -3
- package/examples/jsm/renderers/webgpu/utils/WebGPUPipelineUtils.js +2 -3
- package/examples/jsm/renderers/webgpu/utils/WebGPUTextureUtils.js +88 -6
- package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +2 -0
- package/examples/jsm/shaders/AfterimageShader.js +2 -0
- package/examples/jsm/shaders/BasicShader.js +2 -0
- package/examples/jsm/shaders/BlendShader.js +2 -0
- package/examples/jsm/shaders/BokehShader.js +2 -0
- package/examples/jsm/shaders/BokehShader2.js +4 -0
- package/examples/jsm/shaders/BrightnessContrastShader.js +2 -0
- package/examples/jsm/shaders/ColorCorrectionShader.js +2 -0
- package/examples/jsm/shaders/DOFMipMapShader.js +2 -0
- package/examples/jsm/shaders/DepthLimitedBlurShader.js +5 -0
- package/examples/jsm/shaders/FXAAShader.js +135 -133
- package/examples/jsm/shaders/FilmShader.js +1 -1
- package/examples/jsm/shaders/FocusShader.js +2 -0
- package/examples/jsm/shaders/FreiChenShader.js +2 -0
- package/examples/jsm/shaders/GTAOShader.js +424 -0
- package/examples/jsm/shaders/GodRaysShader.js +8 -0
- package/examples/jsm/shaders/HalftoneShader.js +2 -0
- package/examples/jsm/shaders/HorizontalTiltShiftShader.js +2 -0
- package/examples/jsm/shaders/HueSaturationShader.js +2 -0
- package/examples/jsm/shaders/KaleidoShader.js +2 -0
- package/examples/jsm/shaders/LuminosityHighPassShader.js +2 -0
- package/examples/jsm/shaders/LuminosityShader.js +2 -0
- package/examples/jsm/shaders/MMDToonShader.js +2 -0
- package/examples/jsm/shaders/MirrorShader.js +2 -0
- package/examples/jsm/shaders/NormalMapShader.js +2 -0
- package/examples/jsm/shaders/OutputShader.js +8 -5
- package/examples/jsm/shaders/PoissonDenoiseShader.js +226 -0
- package/examples/jsm/shaders/SAOShader.js +7 -3
- package/examples/jsm/shaders/SMAAShader.js +6 -0
- package/examples/jsm/shaders/SSAOShader.js +8 -3
- package/examples/jsm/shaders/SSRShader.js +6 -0
- package/examples/jsm/shaders/SobelOperatorShader.js +2 -0
- package/examples/jsm/shaders/SubsurfaceScatteringShader.js +2 -0
- package/examples/jsm/shaders/TechnicolorShader.js +2 -0
- package/examples/jsm/shaders/TriangleBlurShader.js +2 -0
- package/examples/jsm/shaders/UnpackDepthRGBAShader.js +2 -0
- package/examples/jsm/shaders/VelocityShader.js +2 -0
- package/examples/jsm/shaders/VerticalTiltShiftShader.js +2 -0
- package/examples/jsm/shaders/WaterRefractionShader.js +2 -0
- package/examples/jsm/transpiler/AST.js +270 -0
- package/examples/jsm/transpiler/GLSLDecoder.js +941 -0
- package/examples/jsm/transpiler/ShaderToyDecoder.js +49 -0
- package/examples/jsm/transpiler/TSLEncoder.js +715 -0
- package/examples/jsm/transpiler/Transpiler.js +18 -0
- package/examples/jsm/utils/SortUtils.js +158 -0
- package/examples/jsm/utils/TextureUtils.js +33 -21
- package/examples/jsm/webxr/ARButton.js +14 -0
- package/examples/jsm/webxr/VRButton.js +24 -9
- package/examples/jsm/webxr/XRButton.js +27 -11
- package/examples/jsm/webxr/XREstimatedLight.js +1 -1
- package/package.json +8 -6
- package/src/Three.js +1 -0
- package/src/constants.js +8 -1
- package/src/core/BufferAttribute.js +21 -2
- package/src/core/InterleavedBuffer.js +21 -1
- package/src/core/Object3D.js +60 -12
- package/src/core/UniformsGroup.js +7 -1
- package/src/extras/PMREMGenerator.js +7 -1
- package/src/extras/curves/LineCurve3.js +4 -0
- package/src/loaders/AudioLoader.js +1 -1
- package/src/loaders/BufferGeometryLoader.js +0 -7
- package/src/loaders/ImageBitmapLoader.js +25 -1
- package/src/loaders/MaterialLoader.js +10 -2
- package/src/loaders/ObjectLoader.js +49 -0
- package/src/materials/Material.js +27 -13
- package/src/materials/ShaderMaterial.js +2 -1
- package/src/math/Box3.js +35 -18
- package/src/math/ColorManagement.js +0 -16
- package/src/math/Quaternion.js +5 -4
- package/src/math/Sphere.js +2 -0
- package/src/math/Triangle.js +17 -5
- package/src/math/Vector3.js +11 -12
- package/src/objects/BatchedMesh.js +1020 -0
- package/src/objects/Skeleton.js +1 -3
- package/src/objects/SkinnedMesh.js +6 -7
- package/src/renderers/WebGL3DRenderTarget.js +2 -2
- package/src/renderers/WebGLArrayRenderTarget.js +2 -2
- package/src/renderers/WebGLRenderer.js +165 -43
- package/src/renderers/shaders/ShaderChunk/aomap_fragment.glsl.js +8 -0
- package/src/renderers/shaders/ShaderChunk/batching_pars_vertex.glsl.js +19 -0
- package/src/renderers/shaders/ShaderChunk/batching_vertex.glsl.js +5 -0
- package/src/renderers/shaders/ShaderChunk/bumpmap_pars_fragment.glsl.js +3 -2
- package/src/renderers/shaders/ShaderChunk/cube_uv_reflection_fragment.glsl.js +0 -5
- package/src/renderers/shaders/ShaderChunk/defaultnormal_vertex.glsl.js +31 -4
- package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +9 -4
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +8 -6
- package/src/renderers/shaders/ShaderChunk/project_vertex.glsl.js +6 -0
- package/src/renderers/shaders/ShaderChunk/skinning_pars_vertex.glsl.js +9 -17
- package/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js +84 -0
- package/src/renderers/shaders/ShaderChunk/worldpos_vertex.glsl.js +6 -0
- package/src/renderers/shaders/ShaderChunk.js +4 -0
- package/src/renderers/shaders/ShaderLib/depth.glsl.js +2 -0
- package/src/renderers/shaders/ShaderLib/distanceRGBA.glsl.js +2 -0
- package/src/renderers/shaders/ShaderLib/meshbasic.glsl.js +2 -0
- package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +2 -0
- package/src/renderers/shaders/ShaderLib/meshmatcap.glsl.js +3 -0
- package/src/renderers/shaders/ShaderLib/meshnormal.glsl.js +2 -0
- package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +2 -0
- package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +4 -2
- package/src/renderers/shaders/ShaderLib/meshtoon.glsl.js +2 -0
- package/src/renderers/shaders/ShaderLib/shadow.glsl.js +3 -0
- package/src/renderers/webgl/WebGLAttributes.js +39 -5
- package/src/renderers/webgl/WebGLBufferRenderer.js +31 -0
- package/src/renderers/webgl/WebGLCubeMaps.js +1 -1
- package/src/renderers/webgl/WebGLExtensions.js +1 -0
- package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +31 -0
- package/src/renderers/webgl/WebGLLights.js +11 -2
- package/src/renderers/webgl/WebGLProgram.js +100 -51
- package/src/renderers/webgl/WebGLPrograms.js +8 -0
- package/src/renderers/webgl/WebGLShadowMap.js +35 -0
- package/src/renderers/webgl/WebGLState.js +25 -4
- package/src/renderers/webgl/WebGLTextures.js +7 -11
- package/src/renderers/webgl/WebGLUniforms.js +11 -1
- package/src/renderers/webgl/WebGLUniformsGroups.js +72 -93
- package/src/renderers/webxr/WebXRManager.js +16 -0
- package/examples/jsm/nodes/accessors/ExtendedMaterialNode.js +0 -76
- package/examples/jsm/nodes/accessors/LineMaterialNode.js +0 -29
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
// Hybrid radix sort from
|
|
2
|
+
// - https://gist.github.com/sciecode/93ed864dd77c5c8803c6a86698d68dab
|
|
3
|
+
// - https://github.com/mrdoob/three.js/pull/27202#issuecomment-1817640271
|
|
4
|
+
const POWER = 3;
|
|
5
|
+
const BIT_MAX = 32;
|
|
6
|
+
const BIN_BITS = 1 << POWER;
|
|
7
|
+
const BIN_SIZE = 1 << BIN_BITS;
|
|
8
|
+
const BIN_MAX = BIN_SIZE - 1;
|
|
9
|
+
const ITERATIONS = BIT_MAX / BIN_BITS;
|
|
10
|
+
|
|
11
|
+
const bins = new Array( ITERATIONS );
|
|
12
|
+
const bins_buffer = new ArrayBuffer( ( ITERATIONS + 1 ) * BIN_SIZE * 4 );
|
|
13
|
+
|
|
14
|
+
let c = 0;
|
|
15
|
+
for ( let i = 0; i < ( ITERATIONS + 1 ); i ++ ) {
|
|
16
|
+
bins[ i ] = new Uint32Array( bins_buffer, c, BIN_SIZE );
|
|
17
|
+
c += BIN_SIZE * 4;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
const defaultGet = ( el ) => el;
|
|
21
|
+
|
|
22
|
+
export const radixSort = ( arr, opt ) => {
|
|
23
|
+
|
|
24
|
+
const len = arr.length;
|
|
25
|
+
|
|
26
|
+
const options = opt || {};
|
|
27
|
+
const aux = options.aux || new arr.constructor( len );
|
|
28
|
+
const get = options.get || defaultGet;
|
|
29
|
+
|
|
30
|
+
const data = [ arr, aux ];
|
|
31
|
+
|
|
32
|
+
let compare, accumulate, recurse;
|
|
33
|
+
|
|
34
|
+
if ( options.reversed ) {
|
|
35
|
+
|
|
36
|
+
compare = ( a, b ) => a < b;
|
|
37
|
+
accumulate = ( bin ) => {
|
|
38
|
+
|
|
39
|
+
for ( let j = BIN_SIZE - 2; j >= 0; j -- )
|
|
40
|
+
bin[ j ] += bin[ j + 1 ];
|
|
41
|
+
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
recurse = ( cache, depth, start ) => {
|
|
45
|
+
|
|
46
|
+
let prev = 0;
|
|
47
|
+
for ( let j = BIN_MAX; j >= 0; j -- ) {
|
|
48
|
+
|
|
49
|
+
const cur = cache[ j ], diff = cur - prev;
|
|
50
|
+
if ( diff != 0 ) {
|
|
51
|
+
|
|
52
|
+
if ( diff > 32 )
|
|
53
|
+
radixSortBlock( depth + 1, start + prev, diff );
|
|
54
|
+
else
|
|
55
|
+
insertionSortBlock( depth + 1, start + prev, diff );
|
|
56
|
+
prev = cur;
|
|
57
|
+
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
} else {
|
|
65
|
+
|
|
66
|
+
compare = ( a, b ) => a > b;
|
|
67
|
+
accumulate = ( bin ) => {
|
|
68
|
+
|
|
69
|
+
for ( let j = 1; j < BIN_SIZE; j ++ )
|
|
70
|
+
bin[ j ] += bin[ j - 1 ];
|
|
71
|
+
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
recurse = ( cache, depth, start ) => {
|
|
75
|
+
|
|
76
|
+
let prev = 0;
|
|
77
|
+
for ( let j = 0; j < BIN_SIZE; j ++ ) {
|
|
78
|
+
|
|
79
|
+
const cur = cache[ j ], diff = cur - prev;
|
|
80
|
+
if ( diff != 0 ) {
|
|
81
|
+
|
|
82
|
+
if ( diff > 32 )
|
|
83
|
+
radixSortBlock( depth + 1, start + prev, diff );
|
|
84
|
+
else
|
|
85
|
+
insertionSortBlock( depth + 1, start + prev, diff );
|
|
86
|
+
prev = cur;
|
|
87
|
+
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
const insertionSortBlock = ( depth, start, len ) => {
|
|
97
|
+
|
|
98
|
+
const a = data[ depth & 1 ];
|
|
99
|
+
const b = data[ ( depth + 1 ) & 1 ];
|
|
100
|
+
|
|
101
|
+
for ( let j = start + 1; j < start + len; j ++ ) {
|
|
102
|
+
|
|
103
|
+
const p = a[ j ], t = get( p );
|
|
104
|
+
let i = j;
|
|
105
|
+
while ( i > 0 ) {
|
|
106
|
+
|
|
107
|
+
if ( compare( get( a[ i - 1 ] ), t ) )
|
|
108
|
+
a[ i ] = a[ -- i ];
|
|
109
|
+
else
|
|
110
|
+
break;
|
|
111
|
+
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
a[ i ] = p;
|
|
115
|
+
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
if ( ( depth & 1 ) == 1 ) {
|
|
119
|
+
|
|
120
|
+
for ( let i = start; i < start + len; i ++ )
|
|
121
|
+
b[ i ] = a[ i ];
|
|
122
|
+
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
};
|
|
126
|
+
|
|
127
|
+
const radixSortBlock = ( depth, start, len ) => {
|
|
128
|
+
|
|
129
|
+
const a = data[ depth & 1 ];
|
|
130
|
+
const b = data[ ( depth + 1 ) & 1 ];
|
|
131
|
+
|
|
132
|
+
const shift = ( 3 - depth ) << POWER;
|
|
133
|
+
const end = start + len;
|
|
134
|
+
|
|
135
|
+
const cache = bins[ depth ];
|
|
136
|
+
const bin = bins[ depth + 1 ];
|
|
137
|
+
|
|
138
|
+
bin.fill( 0 );
|
|
139
|
+
|
|
140
|
+
for ( let j = start; j < end; j ++ )
|
|
141
|
+
bin[ ( get( a[ j ] ) >> shift ) & BIN_MAX ] ++;
|
|
142
|
+
|
|
143
|
+
accumulate( bin );
|
|
144
|
+
|
|
145
|
+
cache.set( bin );
|
|
146
|
+
|
|
147
|
+
for ( let j = end - 1; j >= start; j -- )
|
|
148
|
+
b[ start + -- bin[ ( get( a[ j ] ) >> shift ) & BIN_MAX ] ] = a[ j ];
|
|
149
|
+
|
|
150
|
+
if ( depth == ITERATIONS - 1 ) return;
|
|
151
|
+
|
|
152
|
+
recurse( cache, depth, start );
|
|
153
|
+
|
|
154
|
+
};
|
|
155
|
+
|
|
156
|
+
radixSortBlock( 0, 0, len );
|
|
157
|
+
|
|
158
|
+
};
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
PerspectiveCamera,
|
|
7
7
|
Scene,
|
|
8
8
|
WebGLRenderer,
|
|
9
|
-
|
|
9
|
+
CanvasTexture,
|
|
10
10
|
SRGBColorSpace
|
|
11
11
|
} from 'three';
|
|
12
12
|
|
|
@@ -21,24 +21,24 @@ export function decompress( texture, maxTextureSize = Infinity, renderer = null
|
|
|
21
21
|
if ( ! fullscreenQuadMaterial ) fullscreenQuadMaterial = new ShaderMaterial( {
|
|
22
22
|
uniforms: { blitTexture: new Uniform( texture ) },
|
|
23
23
|
vertexShader: `
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
24
|
+
varying vec2 vUv;
|
|
25
|
+
void main(){
|
|
26
|
+
vUv = uv;
|
|
27
|
+
gl_Position = vec4(position.xy * 1.0,0.,.999999);
|
|
28
|
+
}`,
|
|
29
29
|
fragmentShader: `
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
30
|
+
uniform sampler2D blitTexture;
|
|
31
|
+
varying vec2 vUv;
|
|
32
|
+
|
|
33
|
+
void main(){
|
|
34
|
+
gl_FragColor = vec4(vUv.xy, 0, 1);
|
|
35
|
+
|
|
36
|
+
#ifdef IS_SRGB
|
|
37
|
+
gl_FragColor = LinearTosRGB( texture2D( blitTexture, vUv) );
|
|
38
|
+
#else
|
|
39
|
+
gl_FragColor = texture2D( blitTexture, vUv);
|
|
40
|
+
#endif
|
|
41
|
+
}`
|
|
42
42
|
} );
|
|
43
43
|
|
|
44
44
|
fullscreenQuadMaterial.uniforms.blitTexture.value = texture;
|
|
@@ -56,17 +56,28 @@ export function decompress( texture, maxTextureSize = Infinity, renderer = null
|
|
|
56
56
|
const _scene = new Scene();
|
|
57
57
|
_scene.add( fullscreenQuad );
|
|
58
58
|
|
|
59
|
-
if (
|
|
59
|
+
if ( renderer === null ) {
|
|
60
60
|
|
|
61
61
|
renderer = _renderer = new WebGLRenderer( { antialias: false } );
|
|
62
62
|
|
|
63
63
|
}
|
|
64
64
|
|
|
65
|
-
|
|
65
|
+
const width = Math.min( texture.image.width, maxTextureSize );
|
|
66
|
+
const height = Math.min( texture.image.height, maxTextureSize );
|
|
67
|
+
|
|
68
|
+
renderer.setSize( width, height );
|
|
66
69
|
renderer.clear();
|
|
67
70
|
renderer.render( _scene, _camera );
|
|
68
71
|
|
|
69
|
-
const
|
|
72
|
+
const canvas = document.createElement( 'canvas' );
|
|
73
|
+
const context = canvas.getContext( '2d' );
|
|
74
|
+
|
|
75
|
+
canvas.width = width;
|
|
76
|
+
canvas.height = height;
|
|
77
|
+
|
|
78
|
+
context.drawImage( renderer.domElement, 0, 0, width, height );
|
|
79
|
+
|
|
80
|
+
const readableTexture = new CanvasTexture( canvas );
|
|
70
81
|
|
|
71
82
|
readableTexture.minFilter = texture.minFilter;
|
|
72
83
|
readableTexture.magFilter = texture.magFilter;
|
|
@@ -76,6 +87,7 @@ export function decompress( texture, maxTextureSize = Infinity, renderer = null
|
|
|
76
87
|
|
|
77
88
|
if ( _renderer ) {
|
|
78
89
|
|
|
90
|
+
_renderer.forceContextLoss();
|
|
79
91
|
_renderer.dispose();
|
|
80
92
|
_renderer = null;
|
|
81
93
|
|
|
@@ -104,10 +104,24 @@ class ARButton {
|
|
|
104
104
|
|
|
105
105
|
currentSession.end();
|
|
106
106
|
|
|
107
|
+
if ( navigator.xr.offerSession !== undefined ) {
|
|
108
|
+
|
|
109
|
+
navigator.xr.offerSession( 'immersive-ar', sessionInit )
|
|
110
|
+
.then( onSessionStarted );
|
|
111
|
+
|
|
112
|
+
}
|
|
113
|
+
|
|
107
114
|
}
|
|
108
115
|
|
|
109
116
|
};
|
|
110
117
|
|
|
118
|
+
if ( navigator.xr.offerSession !== undefined ) {
|
|
119
|
+
|
|
120
|
+
navigator.xr.offerSession( 'immersive-ar', sessionInit )
|
|
121
|
+
.then( onSessionStarted );
|
|
122
|
+
|
|
123
|
+
}
|
|
124
|
+
|
|
111
125
|
}
|
|
112
126
|
|
|
113
127
|
function disableButton() {
|
|
@@ -39,6 +39,15 @@ class VRButton {
|
|
|
39
39
|
|
|
40
40
|
button.textContent = 'ENTER VR';
|
|
41
41
|
|
|
42
|
+
// WebXR's requestReferenceSpace only works if the corresponding feature
|
|
43
|
+
// was requested at session creation time. For simplicity, just ask for
|
|
44
|
+
// the interesting ones as optional features, but be aware that the
|
|
45
|
+
// requestReferenceSpace call will fail if it turns out to be unavailable.
|
|
46
|
+
// ('local' is always available for immersive sessions and doesn't need to
|
|
47
|
+
// be requested separately.)
|
|
48
|
+
|
|
49
|
+
const sessionInit = { optionalFeatures: [ 'local-floor', 'bounded-floor', 'hand-tracking', 'layers' ] };
|
|
50
|
+
|
|
42
51
|
button.onmouseenter = function () {
|
|
43
52
|
|
|
44
53
|
button.style.opacity = '1.0';
|
|
@@ -55,24 +64,30 @@ class VRButton {
|
|
|
55
64
|
|
|
56
65
|
if ( currentSession === null ) {
|
|
57
66
|
|
|
58
|
-
// WebXR's requestReferenceSpace only works if the corresponding feature
|
|
59
|
-
// was requested at session creation time. For simplicity, just ask for
|
|
60
|
-
// the interesting ones as optional features, but be aware that the
|
|
61
|
-
// requestReferenceSpace call will fail if it turns out to be unavailable.
|
|
62
|
-
// ('local' is always available for immersive sessions and doesn't need to
|
|
63
|
-
// be requested separately.)
|
|
64
|
-
|
|
65
|
-
const sessionInit = { optionalFeatures: [ 'local-floor', 'bounded-floor', 'hand-tracking', 'layers' ] };
|
|
66
67
|
navigator.xr.requestSession( 'immersive-vr', sessionInit ).then( onSessionStarted );
|
|
67
68
|
|
|
68
69
|
} else {
|
|
69
70
|
|
|
70
71
|
currentSession.end();
|
|
71
72
|
|
|
73
|
+
if ( navigator.xr.offerSession !== undefined ) {
|
|
74
|
+
|
|
75
|
+
navigator.xr.offerSession( 'immersive-vr', sessionInit )
|
|
76
|
+
.then( onSessionStarted );
|
|
77
|
+
|
|
78
|
+
}
|
|
79
|
+
|
|
72
80
|
}
|
|
73
81
|
|
|
74
82
|
};
|
|
75
83
|
|
|
84
|
+
if ( navigator.xr.offerSession !== undefined ) {
|
|
85
|
+
|
|
86
|
+
navigator.xr.offerSession( 'immersive-vr', sessionInit )
|
|
87
|
+
.then( onSessionStarted );
|
|
88
|
+
|
|
89
|
+
}
|
|
90
|
+
|
|
76
91
|
}
|
|
77
92
|
|
|
78
93
|
function disableButton() {
|
|
@@ -176,7 +191,7 @@ class VRButton {
|
|
|
176
191
|
|
|
177
192
|
static registerSessionGrantedListener() {
|
|
178
193
|
|
|
179
|
-
if ( 'xr' in navigator ) {
|
|
194
|
+
if ( typeof navigator !== 'undefined' && 'xr' in navigator ) {
|
|
180
195
|
|
|
181
196
|
// WebXRViewer (based on Firefox) has a bug where addEventListener
|
|
182
197
|
// throws a silent exception and aborts execution entirely.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
class XRButton {
|
|
2
2
|
|
|
3
|
-
static createButton( renderer ) {
|
|
3
|
+
static createButton( renderer, sessionInit = {} ) {
|
|
4
4
|
|
|
5
5
|
const button = document.createElement( 'button' );
|
|
6
6
|
|
|
@@ -40,6 +40,17 @@ class XRButton {
|
|
|
40
40
|
|
|
41
41
|
button.textContent = 'START XR';
|
|
42
42
|
|
|
43
|
+
const sessionOptions = {
|
|
44
|
+
...sessionInit,
|
|
45
|
+
optionalFeatures: [
|
|
46
|
+
'local-floor',
|
|
47
|
+
'bounded-floor',
|
|
48
|
+
'hand-tracking',
|
|
49
|
+
'layers',
|
|
50
|
+
...( sessionInit.optionalFeatures || [] )
|
|
51
|
+
],
|
|
52
|
+
};
|
|
53
|
+
|
|
43
54
|
button.onmouseenter = function () {
|
|
44
55
|
|
|
45
56
|
button.style.opacity = '1.0';
|
|
@@ -56,26 +67,31 @@ class XRButton {
|
|
|
56
67
|
|
|
57
68
|
if ( currentSession === null ) {
|
|
58
69
|
|
|
59
|
-
|
|
60
|
-
optionalFeatures: [
|
|
61
|
-
'local-floor',
|
|
62
|
-
'bounded-floor',
|
|
63
|
-
'hand-tracking',
|
|
64
|
-
'layers'
|
|
65
|
-
]
|
|
66
|
-
};
|
|
67
|
-
|
|
68
|
-
navigator.xr.requestSession( mode, sessionInit )
|
|
70
|
+
navigator.xr.requestSession( mode, sessionOptions )
|
|
69
71
|
.then( onSessionStarted );
|
|
70
72
|
|
|
71
73
|
} else {
|
|
72
74
|
|
|
73
75
|
currentSession.end();
|
|
74
76
|
|
|
77
|
+
if ( navigator.xr.offerSession !== undefined ) {
|
|
78
|
+
|
|
79
|
+
navigator.xr.offerSession( mode, sessionOptions )
|
|
80
|
+
.then( onSessionStarted );
|
|
81
|
+
|
|
82
|
+
}
|
|
83
|
+
|
|
75
84
|
}
|
|
76
85
|
|
|
77
86
|
};
|
|
78
87
|
|
|
88
|
+
if ( navigator.xr.offerSession !== undefined ) {
|
|
89
|
+
|
|
90
|
+
navigator.xr.offerSession( mode, sessionOptions )
|
|
91
|
+
.then( onSessionStarted );
|
|
92
|
+
|
|
93
|
+
}
|
|
94
|
+
|
|
79
95
|
}
|
|
80
96
|
|
|
81
97
|
function disableButton() {
|
|
@@ -147,7 +147,7 @@ export class XREstimatedLight extends Group {
|
|
|
147
147
|
this.directionalLight.intensity = 0;
|
|
148
148
|
this.add( this.directionalLight );
|
|
149
149
|
|
|
150
|
-
// Will be set to a cube map in the SessionLightProbe
|
|
150
|
+
// Will be set to a cube map in the SessionLightProbe if environment estimation is
|
|
151
151
|
// available and requested.
|
|
152
152
|
this.environment = null;
|
|
153
153
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "super-three",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.160.0",
|
|
4
4
|
"description": "JavaScript 3D library",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./build/three.js",
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
},
|
|
13
13
|
"./examples/fonts/*": "./examples/fonts/*",
|
|
14
14
|
"./examples/jsm/*": "./examples/jsm/*",
|
|
15
|
+
"./addons": "./examples/jsm/Addons.js",
|
|
15
16
|
"./addons/*": "./examples/jsm/*",
|
|
16
17
|
"./src/*": "./src/*",
|
|
17
18
|
"./nodes": "./examples/jsm/nodes/Nodes.js"
|
|
@@ -20,7 +21,7 @@
|
|
|
20
21
|
"type": "git",
|
|
21
22
|
"url": "supermedium/three.js"
|
|
22
23
|
},
|
|
23
|
-
"sideEffects":
|
|
24
|
+
"sideEffects": ["./examples/jsm/nodes/**/*"],
|
|
24
25
|
"files": [
|
|
25
26
|
"build",
|
|
26
27
|
"examples/jsm",
|
|
@@ -43,7 +44,7 @@
|
|
|
43
44
|
"test": "npm run lint && npm run test-unit",
|
|
44
45
|
"build": "rollup -c utils/build/rollup.config.js",
|
|
45
46
|
"build-module": "rollup -c utils/build/rollup.config.js --configOnlyModule",
|
|
46
|
-
"dev": "concurrently --names \"ROLLUP,HTTP\" -c \"bgBlue.bold,bgGreen.bold\" \"rollup -c utils/build/rollup.config.js -w -m inline\" \"servez -p 8080
|
|
47
|
+
"dev": "concurrently --names \"ROLLUP,HTTP\" -c \"bgBlue.bold,bgGreen.bold\" \"rollup -c utils/build/rollup.config.js -w -m inline\" \"servez -p 8080\"",
|
|
47
48
|
"lint-core": "eslint src",
|
|
48
49
|
"lint-addons": "eslint examples/jsm --ext .js --ignore-pattern libs --ignore-pattern ifc",
|
|
49
50
|
"lint-examples": "eslint examples --ext .html",
|
|
@@ -59,6 +60,7 @@
|
|
|
59
60
|
"test-e2e": "node test/e2e/puppeteer.js",
|
|
60
61
|
"test-e2e-cov": "node test/e2e/check-coverage.js",
|
|
61
62
|
"test-treeshake": "rollup -c test/rollup.treeshake.config.js",
|
|
63
|
+
"test-circular-deps": "dpdm --no-warning --no-tree --exit-code circular:1 examples/jsm/nodes/Nodes.js",
|
|
62
64
|
"make-screenshot": "node test/e2e/puppeteer.js --make"
|
|
63
65
|
},
|
|
64
66
|
"keywords": [
|
|
@@ -84,11 +86,11 @@
|
|
|
84
86
|
},
|
|
85
87
|
"homepage": "https://threejs.org/",
|
|
86
88
|
"devDependencies": {
|
|
87
|
-
"@puppeteer/browsers": "^1.4.1",
|
|
88
89
|
"@rollup/plugin-node-resolve": "^15.0.1",
|
|
89
90
|
"@rollup/plugin-terser": "^0.4.0",
|
|
90
91
|
"chalk": "^5.2.0",
|
|
91
92
|
"concurrently": "^8.0.1",
|
|
93
|
+
"dpdm": "^3.14.0",
|
|
92
94
|
"eslint": "^8.37.0",
|
|
93
95
|
"eslint-config-mdcs": "^5.0.0",
|
|
94
96
|
"eslint-plugin-compat": "^4.1.2",
|
|
@@ -98,9 +100,9 @@
|
|
|
98
100
|
"jimp": "^0.22.7",
|
|
99
101
|
"magic-string": "^0.30.0",
|
|
100
102
|
"pixelmatch": "^5.3.0",
|
|
101
|
-
"puppeteer
|
|
103
|
+
"puppeteer": "^21.5.1",
|
|
102
104
|
"qunit": "^2.19.4",
|
|
103
|
-
"rollup": "^
|
|
105
|
+
"rollup": "^4.6.0",
|
|
104
106
|
"rollup-plugin-filesize": "^10.0.0",
|
|
105
107
|
"rollup-plugin-visualizer": "^5.9.0",
|
|
106
108
|
"servez": "^2.0.0"
|
package/src/Three.js
CHANGED
|
@@ -21,6 +21,7 @@ export { Skeleton } from './objects/Skeleton.js';
|
|
|
21
21
|
export { Bone } from './objects/Bone.js';
|
|
22
22
|
export { Mesh } from './objects/Mesh.js';
|
|
23
23
|
export { InstancedMesh } from './objects/InstancedMesh.js';
|
|
24
|
+
export { BatchedMesh } from './objects/BatchedMesh.js';
|
|
24
25
|
export { LineSegments } from './objects/LineSegments.js';
|
|
25
26
|
export { LineLoop } from './objects/LineLoop.js';
|
|
26
27
|
export { Line } from './objects/Line.js';
|
package/src/constants.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export const REVISION = '
|
|
1
|
+
export const REVISION = '160';
|
|
2
2
|
|
|
3
3
|
export const MOUSE = { LEFT: 0, MIDDLE: 1, RIGHT: 2, ROTATE: 0, DOLLY: 1, PAN: 2 };
|
|
4
4
|
export const TOUCH = { ROTATE: 0, PAN: 1, DOLLY_PAN: 2, DOLLY_ROTATE: 3 };
|
|
@@ -36,6 +36,10 @@ export const OneMinusDstAlphaFactor = 207;
|
|
|
36
36
|
export const DstColorFactor = 208;
|
|
37
37
|
export const OneMinusDstColorFactor = 209;
|
|
38
38
|
export const SrcAlphaSaturateFactor = 210;
|
|
39
|
+
export const ConstantColorFactor = 211;
|
|
40
|
+
export const OneMinusConstantColorFactor = 212;
|
|
41
|
+
export const ConstantAlphaFactor = 213;
|
|
42
|
+
export const OneMinusConstantAlphaFactor = 214;
|
|
39
43
|
export const NeverDepth = 0;
|
|
40
44
|
export const AlwaysDepth = 1;
|
|
41
45
|
export const LessDepth = 2;
|
|
@@ -53,6 +57,9 @@ export const ReinhardToneMapping = 2;
|
|
|
53
57
|
export const CineonToneMapping = 3;
|
|
54
58
|
export const ACESFilmicToneMapping = 4;
|
|
55
59
|
export const CustomToneMapping = 5;
|
|
60
|
+
export const AgXToneMapping = 6;
|
|
61
|
+
export const AttachedBindMode = 'attached';
|
|
62
|
+
export const DetachedBindMode = 'detached';
|
|
56
63
|
|
|
57
64
|
export const UVMapping = 300;
|
|
58
65
|
export const CubeReflectionMapping = 301;
|
|
@@ -27,7 +27,8 @@ class BufferAttribute {
|
|
|
27
27
|
this.normalized = normalized;
|
|
28
28
|
|
|
29
29
|
this.usage = StaticDrawUsage;
|
|
30
|
-
this.
|
|
30
|
+
this._updateRange = { offset: 0, count: - 1 };
|
|
31
|
+
this.updateRanges = [];
|
|
31
32
|
this.gpuType = FloatType;
|
|
32
33
|
|
|
33
34
|
this.version = 0;
|
|
@@ -42,6 +43,13 @@ class BufferAttribute {
|
|
|
42
43
|
|
|
43
44
|
}
|
|
44
45
|
|
|
46
|
+
get updateRange() {
|
|
47
|
+
|
|
48
|
+
console.warn( 'THREE.BufferAttribute: updateRange() is deprecated and will be removed in r169. Use addUpdateRange() instead.' ); // @deprecated, r159
|
|
49
|
+
return this._updateRange;
|
|
50
|
+
|
|
51
|
+
}
|
|
52
|
+
|
|
45
53
|
setUsage( value ) {
|
|
46
54
|
|
|
47
55
|
this.usage = value;
|
|
@@ -50,6 +58,18 @@ class BufferAttribute {
|
|
|
50
58
|
|
|
51
59
|
}
|
|
52
60
|
|
|
61
|
+
addUpdateRange( start, count ) {
|
|
62
|
+
|
|
63
|
+
this.updateRanges.push( { start, count } );
|
|
64
|
+
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
clearUpdateRanges() {
|
|
68
|
+
|
|
69
|
+
this.updateRanges.length = 0;
|
|
70
|
+
|
|
71
|
+
}
|
|
72
|
+
|
|
53
73
|
copy( source ) {
|
|
54
74
|
|
|
55
75
|
this.name = source.name;
|
|
@@ -360,7 +380,6 @@ class BufferAttribute {
|
|
|
360
380
|
|
|
361
381
|
if ( this.name !== '' ) data.name = this.name;
|
|
362
382
|
if ( this.usage !== StaticDrawUsage ) data.usage = this.usage;
|
|
363
|
-
if ( this.updateRange.offset !== 0 || this.updateRange.count !== - 1 ) data.updateRange = this.updateRange;
|
|
364
383
|
|
|
365
384
|
return data;
|
|
366
385
|
|
|
@@ -12,7 +12,8 @@ class InterleavedBuffer {
|
|
|
12
12
|
this.count = array !== undefined ? array.length / stride : 0;
|
|
13
13
|
|
|
14
14
|
this.usage = StaticDrawUsage;
|
|
15
|
-
this.
|
|
15
|
+
this._updateRange = { offset: 0, count: - 1 };
|
|
16
|
+
this.updateRanges = [];
|
|
16
17
|
|
|
17
18
|
this.version = 0;
|
|
18
19
|
|
|
@@ -28,6 +29,13 @@ class InterleavedBuffer {
|
|
|
28
29
|
|
|
29
30
|
}
|
|
30
31
|
|
|
32
|
+
get updateRange() {
|
|
33
|
+
|
|
34
|
+
console.warn( 'THREE.InterleavedBuffer: updateRange() is deprecated and will be removed in r169. Use addUpdateRange() instead.' ); // @deprecated, r159
|
|
35
|
+
return this._updateRange;
|
|
36
|
+
|
|
37
|
+
}
|
|
38
|
+
|
|
31
39
|
setUsage( value ) {
|
|
32
40
|
|
|
33
41
|
this.usage = value;
|
|
@@ -36,6 +44,18 @@ class InterleavedBuffer {
|
|
|
36
44
|
|
|
37
45
|
}
|
|
38
46
|
|
|
47
|
+
addUpdateRange( start, count ) {
|
|
48
|
+
|
|
49
|
+
this.updateRanges.push( { start, count } );
|
|
50
|
+
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
clearUpdateRanges() {
|
|
54
|
+
|
|
55
|
+
this.updateRanges.length = 0;
|
|
56
|
+
|
|
57
|
+
}
|
|
58
|
+
|
|
39
59
|
copy( source ) {
|
|
40
60
|
|
|
41
61
|
this.array = new source.array.constructor( source.array );
|