super-three 0.144.0 → 0.147.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 +1 -1
- package/build/three.cjs +735 -387
- package/build/three.js +735 -387
- package/build/three.min.js +1 -1
- package/build/three.module.js +910 -408
- package/examples/js/animation/AnimationClipCreator.js +0 -8
- package/examples/js/animation/CCDIKSolver.js +50 -67
- package/examples/js/animation/MMDAnimationHelper.js +66 -137
- package/examples/js/animation/MMDPhysics.js +70 -134
- package/examples/js/cameras/CinematicCamera.js +33 -22
- package/examples/js/controls/ArcballControls.js +138 -405
- package/examples/js/controls/DragControls.js +8 -33
- package/examples/js/controls/FirstPersonControls.js +32 -54
- package/examples/js/controls/FlyControls.js +29 -55
- package/examples/js/controls/OrbitControls.js +125 -99
- package/examples/js/controls/PointerLockControls.js +5 -14
- package/examples/js/controls/TrackballControls.js +33 -86
- package/examples/js/controls/TransformControls.js +85 -170
- package/examples/js/csm/CSM.js +4 -39
- package/examples/js/csm/CSMFrustum.js +3 -9
- package/examples/js/csm/CSMHelper.js +24 -4
- package/examples/js/csm/CSMShader.js +2 -6
- package/examples/js/curves/CurveExtras.js +27 -27
- package/examples/js/curves/NURBSCurve.js +4 -16
- package/examples/js/curves/NURBSSurface.js +3 -9
- package/examples/js/curves/NURBSUtils.js +8 -45
- package/examples/js/effects/AnaglyphEffect.js +4 -18
- package/examples/js/effects/AsciiEffect.js +32 -31
- package/examples/js/effects/OutlineEffect.js +26 -30
- package/examples/js/effects/ParallaxBarrierEffect.js +0 -13
- package/examples/js/effects/PeppersGhostEffect.js +12 -39
- package/examples/js/effects/StereoEffect.js +0 -4
- package/examples/js/environments/RoomEnvironment.js +12 -10
- package/examples/js/exporters/ColladaExporter.js +48 -65
- package/examples/js/exporters/DRACOExporter.js +22 -22
- package/examples/js/exporters/EXRExporter.js +15 -18
- package/examples/js/exporters/GLTFExporter.js +141 -317
- package/examples/js/exporters/MMDExporter.js +5 -12
- package/examples/js/exporters/OBJExporter.js +42 -33
- package/examples/js/exporters/PLYExporter.js +38 -33
- package/examples/js/exporters/STLExporter.js +5 -7
- package/examples/js/exporters/USDZExporter.js +113 -27
- package/examples/js/geometries/BoxLineGeometry.js +0 -1
- package/examples/js/geometries/ConvexGeometry.js +11 -6
- package/examples/js/geometries/DecalGeometry.js +53 -20
- package/examples/js/geometries/LightningStrike.js +54 -67
- package/examples/js/geometries/ParametricGeometries.js +8 -7
- package/examples/js/geometries/ParametricGeometry.js +25 -12
- package/examples/js/geometries/RoundedBoxGeometry.js +21 -19
- package/examples/js/geometries/TeapotGeometry.js +54 -50
- package/examples/js/geometries/TextGeometry.js +6 -4
- package/examples/js/helpers/LightProbeHelper.js +1 -2
- package/examples/js/helpers/OctreeHelper.js +22 -20
- package/examples/js/helpers/PositionalAudioHelper.js +8 -6
- package/examples/js/helpers/RectAreaLightHelper.js +6 -7
- package/examples/js/helpers/VertexNormalsHelper.js +15 -13
- package/examples/js/helpers/VertexTangentsHelper.js +15 -9
- package/examples/js/helpers/ViewHelper.js +31 -16
- package/examples/js/interactive/HTMLMesh.js +25 -39
- package/examples/js/interactive/InteractiveGroup.js +9 -14
- package/examples/js/interactive/SelectionBox.js +3 -70
- package/examples/js/interactive/SelectionHelper.js +0 -8
- package/examples/js/lights/LightProbeGenerator.js +32 -39
- package/examples/js/lights/RectAreaLightUniformsLib.js +5 -1
- package/examples/js/lines/LineGeometry.js +3 -5
- package/examples/js/lines/LineMaterial.js +4 -11
- package/examples/js/lines/LineSegments2.js +40 -89
- package/examples/js/lines/LineSegmentsGeometry.js +7 -28
- package/examples/js/lines/Wireframe.js +2 -7
- package/examples/js/lines/WireframeGeometry2.js +3 -1
- package/examples/js/loaders/3DMLoader.js +58 -155
- package/examples/js/loaders/3MFLoader.js +72 -106
- package/examples/js/loaders/AMFLoader.js +0 -25
- package/examples/js/loaders/BVHLoader.js +44 -43
- package/examples/js/loaders/BasisTextureLoader.js +16 -46
- package/examples/js/loaders/ColladaLoader.js +228 -359
- package/examples/js/loaders/DDSLoader.js +24 -25
- package/examples/js/loaders/DRACOLoader.js +29 -66
- package/examples/js/loaders/EXRLoader.js +67 -164
- package/examples/js/loaders/FBXLoader.js +287 -441
- package/examples/js/loaders/FontLoader.js +6 -15
- package/examples/js/loaders/GCodeLoader.js +15 -16
- package/examples/js/loaders/GLTFLoader.js +409 -706
- package/examples/js/loaders/HDRCubeTextureLoader.js +0 -6
- package/examples/js/loaders/KMZLoader.js +3 -7
- package/examples/js/loaders/KTXLoader.js +12 -30
- package/examples/js/loaders/LDrawLoader.js +178 -289
- package/examples/js/loaders/LUT3dlLoader.js +7 -11
- package/examples/js/loaders/LUTCubeLoader.js +0 -8
- package/examples/js/loaders/LWOLoader.js +59 -124
- package/examples/js/loaders/LogLuvLoader.js +27 -77
- package/examples/js/loaders/LottieLoader.js +4 -4
- package/examples/js/loaders/MD2Loader.js +26 -27
- package/examples/js/loaders/MDDLoader.js +6 -10
- package/examples/js/loaders/MMDLoader.js +180 -189
- package/examples/js/loaders/MTLLoader.js +18 -47
- package/examples/js/loaders/NRRDLoader.js +44 -84
- package/examples/js/loaders/OBJLoader.js +50 -65
- package/examples/js/loaders/PCDLoader.js +34 -29
- package/examples/js/loaders/PDBLoader.js +17 -13
- package/examples/js/loaders/PLYLoader.js +62 -48
- package/examples/js/loaders/PRWMLoader.js +11 -22
- package/examples/js/loaders/PVRLoader.js +7 -16
- package/examples/js/loaders/RGBELoader.js +36 -61
- package/examples/js/loaders/RGBMLoader.js +26 -87
- package/examples/js/loaders/STLLoader.js +20 -27
- package/examples/js/loaders/SVGLoader.js +361 -233
- package/examples/js/loaders/TDSLoader.js +81 -118
- package/examples/js/loaders/TGALoader.js +39 -41
- package/examples/js/loaders/TIFFLoader.js +0 -1
- package/examples/js/loaders/TTFLoader.js +0 -8
- package/examples/js/loaders/TiltLoader.js +14 -15
- package/examples/js/loaders/VOXLoader.js +8 -16
- package/examples/js/loaders/VRMLLoader.js +243 -340
- package/examples/js/loaders/VTKLoader.js +101 -118
- package/examples/js/loaders/XYZLoader.js +2 -4
- package/examples/js/loaders/lwo/IFFParser.js +55 -136
- package/examples/js/loaders/lwo/LWO2Parser.js +32 -83
- package/examples/js/loaders/lwo/LWO3Parser.js +31 -73
- package/examples/js/materials/MeshGouraudMaterial.js +15 -13
- package/examples/js/math/Capsule.js +0 -17
- package/examples/js/math/ColorConverter.js +3 -3
- package/examples/js/math/ConvexHull.js +185 -141
- package/examples/js/math/ImprovedNoise.js +1 -1
- package/examples/js/math/Lut.js +8 -15
- package/examples/js/math/MeshSurfaceSampler.js +6 -28
- package/examples/js/math/OBB.js +90 -49
- package/examples/js/math/Octree.js +2 -57
- package/examples/js/math/SimplexNoise.js +74 -88
- package/examples/js/misc/ConvexObjectBreaker.js +37 -48
- package/examples/js/misc/GPUComputationRenderer.js +26 -16
- package/examples/js/misc/Gyroscope.js +5 -9
- package/examples/js/misc/MD2Character.js +14 -23
- package/examples/js/misc/MD2CharacterComplex.js +73 -54
- package/examples/js/misc/MorphAnimMesh.js +0 -6
- package/examples/js/misc/MorphBlendMesh.js +3 -30
- package/examples/js/misc/ProgressiveLightMap.js +47 -43
- package/examples/js/misc/RollerCoaster.js +17 -24
- package/examples/js/misc/TubePainter.js +18 -12
- package/examples/js/misc/Volume.js +16 -45
- package/examples/js/misc/VolumeSlice.js +14 -24
- package/examples/js/modifiers/CurveModifier.js +19 -21
- package/examples/js/modifiers/EdgeSplitModifier.js +0 -30
- package/examples/js/modifiers/SimplifyModifier.js +56 -59
- package/examples/js/modifiers/TessellateModifier.js +2 -9
- package/examples/js/objects/GroundProjectedEnv.js +2 -14
- package/examples/js/objects/Lensflare.js +47 -38
- package/examples/js/objects/LightningStorm.js +10 -13
- package/examples/js/objects/MarchingCubes.js +80 -59
- package/examples/js/objects/Reflector.js +22 -20
- package/examples/js/objects/ReflectorForSSRPass.js +19 -23
- package/examples/js/objects/Refractor.js +52 -30
- package/examples/js/objects/ShadowMesh.js +1 -2
- package/examples/js/objects/Sky.js +2 -7
- package/examples/js/objects/Water.js +23 -18
- package/examples/js/objects/Water2.js +20 -19
- package/examples/js/physics/AmmoPhysics.js +23 -20
- package/examples/js/physics/OimoPhysics.js +19 -17
- package/examples/js/postprocessing/AdaptiveToneMappingPass.js +13 -20
- package/examples/js/postprocessing/AfterimagePass.js +19 -12
- package/examples/js/postprocessing/BloomPass.js +38 -17
- package/examples/js/postprocessing/BokehPass.js +29 -12
- package/examples/js/postprocessing/ClearPass.js +1 -6
- package/examples/js/postprocessing/CubeTexturePass.js +12 -9
- package/examples/js/postprocessing/DotScreenPass.js +7 -5
- package/examples/js/postprocessing/EffectComposer.js +25 -32
- package/examples/js/postprocessing/FilmPass.js +7 -5
- package/examples/js/postprocessing/GlitchPass.js +10 -11
- package/examples/js/postprocessing/HalftonePass.js +9 -9
- package/examples/js/postprocessing/LUTPass.js +2 -15
- package/examples/js/postprocessing/MaskPass.js +20 -17
- package/examples/js/postprocessing/OutlinePass.js +45 -36
- package/examples/js/postprocessing/Pass.js +11 -14
- package/examples/js/postprocessing/RenderPass.js +3 -7
- package/examples/js/postprocessing/RenderPixelatedPass.js +215 -0
- package/examples/js/postprocessing/SAOPass.js +40 -32
- package/examples/js/postprocessing/SMAAPass.js +34 -17
- package/examples/js/postprocessing/SSAARenderPass.js +14 -14
- package/examples/js/postprocessing/SSAOPass.js +56 -42
- package/examples/js/postprocessing/SSRPass.js +78 -61
- package/examples/js/postprocessing/SavePass.js +14 -6
- package/examples/js/postprocessing/ShaderPass.js +9 -8
- package/examples/js/postprocessing/TAARenderPass.js +11 -9
- package/examples/js/postprocessing/TexturePass.js +7 -4
- package/examples/js/postprocessing/UnrealBloomPass.js +43 -25
- package/examples/js/renderers/CSS2DRenderer.js +2 -21
- package/examples/js/renderers/CSS3DRenderer.js +3 -24
- package/examples/js/renderers/Projector.js +29 -85
- package/examples/js/renderers/SVGRenderer.js +4 -50
- package/examples/js/shaders/ACESFilmicToneMappingShader.js +3 -6
- package/examples/js/shaders/AfterimageShader.js +3 -6
- package/examples/js/shaders/BasicShader.js +3 -6
- package/examples/js/shaders/BleachBypassShader.js +3 -6
- package/examples/js/shaders/BlendShader.js +3 -6
- package/examples/js/shaders/BokehShader.js +3 -6
- package/examples/js/shaders/BokehShader2.js +4 -13
- package/examples/js/shaders/BrightnessContrastShader.js +3 -6
- package/examples/js/shaders/ColorCorrectionShader.js +2 -6
- package/examples/js/shaders/ColorifyShader.js +2 -6
- package/examples/js/shaders/ConvolutionShader.js +5 -10
- package/examples/js/shaders/CopyShader.js +3 -6
- package/examples/js/shaders/DOFMipMapShader.js +3 -6
- package/examples/js/shaders/DepthLimitedBlurShader.js +2 -9
- package/examples/js/shaders/DigitalGlitch.js +3 -6
- package/examples/js/shaders/DotScreenShader.js +2 -6
- package/examples/js/shaders/FXAAShader.js +1 -3
- package/examples/js/shaders/FilmShader.js +3 -6
- package/examples/js/shaders/FocusShader.js +3 -6
- package/examples/js/shaders/FreiChenShader.js +2 -6
- package/examples/js/shaders/GammaCorrectionShader.js +3 -6
- package/examples/js/shaders/GodRaysShader.js +11 -24
- package/examples/js/shaders/HalftoneShader.js +3 -6
- package/examples/js/shaders/HorizontalBlurShader.js +3 -6
- package/examples/js/shaders/HorizontalTiltShiftShader.js +3 -6
- package/examples/js/shaders/HueSaturationShader.js +3 -6
- package/examples/js/shaders/KaleidoShader.js +3 -6
- package/examples/js/shaders/LuminosityHighPassShader.js +2 -6
- package/examples/js/shaders/LuminosityShader.js +3 -6
- package/examples/js/shaders/MMDToonShader.js +2 -8
- package/examples/js/shaders/MirrorShader.js +3 -6
- package/examples/js/shaders/NormalMapShader.js +2 -6
- package/examples/js/shaders/RGBShiftShader.js +3 -6
- package/examples/js/shaders/SAOShader.js +2 -6
- package/examples/js/shaders/SMAAShader.js +6 -18
- package/examples/js/shaders/SSAOShader.js +2 -6
- package/examples/js/shaders/SSRShader.js +6 -18
- package/examples/js/shaders/SepiaShader.js +3 -6
- package/examples/js/shaders/SobelOperatorShader.js +2 -6
- package/examples/js/shaders/TechnicolorShader.js +3 -6
- package/examples/js/shaders/ToneMapShader.js +3 -6
- package/examples/js/shaders/ToonShader.js +8 -24
- package/examples/js/shaders/TriangleBlurShader.js +2 -6
- package/examples/js/shaders/UnpackDepthRGBAShader.js +3 -6
- package/examples/js/shaders/VelocityShader.js +126 -0
- package/examples/js/shaders/VerticalBlurShader.js +3 -6
- package/examples/js/shaders/VerticalTiltShiftShader.js +3 -6
- package/examples/js/shaders/VignetteShader.js +3 -6
- package/examples/js/shaders/VolumeShader.js +2 -6
- package/examples/js/shaders/WaterRefractionShader.js +2 -6
- package/examples/js/textures/FlakesTexture.js +0 -1
- package/examples/js/utils/BufferGeometryUtils.js +236 -170
- package/examples/js/utils/CameraUtils.js +5 -20
- package/examples/js/utils/GPUStatsPanel.js +3 -12
- package/examples/js/utils/GeometryCompressionUtils.js +19 -44
- package/examples/js/utils/GeometryUtils.js +13 -18
- package/examples/js/utils/LDrawUtils.js +8 -11
- package/examples/js/utils/PackedPhongMaterial.js +6 -4
- package/examples/js/utils/SceneUtils.js +117 -6
- package/examples/js/utils/ShadowMapViewer.js +17 -14
- package/examples/js/utils/SkeletonUtils.js +13 -27
- package/examples/js/utils/UVsDebug.js +20 -12
- package/examples/js/utils/WorkerPool.js +1 -11
- package/examples/jsm/animation/CCDIKSolver.js +27 -3
- package/examples/jsm/animation/MMDPhysics.js +25 -0
- package/examples/jsm/capabilities/WebGPU.js +3 -1
- package/examples/jsm/controls/FirstPersonControls.js +20 -20
- package/examples/jsm/controls/FlyControls.js +16 -17
- package/examples/jsm/controls/OrbitControls.js +44 -4
- package/examples/jsm/controls/TrackballControls.js +14 -2
- package/examples/jsm/controls/TransformControls.js +1 -1
- package/examples/jsm/csm/CSM.js +1 -0
- package/examples/jsm/csm/CSMHelper.js +30 -0
- package/examples/jsm/exporters/GLTFExporter.js +0 -79
- package/examples/jsm/exporters/USDZExporter.js +93 -1
- package/examples/jsm/helpers/OctreeHelper.js +22 -8
- package/examples/jsm/helpers/VertexNormalsHelper.js +7 -1
- package/examples/jsm/helpers/VertexTangentsHelper.js +7 -0
- package/examples/jsm/helpers/ViewHelper.js +24 -0
- package/examples/jsm/interactive/HTMLMesh.js +5 -6
- package/examples/jsm/interactive/InteractiveGroup.js +4 -2
- package/examples/jsm/libs/flow.module.js +610 -160
- package/examples/jsm/libs/lottie_canvas.module.js +14844 -0
- package/examples/jsm/lines/LineSegments2.js +4 -0
- package/examples/jsm/loaders/3DMLoader.js +1 -2
- package/examples/jsm/loaders/ColladaLoader.js +28 -0
- package/examples/jsm/loaders/FBXLoader.js +18 -2
- package/examples/jsm/loaders/GLTFLoader.js +269 -428
- package/examples/jsm/loaders/KTX2Loader.js +68 -29
- package/examples/jsm/loaders/LDrawLoader.js +14 -13
- package/examples/jsm/loaders/LottieLoader.js +4 -2
- package/examples/jsm/loaders/MaterialXLoader.js +728 -0
- package/examples/jsm/loaders/PCDLoader.js +1 -1
- package/examples/jsm/loaders/PLYLoader.js +68 -16
- package/examples/jsm/loaders/SVGLoader.js +227 -14
- package/examples/jsm/loaders/USDZLoader.js +351 -111
- package/examples/jsm/loaders/VRMLLoader.js +13 -1
- package/examples/jsm/math/ConvexHull.js +4 -4
- package/examples/jsm/math/Octree.js +1 -1
- package/examples/jsm/node-editor/NodeEditor.js +91 -12
- package/examples/jsm/node-editor/core/BaseNode.js +10 -3
- package/examples/jsm/node-editor/materials/BasicMaterialEditor.js +6 -9
- package/examples/jsm/node-editor/materials/StandardMaterialEditor.js +6 -9
- package/examples/jsm/node-editor/math/AngleEditor.js +3 -3
- package/examples/jsm/node-editor/math/InvertEditor.js +2 -2
- package/examples/jsm/node-editor/scene/MeshEditor.js +11 -8
- package/examples/jsm/node-editor/utils/PreviewEditor.js +4 -0
- package/examples/jsm/nodes/Nodes.js +30 -3
- package/examples/jsm/nodes/accessors/BitangentNode.js +62 -0
- package/examples/jsm/nodes/accessors/NormalNode.js +6 -6
- package/examples/jsm/nodes/accessors/Object3DNode.js +1 -1
- package/examples/jsm/nodes/accessors/PositionNode.js +6 -0
- package/examples/jsm/nodes/accessors/ReferenceNode.js +1 -1
- package/examples/jsm/nodes/accessors/SkinningNode.js +8 -1
- package/examples/jsm/nodes/accessors/TangentNode.js +95 -0
- package/examples/jsm/nodes/core/AttributeNode.js +31 -8
- package/examples/jsm/nodes/core/Node.js +1 -1
- package/examples/jsm/nodes/core/NodeBuilder.js +55 -6
- package/examples/jsm/nodes/core/NodeFrame.js +2 -2
- package/examples/jsm/nodes/core/NodeVarying.js +7 -4
- package/examples/jsm/nodes/core/VaryingNode.js +6 -4
- package/examples/jsm/nodes/core/constants.js +13 -13
- package/examples/jsm/nodes/display/BlendModeNode.js +85 -0
- package/examples/jsm/nodes/display/ColorAdjustmentNode.js +2 -12
- package/examples/jsm/nodes/display/NormalMapNode.js +19 -12
- package/examples/jsm/nodes/display/PosterizeNode.js +25 -0
- package/examples/jsm/nodes/display/ViewportNode.js +106 -0
- package/examples/jsm/nodes/functions/BSDF/BRDF_GGX.js +5 -5
- package/examples/jsm/nodes/functions/PhysicalLightingModel.js +3 -3
- package/examples/jsm/nodes/functions/light/getDistanceAttenuation.js +2 -2
- package/examples/jsm/nodes/gpgpu/ComputeNode.js +1 -1
- package/examples/jsm/nodes/lighting/AnalyticLightNode.js +1 -1
- package/examples/jsm/nodes/loaders/NodeMaterialLoader.js +3 -1
- package/examples/jsm/nodes/materials/Materials.js +9 -7
- package/examples/jsm/nodes/materials/NodeMaterial.js +9 -1
- package/examples/jsm/nodes/materialx/{Disclaimer.md → DISCLAIMER.md} +1 -1
- package/examples/jsm/nodes/materialx/MaterialXNodes.js +59 -0
- package/examples/jsm/nodes/materialx/{functions/lib → lib}/mx_hsv.js +1 -1
- package/examples/jsm/nodes/materialx/{functions/lib → lib}/mx_noise.js +13 -3
- package/examples/jsm/nodes/materialx/lib/mx_transform_color.js +18 -0
- package/examples/jsm/nodes/math/MathNode.js +5 -5
- package/examples/jsm/nodes/math/OperatorNode.js +16 -3
- package/examples/jsm/nodes/shadernode/ShaderNode.js +35 -20
- package/examples/jsm/nodes/shadernode/ShaderNodeBaseElements.js +87 -63
- package/examples/jsm/nodes/shadernode/ShaderNodeElements.js +29 -0
- package/examples/jsm/nodes/utils/ConvertNode.js +15 -14
- package/examples/jsm/nodes/utils/EquirectUVNode.js +27 -0
- package/examples/jsm/nodes/utils/JoinNode.js +8 -2
- package/examples/jsm/nodes/utils/MatcapUVNode.js +2 -4
- package/examples/jsm/nodes/utils/MaxMipLevelNode.js +1 -1
- package/examples/jsm/nodes/utils/OscNode.js +2 -2
- package/examples/jsm/nodes/utils/RemapNode.js +34 -0
- package/examples/jsm/nodes/utils/SpriteSheetUVNode.js +8 -10
- package/examples/jsm/nodes/utils/TimerNode.js +21 -1
- package/examples/jsm/nodes/utils/TriplanarTexturesNode.js +51 -0
- package/examples/jsm/postprocessing/AfterimagePass.js +17 -4
- package/examples/jsm/postprocessing/BloomPass.js +22 -3
- package/examples/jsm/postprocessing/BokehPass.js +18 -4
- package/examples/jsm/postprocessing/CubeTexturePass.js +12 -5
- package/examples/jsm/postprocessing/DotScreenPass.js +8 -0
- package/examples/jsm/postprocessing/EffectComposer.js +9 -0
- package/examples/jsm/postprocessing/FilmPass.js +8 -0
- package/examples/jsm/postprocessing/GlitchPass.js +13 -1
- package/examples/jsm/postprocessing/HalftonePass.js +8 -0
- package/examples/jsm/postprocessing/OutlinePass.js +21 -1
- package/examples/jsm/postprocessing/Pass.js +2 -0
- package/examples/jsm/postprocessing/RenderPixelatedPass.js +234 -0
- package/examples/jsm/postprocessing/SAOPass.js +20 -0
- package/examples/jsm/postprocessing/SMAAPass.js +16 -0
- package/examples/jsm/postprocessing/SSAARenderPass.js +4 -0
- package/examples/jsm/postprocessing/SavePass.js +17 -1
- package/examples/jsm/postprocessing/ShaderPass.js +8 -0
- package/examples/jsm/postprocessing/TAARenderPass.js +9 -0
- package/examples/jsm/postprocessing/TexturePass.js +8 -0
- package/examples/jsm/postprocessing/UnrealBloomPass.js +16 -0
- package/examples/jsm/renderers/webgl/nodes/WebGLNodeBuilder.js +56 -35
- package/examples/jsm/renderers/webgpu/WebGPUAnimation.js +58 -0
- package/examples/jsm/renderers/webgpu/WebGPUAttributes.js +63 -5
- package/examples/jsm/renderers/webgpu/WebGPUBackground.js +36 -7
- package/examples/jsm/renderers/webgpu/WebGPURenderer.js +47 -12
- package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeBuilder.js +41 -9
- package/examples/jsm/shaders/MMDToonShader.js +0 -2
- package/examples/jsm/shaders/VelocityShader.js +128 -0
- package/examples/jsm/utils/BufferGeometryUtils.js +174 -42
- package/examples/jsm/utils/SceneUtils.js +129 -4
- package/examples/jsm/webxr/OculusHandModel.js +3 -2
- package/examples/jsm/webxr/XRHandMeshModel.js +8 -3
- package/package.json +13 -13
- package/src/Three.js +1 -0
- package/src/animation/PropertyBinding.js +7 -0
- package/src/audio/AudioContext.js +5 -5
- package/src/cameras/CubeCamera.js +14 -14
- package/src/constants.js +1 -1
- package/src/core/InstancedBufferGeometry.js +1 -7
- package/src/core/InterleavedBufferAttribute.js +4 -4
- package/src/extras/Earcut.js +67 -67
- package/src/geometries/PolyhedronGeometry.js +1 -1
- package/src/geometries/ShapeGeometry.js +1 -1
- package/src/helpers/ArrowHelper.js +9 -0
- package/src/helpers/Box3Helper.js +7 -0
- package/src/helpers/BoxHelper.js +7 -1
- package/src/helpers/DirectionalLightHelper.js +5 -1
- package/src/helpers/GridHelper.js +7 -0
- package/src/helpers/HemisphereLightHelper.js +4 -1
- package/src/helpers/PlaneHelper.js +9 -0
- package/src/helpers/PointLightHelper.js +2 -1
- package/src/helpers/PolarGridHelper.js +7 -0
- package/src/helpers/SkeletonHelper.js +7 -0
- package/src/helpers/SpotLightHelper.js +4 -2
- package/src/lights/LightShadow.js +1 -2
- package/src/lights/PointLight.js +2 -2
- package/src/lights/SpotLight.js +2 -2
- package/src/loaders/FileLoader.js +4 -1
- package/src/loaders/ObjectLoader.js +5 -1
- package/src/materials/Material.js +1 -1
- package/src/materials/MeshPhysicalMaterial.js +1 -1
- package/src/math/Color.js +5 -5
- package/src/math/Matrix3.js +53 -18
- package/src/math/Ray.js +2 -5
- package/src/math/Sphere.js +36 -21
- package/src/objects/InstancedMesh.js +7 -0
- package/src/objects/LOD.js +25 -6
- package/src/renderers/WebGL3DRenderTarget.js +1 -1
- package/src/renderers/WebGLArrayRenderTarget.js +1 -1
- package/src/renderers/WebGLCubeRenderTarget.js +1 -1
- package/src/renderers/WebGLMultipleRenderTargets.js +1 -1
- package/src/renderers/WebGLRenderTarget.js +1 -1
- package/src/renderers/WebGLRenderer.js +36 -62
- package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +0 -4
- package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +0 -1
- package/src/renderers/shaders/ShaderChunk/lights_lambert_pars_fragment.glsl.js +0 -2
- package/src/renderers/shaders/ShaderChunk/lights_phong_pars_fragment.glsl.js +0 -2
- package/src/renderers/shaders/ShaderChunk/lights_toon_pars_fragment.glsl.js +0 -2
- package/src/renderers/shaders/ShaderChunk/normal_fragment_begin.glsl.js +2 -4
- package/src/renderers/shaders/ShaderChunk/packing.glsl.js +8 -0
- package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk.js +3 -0
- package/src/renderers/shaders/ShaderLib/background.glsl.js +7 -2
- package/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +62 -0
- package/src/renderers/shaders/ShaderLib/cube.glsl.js +4 -6
- package/src/renderers/shaders/ShaderLib/vsm.glsl.js +0 -3
- package/src/renderers/shaders/ShaderLib.js +20 -6
- package/src/renderers/shaders/UniformsLib.js +1 -1
- package/src/renderers/shaders/UniformsUtils.js +15 -0
- package/src/renderers/webgl/WebGLAttributes.js +2 -0
- package/src/renderers/webgl/WebGLBackground.js +15 -7
- package/src/renderers/webgl/WebGLLights.js +0 -4
- package/src/renderers/webgl/WebGLMaterials.js +2 -1
- package/src/renderers/webgl/WebGLShadowMap.js +3 -1
- package/src/renderers/webgl/WebGLState.js +78 -41
- package/src/renderers/webgl/WebGLTextures.js +94 -39
- package/src/renderers/webgl/WebGLUniforms.js +152 -24
- package/src/renderers/webgl/WebGLUtils.js +1 -1
- package/src/renderers/webxr/WebXRController.js +46 -13
- package/src/renderers/webxr/WebXRManager.js +70 -2
- package/src/scenes/Scene.js +8 -0
- package/src/textures/CompressedArrayTexture.js +18 -0
- package/src/textures/Texture.js +2 -1
- package/examples/js/libs/lottie_canvas.js +0 -12751
- package/examples/js/shaders/PixelShader.js +0 -51
- package/examples/jsm/shaders/PixelShader.js +0 -44
|
@@ -45,6 +45,7 @@ export const NodeList = [
|
|
|
45
45
|
{
|
|
46
46
|
name: 'Slider',
|
|
47
47
|
icon: 'adjustments-horizontal',
|
|
48
|
+
tags: 'number',
|
|
48
49
|
nodeClass: SliderEditor
|
|
49
50
|
},
|
|
50
51
|
{
|
|
@@ -117,6 +118,7 @@ export const NodeList = [
|
|
|
117
118
|
{
|
|
118
119
|
name: 'Blend',
|
|
119
120
|
icon: 'layers-subtract',
|
|
121
|
+
tags: 'mix',
|
|
120
122
|
nodeClass: BlendEditor
|
|
121
123
|
},
|
|
122
124
|
{
|
|
@@ -133,6 +135,7 @@ export const NodeList = [
|
|
|
133
135
|
{
|
|
134
136
|
name: 'Operator',
|
|
135
137
|
icon: 'math-symbols',
|
|
138
|
+
tags: 'addition, subtration, multiplication, division',
|
|
136
139
|
nodeClass: OperatorEditor
|
|
137
140
|
},
|
|
138
141
|
{
|
|
@@ -161,12 +164,14 @@ export const NodeList = [
|
|
|
161
164
|
name: 'Trigonometry',
|
|
162
165
|
icon: 'wave-sine',
|
|
163
166
|
tip: 'Sin / Cos / Tan / ...',
|
|
167
|
+
tags: 'sin, cos, tan, asin, acos, atan, sine, cosine, tangent, arcsine, arccosine, arctangent',
|
|
164
168
|
nodeClass: TrigonometryEditor
|
|
165
169
|
},
|
|
166
170
|
{
|
|
167
171
|
name: 'Angle',
|
|
168
172
|
icon: 'angle',
|
|
169
173
|
tip: 'Degress / Radians',
|
|
174
|
+
tags: 'degress, radians',
|
|
170
175
|
nodeClass: AngleEditor
|
|
171
176
|
},
|
|
172
177
|
{
|
|
@@ -303,6 +308,13 @@ export class NodeEditor extends EventDispatcher {
|
|
|
303
308
|
this.canvas = canvas;
|
|
304
309
|
this.domElement = domElement;
|
|
305
310
|
|
|
311
|
+
this._preview = false;
|
|
312
|
+
|
|
313
|
+
this.search = null;
|
|
314
|
+
|
|
315
|
+
this.menu = null;
|
|
316
|
+
this.previewMenu = null;
|
|
317
|
+
|
|
306
318
|
this.nodesContext = null;
|
|
307
319
|
this.examplesContext = null;
|
|
308
320
|
|
|
@@ -315,21 +327,26 @@ export class NodeEditor extends EventDispatcher {
|
|
|
315
327
|
|
|
316
328
|
}
|
|
317
329
|
|
|
330
|
+
setSize( width, height ) {
|
|
331
|
+
|
|
332
|
+
this.canvas.setSize( width, height );
|
|
333
|
+
|
|
334
|
+
return this;
|
|
335
|
+
|
|
336
|
+
}
|
|
337
|
+
|
|
318
338
|
centralizeNode( node ) {
|
|
319
339
|
|
|
320
340
|
const canvas = this.canvas;
|
|
321
|
-
const canvasRect = canvas.rect;
|
|
322
|
-
|
|
323
341
|
const nodeRect = node.dom.getBoundingClientRect();
|
|
324
342
|
|
|
325
|
-
const defaultOffsetX = nodeRect.width;
|
|
326
|
-
const defaultOffsetY = nodeRect.height;
|
|
327
|
-
|
|
328
343
|
node.setPosition(
|
|
329
|
-
(
|
|
330
|
-
(
|
|
344
|
+
( ( canvas.width / 2 ) - canvas.scrollLeft ) - nodeRect.width,
|
|
345
|
+
( ( canvas.height / 2 ) - canvas.scrollTop ) - nodeRect.height
|
|
331
346
|
);
|
|
332
347
|
|
|
348
|
+
return this;
|
|
349
|
+
|
|
333
350
|
}
|
|
334
351
|
|
|
335
352
|
add( node ) {
|
|
@@ -359,9 +376,47 @@ export class NodeEditor extends EventDispatcher {
|
|
|
359
376
|
|
|
360
377
|
}
|
|
361
378
|
|
|
379
|
+
set preview( value ) {
|
|
380
|
+
|
|
381
|
+
if ( this._preview === value ) return;
|
|
382
|
+
|
|
383
|
+
if ( value ) {
|
|
384
|
+
|
|
385
|
+
this.menu.dom.remove();
|
|
386
|
+
this.canvas.dom.remove();
|
|
387
|
+
this.search.dom.remove();
|
|
388
|
+
|
|
389
|
+
this.domElement.append( this.previewMenu.dom );
|
|
390
|
+
|
|
391
|
+
} else {
|
|
392
|
+
|
|
393
|
+
this.canvas.focusSelected = false;
|
|
394
|
+
|
|
395
|
+
this.domElement.append( this.menu.dom );
|
|
396
|
+
this.domElement.append( this.canvas.dom );
|
|
397
|
+
this.domElement.append( this.search.dom );
|
|
398
|
+
|
|
399
|
+
this.previewMenu.dom.remove();
|
|
400
|
+
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
this._preview = value;
|
|
404
|
+
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
get preview() {
|
|
408
|
+
|
|
409
|
+
return this._preview;
|
|
410
|
+
|
|
411
|
+
}
|
|
412
|
+
|
|
362
413
|
newProject() {
|
|
363
414
|
|
|
364
|
-
this.canvas
|
|
415
|
+
const canvas = this.canvas;
|
|
416
|
+
canvas.clear();
|
|
417
|
+
canvas.scrollLeft = 0;
|
|
418
|
+
canvas.scrollTop = 0;
|
|
419
|
+
canvas.zoom = 1;
|
|
365
420
|
|
|
366
421
|
this.dispatchEvent( { type: 'new' } );
|
|
367
422
|
|
|
@@ -426,13 +481,23 @@ export class NodeEditor extends EventDispatcher {
|
|
|
426
481
|
_initMenu() {
|
|
427
482
|
|
|
428
483
|
const menu = new CircleMenu();
|
|
484
|
+
const previewMenu = new CircleMenu();
|
|
485
|
+
|
|
486
|
+
menu.setAlign( 'top left' );
|
|
487
|
+
previewMenu.setAlign( 'top left' );
|
|
429
488
|
|
|
489
|
+
const previewButton = new ButtonInput().setIcon( 'ti ti-3d-cube-sphere' ).setToolTip( 'Preview' );
|
|
430
490
|
const menuButton = new ButtonInput().setIcon( 'ti ti-apps' ).setToolTip( 'Add' );
|
|
431
491
|
const examplesButton = new ButtonInput().setIcon( 'ti ti-file-symlink' ).setToolTip( 'Examples' );
|
|
432
492
|
const newButton = new ButtonInput().setIcon( 'ti ti-file' ).setToolTip( 'New' );
|
|
433
493
|
const openButton = new ButtonInput().setIcon( 'ti ti-upload' ).setToolTip( 'Open' );
|
|
434
494
|
const saveButton = new ButtonInput().setIcon( 'ti ti-download' ).setToolTip( 'Save' );
|
|
435
495
|
|
|
496
|
+
const editorButton = new ButtonInput().setIcon( 'ti ti-subtask' ).setToolTip( 'Editor' );
|
|
497
|
+
|
|
498
|
+
previewButton.onClick( () => this.preview = true );
|
|
499
|
+
editorButton.onClick( () => this.preview = false );
|
|
500
|
+
|
|
436
501
|
menuButton.onClick( () => this.nodesContext.open() );
|
|
437
502
|
examplesButton.onClick( () => this.examplesContext.open() );
|
|
438
503
|
|
|
@@ -486,15 +551,19 @@ export class NodeEditor extends EventDispatcher {
|
|
|
486
551
|
|
|
487
552
|
} );
|
|
488
553
|
|
|
489
|
-
menu.add(
|
|
490
|
-
.add( menuButton )
|
|
554
|
+
menu.add( previewButton )
|
|
491
555
|
.add( newButton )
|
|
556
|
+
.add( examplesButton )
|
|
492
557
|
.add( openButton )
|
|
493
|
-
.add( saveButton )
|
|
558
|
+
.add( saveButton )
|
|
559
|
+
.add( menuButton );
|
|
560
|
+
|
|
561
|
+
previewMenu.add( editorButton );
|
|
494
562
|
|
|
495
563
|
this.domElement.append( menu.dom );
|
|
496
564
|
|
|
497
565
|
this.menu = menu;
|
|
566
|
+
this.previewMenu = previewMenu;
|
|
498
567
|
|
|
499
568
|
}
|
|
500
569
|
|
|
@@ -541,7 +610,6 @@ export class NodeEditor extends EventDispatcher {
|
|
|
541
610
|
addExample( basicContext, 'Animate UV' );
|
|
542
611
|
addExample( basicContext, 'Fake top light' );
|
|
543
612
|
addExample( basicContext, 'Oscillator color' );
|
|
544
|
-
addExample( basicContext, 'Matcap' );
|
|
545
613
|
|
|
546
614
|
addExample( advancedContext, 'Rim' );
|
|
547
615
|
|
|
@@ -571,11 +639,18 @@ export class NodeEditor extends EventDispatcher {
|
|
|
571
639
|
this.add( node );
|
|
572
640
|
|
|
573
641
|
this.centralizeNode( node );
|
|
642
|
+
this.canvas.select( node );
|
|
574
643
|
|
|
575
644
|
} );
|
|
576
645
|
|
|
577
646
|
search.add( button );
|
|
578
647
|
|
|
648
|
+
if ( item.tags !== undefined ) {
|
|
649
|
+
|
|
650
|
+
search.setTag( button, item.tags );
|
|
651
|
+
|
|
652
|
+
}
|
|
653
|
+
|
|
579
654
|
}
|
|
580
655
|
|
|
581
656
|
if ( item.children ) {
|
|
@@ -652,6 +727,7 @@ export class NodeEditor extends EventDispatcher {
|
|
|
652
727
|
this.add( node );
|
|
653
728
|
|
|
654
729
|
this.centralizeNode( node );
|
|
730
|
+
this.canvas.select( node );
|
|
655
731
|
|
|
656
732
|
} );
|
|
657
733
|
|
|
@@ -675,6 +751,8 @@ export class NodeEditor extends EventDispatcher {
|
|
|
675
751
|
|
|
676
752
|
} );
|
|
677
753
|
|
|
754
|
+
this.search = search;
|
|
755
|
+
|
|
678
756
|
this.domElement.append( search.dom );
|
|
679
757
|
|
|
680
758
|
}
|
|
@@ -698,6 +776,7 @@ export class NodeEditor extends EventDispatcher {
|
|
|
698
776
|
} else {
|
|
699
777
|
|
|
700
778
|
this.centralizeNode( node );
|
|
779
|
+
this.canvas.select( node );
|
|
701
780
|
|
|
702
781
|
}
|
|
703
782
|
|
|
@@ -34,6 +34,12 @@ export class BaseNode extends ObjectNode {
|
|
|
34
34
|
|
|
35
35
|
}
|
|
36
36
|
|
|
37
|
+
getColor() {
|
|
38
|
+
|
|
39
|
+
return ( this.getColorValueFromValue( this.value ) || '#777777' ) + 'BB';
|
|
40
|
+
|
|
41
|
+
}
|
|
42
|
+
|
|
37
43
|
serialize( data ) {
|
|
38
44
|
|
|
39
45
|
super.serialize( data );
|
|
@@ -64,15 +70,16 @@ export class BaseNode extends ObjectNode {
|
|
|
64
70
|
|
|
65
71
|
if ( value.isMaterial === true ) {
|
|
66
72
|
|
|
67
|
-
return 'forestgreen';
|
|
73
|
+
//return 'forestgreen';
|
|
74
|
+
return '#228b22';
|
|
68
75
|
|
|
69
76
|
} else if ( value.isObject3D === true ) {
|
|
70
77
|
|
|
71
|
-
return '
|
|
78
|
+
return '#ffa500';
|
|
72
79
|
|
|
73
80
|
} else if ( value.isDataFile === true ) {
|
|
74
81
|
|
|
75
|
-
return '
|
|
82
|
+
return '#00ffff';
|
|
76
83
|
|
|
77
84
|
}
|
|
78
85
|
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { ColorInput, SliderInput, LabelElement } from '../../libs/flow.module.js';
|
|
2
2
|
import { BaseNode } from '../core/BaseNode.js';
|
|
3
3
|
import { MeshBasicNodeMaterial } from 'three/nodes';
|
|
4
|
-
import { MathUtils } from 'three';
|
|
5
4
|
|
|
6
5
|
export class BasicMaterialEditor extends BaseNode {
|
|
7
6
|
|
|
@@ -65,23 +64,21 @@ export class BasicMaterialEditor extends BaseNode {
|
|
|
65
64
|
|
|
66
65
|
this.updateTransparent();
|
|
67
66
|
|
|
68
|
-
// TODO: Fix on NodeMaterial System
|
|
69
|
-
material.customProgramCacheKey = () => {
|
|
70
|
-
|
|
71
|
-
return MathUtils.generateUUID();
|
|
72
|
-
|
|
73
|
-
};
|
|
74
|
-
|
|
75
67
|
}
|
|
76
68
|
|
|
77
69
|
updateTransparent() {
|
|
78
70
|
|
|
79
71
|
const { material, opacity } = this;
|
|
80
72
|
|
|
81
|
-
|
|
73
|
+
const transparent = opacity.getLinkedObject() || material.opacity < 1 ? true : false;
|
|
74
|
+
const needsUpdate = transparent !== material.transparent;
|
|
75
|
+
|
|
76
|
+
material.transparent = transparent;
|
|
82
77
|
|
|
83
78
|
opacity.setIcon( material.transparent ? 'ti ti-layers-intersect' : 'ti ti-layers-subtract' );
|
|
84
79
|
|
|
80
|
+
if ( needsUpdate === true ) material.dispose();
|
|
81
|
+
|
|
85
82
|
}
|
|
86
83
|
|
|
87
84
|
}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { ColorInput, SliderInput, LabelElement } from '../../libs/flow.module.js';
|
|
2
2
|
import { BaseNode } from '../core/BaseNode.js';
|
|
3
3
|
import { MeshStandardNodeMaterial } from 'three/nodes';
|
|
4
|
-
import * as THREE from 'three';
|
|
5
4
|
|
|
6
5
|
export class StandardMaterialEditor extends BaseNode {
|
|
7
6
|
|
|
@@ -99,23 +98,21 @@ export class StandardMaterialEditor extends BaseNode {
|
|
|
99
98
|
|
|
100
99
|
this.updateTransparent();
|
|
101
100
|
|
|
102
|
-
// TODO: Fix on NodeMaterial System
|
|
103
|
-
material.customProgramCacheKey = () => {
|
|
104
|
-
|
|
105
|
-
return THREE.MathUtils.generateUUID();
|
|
106
|
-
|
|
107
|
-
};
|
|
108
|
-
|
|
109
101
|
}
|
|
110
102
|
|
|
111
103
|
updateTransparent() {
|
|
112
104
|
|
|
113
105
|
const { material, opacity } = this;
|
|
114
106
|
|
|
115
|
-
|
|
107
|
+
const transparent = opacity.getLinkedObject() || material.opacity < 1 ? true : false;
|
|
108
|
+
const needsUpdate = transparent !== material.transparent;
|
|
109
|
+
|
|
110
|
+
material.transparent = transparent;
|
|
116
111
|
|
|
117
112
|
opacity.setIcon( material.transparent ? 'ti ti-layers-intersect' : 'ti ti-layers-subtract' );
|
|
118
113
|
|
|
114
|
+
if ( needsUpdate === true ) material.dispose();
|
|
115
|
+
|
|
119
116
|
}
|
|
120
117
|
|
|
121
118
|
}
|
|
@@ -14,9 +14,9 @@ export class AngleEditor extends BaseNode {
|
|
|
14
14
|
super( 'Angle', 1, node, 175 );
|
|
15
15
|
|
|
16
16
|
const optionsField = new SelectInput( [
|
|
17
|
-
{ name: 'Degrees to Radians', value: MathNode.
|
|
18
|
-
{ name: 'Radians to Degrees', value: MathNode.
|
|
19
|
-
], MathNode.
|
|
17
|
+
{ name: 'Degrees to Radians', value: MathNode.RADIANS },
|
|
18
|
+
{ name: 'Radians to Degrees', value: MathNode.DEGREES }
|
|
19
|
+
], MathNode.RADIANS ).onChange( () => {
|
|
20
20
|
|
|
21
21
|
node.method = optionsField.getValue();
|
|
22
22
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { SelectInput, LabelElement } from '../../libs/flow.module.js';
|
|
1
|
+
import { SelectInput, Element, LabelElement } from '../../libs/flow.module.js';
|
|
2
2
|
import { BaseNode } from '../core/BaseNode.js';
|
|
3
3
|
import { MathNode, UniformNode } from 'three/nodes';
|
|
4
4
|
|
|
@@ -31,7 +31,7 @@ export class InvertEditor extends BaseNode {
|
|
|
31
31
|
|
|
32
32
|
} );
|
|
33
33
|
|
|
34
|
-
this.add( new
|
|
34
|
+
this.add( new Element().add( optionsField ) )
|
|
35
35
|
.add( input );
|
|
36
36
|
|
|
37
37
|
}
|
|
@@ -16,7 +16,8 @@ export class MeshEditor extends Object3DEditor {
|
|
|
16
16
|
|
|
17
17
|
this.material = null;
|
|
18
18
|
|
|
19
|
-
this.
|
|
19
|
+
this.meshMaterial = null;
|
|
20
|
+
this.defaultMeshMaterial = null;
|
|
20
21
|
|
|
21
22
|
this._initMaterial();
|
|
22
23
|
|
|
@@ -34,9 +35,9 @@ export class MeshEditor extends Object3DEditor {
|
|
|
34
35
|
|
|
35
36
|
_initMaterial() {
|
|
36
37
|
|
|
37
|
-
const
|
|
38
|
+
const material = new LabelElement( 'Material' ).setInputColor( 'forestgreen' ).setInput( 1 );
|
|
38
39
|
|
|
39
|
-
|
|
40
|
+
material.onValid( ( source, target, stage ) => {
|
|
40
41
|
|
|
41
42
|
const object = target.getObject();
|
|
42
43
|
|
|
@@ -56,13 +57,15 @@ export class MeshEditor extends Object3DEditor {
|
|
|
56
57
|
|
|
57
58
|
} ).onConnect( () => {
|
|
58
59
|
|
|
59
|
-
this.
|
|
60
|
+
this.meshMaterial = material.getLinkedObject() || this.defaultMeshMaterial;
|
|
60
61
|
|
|
61
62
|
this.update();
|
|
62
63
|
|
|
63
64
|
} );
|
|
64
65
|
|
|
65
|
-
this.add(
|
|
66
|
+
this.add( material );
|
|
67
|
+
|
|
68
|
+
this.material = material;
|
|
66
69
|
|
|
67
70
|
}
|
|
68
71
|
|
|
@@ -74,7 +77,7 @@ export class MeshEditor extends Object3DEditor {
|
|
|
74
77
|
|
|
75
78
|
if ( mesh ) {
|
|
76
79
|
|
|
77
|
-
mesh.material = this.
|
|
80
|
+
mesh.material = this.meshMaterial || this.defaultMeshMaterial;
|
|
78
81
|
|
|
79
82
|
}
|
|
80
83
|
|
|
@@ -84,7 +87,7 @@ export class MeshEditor extends Object3DEditor {
|
|
|
84
87
|
|
|
85
88
|
super.updateDefault();
|
|
86
89
|
|
|
87
|
-
this.
|
|
90
|
+
this.defaultMeshMaterial = this.mesh.material;
|
|
88
91
|
|
|
89
92
|
}
|
|
90
93
|
|
|
@@ -92,7 +95,7 @@ export class MeshEditor extends Object3DEditor {
|
|
|
92
95
|
|
|
93
96
|
super.restoreDefault();
|
|
94
97
|
|
|
95
|
-
this.mesh.material = this.
|
|
98
|
+
this.mesh.material = this.defaultMeshMaterial;
|
|
96
99
|
|
|
97
100
|
}
|
|
98
101
|
|
|
@@ -65,6 +65,8 @@ export class PreviewEditor extends BaseNode {
|
|
|
65
65
|
const previewElement = new Element();
|
|
66
66
|
previewElement.dom.style[ 'padding-top' ] = 0;
|
|
67
67
|
previewElement.dom.style[ 'padding-bottom' ] = 0;
|
|
68
|
+
previewElement.dom.style[ 'padding-left' ] = 0;
|
|
69
|
+
previewElement.dom.style[ 'padding-right' ] = '14px';
|
|
68
70
|
|
|
69
71
|
const sceneInput = new SelectInput( [
|
|
70
72
|
{ name: 'Box', value: 'box' },
|
|
@@ -86,6 +88,8 @@ export class PreviewEditor extends BaseNode {
|
|
|
86
88
|
previewElement.dom.append( canvas );
|
|
87
89
|
previewElement.setHeight( height );
|
|
88
90
|
|
|
91
|
+
previewElement.dom.addEventListener( 'wheel', e => e.stopPropagation() );
|
|
92
|
+
|
|
89
93
|
const renderer = new WebGLRenderer( {
|
|
90
94
|
canvas,
|
|
91
95
|
alpha: true
|
|
@@ -26,6 +26,7 @@ import VarNode from './core/VarNode.js';
|
|
|
26
26
|
import VaryingNode from './core/VaryingNode.js';
|
|
27
27
|
|
|
28
28
|
// accessors
|
|
29
|
+
import BitangentNode from './accessors/BitangentNode.js';
|
|
29
30
|
import BufferNode from './accessors/BufferNode.js';
|
|
30
31
|
import CameraNode from './accessors/CameraNode.js';
|
|
31
32
|
import CubeTextureNode from './accessors/CubeTextureNode.js';
|
|
@@ -41,6 +42,7 @@ import PositionNode from './accessors/PositionNode.js';
|
|
|
41
42
|
import ReferenceNode from './accessors/ReferenceNode.js';
|
|
42
43
|
import ReflectVectorNode from './accessors/ReflectVectorNode.js';
|
|
43
44
|
import SkinningNode from './accessors/SkinningNode.js';
|
|
45
|
+
import TangentNode from './accessors/TangentNode.js';
|
|
44
46
|
import TextureNode from './accessors/TextureNode.js';
|
|
45
47
|
import UVNode from './accessors/UVNode.js';
|
|
46
48
|
import UserDataNode from './accessors/UserDataNode.js';
|
|
@@ -52,11 +54,14 @@ import RangeNode from './geometry/RangeNode.js';
|
|
|
52
54
|
import ComputeNode from './gpgpu/ComputeNode.js';
|
|
53
55
|
|
|
54
56
|
// display
|
|
57
|
+
import BlendModeNode from './display/BlendModeNode.js';
|
|
55
58
|
import ColorAdjustmentNode from './display/ColorAdjustmentNode.js';
|
|
56
59
|
import ColorSpaceNode from './display/ColorSpaceNode.js';
|
|
57
60
|
import FrontFacingNode from './display/FrontFacingNode.js';
|
|
58
61
|
import NormalMapNode from './display/NormalMapNode.js';
|
|
62
|
+
import PosterizeNode from './display/PosterizeNode.js';
|
|
59
63
|
import ToneMappingNode from './display/ToneMappingNode.js';
|
|
64
|
+
import ViewportNode from './display/ViewportNode.js';
|
|
60
65
|
|
|
61
66
|
// math
|
|
62
67
|
import MathNode from './math/MathNode.js';
|
|
@@ -76,14 +81,17 @@ import AnalyticLightNode from './lighting/AnalyticLightNode.js';
|
|
|
76
81
|
// utils
|
|
77
82
|
import ArrayElementNode from './utils/ArrayElementNode.js';
|
|
78
83
|
import ConvertNode from './utils/ConvertNode.js';
|
|
84
|
+
import EquirectUVNode from './utils/EquirectUVNode.js';
|
|
79
85
|
import JoinNode from './utils/JoinNode.js';
|
|
80
86
|
import MatcapUVNode from './utils/MatcapUVNode.js';
|
|
81
87
|
import MaxMipLevelNode from './utils/MaxMipLevelNode.js';
|
|
82
88
|
import OscNode from './utils/OscNode.js';
|
|
89
|
+
import RemapNode from './utils/RemapNode.js';
|
|
83
90
|
import RotateUVNode from './utils/RotateUVNode.js';
|
|
84
91
|
import SplitNode from './utils/SplitNode.js';
|
|
85
92
|
import SpriteSheetUVNode from './utils/SpriteSheetUVNode.js';
|
|
86
93
|
import TimerNode from './utils/TimerNode.js';
|
|
94
|
+
import TriplanarTexturesNode from './utils/TriplanarTexturesNode.js';
|
|
87
95
|
|
|
88
96
|
// loaders
|
|
89
97
|
import NodeLoader from './loaders/NodeLoader.js';
|
|
@@ -110,8 +118,11 @@ export * from './materials/Materials.js';
|
|
|
110
118
|
// shader node
|
|
111
119
|
export * from './shadernode/ShaderNodeElements.js';
|
|
112
120
|
|
|
121
|
+
// extensions
|
|
122
|
+
export * from './materialx/MaterialXNodes.js';
|
|
123
|
+
|
|
113
124
|
// shader stages
|
|
114
|
-
export { defaultShaderStages }
|
|
125
|
+
export { defaultShaderStages } from './core/NodeBuilder.js';
|
|
115
126
|
|
|
116
127
|
const nodeLib = {
|
|
117
128
|
// core
|
|
@@ -148,6 +159,7 @@ const nodeLib = {
|
|
|
148
159
|
ComputeNode,
|
|
149
160
|
|
|
150
161
|
// accessors
|
|
162
|
+
BitangentNode,
|
|
151
163
|
BufferNode,
|
|
152
164
|
CameraNode,
|
|
153
165
|
CubeTextureNode,
|
|
@@ -163,16 +175,20 @@ const nodeLib = {
|
|
|
163
175
|
ReferenceNode,
|
|
164
176
|
ReflectVectorNode,
|
|
165
177
|
SkinningNode,
|
|
178
|
+
TangentNode,
|
|
166
179
|
TextureNode,
|
|
167
180
|
UVNode,
|
|
168
181
|
UserDataNode,
|
|
169
182
|
|
|
170
183
|
// display
|
|
184
|
+
BlendModeNode,
|
|
171
185
|
ColorAdjustmentNode,
|
|
172
186
|
ColorSpaceNode,
|
|
173
187
|
FrontFacingNode,
|
|
174
188
|
NormalMapNode,
|
|
189
|
+
PosterizeNode,
|
|
175
190
|
ToneMappingNode,
|
|
191
|
+
ViewportNode,
|
|
176
192
|
|
|
177
193
|
// math
|
|
178
194
|
MathNode,
|
|
@@ -192,14 +208,17 @@ const nodeLib = {
|
|
|
192
208
|
// utils
|
|
193
209
|
ArrayElementNode,
|
|
194
210
|
ConvertNode,
|
|
211
|
+
EquirectUVNode,
|
|
195
212
|
JoinNode,
|
|
196
213
|
MatcapUVNode,
|
|
197
214
|
MaxMipLevelNode,
|
|
198
215
|
OscNode,
|
|
216
|
+
RemapNode,
|
|
199
217
|
RotateUVNode,
|
|
200
218
|
SplitNode,
|
|
201
219
|
SpriteSheetUVNode,
|
|
202
220
|
TimerNode,
|
|
221
|
+
TriplanarTexturesNode,
|
|
203
222
|
|
|
204
223
|
// procedural
|
|
205
224
|
CheckerNode,
|
|
@@ -215,7 +234,7 @@ const nodeLib = {
|
|
|
215
234
|
|
|
216
235
|
// parsers
|
|
217
236
|
WGSLNodeParser,
|
|
218
|
-
GLSLNodeParser
|
|
237
|
+
GLSLNodeParser
|
|
219
238
|
|
|
220
239
|
};
|
|
221
240
|
|
|
@@ -260,6 +279,7 @@ export {
|
|
|
260
279
|
ComputeNode,
|
|
261
280
|
|
|
262
281
|
// accessors
|
|
282
|
+
BitangentNode,
|
|
263
283
|
BufferNode,
|
|
264
284
|
CameraNode,
|
|
265
285
|
CubeTextureNode,
|
|
@@ -275,16 +295,20 @@ export {
|
|
|
275
295
|
ReferenceNode,
|
|
276
296
|
ReflectVectorNode,
|
|
277
297
|
SkinningNode,
|
|
298
|
+
TangentNode,
|
|
278
299
|
TextureNode,
|
|
279
300
|
UVNode,
|
|
280
301
|
UserDataNode,
|
|
281
302
|
|
|
282
303
|
// display
|
|
304
|
+
BlendModeNode,
|
|
283
305
|
ColorAdjustmentNode,
|
|
284
306
|
ColorSpaceNode,
|
|
285
307
|
FrontFacingNode,
|
|
286
308
|
NormalMapNode,
|
|
309
|
+
PosterizeNode,
|
|
287
310
|
ToneMappingNode,
|
|
311
|
+
ViewportNode,
|
|
288
312
|
|
|
289
313
|
// math
|
|
290
314
|
MathNode,
|
|
@@ -304,14 +328,17 @@ export {
|
|
|
304
328
|
// utils
|
|
305
329
|
ArrayElementNode,
|
|
306
330
|
ConvertNode,
|
|
331
|
+
EquirectUVNode,
|
|
307
332
|
JoinNode,
|
|
308
333
|
MatcapUVNode,
|
|
309
334
|
MaxMipLevelNode,
|
|
310
335
|
OscNode,
|
|
336
|
+
RemapNode,
|
|
311
337
|
RotateUVNode,
|
|
312
338
|
SplitNode,
|
|
313
339
|
SpriteSheetUVNode,
|
|
314
340
|
TimerNode,
|
|
341
|
+
TriplanarTexturesNode,
|
|
315
342
|
|
|
316
343
|
// procedural
|
|
317
344
|
CheckerNode,
|
|
@@ -327,5 +354,5 @@ export {
|
|
|
327
354
|
|
|
328
355
|
// parsers
|
|
329
356
|
WGSLNodeParser,
|
|
330
|
-
GLSLNodeParser
|
|
357
|
+
GLSLNodeParser
|
|
331
358
|
};
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import Node from '../core/Node.js';
|
|
2
|
+
import VaryingNode from '../core/VaryingNode.js';
|
|
3
|
+
import OperatorNode from '../math/OperatorNode.js';
|
|
4
|
+
import MathNode from '../math/MathNode.js';
|
|
5
|
+
import SplitNode from '../utils/SplitNode.js';
|
|
6
|
+
import NormalNode from './NormalNode.js';
|
|
7
|
+
import TangentNode from './TangentNode.js';
|
|
8
|
+
|
|
9
|
+
class BitangentNode extends Node {
|
|
10
|
+
|
|
11
|
+
static GEOMETRY = 'geometry';
|
|
12
|
+
static LOCAL = 'local';
|
|
13
|
+
static VIEW = 'view';
|
|
14
|
+
static WORLD = 'world';
|
|
15
|
+
|
|
16
|
+
constructor( scope = BitangentNode.LOCAL ) {
|
|
17
|
+
|
|
18
|
+
super( 'vec3' );
|
|
19
|
+
|
|
20
|
+
this.scope = scope;
|
|
21
|
+
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
getHash( /*builder*/ ) {
|
|
25
|
+
|
|
26
|
+
return `bitangent-${this.scope}`;
|
|
27
|
+
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
generate( builder ) {
|
|
31
|
+
|
|
32
|
+
const scope = this.scope;
|
|
33
|
+
|
|
34
|
+
const crossNormalTangent = new MathNode( MathNode.CROSS, new NormalNode( scope ), new TangentNode( scope ) );
|
|
35
|
+
const tangentW = new SplitNode( new TangentNode( TangentNode.GEOMETRY ), 'w' );
|
|
36
|
+
const vertexNode = new SplitNode( new OperatorNode( '*', crossNormalTangent, tangentW ), 'xyz' );
|
|
37
|
+
|
|
38
|
+
const outputNode = new MathNode( MathNode.NORMALIZE, new VaryingNode( vertexNode ) );
|
|
39
|
+
|
|
40
|
+
return outputNode.build( builder, this.getNodeType( builder ) );
|
|
41
|
+
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
serialize( data ) {
|
|
45
|
+
|
|
46
|
+
super.serialize( data );
|
|
47
|
+
|
|
48
|
+
data.scope = this.scope;
|
|
49
|
+
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
deserialize( data ) {
|
|
53
|
+
|
|
54
|
+
super.deserialize( data );
|
|
55
|
+
|
|
56
|
+
this.scope = data.scope;
|
|
57
|
+
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
export default BitangentNode;
|