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
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import Node from '../core/Node.js';
|
|
2
|
+
import { uniform, div, vec2, invert } from '../shadernode/ShaderNodeBaseElements.js';
|
|
3
|
+
import { Vector2 } from 'three';
|
|
4
|
+
import { NodeUpdateType } from '../core/constants.js';
|
|
5
|
+
|
|
6
|
+
let resolution;
|
|
7
|
+
|
|
8
|
+
class ViewportNode extends Node {
|
|
9
|
+
|
|
10
|
+
static COORDINATE = 'coordinate';
|
|
11
|
+
static RESOLUTION = 'resolution';
|
|
12
|
+
static TOP_LEFT = 'topLeft';
|
|
13
|
+
static BOTTOM_LEFT = 'bottomLeft';
|
|
14
|
+
static TOP_RIGHT = 'topRight';
|
|
15
|
+
static BOTTOM_RIGHT = 'bottomRight';
|
|
16
|
+
|
|
17
|
+
constructor( scope ) {
|
|
18
|
+
|
|
19
|
+
super();
|
|
20
|
+
|
|
21
|
+
this.scope = scope;
|
|
22
|
+
|
|
23
|
+
this.isViewportNode = true;
|
|
24
|
+
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
getNodeType() {
|
|
28
|
+
|
|
29
|
+
return this.scope === ViewportNode.COORDINATE ? 'vec4' : 'vec2';
|
|
30
|
+
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
getUpdateType() {
|
|
34
|
+
|
|
35
|
+
let updateType = NodeUpdateType.NONE;
|
|
36
|
+
|
|
37
|
+
if ( this.scope === ViewportNode.RESOLUTION ) {
|
|
38
|
+
|
|
39
|
+
updateType = NodeUpdateType.FRAME;
|
|
40
|
+
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
this.updateType = updateType;
|
|
44
|
+
|
|
45
|
+
return updateType;
|
|
46
|
+
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
update( { renderer } ) {
|
|
50
|
+
|
|
51
|
+
renderer.getSize( resolution );
|
|
52
|
+
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
construct( builder ) {
|
|
56
|
+
|
|
57
|
+
const scope = this.scope;
|
|
58
|
+
|
|
59
|
+
if ( scope === ViewportNode.COORDINATE ) return;
|
|
60
|
+
|
|
61
|
+
let output = null;
|
|
62
|
+
|
|
63
|
+
if ( scope === ViewportNode.RESOLUTION ) {
|
|
64
|
+
|
|
65
|
+
resolution ||= new Vector2();
|
|
66
|
+
|
|
67
|
+
output = uniform( resolution );
|
|
68
|
+
|
|
69
|
+
} else {
|
|
70
|
+
|
|
71
|
+
const coordinateNode = vec2( new ViewportNode( ViewportNode.COORDINATE ) );
|
|
72
|
+
const resolutionNode = new ViewportNode( ViewportNode.RESOLUTION );
|
|
73
|
+
|
|
74
|
+
output = div( coordinateNode, resolutionNode );
|
|
75
|
+
|
|
76
|
+
let outX = output.x;
|
|
77
|
+
let outY = output.y;
|
|
78
|
+
|
|
79
|
+
if ( /top/i.test( scope ) && builder.isFlipY() ) outY = invert( outY );
|
|
80
|
+
else if ( /bottom/i.test( scope ) && builder.isFlipY() === false ) outY = invert( outY );
|
|
81
|
+
|
|
82
|
+
if ( /right/i.test( scope ) ) outX = invert( outX );
|
|
83
|
+
|
|
84
|
+
output = vec2( outX, outY );
|
|
85
|
+
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
return output;
|
|
89
|
+
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
generate( builder ) {
|
|
93
|
+
|
|
94
|
+
if ( this.scope === ViewportNode.COORDINATE ) {
|
|
95
|
+
|
|
96
|
+
return builder.getFragCoord();
|
|
97
|
+
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
return super.generate( builder );
|
|
101
|
+
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
export default ViewportNode;
|
|
@@ -2,7 +2,7 @@ import F_Schlick from './F_Schlick.js';
|
|
|
2
2
|
import V_GGX_SmithCorrelated from './V_GGX_SmithCorrelated.js';
|
|
3
3
|
import D_GGX from './D_GGX.js';
|
|
4
4
|
import {
|
|
5
|
-
ShaderNode, dotNV, add, mul,
|
|
5
|
+
ShaderNode, dotNV, add, mul, clamp, dot, pow2, normalize,
|
|
6
6
|
transformedNormalView, positionViewDirection
|
|
7
7
|
} from '../../shadernode/ShaderNodeBaseElements.js';
|
|
8
8
|
|
|
@@ -15,10 +15,10 @@ const BRDF_GGX = new ShaderNode( ( inputs ) => {
|
|
|
15
15
|
|
|
16
16
|
const halfDir = normalize( add( lightDirection, positionViewDirection ) );
|
|
17
17
|
|
|
18
|
-
const dotNL =
|
|
19
|
-
//const dotNV =
|
|
20
|
-
const dotNH =
|
|
21
|
-
const dotVH =
|
|
18
|
+
const dotNL = clamp( dot( transformedNormalView, lightDirection ) );
|
|
19
|
+
//const dotNV = clamp( dot( transformedNormalView, positionViewDirection ) );
|
|
20
|
+
const dotNH = clamp( dot( transformedNormalView, halfDir ) );
|
|
21
|
+
const dotVH = clamp( dot( positionViewDirection, halfDir ) );
|
|
22
22
|
|
|
23
23
|
const F = F_Schlick.call( { f0, f90, dotVH } );
|
|
24
24
|
|
|
@@ -3,7 +3,7 @@ import BRDF_GGX from './BSDF/BRDF_GGX.js';
|
|
|
3
3
|
import DFGApprox from './BSDF/DFGApprox.js';
|
|
4
4
|
import {
|
|
5
5
|
ShaderNode,
|
|
6
|
-
vec3, mul,
|
|
6
|
+
vec3, mul, clamp, add, sub, dot, div, transformedNormalView,
|
|
7
7
|
pow, exp2, dotNV,
|
|
8
8
|
diffuseColor, specularColor, roughness, temp
|
|
9
9
|
} from '../shadernode/ShaderNodeElements.js';
|
|
@@ -61,7 +61,7 @@ const RE_Direct_Physical = new ShaderNode( ( inputs ) => {
|
|
|
61
61
|
|
|
62
62
|
const { lightDirection, lightColor, reflectedLight } = inputs;
|
|
63
63
|
|
|
64
|
-
const dotNL =
|
|
64
|
+
const dotNL = clamp( dot( transformedNormalView, lightDirection ) );
|
|
65
65
|
const irradiance = mul( dotNL, lightColor );
|
|
66
66
|
|
|
67
67
|
reflectedLight.directDiffuse.add( mul( irradiance, BRDF_Lambert.call( { diffuseColor: diffuseColor.rgb } ) ) );
|
|
@@ -75,7 +75,7 @@ const RE_AmbientOcclusion_Physical = new ShaderNode( ( { ambientOcclusion, refle
|
|
|
75
75
|
const aoNV = add( dotNV, ambientOcclusion );
|
|
76
76
|
const aoExp = exp2( sub( mul( - 16.0, roughness ), 1.0 ) );
|
|
77
77
|
|
|
78
|
-
const aoNode =
|
|
78
|
+
const aoNode = clamp( add( sub( pow( aoNV, aoExp ), 1.0 ), ambientOcclusion ) );
|
|
79
79
|
|
|
80
80
|
reflectedLight.indirectDiffuse.mul( ambientOcclusion );
|
|
81
81
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import {
|
|
2
|
-
ShaderNode, div, max, sub, mul,
|
|
2
|
+
ShaderNode, div, max, sub, mul, clamp, pow, pow2, pow4, cond, greaterThan
|
|
3
3
|
} from '../../shadernode/ShaderNodeBaseElements.js';
|
|
4
4
|
|
|
5
5
|
const getDistanceAttenuation = new ShaderNode( ( inputs ) => {
|
|
@@ -13,7 +13,7 @@ const getDistanceAttenuation = new ShaderNode( ( inputs ) => {
|
|
|
13
13
|
|
|
14
14
|
return cond(
|
|
15
15
|
greaterThan( cutoffDistance, 0 ),
|
|
16
|
-
mul( distanceFalloff, pow2(
|
|
16
|
+
mul( distanceFalloff, pow2( clamp( sub( 1.0, pow4( div( lightDistance, cutoffDistance ) ) ) ) ) ),
|
|
17
17
|
distanceFalloff
|
|
18
18
|
);
|
|
19
19
|
|
|
@@ -4,6 +4,7 @@ import {
|
|
|
4
4
|
LineBasicNodeMaterial,
|
|
5
5
|
MeshBasicNodeMaterial,
|
|
6
6
|
MeshStandardNodeMaterial,
|
|
7
|
+
MeshPhysicalNodeMaterial,
|
|
7
8
|
PointsNodeMaterial,
|
|
8
9
|
SpriteNodeMaterial
|
|
9
10
|
} from '../materials/Materials.js';
|
|
@@ -17,8 +18,9 @@ MaterialLoader.createMaterialFromType = function ( type ) {
|
|
|
17
18
|
LineBasicNodeMaterial,
|
|
18
19
|
MeshBasicNodeMaterial,
|
|
19
20
|
MeshStandardNodeMaterial,
|
|
21
|
+
MeshPhysicalNodeMaterial,
|
|
20
22
|
PointsNodeMaterial,
|
|
21
|
-
SpriteNodeMaterial
|
|
23
|
+
SpriteNodeMaterial
|
|
22
24
|
};
|
|
23
25
|
|
|
24
26
|
if ( materialLib[ type ] !== undefined ) {
|
|
@@ -32,19 +32,21 @@ NodeMaterial.fromMaterial = function ( material ) {
|
|
|
32
32
|
|
|
33
33
|
if ( materialLib[ type ] === undefined ) {
|
|
34
34
|
|
|
35
|
-
|
|
35
|
+
if ( material.isNodeMaterial !== true ) {
|
|
36
36
|
|
|
37
|
-
|
|
37
|
+
throw new Error( `NodeMaterial: Material "${ material.type }" is not compatible.` );
|
|
38
38
|
|
|
39
|
-
|
|
39
|
+
}
|
|
40
40
|
|
|
41
|
-
|
|
41
|
+
return material; // is already a node material
|
|
42
42
|
|
|
43
|
-
|
|
43
|
+
}
|
|
44
44
|
|
|
45
|
-
|
|
45
|
+
const nodeMaterial = new materialLib[ type ]();
|
|
46
46
|
|
|
47
|
-
|
|
47
|
+
for ( const key in material ) {
|
|
48
|
+
|
|
49
|
+
nodeMaterial[ key ] = material[ key ];
|
|
48
50
|
|
|
49
51
|
}
|
|
50
52
|
|
|
@@ -3,7 +3,7 @@ import { getNodesKeys, getCacheKey } from '../core/NodeUtils.js';
|
|
|
3
3
|
import ExpressionNode from '../core/ExpressionNode.js';
|
|
4
4
|
import {
|
|
5
5
|
float, vec3, vec4,
|
|
6
|
-
assign, label, mul, bypass,
|
|
6
|
+
assign, label, mul, bypass, attribute,
|
|
7
7
|
positionLocal, skinning, instance, modelViewProjection, lightingContext, colorSpace,
|
|
8
8
|
materialAlphaTest, materialColor, materialOpacity
|
|
9
9
|
} from '../shadernode/ShaderNodeElements.js';
|
|
@@ -80,6 +80,14 @@ class NodeMaterial extends ShaderMaterial {
|
|
|
80
80
|
let colorNode = vec4( this.colorNode || materialColor );
|
|
81
81
|
let opacityNode = this.opacityNode ? float( this.opacityNode ) : materialOpacity;
|
|
82
82
|
|
|
83
|
+
// VERTEX COLORS
|
|
84
|
+
|
|
85
|
+
if ( this.vertexColors === true && builder.geometry.hasAttribute( 'color' ) ) {
|
|
86
|
+
|
|
87
|
+
colorNode = vec4( mul( colorNode.xyz, attribute( 'color' ) ), colorNode.a );
|
|
88
|
+
|
|
89
|
+
}
|
|
90
|
+
|
|
83
91
|
// COLOR
|
|
84
92
|
|
|
85
93
|
colorNode = builder.addFlow( 'fragment', label( colorNode, 'Color' ) );
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import {
|
|
2
|
+
mx_perlin_noise_float, mx_perlin_noise_vec2, mx_perlin_noise_vec3,
|
|
3
|
+
mx_worley_noise_float as worley_noise_float, mx_worley_noise_vec2 as worley_noise_vec2, mx_worley_noise_vec3 as worley_noise_vec3,
|
|
4
|
+
mx_cell_noise_float as cell_noise_float,
|
|
5
|
+
mx_fractal_noise_float as fractal_noise_float, mx_fractal_noise_vec2 as fractal_noise_vec2, mx_fractal_noise_vec3 as fractal_noise_vec3, mx_fractal_noise_vec4 as fractal_noise_vec4
|
|
6
|
+
} from './lib/mx_noise.js';
|
|
7
|
+
import { mx_hsvtorgb, mx_rgbtohsv } from './lib/mx_hsv.js';
|
|
8
|
+
import { mx_srgb_texture_to_lin_rec709 } from './lib/mx_transform_color.js';
|
|
9
|
+
import { nodeObject, float, vec2, vec4, add, sub, mul, mix, clamp, uv, length, smoothstep, dFdx, dFdy, sign, pow, abs, convert } from '../shadernode/ShaderNodeElements.js';
|
|
10
|
+
|
|
11
|
+
export const mx_aastep = ( threshold, value ) => {
|
|
12
|
+
|
|
13
|
+
threshold = float( threshold );
|
|
14
|
+
value = float( value );
|
|
15
|
+
|
|
16
|
+
const afwidth = mul( length( vec2( dFdx( value ), dFdy( value ) ) ), 0.70710678118654757 );
|
|
17
|
+
|
|
18
|
+
return smoothstep( sub( threshold, afwidth ), add( threshold, afwidth ), value );
|
|
19
|
+
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
const _ramp = ( a, b, uv, p ) => mix( a, b, clamp( nodeObject( uv )[ p ] ) );
|
|
23
|
+
export const mx_ramplr = ( valuel, valuer, texcoord = uv() ) => _ramp( valuel, valuer, texcoord, 'x' );
|
|
24
|
+
export const mx_ramptb = ( valuet, valueb, texcoord = uv() ) => _ramp( valuet, valueb, texcoord, 'y' );
|
|
25
|
+
|
|
26
|
+
const _split = ( a, b, center, uv, p ) => mix( a, b, mx_aastep( center, nodeObject( uv )[ p ] ) );
|
|
27
|
+
export const mx_splitlr = ( valuel, valuer, center, texcoord = uv() ) => _split( valuel, valuer, center, texcoord, 'x' );
|
|
28
|
+
export const mx_splittb = ( valuet, valueb, center, texcoord = uv() ) => _split( valuet, valueb, center, texcoord, 'y' );
|
|
29
|
+
|
|
30
|
+
export const mx_transform_uv = ( uv_scale = 1, uv_offset = 0, uv_geo = uv() ) => add( mul( uv_geo, uv_scale ), uv_offset );
|
|
31
|
+
|
|
32
|
+
export const mx_safepower = ( in1, in2 = 1 ) => mul( sign( in1 ), pow( abs( in1 ), in2 ) );
|
|
33
|
+
export const mx_contrast = ( input, amount = 1, pivot = .5 ) => add( mul( sub( input, pivot ), amount ), pivot );
|
|
34
|
+
|
|
35
|
+
export const mx_noise_float = ( texcoord = uv(), amplitude = 1, pivot = 0 ) => add( mul( amplitude, mx_perlin_noise_float( convert( texcoord, 'vec2|vec3' ) ) ), pivot );
|
|
36
|
+
export const mx_noise_vec2 = ( texcoord = uv(), amplitude = 1, pivot = 0 ) => add( mul( amplitude, mx_perlin_noise_vec2( convert( texcoord, 'vec2|vec3' ) ) ), pivot );
|
|
37
|
+
export const mx_noise_vec3 = ( texcoord = uv(), amplitude = 1, pivot = 0 ) => add( mul( amplitude, mx_perlin_noise_vec3( convert( texcoord, 'vec2|vec3' ) ) ), pivot );
|
|
38
|
+
export const mx_noise_vec4 = ( texcoord = uv(), amplitude = 1, pivot = 0 ) => {
|
|
39
|
+
|
|
40
|
+
texcoord = convert( texcoord, 'vec2|vec3' ); // overloading type
|
|
41
|
+
|
|
42
|
+
const noise_vec4 = vec4( mx_perlin_noise_vec3( texcoord ), mx_perlin_noise_float( add( texcoord, vec2( 19, 73 ) ) ) );
|
|
43
|
+
|
|
44
|
+
return add( mul( amplitude, noise_vec4 ), pivot );
|
|
45
|
+
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
export const mx_worley_noise_float = ( texcoord = uv(), jitter = 1 ) => worley_noise_float( convert( texcoord, 'vec2|vec3' ), jitter, 1 );
|
|
49
|
+
export const mx_worley_noise_vec2 = ( texcoord = uv(), jitter = 1 ) => worley_noise_vec2( convert( texcoord, 'vec2|vec3' ), jitter, 1 );
|
|
50
|
+
export const mx_worley_noise_vec3 = ( texcoord = uv(), jitter = 1 ) => worley_noise_vec3( convert( texcoord, 'vec2|vec3' ), jitter, 1 );
|
|
51
|
+
|
|
52
|
+
export const mx_cell_noise_float = ( texcoord = uv() ) => cell_noise_float( convert( texcoord, 'vec2|vec3' ) );
|
|
53
|
+
|
|
54
|
+
export const mx_fractal_noise_float = ( position = uv(), octaves = 3, lacunarity = 2, diminish = .5, amplitude = 1 ) => mul( fractal_noise_float( position, octaves, lacunarity, diminish ), amplitude );
|
|
55
|
+
export const mx_fractal_noise_vec2 = ( position = uv(), octaves = 3, lacunarity = 2, diminish = .5, amplitude = 1 ) => mul( fractal_noise_vec2( position, octaves, lacunarity, diminish ), amplitude );
|
|
56
|
+
export const mx_fractal_noise_vec3 = ( position = uv(), octaves = 3, lacunarity = 2, diminish = .5, amplitude = 1 ) => mul( fractal_noise_vec3( position, octaves, lacunarity, diminish ), amplitude );
|
|
57
|
+
export const mx_fractal_noise_vec4 = ( position = uv(), octaves = 3, lacunarity = 2, diminish = .5, amplitude = 1 ) => mul( fractal_noise_vec4( position, octaves, lacunarity, diminish ), amplitude );
|
|
58
|
+
|
|
59
|
+
export { mx_hsvtorgb, mx_rgbtohsv, mx_srgb_texture_to_lin_rec709 };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { code, fn } from '
|
|
1
|
+
import { code, fn } from '../../Nodes.js';
|
|
2
2
|
|
|
3
3
|
// Original shader code from:
|
|
4
4
|
// https://github.com/AcademySoftwareFoundation/MaterialX/blob/main/libraries/stdlib/genglsl/lib/mx_noise.glsl
|
|
@@ -601,7 +601,17 @@ vec3 mx_worley_noise_vec3(vec3 p, float jitter, int metric)
|
|
|
601
601
|
|
|
602
602
|
const includes = [ mx_noise ];
|
|
603
603
|
|
|
604
|
-
export const mx_perlin_noise_float = fn( 'float mx_perlin_noise_float(
|
|
604
|
+
export const mx_perlin_noise_float = fn( 'float mx_perlin_noise_float( any p )', includes );
|
|
605
|
+
export const mx_perlin_noise_vec2 = fn( 'vec2 mx_perlin_noise_vec2( any p )', includes );
|
|
606
|
+
export const mx_perlin_noise_vec3 = fn( 'vec3 mx_perlin_noise_vec3( any p )', includes );
|
|
607
|
+
|
|
605
608
|
export const mx_cell_noise_float = fn( 'float mx_cell_noise_float( vec3 p )', includes );
|
|
606
|
-
|
|
609
|
+
|
|
610
|
+
export const mx_worley_noise_float = fn( 'float mx_worley_noise_float( any p, float jitter, int metric )', includes );
|
|
611
|
+
export const mx_worley_noise_vec2 = fn( 'float mx_worley_noise_vec2( any p, float jitter, int metric )', includes );
|
|
612
|
+
export const mx_worley_noise_vec3 = fn( 'float mx_worley_noise_vec3( any p, float jitter, int metric )', includes );
|
|
613
|
+
|
|
607
614
|
export const mx_fractal_noise_float = fn( 'float mx_fractal_noise_float( vec3 p, int octaves, float lacunarity, float diminish )', includes );
|
|
615
|
+
export const mx_fractal_noise_vec2 = fn( 'float mx_fractal_noise_vec2( vec3 p, int octaves, float lacunarity, float diminish )', includes );
|
|
616
|
+
export const mx_fractal_noise_vec3 = fn( 'float mx_fractal_noise_vec3( vec3 p, int octaves, float lacunarity, float diminish )', includes );
|
|
617
|
+
export const mx_fractal_noise_vec4 = fn( 'float mx_fractal_noise_vec4( vec3 p, int octaves, float lacunarity, float diminish )', includes );
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { code, fn } from '../../Nodes.js';
|
|
2
|
+
|
|
3
|
+
// Original shader code from:
|
|
4
|
+
// https://github.com/AcademySoftwareFoundation/MaterialX/blob/main/libraries/stdlib/genglsl/lib/mx_transform_color.glsl
|
|
5
|
+
|
|
6
|
+
export const mx_transform_color = code( `#define M_AP1_TO_REC709 mat3(1.705079555511475, -0.1297005265951157, -0.02416634373366833, -0.6242334842681885, 1.138468623161316, -0.1246141716837883, -0.0808461606502533, -0.008768022060394287, 1.148780584335327)
|
|
7
|
+
|
|
8
|
+
vec3 mx_srgb_texture_to_lin_rec709(vec3 color)
|
|
9
|
+
{
|
|
10
|
+
bvec3 isAbove = greaterThan(color, vec3(0.04045));
|
|
11
|
+
vec3 linSeg = color / 12.92;
|
|
12
|
+
vec3 powSeg = pow(max(color + vec3(0.055), vec3(0.0)) / 1.055, vec3(2.4));
|
|
13
|
+
return mix(linSeg, powSeg, isAbove);
|
|
14
|
+
}` );
|
|
15
|
+
|
|
16
|
+
const includes = [ mx_transform_color ];
|
|
17
|
+
|
|
18
|
+
export const mx_srgb_texture_to_lin_rec709 = fn( 'vec3 mx_srgb_texture_to_lin_rec709( vec3 color )', includes );
|
|
@@ -32,8 +32,8 @@ class MathNode extends TempNode {
|
|
|
32
32
|
static INVERT = 'invert';
|
|
33
33
|
static DFDX = 'dFdx';
|
|
34
34
|
static DFDY = 'dFdy';
|
|
35
|
-
static SATURATE = 'saturate';
|
|
36
35
|
static ROUND = 'round';
|
|
36
|
+
static RECIPROCAL = 'reciprocal';
|
|
37
37
|
|
|
38
38
|
// 2 inputs
|
|
39
39
|
|
|
@@ -152,10 +152,6 @@ class MathNode extends TempNode {
|
|
|
152
152
|
|
|
153
153
|
return new MathNode( MathNode.NORMALIZE, mulNode ).build( builder );
|
|
154
154
|
|
|
155
|
-
} else if ( method === MathNode.SATURATE ) {
|
|
156
|
-
|
|
157
|
-
return builder.format( `clamp( ${ a.build( builder, inputType ) }, 0.0, 1.0 )`, type, output );
|
|
158
|
-
|
|
159
155
|
} else if ( method === MathNode.NEGATE ) {
|
|
160
156
|
|
|
161
157
|
return builder.format( '( -' + a.build( builder, inputType ) + ' )', type, output );
|
|
@@ -164,6 +160,10 @@ class MathNode extends TempNode {
|
|
|
164
160
|
|
|
165
161
|
return builder.format( '( 1.0 - ' + a.build( builder, inputType ) + ' )', type, output );
|
|
166
162
|
|
|
163
|
+
} else if ( method === MathNode.RECIPROCAL ) {
|
|
164
|
+
|
|
165
|
+
return builder.format( '( 1.0 / ' + a.build( builder, inputType ) + ' )', type, output );
|
|
166
|
+
|
|
167
167
|
} else {
|
|
168
168
|
|
|
169
169
|
const params = [];
|
|
@@ -47,7 +47,7 @@ class OperatorNode extends TempNode {
|
|
|
47
47
|
|
|
48
48
|
} else if ( op === '&' || op === '|' || op === '^' || op === '>>' || op === '<<' ) {
|
|
49
49
|
|
|
50
|
-
return
|
|
50
|
+
return builder.getIntegerType( typeA );
|
|
51
51
|
|
|
52
52
|
} else if ( op === '==' || op === '&&' || op === '||' || op === '^^' ) {
|
|
53
53
|
|
|
@@ -124,6 +124,11 @@ class OperatorNode extends TempNode {
|
|
|
124
124
|
|
|
125
125
|
}
|
|
126
126
|
|
|
127
|
+
} else if ( op === '>>' || op === '<<' ) {
|
|
128
|
+
|
|
129
|
+
typeA = type;
|
|
130
|
+
typeB = builder.changeComponentType( typeB, 'uint' );
|
|
131
|
+
|
|
127
132
|
} else if ( builder.isMatrix( typeA ) && builder.isVector( typeB ) ) {
|
|
128
133
|
|
|
129
134
|
// matrix x vector
|
|
@@ -163,14 +168,22 @@ class OperatorNode extends TempNode {
|
|
|
163
168
|
|
|
164
169
|
return a;
|
|
165
170
|
|
|
166
|
-
} else if ( op === '
|
|
171
|
+
} else if ( op === '<' && outputLength > 1 ) {
|
|
167
172
|
|
|
168
|
-
return builder.format( `${ builder.getMethod( '
|
|
173
|
+
return builder.format( `${ builder.getMethod( 'lessThan' ) }( ${a}, ${b} )`, type, output );
|
|
169
174
|
|
|
170
175
|
} else if ( op === '<=' && outputLength > 1 ) {
|
|
171
176
|
|
|
172
177
|
return builder.format( `${ builder.getMethod( 'lessThanEqual' ) }( ${a}, ${b} )`, type, output );
|
|
173
178
|
|
|
179
|
+
} else if ( op === '>' && outputLength > 1 ) {
|
|
180
|
+
|
|
181
|
+
return builder.format( `${ builder.getMethod( 'greaterThan' ) }( ${a}, ${b} )`, type, output );
|
|
182
|
+
|
|
183
|
+
} else if ( op === '>=' && outputLength > 1 ) {
|
|
184
|
+
|
|
185
|
+
return builder.format( `${ builder.getMethod( 'greaterThanEqual' ) }( ${a}, ${b} )`, type, output );
|
|
186
|
+
|
|
174
187
|
} else {
|
|
175
188
|
|
|
176
189
|
return builder.format( `( ${a} ${this.op} ${b} )`, type, output );
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import Node from '../core/Node.js';
|
|
1
2
|
import ArrayElementNode from '../utils/ArrayElementNode.js';
|
|
2
3
|
import ConvertNode from '../utils/ConvertNode.js';
|
|
3
4
|
import JoinNode from '../utils/JoinNode.js';
|
|
@@ -107,31 +108,33 @@ const ShaderNodeArray = function ( array ) {
|
|
|
107
108
|
|
|
108
109
|
};
|
|
109
110
|
|
|
110
|
-
const ShaderNodeProxy = function ( NodeClass, scope = null, factor = null ) {
|
|
111
|
+
const ShaderNodeProxy = function ( NodeClass, scope = null, factor = null, settings = null ) {
|
|
112
|
+
|
|
113
|
+
const assignNode = ( node ) => nodeObject( settings !== null ? Object.assign( node, settings ) : node );
|
|
111
114
|
|
|
112
115
|
if ( scope === null ) {
|
|
113
116
|
|
|
114
117
|
return ( ...params ) => {
|
|
115
118
|
|
|
116
|
-
return
|
|
119
|
+
return assignNode( new NodeClass( ...nodeArray( params ) ) );
|
|
117
120
|
|
|
118
121
|
};
|
|
119
122
|
|
|
120
|
-
} else if ( factor
|
|
123
|
+
} else if ( factor !== null ) {
|
|
124
|
+
|
|
125
|
+
factor = nodeObject( factor );
|
|
121
126
|
|
|
122
127
|
return ( ...params ) => {
|
|
123
128
|
|
|
124
|
-
return
|
|
129
|
+
return assignNode( new NodeClass( scope, ...nodeArray( params ), factor ) );
|
|
125
130
|
|
|
126
131
|
};
|
|
127
132
|
|
|
128
133
|
} else {
|
|
129
134
|
|
|
130
|
-
factor = nodeObject( factor );
|
|
131
|
-
|
|
132
135
|
return ( ...params ) => {
|
|
133
136
|
|
|
134
|
-
return
|
|
137
|
+
return assignNode( new NodeClass( scope, ...nodeArray( params ) ) );
|
|
135
138
|
|
|
136
139
|
};
|
|
137
140
|
|
|
@@ -145,31 +148,43 @@ const ShaderNodeImmutable = function ( NodeClass, ...params ) {
|
|
|
145
148
|
|
|
146
149
|
};
|
|
147
150
|
|
|
148
|
-
|
|
151
|
+
class ShaderNodeInternal extends Node {
|
|
149
152
|
|
|
150
|
-
|
|
153
|
+
constructor( jsFunc ) {
|
|
151
154
|
|
|
152
|
-
|
|
155
|
+
super();
|
|
153
156
|
|
|
154
|
-
|
|
157
|
+
this._jsFunc = jsFunc;
|
|
155
158
|
|
|
156
|
-
|
|
159
|
+
}
|
|
157
160
|
|
|
158
|
-
|
|
161
|
+
call( inputs, builder ) {
|
|
159
162
|
|
|
160
|
-
|
|
163
|
+
inputs = nodeObjects( inputs );
|
|
161
164
|
|
|
162
|
-
|
|
165
|
+
return nodeObject( this._jsFunc( inputs, builder ) );
|
|
166
|
+
|
|
167
|
+
}
|
|
163
168
|
|
|
164
|
-
|
|
169
|
+
generate( builder, output ) {
|
|
165
170
|
|
|
166
|
-
|
|
171
|
+
const nodeCall = this.call( {}, builder );
|
|
172
|
+
|
|
173
|
+
if ( nodeCall === undefined ) {
|
|
174
|
+
|
|
175
|
+
return '';
|
|
167
176
|
|
|
168
177
|
}
|
|
169
178
|
|
|
170
|
-
|
|
179
|
+
return builder.format( nodeCall.build( builder ), nodeCall.getNodeType( builder ), output );
|
|
180
|
+
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
const ShaderNodeScript = function ( jsFunc ) {
|
|
171
186
|
|
|
172
|
-
return
|
|
187
|
+
return new ShaderNodeInternal( jsFunc );
|
|
173
188
|
|
|
174
189
|
};
|
|
175
190
|
|
|
@@ -251,7 +266,7 @@ export const ConvertType = function ( type, cacheMap = null ) {
|
|
|
251
266
|
|
|
252
267
|
}
|
|
253
268
|
|
|
254
|
-
return nodeObject( new
|
|
269
|
+
return nodeObject( new JoinNode( nodes, type ) );
|
|
255
270
|
|
|
256
271
|
}
|
|
257
272
|
|