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
|
@@ -14,6 +14,7 @@ import VarNode from '../core/VarNode.js';
|
|
|
14
14
|
import VaryingNode from '../core/VaryingNode.js';
|
|
15
15
|
|
|
16
16
|
// accessors
|
|
17
|
+
import BitangentNode from '../accessors/BitangentNode.js';
|
|
17
18
|
import BufferNode from '../accessors/BufferNode.js';
|
|
18
19
|
import CameraNode from '../accessors/CameraNode.js';
|
|
19
20
|
import MaterialNode from '../accessors/MaterialNode.js';
|
|
@@ -25,6 +26,7 @@ import PointUVNode from '../accessors/PointUVNode.js';
|
|
|
25
26
|
import PositionNode from '../accessors/PositionNode.js';
|
|
26
27
|
import ReferenceNode from '../accessors/ReferenceNode.js';
|
|
27
28
|
import StorageBufferNode from '../accessors/StorageBufferNode.js';
|
|
29
|
+
import TangentNode from '../accessors/TangentNode.js';
|
|
28
30
|
import TextureNode from '../accessors/TextureNode.js';
|
|
29
31
|
import UserDataNode from '../accessors/UserDataNode.js';
|
|
30
32
|
import UVNode from '../accessors/UVNode.js';
|
|
@@ -114,6 +116,8 @@ export const fn = ( code, includes ) => func( code, includes ).call;
|
|
|
114
116
|
export const attribute = ( name, nodeType ) => nodeObject( new AttributeNode( name, nodeType ) );
|
|
115
117
|
export const property = ( name, nodeOrType ) => nodeObject( new PropertyNode( name, getConstNodeType( nodeOrType ) ) );
|
|
116
118
|
|
|
119
|
+
export const convert = ( node, types ) => nodeObject( new ConvertNode( nodeObject( node ), types ) );
|
|
120
|
+
|
|
117
121
|
export const bypass = nodeProxy( BypassNode );
|
|
118
122
|
export const code = nodeProxy( CodeNode );
|
|
119
123
|
export const context = nodeProxy( ContextNode );
|
|
@@ -124,65 +128,6 @@ export const label = nodeProxy( VarNode );
|
|
|
124
128
|
export const temp = label;
|
|
125
129
|
export const varying = nodeProxy( VaryingNode );
|
|
126
130
|
|
|
127
|
-
// accesors
|
|
128
|
-
|
|
129
|
-
export const buffer = ( value, nodeOrType, count ) => nodeObject( new BufferNode( value, getConstNodeType( nodeOrType ), count ) );
|
|
130
|
-
export const storage = ( value, nodeOrType, count ) => nodeObject( new StorageBufferNode( value, getConstNodeType( nodeOrType ), count ) );
|
|
131
|
-
|
|
132
|
-
export const cameraProjectionMatrix = nodeImmutable( CameraNode, CameraNode.PROJECTION_MATRIX );
|
|
133
|
-
export const cameraViewMatrix = nodeImmutable( CameraNode, CameraNode.VIEW_MATRIX );
|
|
134
|
-
export const cameraNormalMatrix = nodeImmutable( CameraNode, CameraNode.NORMAL_MATRIX );
|
|
135
|
-
export const cameraWorldMatrix = nodeImmutable( CameraNode, CameraNode.WORLD_MATRIX );
|
|
136
|
-
export const cameraPosition = nodeImmutable( CameraNode, CameraNode.POSITION );
|
|
137
|
-
|
|
138
|
-
export const materialAlphaTest = nodeImmutable( MaterialNode, MaterialNode.ALPHA_TEST );
|
|
139
|
-
export const materialColor = nodeImmutable( MaterialNode, MaterialNode.COLOR );
|
|
140
|
-
export const materialEmissive = nodeImmutable( MaterialNode, MaterialNode.EMISSIVE );
|
|
141
|
-
export const materialOpacity = nodeImmutable( MaterialNode, MaterialNode.OPACITY );
|
|
142
|
-
//export const materialSpecular = nodeImmutable( MaterialNode, MaterialNode.SPECULAR );
|
|
143
|
-
export const materialRoughness = nodeImmutable( MaterialNode, MaterialNode.ROUGHNESS );
|
|
144
|
-
export const materialMetalness = nodeImmutable( MaterialNode, MaterialNode.METALNESS );
|
|
145
|
-
export const materialRotation = nodeImmutable( MaterialNode, MaterialNode.ROTATION );
|
|
146
|
-
|
|
147
|
-
export const diffuseColor = nodeImmutable( PropertyNode, 'DiffuseColor', 'vec4' );
|
|
148
|
-
export const roughness = nodeImmutable( PropertyNode, 'Roughness', 'float' );
|
|
149
|
-
export const metalness = nodeImmutable( PropertyNode, 'Metalness', 'float' );
|
|
150
|
-
export const alphaTest = nodeImmutable( PropertyNode, 'AlphaTest', 'float' );
|
|
151
|
-
export const specularColor = nodeImmutable( PropertyNode, 'SpecularColor', 'color' );
|
|
152
|
-
|
|
153
|
-
export const reference = ( name, nodeOrType, object ) => nodeObject( new ReferenceNode( name, getConstNodeType( nodeOrType ), object ) );
|
|
154
|
-
export const materialReference = ( name, nodeOrType, material ) => nodeObject( new MaterialReferenceNode( name, getConstNodeType( nodeOrType ), material ) );
|
|
155
|
-
export const userData = ( name, inputType, userData ) => nodeObject( new UserDataNode( name, inputType, userData ) );
|
|
156
|
-
|
|
157
|
-
export const modelViewProjection = nodeProxy( ModelViewProjectionNode );
|
|
158
|
-
|
|
159
|
-
export const normalGeometry = nodeImmutable( NormalNode, NormalNode.GEOMETRY );
|
|
160
|
-
export const normalLocal = nodeImmutable( NormalNode, NormalNode.LOCAL );
|
|
161
|
-
export const normalWorld = nodeImmutable( NormalNode, NormalNode.WORLD );
|
|
162
|
-
export const normalView = nodeImmutable( NormalNode, NormalNode.VIEW );
|
|
163
|
-
export const transformedNormalView = nodeImmutable( VarNode, normalView, 'TransformedNormalView' );
|
|
164
|
-
|
|
165
|
-
export const modelViewMatrix = nodeImmutable( ModelNode, ModelNode.VIEW_MATRIX );
|
|
166
|
-
export const modelNormalMatrix = nodeImmutable( ModelNode, ModelNode.NORMAL_MATRIX );
|
|
167
|
-
export const modelWorldMatrix = nodeImmutable( ModelNode, ModelNode.WORLD_MATRIX );
|
|
168
|
-
export const modelPosition = nodeImmutable( ModelNode, ModelNode.POSITION );
|
|
169
|
-
export const modelViewPosition = nodeImmutable( ModelNode, ModelNode.VIEW_POSITION );
|
|
170
|
-
|
|
171
|
-
export const positionGeometry = nodeImmutable( PositionNode, PositionNode.GEOMETRY );
|
|
172
|
-
export const positionLocal = nodeImmutable( PositionNode, PositionNode.LOCAL );
|
|
173
|
-
export const positionWorld = nodeImmutable( PositionNode, PositionNode.WORLD );
|
|
174
|
-
export const positionView = nodeImmutable( PositionNode, PositionNode.VIEW );
|
|
175
|
-
export const positionViewDirection = nodeImmutable( PositionNode, PositionNode.VIEW_DIRECTION );
|
|
176
|
-
|
|
177
|
-
export const texture = nodeProxy( TextureNode );
|
|
178
|
-
export const sampler = ( texture ) => nodeObject( new ConvertNode( texture.isNode === true ? texture : new TextureNode( texture ), 'sampler' ) );
|
|
179
|
-
export const uv = ( ...params ) => nodeObject( new UVNode( ...params ) );
|
|
180
|
-
export const pointUV = nodeImmutable( PointUVNode );
|
|
181
|
-
|
|
182
|
-
// gpgpu
|
|
183
|
-
|
|
184
|
-
export const compute = ( node, count, workgroupSize ) => nodeObject( new ComputeNode( nodeObject( node ), count, workgroupSize ) );
|
|
185
|
-
|
|
186
131
|
// math
|
|
187
132
|
|
|
188
133
|
export const EPSILON = float( 1e-6 );
|
|
@@ -235,8 +180,8 @@ export const negate = nodeProxy( MathNode, MathNode.NEGATE );
|
|
|
235
180
|
export const invert = nodeProxy( MathNode, MathNode.INVERT );
|
|
236
181
|
export const dFdx = nodeProxy( MathNode, MathNode.DFDX );
|
|
237
182
|
export const dFdy = nodeProxy( MathNode, MathNode.DFDY );
|
|
238
|
-
export const saturate = nodeProxy( MathNode, MathNode.SATURATE );
|
|
239
183
|
export const round = nodeProxy( MathNode, MathNode.ROUND );
|
|
184
|
+
export const reciprocal = nodeProxy( MathNode, MathNode.RECIPROCAL );
|
|
240
185
|
|
|
241
186
|
export const atan2 = nodeProxy( MathNode, MathNode.ATAN2 );
|
|
242
187
|
export const min = nodeProxy( MathNode, MathNode.MIN );
|
|
@@ -254,11 +199,86 @@ export const pow4 = nodeProxy( MathNode, MathNode.POW, 4 );
|
|
|
254
199
|
export const transformDirection = nodeProxy( MathNode, MathNode.TRANSFORM_DIRECTION );
|
|
255
200
|
|
|
256
201
|
export const mix = nodeProxy( MathNode, MathNode.MIX );
|
|
257
|
-
export const clamp =
|
|
202
|
+
export const clamp = ( value, low = 0, high = 1 ) => nodeObject( new MathNode( MathNode.CLAMP, nodeObject( value ), nodeObject( low ), nodeObject( high ) ) );
|
|
258
203
|
export const refract = nodeProxy( MathNode, MathNode.REFRACT );
|
|
259
204
|
export const smoothstep = nodeProxy( MathNode, MathNode.SMOOTHSTEP );
|
|
260
205
|
export const faceforward = nodeProxy( MathNode, MathNode.FACEFORWARD );
|
|
261
206
|
|
|
207
|
+
// accessors
|
|
208
|
+
|
|
209
|
+
export const buffer = ( value, nodeOrType, count ) => nodeObject( new BufferNode( value, getConstNodeType( nodeOrType ), count ) );
|
|
210
|
+
export const storage = ( value, nodeOrType, count ) => nodeObject( new StorageBufferNode( value, getConstNodeType( nodeOrType ), count ) );
|
|
211
|
+
|
|
212
|
+
export const cameraProjectionMatrix = nodeImmutable( CameraNode, CameraNode.PROJECTION_MATRIX );
|
|
213
|
+
export const cameraViewMatrix = nodeImmutable( CameraNode, CameraNode.VIEW_MATRIX );
|
|
214
|
+
export const cameraNormalMatrix = nodeImmutable( CameraNode, CameraNode.NORMAL_MATRIX );
|
|
215
|
+
export const cameraWorldMatrix = nodeImmutable( CameraNode, CameraNode.WORLD_MATRIX );
|
|
216
|
+
export const cameraPosition = nodeImmutable( CameraNode, CameraNode.POSITION );
|
|
217
|
+
|
|
218
|
+
export const materialAlphaTest = nodeImmutable( MaterialNode, MaterialNode.ALPHA_TEST );
|
|
219
|
+
export const materialColor = nodeImmutable( MaterialNode, MaterialNode.COLOR );
|
|
220
|
+
export const materialEmissive = nodeImmutable( MaterialNode, MaterialNode.EMISSIVE );
|
|
221
|
+
export const materialOpacity = nodeImmutable( MaterialNode, MaterialNode.OPACITY );
|
|
222
|
+
//export const materialSpecular = nodeImmutable( MaterialNode, MaterialNode.SPECULAR );
|
|
223
|
+
export const materialRoughness = nodeImmutable( MaterialNode, MaterialNode.ROUGHNESS );
|
|
224
|
+
export const materialMetalness = nodeImmutable( MaterialNode, MaterialNode.METALNESS );
|
|
225
|
+
export const materialRotation = nodeImmutable( MaterialNode, MaterialNode.ROTATION );
|
|
226
|
+
|
|
227
|
+
export const diffuseColor = nodeImmutable( PropertyNode, 'DiffuseColor', 'vec4' );
|
|
228
|
+
export const roughness = nodeImmutable( PropertyNode, 'Roughness', 'float' );
|
|
229
|
+
export const metalness = nodeImmutable( PropertyNode, 'Metalness', 'float' );
|
|
230
|
+
export const alphaTest = nodeImmutable( PropertyNode, 'AlphaTest', 'float' );
|
|
231
|
+
export const specularColor = nodeImmutable( PropertyNode, 'SpecularColor', 'color' );
|
|
232
|
+
|
|
233
|
+
export const reference = ( name, nodeOrType, object ) => nodeObject( new ReferenceNode( name, getConstNodeType( nodeOrType ), object ) );
|
|
234
|
+
export const materialReference = ( name, nodeOrType, material ) => nodeObject( new MaterialReferenceNode( name, getConstNodeType( nodeOrType ), material ) );
|
|
235
|
+
export const userData = ( name, inputType, userData ) => nodeObject( new UserDataNode( name, inputType, userData ) );
|
|
236
|
+
|
|
237
|
+
export const modelViewProjection = nodeProxy( ModelViewProjectionNode );
|
|
238
|
+
|
|
239
|
+
export const normalGeometry = nodeImmutable( NormalNode, NormalNode.GEOMETRY );
|
|
240
|
+
export const normalLocal = nodeImmutable( NormalNode, NormalNode.LOCAL );
|
|
241
|
+
export const normalView = nodeImmutable( NormalNode, NormalNode.VIEW );
|
|
242
|
+
export const normalWorld = nodeImmutable( NormalNode, NormalNode.WORLD );
|
|
243
|
+
export const transformedNormalView = nodeImmutable( VarNode, normalView, 'TransformedNormalView' );
|
|
244
|
+
export const transformedNormalWorld = normalize( transformDirection( transformedNormalView, cameraViewMatrix ) );
|
|
245
|
+
|
|
246
|
+
export const tangentGeometry = nodeImmutable( TangentNode, TangentNode.GEOMETRY );
|
|
247
|
+
export const tangentLocal = nodeImmutable( TangentNode, TangentNode.LOCAL );
|
|
248
|
+
export const tangentView = nodeImmutable( TangentNode, TangentNode.VIEW );
|
|
249
|
+
export const tangentWorld = nodeImmutable( TangentNode, TangentNode.WORLD );
|
|
250
|
+
export const transformedTangentView = nodeImmutable( VarNode, tangentView, 'TransformedTangentView' );
|
|
251
|
+
export const transformedTangentWorld = normalize( transformDirection( transformedTangentView, cameraViewMatrix ) );
|
|
252
|
+
|
|
253
|
+
export const bitangentGeometry = nodeImmutable( BitangentNode, BitangentNode.GEOMETRY );
|
|
254
|
+
export const bitangentLocal = nodeImmutable( BitangentNode, BitangentNode.LOCAL );
|
|
255
|
+
export const bitangentView = nodeImmutable( BitangentNode, BitangentNode.VIEW );
|
|
256
|
+
export const bitangentWorld = nodeImmutable( BitangentNode, BitangentNode.WORLD );
|
|
257
|
+
export const transformedBitangentView = normalize( mul( cross( transformedNormalView, transformedTangentView ), tangentGeometry.w ) );
|
|
258
|
+
export const transformedBitangentWorld = normalize( transformDirection( transformedBitangentView, cameraViewMatrix ) );
|
|
259
|
+
|
|
260
|
+
export const modelViewMatrix = nodeImmutable( ModelNode, ModelNode.VIEW_MATRIX );
|
|
261
|
+
export const modelNormalMatrix = nodeImmutable( ModelNode, ModelNode.NORMAL_MATRIX );
|
|
262
|
+
export const modelWorldMatrix = nodeImmutable( ModelNode, ModelNode.WORLD_MATRIX );
|
|
263
|
+
export const modelPosition = nodeImmutable( ModelNode, ModelNode.POSITION );
|
|
264
|
+
export const modelViewPosition = nodeImmutable( ModelNode, ModelNode.VIEW_POSITION );
|
|
265
|
+
|
|
266
|
+
export const positionGeometry = nodeImmutable( PositionNode, PositionNode.GEOMETRY );
|
|
267
|
+
export const positionLocal = nodeImmutable( PositionNode, PositionNode.LOCAL );
|
|
268
|
+
export const positionWorld = nodeImmutable( PositionNode, PositionNode.WORLD );
|
|
269
|
+
export const positionWorldDirection = nodeImmutable( PositionNode, PositionNode.WORLD_DIRECTION );
|
|
270
|
+
export const positionView = nodeImmutable( PositionNode, PositionNode.VIEW );
|
|
271
|
+
export const positionViewDirection = nodeImmutable( PositionNode, PositionNode.VIEW_DIRECTION );
|
|
272
|
+
|
|
273
|
+
export const texture = nodeProxy( TextureNode );
|
|
274
|
+
export const sampler = ( texture ) => nodeObject( new ConvertNode( texture.isNode === true ? texture : new TextureNode( texture ), 'sampler' ) );
|
|
275
|
+
export const uv = ( ...params ) => nodeObject( new UVNode( ...params ) );
|
|
276
|
+
export const pointUV = nodeImmutable( PointUVNode );
|
|
277
|
+
|
|
278
|
+
// gpgpu
|
|
279
|
+
|
|
280
|
+
export const compute = ( node, count, workgroupSize ) => nodeObject( new ComputeNode( nodeObject( node ), count, workgroupSize ) );
|
|
281
|
+
|
|
262
282
|
// display
|
|
263
283
|
|
|
264
284
|
export const frontFacing = nodeImmutable( FrontFacingNode );
|
|
@@ -273,5 +293,9 @@ export const element = nodeProxy( ArrayElementNode );
|
|
|
273
293
|
|
|
274
294
|
// miscellaneous
|
|
275
295
|
|
|
276
|
-
export const
|
|
277
|
-
|
|
296
|
+
export const lumaCoeffs = vec3( 0.2125, 0.7154, 0.0721 );
|
|
297
|
+
|
|
298
|
+
export const luminance = ( color, luma = lumaCoeffs ) => dot( color, luma );
|
|
299
|
+
export const difference = ( a, b ) => abs( sub( a, b ) );
|
|
300
|
+
export const dotNV = clamp( dot( transformedNormalView, positionViewDirection ) );
|
|
301
|
+
export const TBNViewMatrix = mat3( tangentView, bitangentView, normalView );
|
|
@@ -5,10 +5,13 @@ import ReflectVectorNode from '../accessors/ReflectVectorNode.js';
|
|
|
5
5
|
import SkinningNode from '../accessors/SkinningNode.js';
|
|
6
6
|
|
|
7
7
|
// display
|
|
8
|
+
import BlendModeNode from '../display/BlendModeNode.js';
|
|
8
9
|
import ColorAdjustmentNode from '../display/ColorAdjustmentNode.js';
|
|
9
10
|
import ColorSpaceNode from '../display/ColorSpaceNode.js';
|
|
10
11
|
import NormalMapNode from '../display/NormalMapNode.js';
|
|
12
|
+
import PosterizeNode from '../display/PosterizeNode.js';
|
|
11
13
|
import ToneMappingNode from '../display/ToneMappingNode.js';
|
|
14
|
+
import ViewportNode from '../display/ViewportNode.js';
|
|
12
15
|
|
|
13
16
|
// lighting
|
|
14
17
|
import LightsNode from '../lighting/LightsNode.js';
|
|
@@ -16,12 +19,15 @@ import LightsNode from '../lighting/LightsNode.js';
|
|
|
16
19
|
import LightingContextNode from '../lighting/LightingContextNode.js';
|
|
17
20
|
|
|
18
21
|
// utils
|
|
22
|
+
import EquirectUVNode from '../utils/EquirectUVNode.js';
|
|
19
23
|
import MatcapUVNode from '../utils/MatcapUVNode.js';
|
|
20
24
|
import MaxMipLevelNode from '../utils/MaxMipLevelNode.js';
|
|
21
25
|
import OscNode from '../utils/OscNode.js';
|
|
26
|
+
import RemapNode from '../utils/RemapNode.js';
|
|
22
27
|
import RotateUVNode from '../utils/RotateUVNode.js';
|
|
23
28
|
import SpriteSheetUVNode from '../utils/SpriteSheetUVNode.js';
|
|
24
29
|
import TimerNode from '../utils/TimerNode.js';
|
|
30
|
+
import TriplanarTexturesNode from '../utils/TriplanarTexturesNode.js';
|
|
25
31
|
|
|
26
32
|
// geometry
|
|
27
33
|
import RangeNode from '../geometry/RangeNode.js';
|
|
@@ -72,6 +78,11 @@ export const skinning = nodeProxy( SkinningNode );
|
|
|
72
78
|
|
|
73
79
|
// display
|
|
74
80
|
|
|
81
|
+
export const burn = nodeProxy( BlendModeNode, BlendModeNode.BURN );
|
|
82
|
+
export const dodge = nodeProxy( BlendModeNode, BlendModeNode.DODGE );
|
|
83
|
+
export const overlay = nodeProxy( BlendModeNode, BlendModeNode.OVERLAY );
|
|
84
|
+
export const screen = nodeProxy( BlendModeNode, BlendModeNode.SCREEN );
|
|
85
|
+
|
|
75
86
|
export const saturation = nodeProxy( ColorAdjustmentNode, ColorAdjustmentNode.SATURATION );
|
|
76
87
|
export const vibrance = nodeProxy( ColorAdjustmentNode, ColorAdjustmentNode.VIBRANCE );
|
|
77
88
|
export const hue = nodeProxy( ColorAdjustmentNode, ColorAdjustmentNode.HUE );
|
|
@@ -80,6 +91,15 @@ export const colorSpace = ( node, encoding ) => nodeObject( new ColorSpaceNode(
|
|
|
80
91
|
export const normalMap = nodeProxy( NormalMapNode );
|
|
81
92
|
export const toneMapping = ( mapping, exposure, color ) => nodeObject( new ToneMappingNode( mapping, nodeObject( exposure ), nodeObject( color ) ) );
|
|
82
93
|
|
|
94
|
+
export const posterize = nodeProxy( PosterizeNode );
|
|
95
|
+
|
|
96
|
+
export const viewportCoordinate = nodeImmutable( ViewportNode, ViewportNode.COORDINATE );
|
|
97
|
+
export const viewportResolution = nodeImmutable( ViewportNode, ViewportNode.RESOLUTION );
|
|
98
|
+
export const viewportTopLeft = nodeImmutable( ViewportNode, ViewportNode.TOP_LEFT );
|
|
99
|
+
export const viewportBottomLeft = nodeImmutable( ViewportNode, ViewportNode.BOTTOM_LEFT );
|
|
100
|
+
export const viewportTopRight = nodeImmutable( ViewportNode, ViewportNode.TOP_RIGHT );
|
|
101
|
+
export const viewportBottomRight = nodeImmutable( ViewportNode, ViewportNode.BOTTOM_RIGHT );
|
|
102
|
+
|
|
83
103
|
// lighting
|
|
84
104
|
|
|
85
105
|
//export const lighting = nodeProxy( LightingNode ); // abstract
|
|
@@ -90,6 +110,8 @@ export const lightingContext = nodeProxy( LightingContextNode );
|
|
|
90
110
|
// utils
|
|
91
111
|
|
|
92
112
|
export const matcapUV = nodeImmutable( MatcapUVNode );
|
|
113
|
+
export const equirectUV = nodeProxy( EquirectUVNode );
|
|
114
|
+
|
|
93
115
|
export const maxMipLevel = nodeProxy( MaxMipLevelNode );
|
|
94
116
|
|
|
95
117
|
export const oscSine = nodeProxy( OscNode, OscNode.SINE );
|
|
@@ -97,6 +119,9 @@ export const oscSquare = nodeProxy( OscNode, OscNode.SQUARE );
|
|
|
97
119
|
export const oscTriangle = nodeProxy( OscNode, OscNode.TRIANGLE );
|
|
98
120
|
export const oscSawtooth = nodeProxy( OscNode, OscNode.SAWTOOTH );
|
|
99
121
|
|
|
122
|
+
export const remap = nodeProxy( RemapNode, null, null, { doClamp: false } );
|
|
123
|
+
export const remapClamp = nodeProxy( RemapNode );
|
|
124
|
+
|
|
100
125
|
export const rotateUV = nodeProxy( RotateUVNode );
|
|
101
126
|
|
|
102
127
|
export const spritesheetUV = nodeProxy( SpriteSheetUVNode );
|
|
@@ -105,6 +130,10 @@ export const spritesheetUV = nodeProxy( SpriteSheetUVNode );
|
|
|
105
130
|
export const timerLocal = ( timeScale, value = 0 ) => nodeObject( new TimerNode( TimerNode.LOCAL, timeScale, value ) );
|
|
106
131
|
export const timerGlobal = ( timeScale, value = 0 ) => nodeObject( new TimerNode( TimerNode.GLOBAL, timeScale, value ) );
|
|
107
132
|
export const timerDelta = ( timeScale, value = 0 ) => nodeObject( new TimerNode( TimerNode.DELTA, timeScale, value ) );
|
|
133
|
+
export const frameId = nodeImmutable( TimerNode, TimerNode.FRAME );
|
|
134
|
+
|
|
135
|
+
export const triplanarTextures = nodeProxy( TriplanarTexturesNode );
|
|
136
|
+
export const triplanarTexture = ( texture, ...params ) => triplanarTextures( texture, texture, texture, ...params );
|
|
108
137
|
|
|
109
138
|
// geometry
|
|
110
139
|
|
|
@@ -11,31 +11,32 @@ class ConvertNode extends Node {
|
|
|
11
11
|
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
-
getNodeType(
|
|
14
|
+
getNodeType( builder ) {
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
const requestType = this.node.getNodeType( builder );
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
let convertTo = null;
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
for ( const overloadingType of this.convertTo.split( '|' ) ) {
|
|
21
21
|
|
|
22
|
-
|
|
23
|
-
const node = this.node;
|
|
24
|
-
const type = this.getNodeType( builder );
|
|
22
|
+
if ( convertTo === null || builder.getTypeLength( requestType ) === builder.getTypeLength( overloadingType ) ) {
|
|
25
23
|
|
|
26
|
-
|
|
24
|
+
convertTo = overloadingType;
|
|
27
25
|
|
|
28
|
-
|
|
26
|
+
}
|
|
29
27
|
|
|
30
|
-
|
|
28
|
+
}
|
|
31
29
|
|
|
32
|
-
|
|
30
|
+
return convertTo;
|
|
33
31
|
|
|
34
|
-
|
|
32
|
+
}
|
|
35
33
|
|
|
36
|
-
|
|
34
|
+
generate( builder, output ) {
|
|
37
35
|
|
|
38
|
-
|
|
36
|
+
const node = this.node;
|
|
37
|
+
const type = this.getNodeType( builder );
|
|
38
|
+
|
|
39
|
+
const snippet = node.build( builder, type );
|
|
39
40
|
|
|
40
41
|
return builder.format( snippet, type, output );
|
|
41
42
|
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import TempNode from '../core/TempNode.js';
|
|
2
|
+
import { nodeObject, vec2, add, mul, atan2, asin, clamp, positionWorldDirection } from '../shadernode/ShaderNodeElements.js';
|
|
3
|
+
|
|
4
|
+
class EquirectUVNode extends TempNode {
|
|
5
|
+
|
|
6
|
+
constructor( dirNode = positionWorldDirection ) {
|
|
7
|
+
|
|
8
|
+
super( 'vec2' );
|
|
9
|
+
|
|
10
|
+
this.dirNode = dirNode;
|
|
11
|
+
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
construct() {
|
|
15
|
+
|
|
16
|
+
const dir = nodeObject( this.dirNode );
|
|
17
|
+
|
|
18
|
+
const u = add( mul( atan2( dir.z, dir.x ), 1 / ( Math.PI * 2 ) ), 0.5 );
|
|
19
|
+
const v = add( mul( asin( clamp( dir.y, - 1.0, 1.0 ) ), 1 / Math.PI ), 0.5 );
|
|
20
|
+
|
|
21
|
+
return vec2( u, v );
|
|
22
|
+
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export default EquirectUVNode;
|
|
@@ -2,9 +2,9 @@ import TempNode from '../core/Node.js';
|
|
|
2
2
|
|
|
3
3
|
class JoinNode extends TempNode {
|
|
4
4
|
|
|
5
|
-
constructor( nodes = [] ) {
|
|
5
|
+
constructor( nodes = [], nodeType = null ) {
|
|
6
6
|
|
|
7
|
-
super();
|
|
7
|
+
super( nodeType );
|
|
8
8
|
|
|
9
9
|
this.nodes = nodes;
|
|
10
10
|
|
|
@@ -12,6 +12,12 @@ class JoinNode extends TempNode {
|
|
|
12
12
|
|
|
13
13
|
getNodeType( builder ) {
|
|
14
14
|
|
|
15
|
+
if ( this.nodeType !== null ) {
|
|
16
|
+
|
|
17
|
+
return builder.getVectorType( this.nodeType );
|
|
18
|
+
|
|
19
|
+
}
|
|
20
|
+
|
|
15
21
|
return builder.getTypeFromLength( this.nodes.reduce( ( count, cur ) => count + builder.getTypeLength( cur.getNodeType( builder ) ), 0 ) );
|
|
16
22
|
|
|
17
23
|
}
|
|
@@ -9,14 +9,12 @@ class MatcapUVNode extends TempNode {
|
|
|
9
9
|
|
|
10
10
|
}
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
construct() {
|
|
13
13
|
|
|
14
14
|
const x = normalize( vec3( positionViewDirection.z, 0, negate( positionViewDirection.x ) ) );
|
|
15
15
|
const y = cross( positionViewDirection, x );
|
|
16
16
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
return uv.build( builder, this.getNodeType( builder ) );
|
|
17
|
+
return add( mul( vec2( dot( x, transformedNormalView ), dot( y, transformedNormalView ) ), 0.495 ), 0.5 );
|
|
20
18
|
|
|
21
19
|
}
|
|
22
20
|
|
|
@@ -24,7 +24,7 @@ class OscNode extends Node {
|
|
|
24
24
|
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
-
|
|
27
|
+
construct() {
|
|
28
28
|
|
|
29
29
|
const method = this.method;
|
|
30
30
|
const timeNode = this.timeNode;
|
|
@@ -49,7 +49,7 @@ class OscNode extends Node {
|
|
|
49
49
|
|
|
50
50
|
}
|
|
51
51
|
|
|
52
|
-
return outputNode
|
|
52
|
+
return outputNode;
|
|
53
53
|
|
|
54
54
|
}
|
|
55
55
|
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import Node from '../core/Node.js';
|
|
2
|
+
import { add, sub, div, mul, clamp } from '../shadernode/ShaderNodeBaseElements.js';
|
|
3
|
+
|
|
4
|
+
class RemapNode extends Node {
|
|
5
|
+
|
|
6
|
+
constructor( node, inLowNode, inHighNode, outLowNode, outHighNode ) {
|
|
7
|
+
|
|
8
|
+
super();
|
|
9
|
+
|
|
10
|
+
this.node = node;
|
|
11
|
+
this.inLowNode = inLowNode;
|
|
12
|
+
this.inHighNode = inHighNode;
|
|
13
|
+
this.outLowNode = outLowNode;
|
|
14
|
+
this.outHighNode = outHighNode;
|
|
15
|
+
|
|
16
|
+
this.doClamp = true;
|
|
17
|
+
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
construct() {
|
|
21
|
+
|
|
22
|
+
const { node, inLowNode, inHighNode, outLowNode, outHighNode, doClamp } = this;
|
|
23
|
+
|
|
24
|
+
let t = div( sub( node, inLowNode ), sub( inHighNode, inLowNode ) );
|
|
25
|
+
|
|
26
|
+
if ( doClamp === true ) t = clamp( t );
|
|
27
|
+
|
|
28
|
+
return add( mul( sub( outHighNode, outLowNode ), t ), outLowNode );
|
|
29
|
+
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export default RemapNode;
|
|
@@ -18,20 +18,18 @@ class SpriteSheetUVNode extends Node {
|
|
|
18
18
|
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
construct() {
|
|
22
22
|
|
|
23
|
-
const
|
|
24
|
-
const uv = this.uvNode;
|
|
25
|
-
const frame = this.frameNode;
|
|
23
|
+
const { frameNode, uvNode, countNode } = this;
|
|
26
24
|
|
|
27
25
|
const one = new ConstNode( 1 );
|
|
28
26
|
|
|
29
|
-
const width = new SplitNode(
|
|
30
|
-
const height = new SplitNode(
|
|
27
|
+
const width = new SplitNode( countNode, 'x' );
|
|
28
|
+
const height = new SplitNode( countNode, 'y' );
|
|
31
29
|
|
|
32
30
|
const total = new OperatorNode( '*', width, height );
|
|
33
31
|
|
|
34
|
-
const roundFrame = new MathNode( MathNode.FLOOR, new MathNode( MathNode.MOD,
|
|
32
|
+
const roundFrame = new MathNode( MathNode.FLOOR, new MathNode( MathNode.MOD, frameNode, total ) );
|
|
35
33
|
|
|
36
34
|
const frameNum = new OperatorNode( '+', roundFrame, one );
|
|
37
35
|
|
|
@@ -39,17 +37,17 @@ class SpriteSheetUVNode extends Node {
|
|
|
39
37
|
const row = new MathNode( MathNode.CEIL, new OperatorNode( '/', frameNum, width ) );
|
|
40
38
|
const rowInv = new OperatorNode( '-', height, row );
|
|
41
39
|
|
|
42
|
-
const scale = new OperatorNode( '/', one,
|
|
40
|
+
const scale = new OperatorNode( '/', one, countNode );
|
|
43
41
|
|
|
44
42
|
const uvFrameOffset = new JoinNode( [
|
|
45
43
|
new OperatorNode( '*', cell, new SplitNode( scale, 'x' ) ),
|
|
46
44
|
new OperatorNode( '*', rowInv, new SplitNode( scale, 'y' ) )
|
|
47
45
|
] );
|
|
48
46
|
|
|
49
|
-
const uvScale = new OperatorNode( '*',
|
|
47
|
+
const uvScale = new OperatorNode( '*', uvNode, scale );
|
|
50
48
|
const uvFrame = new OperatorNode( '+', uvScale, uvFrameOffset );
|
|
51
49
|
|
|
52
|
-
return uvFrame
|
|
50
|
+
return uvFrame;
|
|
53
51
|
|
|
54
52
|
}
|
|
55
53
|
|
|
@@ -6,6 +6,7 @@ class TimerNode extends UniformNode {
|
|
|
6
6
|
static LOCAL = 'local';
|
|
7
7
|
static GLOBAL = 'global';
|
|
8
8
|
static DELTA = 'delta';
|
|
9
|
+
static FRAME = 'frame';
|
|
9
10
|
|
|
10
11
|
constructor( scope = TimerNode.LOCAL, scale = 1, value = 0 ) {
|
|
11
12
|
|
|
@@ -14,10 +15,25 @@ class TimerNode extends UniformNode {
|
|
|
14
15
|
this.scope = scope;
|
|
15
16
|
this.scale = scale;
|
|
16
17
|
|
|
17
|
-
this.updateType = NodeUpdateType.
|
|
18
|
+
this.updateType = NodeUpdateType.FRAME;
|
|
18
19
|
|
|
19
20
|
}
|
|
21
|
+
/*
|
|
22
|
+
@TODO:
|
|
23
|
+
getNodeType( builder ) {
|
|
20
24
|
|
|
25
|
+
const scope = this.scope;
|
|
26
|
+
|
|
27
|
+
if ( scope === TimerNode.FRAME ) {
|
|
28
|
+
|
|
29
|
+
return 'uint';
|
|
30
|
+
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
return 'float';
|
|
34
|
+
|
|
35
|
+
}
|
|
36
|
+
*/
|
|
21
37
|
update( frame ) {
|
|
22
38
|
|
|
23
39
|
const scope = this.scope;
|
|
@@ -31,6 +47,10 @@ class TimerNode extends UniformNode {
|
|
|
31
47
|
|
|
32
48
|
this.value = frame.deltaTime * scale;
|
|
33
49
|
|
|
50
|
+
} else if ( scope === TimerNode.FRAME ) {
|
|
51
|
+
|
|
52
|
+
this.value = frame.frameId;
|
|
53
|
+
|
|
34
54
|
} else {
|
|
35
55
|
|
|
36
56
|
// global
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import Node from '../core/Node.js';
|
|
2
|
+
import { float, vec3, add, mul, div, dot, normalize, abs, texture, positionWorld, normalWorld } from '../shadernode/ShaderNodeBaseElements.js';
|
|
3
|
+
|
|
4
|
+
class TriplanarTexturesNode extends Node {
|
|
5
|
+
|
|
6
|
+
constructor( textureXNode, textureYNode = null, textureZNode = null, scaleNode = float( 1 ), positionNode = positionWorld, normalNode = normalWorld ) {
|
|
7
|
+
|
|
8
|
+
super( 'vec4' );
|
|
9
|
+
|
|
10
|
+
this.textureXNode = textureXNode;
|
|
11
|
+
this.textureYNode = textureYNode;
|
|
12
|
+
this.textureZNode = textureZNode;
|
|
13
|
+
|
|
14
|
+
this.scaleNode = scaleNode;
|
|
15
|
+
|
|
16
|
+
this.positionNode = positionNode;
|
|
17
|
+
this.normalNode = normalNode;
|
|
18
|
+
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
construct() {
|
|
22
|
+
|
|
23
|
+
const { textureXNode, textureYNode, textureZNode, scaleNode, positionNode, normalNode } = this;
|
|
24
|
+
|
|
25
|
+
// Ref: https://github.com/keijiro/StandardTriplanar
|
|
26
|
+
|
|
27
|
+
// Blending factor of triplanar mapping
|
|
28
|
+
let bf = normalize( abs( normalNode ) );
|
|
29
|
+
bf = div( bf, dot( bf, vec3( 1.0 ) ) );
|
|
30
|
+
|
|
31
|
+
// Triplanar mapping
|
|
32
|
+
const tx = mul( positionNode.yz, scaleNode );
|
|
33
|
+
const ty = mul( positionNode.zx, scaleNode );
|
|
34
|
+
const tz = mul( positionNode.xy, scaleNode );
|
|
35
|
+
|
|
36
|
+
// Base color
|
|
37
|
+
const textureX = textureXNode.value;
|
|
38
|
+
const textureY = textureYNode !== null ? textureYNode.value : textureX;
|
|
39
|
+
const textureZ = textureZNode !== null ? textureZNode.value : textureX;
|
|
40
|
+
|
|
41
|
+
const cx = mul( texture( textureX, tx ), bf.x );
|
|
42
|
+
const cy = mul( texture( textureY, ty ), bf.y );
|
|
43
|
+
const cz = mul( texture( textureZ, tz ), bf.z );
|
|
44
|
+
|
|
45
|
+
return add( cx, cy, cz );
|
|
46
|
+
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export default TriplanarTexturesNode;
|
|
@@ -30,7 +30,7 @@ class AfterimagePass extends Pass {
|
|
|
30
30
|
magFilter: NearestFilter,
|
|
31
31
|
} );
|
|
32
32
|
|
|
33
|
-
this.
|
|
33
|
+
this.compFsMaterial = new ShaderMaterial( {
|
|
34
34
|
|
|
35
35
|
uniforms: this.uniforms,
|
|
36
36
|
vertexShader: this.shader.vertexShader,
|
|
@@ -38,10 +38,10 @@ class AfterimagePass extends Pass {
|
|
|
38
38
|
|
|
39
39
|
} );
|
|
40
40
|
|
|
41
|
-
this.compFsQuad = new FullScreenQuad( this.
|
|
41
|
+
this.compFsQuad = new FullScreenQuad( this.compFsMaterial );
|
|
42
42
|
|
|
43
|
-
|
|
44
|
-
this.copyFsQuad = new FullScreenQuad(
|
|
43
|
+
this.copyFsMaterial = new MeshBasicMaterial();
|
|
44
|
+
this.copyFsQuad = new FullScreenQuad( this.copyFsMaterial );
|
|
45
45
|
|
|
46
46
|
}
|
|
47
47
|
|
|
@@ -85,6 +85,19 @@ class AfterimagePass extends Pass {
|
|
|
85
85
|
|
|
86
86
|
}
|
|
87
87
|
|
|
88
|
+
dispose() {
|
|
89
|
+
|
|
90
|
+
this.textureComp.dispose();
|
|
91
|
+
this.textureOld.dispose();
|
|
92
|
+
|
|
93
|
+
this.compFsMaterial.dispose();
|
|
94
|
+
this.copyFsMaterial.dispose();
|
|
95
|
+
|
|
96
|
+
this.compFsQuad.dispose();
|
|
97
|
+
this.copyFsQuad.dispose();
|
|
98
|
+
|
|
99
|
+
}
|
|
100
|
+
|
|
88
101
|
}
|
|
89
102
|
|
|
90
103
|
export { AfterimagePass };
|