super-three 0.141.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 +9 -9
- package/build/three.cjs +2441 -1569
- package/build/three.js +2441 -1569
- package/build/three.min.js +1 -1
- package/build/three.module.js +2847 -1576
- 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 +71 -150
- package/examples/js/cameras/CinematicCamera.js +33 -22
- package/examples/js/controls/ArcballControls.js +149 -403
- package/examples/js/controls/DragControls.js +8 -33
- package/examples/js/controls/FirstPersonControls.js +32 -61
- package/examples/js/controls/FlyControls.js +29 -63
- package/examples/js/controls/OrbitControls.js +125 -103
- package/examples/js/controls/PointerLockControls.js +5 -22
- package/examples/js/controls/TrackballControls.js +33 -88
- package/examples/js/controls/TransformControls.js +101 -182
- 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 +6 -20
- package/examples/js/effects/AsciiEffect.js +32 -31
- package/examples/js/effects/OutlineEffect.js +30 -54
- package/examples/js/effects/ParallaxBarrierEffect.js +2 -15
- package/examples/js/effects/PeppersGhostEffect.js +14 -41
- package/examples/js/effects/StereoEffect.js +2 -6
- package/examples/js/environments/RoomEnvironment.js +32 -8
- package/examples/js/exporters/ColladaExporter.js +52 -78
- package/examples/js/exporters/DRACOExporter.js +22 -34
- package/examples/js/exporters/EXRExporter.js +15 -18
- package/examples/js/exporters/GLTFExporter.js +168 -345
- package/examples/js/exporters/MMDExporter.js +5 -12
- package/examples/js/exporters/OBJExporter.js +40 -52
- package/examples/js/exporters/PLYExporter.js +50 -57
- package/examples/js/exporters/STLExporter.js +5 -14
- package/examples/js/exporters/USDZExporter.js +119 -27
- package/examples/js/geometries/BoxLineGeometry.js +0 -1
- package/examples/js/geometries/ConvexGeometry.js +12 -7
- 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 +23 -17
- 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 +2 -8
- package/examples/js/libs/ktx-parse.umd.js +1 -0
- package/examples/js/libs/meshopt_decoder.js +98 -32
- 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 +229 -359
- package/examples/js/loaders/DDSLoader.js +24 -25
- package/examples/js/loaders/DRACOLoader.js +30 -90
- package/examples/js/loaders/EXRLoader.js +69 -177
- package/examples/js/loaders/FBXLoader.js +294 -441
- package/examples/js/loaders/FontLoader.js +9 -31
- package/examples/js/loaders/GCodeLoader.js +15 -16
- package/examples/js/loaders/GLTFLoader.js +458 -739
- package/examples/js/loaders/HDRCubeTextureLoader.js +0 -17
- package/examples/js/loaders/KMZLoader.js +3 -7
- package/examples/js/loaders/KTXLoader.js +12 -30
- package/examples/js/loaders/LDrawLoader.js +309 -355
- 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 +56 -77
- package/examples/js/loaders/PCDLoader.js +92 -42
- package/examples/js/loaders/PDBLoader.js +17 -13
- package/examples/js/loaders/PLYLoader.js +65 -51
- 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 +365 -236
- package/examples/js/loaders/TDSLoader.js +81 -118
- package/examples/js/loaders/TGALoader.js +39 -41
- package/examples/js/loaders/TIFFLoader.js +30 -0
- 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 +266 -354
- package/examples/js/loaders/VTKLoader.js +102 -119
- package/examples/js/loaders/XYZLoader.js +2 -4
- package/examples/js/loaders/lwo/IFFParser.js +55 -136
- package/examples/js/loaders/lwo/LWO2Parser.js +39 -89
- package/examples/js/loaders/lwo/LWO3Parser.js +38 -79
- package/examples/js/materials/MeshGouraudMaterial.js +387 -0
- package/examples/js/math/Capsule.js +0 -17
- package/examples/js/math/ColorConverter.js +3 -53
- 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 +47 -14
- 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 +173 -194
- package/examples/js/misc/VolumeSlice.js +91 -99
- package/examples/js/modifiers/CurveModifier.js +19 -21
- package/examples/js/modifiers/EdgeSplitModifier.js +0 -30
- package/examples/js/modifiers/SimplifyModifier.js +57 -60
- package/examples/js/modifiers/TessellateModifier.js +2 -9
- package/examples/js/objects/GroundProjectedEnv.js +181 -0
- 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 +31 -22
- package/examples/js/objects/ReflectorForSSRPass.js +20 -25
- package/examples/js/objects/Refractor.js +61 -33
- package/examples/js/objects/ShadowMesh.js +6 -3
- 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 +49 -38
- 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 +4 -23
- package/examples/js/renderers/CSS3DRenderer.js +5 -26
- package/examples/js/renderers/Projector.js +31 -108
- 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 +4 -7
- package/examples/js/shaders/MMDToonShader.js +2 -4
- 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 +4 -7
- 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 +237 -171
- 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 +15 -36
- package/examples/js/utils/LDrawUtils.js +8 -11
- package/examples/js/utils/PackedPhongMaterial.js +6 -4
- package/examples/js/utils/SceneUtils.js +109 -14
- 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 +28 -22
- package/examples/jsm/capabilities/WebGPU.js +3 -1
- package/examples/jsm/controls/ArcballControls.js +17 -2
- package/examples/jsm/controls/FirstPersonControls.js +20 -27
- package/examples/jsm/controls/FlyControls.js +16 -24
- package/examples/jsm/controls/OrbitControls.js +44 -9
- package/examples/jsm/controls/PointerLockControls.js +0 -7
- package/examples/jsm/controls/TrackballControls.js +14 -5
- package/examples/jsm/controls/TransformControls.js +18 -16
- package/examples/jsm/csm/CSM.js +1 -0
- package/examples/jsm/csm/CSMHelper.js +30 -0
- package/examples/jsm/effects/AnaglyphEffect.js +2 -2
- package/examples/jsm/effects/OutlineEffect.js +4 -25
- package/examples/jsm/effects/ParallaxBarrierEffect.js +2 -2
- package/examples/jsm/effects/PeppersGhostEffect.js +2 -2
- package/examples/jsm/effects/StereoEffect.js +2 -2
- package/examples/jsm/environments/RoomEnvironment.js +23 -0
- package/examples/jsm/exporters/ColladaExporter.js +4 -13
- package/examples/jsm/exporters/DRACOExporter.js +0 -13
- package/examples/jsm/exporters/GLTFExporter.js +29 -110
- package/examples/jsm/exporters/KTX2Exporter.js +29 -29
- package/examples/jsm/exporters/OBJExporter.js +0 -18
- package/examples/jsm/exporters/PLYExporter.js +14 -22
- package/examples/jsm/exporters/STLExporter.js +1 -9
- package/examples/jsm/exporters/USDZExporter.js +107 -4
- package/examples/jsm/geometries/ConvexGeometry.js +1 -1
- package/examples/jsm/geometries/ParametricGeometry.js +0 -6
- 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 +14 -15
- package/examples/jsm/interactive/InteractiveGroup.js +4 -2
- package/examples/jsm/interactive/SelectionHelper.js +5 -3
- package/examples/jsm/libs/flow.module.js +610 -160
- package/examples/jsm/libs/lottie_canvas.module.js +14844 -0
- package/examples/jsm/libs/meshopt_decoder.module.js +97 -32
- package/examples/jsm/libs/utif.module.js +1579 -0
- package/examples/jsm/libs/zstddec.module.js +1 -0
- package/examples/jsm/lines/LineSegments2.js +4 -0
- package/examples/jsm/loaders/3DMLoader.js +1 -2
- package/examples/jsm/loaders/ColladaLoader.js +29 -0
- package/examples/jsm/loaders/DRACOLoader.js +2 -28
- package/examples/jsm/loaders/EXRLoader.js +3 -13
- package/examples/jsm/loaders/FBXLoader.js +26 -3
- package/examples/jsm/loaders/FontLoader.js +3 -16
- package/examples/jsm/loaders/GLTFLoader.js +321 -464
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +0 -13
- package/examples/jsm/loaders/KTX2Loader.js +254 -53
- package/examples/jsm/loaders/LDrawLoader.js +149 -87
- package/examples/jsm/loaders/LottieLoader.js +4 -2
- package/examples/jsm/loaders/MaterialXLoader.js +728 -0
- package/examples/jsm/loaders/OBJLoader.js +6 -14
- package/examples/jsm/loaders/PCDLoader.js +60 -14
- package/examples/jsm/loaders/PLYLoader.js +71 -19
- package/examples/jsm/loaders/RGBELoader.js +1 -1
- package/examples/jsm/loaders/SVGLoader.js +231 -17
- package/examples/jsm/loaders/TIFFLoader.js +36 -0
- package/examples/jsm/loaders/USDZLoader.js +633 -0
- package/examples/jsm/loaders/VRMLLoader.js +36 -26
- package/examples/jsm/loaders/VTKLoader.js +1 -1
- package/examples/jsm/loaders/lwo/LWO2Parser.js +6 -8
- package/examples/jsm/loaders/lwo/LWO3Parser.js +6 -8
- package/examples/jsm/materials/MeshGouraudMaterial.js +423 -0
- package/examples/jsm/math/ColorConverter.js +1 -49
- package/examples/jsm/math/ConvexHull.js +4 -4
- package/examples/jsm/math/Octree.js +1 -1
- package/examples/jsm/misc/GPUComputationRenderer.js +43 -0
- package/examples/jsm/misc/Volume.js +169 -171
- package/examples/jsm/misc/VolumeSlice.js +78 -80
- package/examples/jsm/modifiers/SimplifyModifier.js +1 -1
- package/examples/jsm/node-editor/NodeEditor.js +91 -12
- package/examples/jsm/node-editor/accessors/MatcapUVEditor.js +1 -1
- package/examples/jsm/node-editor/accessors/NormalEditor.js +1 -1
- package/examples/jsm/node-editor/accessors/PositionEditor.js +1 -1
- package/examples/jsm/node-editor/accessors/UVEditor.js +1 -1
- package/examples/jsm/node-editor/core/BaseNode.js +10 -3
- package/examples/jsm/node-editor/display/BlendEditor.js +1 -1
- package/examples/jsm/node-editor/display/NormalMapEditor.js +1 -1
- package/examples/jsm/node-editor/inputs/ColorEditor.js +1 -1
- package/examples/jsm/node-editor/inputs/FloatEditor.js +1 -1
- package/examples/jsm/node-editor/inputs/SliderEditor.js +1 -1
- package/examples/jsm/node-editor/inputs/TextureEditor.js +1 -1
- package/examples/jsm/node-editor/inputs/Vector2Editor.js +1 -1
- package/examples/jsm/node-editor/inputs/Vector3Editor.js +1 -1
- package/examples/jsm/node-editor/inputs/Vector4Editor.js +1 -1
- package/examples/jsm/node-editor/materials/BasicMaterialEditor.js +7 -10
- package/examples/jsm/node-editor/materials/PointsMaterialEditor.js +1 -1
- package/examples/jsm/node-editor/materials/StandardMaterialEditor.js +7 -10
- package/examples/jsm/node-editor/math/AngleEditor.js +4 -4
- package/examples/jsm/node-editor/math/DotEditor.js +1 -1
- package/examples/jsm/node-editor/math/InvertEditor.js +3 -3
- package/examples/jsm/node-editor/math/LimiterEditor.js +1 -1
- package/examples/jsm/node-editor/math/NormalizeEditor.js +1 -1
- package/examples/jsm/node-editor/math/OperatorEditor.js +1 -1
- package/examples/jsm/node-editor/math/PowerEditor.js +1 -1
- package/examples/jsm/node-editor/math/TrigonometryEditor.js +1 -1
- package/examples/jsm/node-editor/procedural/CheckerEditor.js +1 -1
- package/examples/jsm/node-editor/scene/MeshEditor.js +11 -8
- package/examples/jsm/node-editor/utils/JoinEditor.js +1 -1
- package/examples/jsm/node-editor/utils/OscillatorEditor.js +1 -1
- package/examples/jsm/node-editor/utils/PreviewEditor.js +7 -3
- package/examples/jsm/node-editor/utils/SplitEditor.js +1 -1
- package/examples/jsm/node-editor/utils/TimerEditor.js +1 -1
- package/examples/jsm/nodes/Nodes.js +70 -13
- package/examples/jsm/nodes/accessors/BitangentNode.js +62 -0
- package/examples/jsm/nodes/accessors/CubeTextureNode.js +9 -5
- package/examples/jsm/nodes/accessors/NormalNode.js +8 -8
- package/examples/jsm/nodes/accessors/Object3DNode.js +1 -1
- package/examples/jsm/nodes/accessors/PositionNode.js +11 -5
- package/examples/jsm/nodes/accessors/ReferenceNode.js +1 -1
- package/examples/jsm/nodes/accessors/ReflectVectorNode.js +31 -0
- 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 +32 -9
- package/examples/jsm/nodes/core/CodeNode.js +3 -3
- package/examples/jsm/nodes/core/FunctionCallNode.js +20 -5
- package/examples/jsm/nodes/core/FunctionNode.js +2 -2
- package/examples/jsm/nodes/core/Node.js +15 -13
- package/examples/jsm/nodes/core/NodeBuilder.js +67 -18
- package/examples/jsm/nodes/core/NodeFrame.js +2 -2
- package/examples/jsm/nodes/core/NodeUtils.js +23 -1
- package/examples/jsm/nodes/core/NodeVarying.js +17 -0
- package/examples/jsm/nodes/core/VaryingNode.js +56 -0
- 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 +84 -0
- 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/geometry/RangeNode.js +109 -0
- package/examples/jsm/nodes/gpgpu/ComputeNode.js +3 -1
- package/examples/jsm/nodes/lighting/AnalyticLightNode.js +1 -1
- package/examples/jsm/nodes/lighting/EnvironmentNode.js +8 -7
- package/examples/jsm/nodes/lighting/LightingContextNode.js +4 -4
- package/examples/jsm/nodes/loaders/NodeLoader.js +2 -2
- package/examples/jsm/nodes/loaders/NodeMaterialLoader.js +33 -0
- package/examples/jsm/nodes/materials/Materials.js +21 -31
- package/examples/jsm/nodes/materials/MeshPhysicalNodeMaterial.js +70 -0
- package/examples/jsm/nodes/materials/MeshStandardNodeMaterial.js +4 -7
- package/examples/jsm/nodes/materials/NodeMaterial.js +11 -3
- package/examples/jsm/nodes/materials/SpriteNodeMaterial.js +28 -17
- package/examples/jsm/nodes/materialx/DISCLAIMER.md +199 -0
- package/examples/jsm/nodes/materialx/MaterialXNodes.js +59 -0
- package/examples/jsm/nodes/materialx/lib/mx_hsv.js +56 -0
- package/examples/jsm/nodes/materialx/lib/mx_noise.js +617 -0
- package/examples/jsm/nodes/materialx/lib/mx_transform_color.js +18 -0
- package/examples/jsm/nodes/math/MathNode.js +7 -17
- package/examples/jsm/nodes/math/OperatorNode.js +16 -3
- package/examples/jsm/nodes/parsers/GLSLNodeFunction.js +21 -6
- package/examples/jsm/nodes/procedural/CheckerNode.js +2 -2
- package/examples/jsm/nodes/shadernode/ShaderNode.js +40 -25
- package/examples/jsm/nodes/shadernode/ShaderNodeBaseElements.js +95 -68
- package/examples/jsm/nodes/shadernode/ShaderNodeElements.js +49 -6
- package/examples/jsm/nodes/utils/ConvertNode.js +18 -12
- package/examples/jsm/nodes/utils/EquirectUVNode.js +27 -0
- package/examples/jsm/nodes/utils/JoinNode.js +15 -9
- package/examples/jsm/nodes/utils/MatcapUVNode.js +2 -4
- package/examples/jsm/nodes/utils/MaxMipLevelNode.js +3 -2
- package/examples/jsm/nodes/utils/OscNode.js +2 -2
- package/examples/jsm/nodes/utils/RemapNode.js +34 -0
- package/examples/jsm/nodes/utils/RotateUVNode.js +32 -0
- package/examples/jsm/nodes/utils/SplitNode.js +21 -5
- package/examples/jsm/nodes/utils/SpriteSheetUVNode.js +8 -10
- package/examples/jsm/nodes/utils/TimerNode.js +23 -3
- package/examples/jsm/nodes/utils/TriplanarTexturesNode.js +51 -0
- package/examples/jsm/objects/GroundProjectedEnv.js +186 -0
- package/examples/jsm/objects/Reflector.js +12 -5
- package/examples/jsm/objects/ReflectorForSSRPass.js +3 -5
- package/examples/jsm/objects/Refractor.js +12 -6
- package/examples/jsm/objects/ShadowMesh.js +8 -2
- 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 +25 -3
- 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/CSS2DRenderer.js +2 -2
- package/examples/jsm/renderers/CSS3DRenderer.js +2 -2
- package/examples/jsm/renderers/Projector.js +2 -24
- package/examples/jsm/renderers/webgl/nodes/SlotNode.js +9 -5
- package/examples/jsm/renderers/webgl/nodes/WebGLNodeBuilder.js +363 -231
- package/examples/jsm/renderers/webgl/nodes/WebGLNodes.js +7 -3
- 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 +68 -3
- package/examples/jsm/renderers/webgpu/WebGPUComputePipelines.js +6 -0
- package/examples/jsm/renderers/webgpu/WebGPUGeometries.js +6 -0
- package/examples/jsm/renderers/webgpu/WebGPUObjects.js +1 -1
- package/examples/jsm/renderers/webgpu/WebGPURenderPipeline.js +17 -19
- package/examples/jsm/renderers/webgpu/WebGPURenderPipelines.js +16 -14
- package/examples/jsm/renderers/webgpu/WebGPURenderStates.js +2 -2
- package/examples/jsm/renderers/webgpu/WebGPURenderer.js +113 -93
- package/examples/jsm/renderers/webgpu/WebGPUTextureUtils.js +5 -3
- package/examples/jsm/renderers/webgpu/WebGPUTextures.js +2 -2
- package/examples/jsm/renderers/webgpu/WebGPUUtils.js +81 -0
- package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeBuilder.js +63 -36
- package/examples/jsm/renderers/webgpu/nodes/WebGPUNodes.js +1 -1
- package/examples/jsm/shaders/LuminosityShader.js +1 -1
- package/examples/jsm/shaders/MMDToonShader.js +2 -4
- package/examples/jsm/shaders/ToneMapShader.js +1 -1
- package/examples/jsm/shaders/VelocityShader.js +128 -0
- package/examples/jsm/utils/BufferGeometryUtils.js +176 -43
- package/examples/jsm/utils/GeometryUtils.js +17 -25
- package/examples/jsm/utils/PackedPhongMaterial.js +0 -1
- package/examples/jsm/utils/SceneUtils.js +117 -12
- package/examples/jsm/webxr/OculusHandModel.js +3 -2
- package/examples/jsm/webxr/OculusHandPointerModel.js +6 -1
- package/examples/jsm/webxr/VRButton.js +1 -7
- package/examples/jsm/webxr/XRHandMeshModel.js +8 -3
- package/package.json +22 -18
- package/src/Three.Legacy.js +262 -36
- package/src/Three.js +4 -2
- package/src/animation/AnimationAction.js +6 -5
- package/src/animation/AnimationClip.js +1 -1
- package/src/animation/AnimationMixer.js +1 -1
- package/src/animation/AnimationUtils.js +204 -199
- package/src/animation/KeyframeTrack.js +1 -1
- package/src/animation/PropertyBinding.js +31 -5
- package/src/audio/AudioContext.js +5 -5
- package/src/cameras/CubeCamera.js +14 -21
- package/src/constants.js +2 -4
- package/src/core/BufferAttribute.js +81 -111
- package/src/core/BufferGeometry.js +3 -41
- package/src/core/InstancedBufferAttribute.js +0 -10
- package/src/core/InstancedBufferGeometry.js +1 -7
- package/src/core/InterleavedBuffer.js +1 -1
- package/src/core/InterleavedBufferAttribute.js +57 -8
- package/src/core/Object3D.js +22 -5
- package/src/core/Uniform.js +0 -7
- package/src/core/UniformsGroup.js +92 -0
- package/src/extras/DataUtils.js +104 -88
- package/src/extras/Earcut.js +67 -67
- package/src/extras/core/Path.js +1 -0
- package/src/extras/core/ShapePath.js +1 -4
- package/src/extras/curves/CatmullRomCurve3.js +4 -2
- package/src/geometries/BoxGeometry.js +1 -1
- package/src/geometries/CapsuleGeometry.js +1 -1
- package/src/geometries/CircleGeometry.js +1 -1
- package/src/geometries/ConeGeometry.js +1 -1
- package/src/geometries/CylinderGeometry.js +2 -1
- package/src/geometries/DodecahedronGeometry.js +1 -1
- package/src/geometries/EdgesGeometry.js +5 -4
- package/src/geometries/ExtrudeGeometry.js +2 -11
- package/src/geometries/IcosahedronGeometry.js +1 -1
- package/src/geometries/LatheGeometry.js +2 -2
- package/src/geometries/OctahedronGeometry.js +1 -1
- package/src/geometries/PlaneGeometry.js +2 -1
- package/src/geometries/PolyhedronGeometry.js +2 -2
- package/src/geometries/RingGeometry.js +1 -1
- package/src/geometries/ShapeGeometry.js +3 -2
- package/src/geometries/SphereGeometry.js +2 -1
- package/src/geometries/TetrahedronGeometry.js +1 -1
- package/src/geometries/TorusGeometry.js +2 -1
- package/src/geometries/TorusKnotGeometry.js +2 -1
- package/src/geometries/TubeGeometry.js +2 -1
- package/src/geometries/WireframeGeometry.js +1 -0
- package/src/helpers/ArrowHelper.js +9 -0
- package/src/helpers/Box3Helper.js +7 -0
- package/src/helpers/BoxHelper.js +7 -1
- package/src/helpers/CameraHelper.js +97 -38
- package/src/helpers/DirectionalLightHelper.js +6 -1
- package/src/helpers/GridHelper.js +7 -0
- package/src/helpers/HemisphereLightHelper.js +5 -1
- package/src/helpers/PlaneHelper.js +15 -9
- package/src/helpers/PointLightHelper.js +2 -1
- package/src/helpers/PolarGridHelper.js +25 -14
- package/src/helpers/SkeletonHelper.js +7 -0
- package/src/helpers/SpotLightHelper.js +5 -2
- package/src/lights/LightShadow.js +1 -2
- package/src/lights/PointLight.js +2 -2
- package/src/lights/SpotLight.js +4 -2
- package/src/loaders/FileLoader.js +16 -2
- package/src/loaders/LoadingManager.js +1 -1
- package/src/loaders/MaterialLoader.js +49 -7
- package/src/loaders/ObjectLoader.js +9 -42
- package/src/materials/Material.js +2 -34
- package/src/materials/Materials.js +0 -27
- package/src/materials/MeshLambertMaterial.js +28 -1
- package/src/materials/MeshPhysicalMaterial.js +1 -1
- package/src/materials/ShaderMaterial.js +3 -7
- package/src/math/Color.js +8 -18
- package/src/math/MathUtils.js +1 -7
- package/src/math/Matrix3.js +54 -25
- package/src/math/Matrix4.js +3 -27
- package/src/math/Quaternion.js +1 -21
- package/src/math/Ray.js +2 -5
- package/src/math/Sphere.js +36 -21
- package/src/math/Vector2.js +4 -24
- package/src/math/Vector3.js +7 -46
- package/src/math/Vector4.js +4 -24
- 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 +119 -69
- package/src/renderers/shaders/ShaderChunk/bsdfs.glsl.js +12 -12
- package/src/renderers/shaders/ShaderChunk/bumpmap_pars_fragment.glsl.js +3 -5
- package/src/renderers/shaders/ShaderChunk/common.glsl.js +6 -5
- package/src/renderers/shaders/ShaderChunk/cube_uv_reflection_fragment.glsl.js +24 -24
- package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +0 -4
- package/src/renderers/shaders/ShaderChunk/envmap_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/envmap_pars_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/gradientmap_pars_fragment.glsl.js +2 -1
- package/src/renderers/shaders/ShaderChunk/iridescence_fragment.glsl.js +113 -99
- package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +34 -13
- package/src/renderers/shaders/ShaderChunk/lights_lambert_fragment.glsl.js +5 -0
- package/src/renderers/shaders/ShaderChunk/lights_lambert_pars_fragment.glsl.js +28 -0
- package/src/renderers/shaders/ShaderChunk/lights_phong_pars_fragment.glsl.js +0 -2
- package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +3 -1
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +13 -1
- 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/normalmap_pars_fragment.glsl.js +2 -4
- package/src/renderers/shaders/ShaderChunk/output_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/packing.glsl.js +8 -0
- package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +18 -7
- package/src/renderers/shaders/ShaderChunk/shadowmap_pars_vertex.glsl.js +8 -3
- package/src/renderers/shaders/ShaderChunk/shadowmap_vertex.glsl.js +9 -6
- package/src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +14 -10
- package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/worldpos_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk.js +7 -2
- 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/meshbasic.glsl.js +0 -1
- package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +22 -50
- package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +0 -1
- package/src/renderers/shaders/ShaderLib/vsm.glsl.js +0 -3
- package/src/renderers/shaders/ShaderLib.js +50 -36
- package/src/renderers/shaders/UniformsLib.js +13 -12
- package/src/renderers/shaders/UniformsUtils.js +29 -0
- package/src/renderers/webgl/WebGLAttributes.js +2 -0
- package/src/renderers/webgl/WebGLBackground.js +17 -9
- package/src/renderers/webgl/WebGLLights.js +37 -17
- package/src/renderers/webgl/WebGLMaterials.js +2 -1
- package/src/renderers/webgl/WebGLMorphtargets.js +0 -20
- package/src/renderers/webgl/WebGLProgram.js +6 -11
- package/src/renderers/webgl/WebGLPrograms.js +30 -26
- package/src/renderers/webgl/WebGLRenderLists.js +5 -4
- package/src/renderers/webgl/WebGLRenderStates.js +5 -4
- package/src/renderers/webgl/WebGLShaderCache.js +9 -6
- package/src/renderers/webgl/WebGLShadowMap.js +13 -16
- package/src/renderers/webgl/WebGLState.js +125 -41
- package/src/renderers/webgl/WebGLTextures.js +94 -39
- package/src/renderers/webgl/WebGLUniforms.js +156 -28
- package/src/renderers/webgl/WebGLUniformsGroups.js +372 -0
- package/src/renderers/webgl/WebGLUtils.js +3 -1
- package/src/renderers/webvr/WebVRManager.js +42 -9
- package/src/renderers/webvr/WebVRUtils.js +1 -1
- package/src/renderers/webxr/WebXRController.js +91 -50
- package/src/renderers/webxr/WebXRManager.js +127 -34
- package/src/scenes/Scene.js +24 -3
- package/src/textures/CompressedArrayTexture.js +18 -0
- package/src/textures/Source.js +1 -1
- package/src/textures/Texture.js +2 -1
- package/src/utils.js +1 -1
- package/examples/js/controls/experimental/CameraControls.js +0 -1048
- package/examples/js/libs/lottie_canvas.js +0 -12751
- package/examples/js/loaders/KTX2Loader.js +0 -558
- package/examples/js/shaders/PixelShader.js +0 -51
- package/examples/jsm/controls/experimental/CameraControls.js +0 -1248
- package/examples/jsm/nodes/accessors/ReflectNode.js +0 -70
- package/examples/jsm/nodes/core/NodeVary.js +0 -14
- package/examples/jsm/nodes/core/VaryNode.js +0 -54
- package/examples/jsm/package.json +0 -3
- package/examples/jsm/renderers/webgl/nodes/WebGLPhysicalContextNode.js +0 -45
- package/examples/jsm/shaders/PixelShader.js +0 -44
- package/src/renderers/shaders/ShaderChunk/lights_lambert_vertex.glsl.js +0 -122
|
@@ -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 );
|
|
@@ -117,18 +117,33 @@ class GLSLNodeFunction extends NodeFunction {
|
|
|
117
117
|
|
|
118
118
|
getCode( name = this.name ) {
|
|
119
119
|
|
|
120
|
-
|
|
121
|
-
const presicion = this.presicion;
|
|
120
|
+
let code;
|
|
122
121
|
|
|
123
|
-
|
|
122
|
+
const blockCode = this.blockCode;
|
|
124
123
|
|
|
125
|
-
if (
|
|
124
|
+
if ( blockCode !== '' ) {
|
|
126
125
|
|
|
127
|
-
|
|
126
|
+
const { type, inputsCode, headerCode, presicion } = this;
|
|
127
|
+
|
|
128
|
+
let declarationCode = `${ type } ${ name } ( ${ inputsCode.trim() } )`;
|
|
129
|
+
|
|
130
|
+
if ( presicion !== '' ) {
|
|
131
|
+
|
|
132
|
+
declarationCode = `${ presicion } ${ declarationCode }`;
|
|
133
|
+
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
code = headerCode + declarationCode + blockCode;
|
|
137
|
+
|
|
138
|
+
} else {
|
|
139
|
+
|
|
140
|
+
// interface function
|
|
141
|
+
|
|
142
|
+
code = '';
|
|
128
143
|
|
|
129
144
|
}
|
|
130
145
|
|
|
131
|
-
return
|
|
146
|
+
return code;
|
|
132
147
|
|
|
133
148
|
}
|
|
134
149
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import TempNode from '../core/TempNode.js';
|
|
2
2
|
import { ShaderNode, uv, add, mul, floor, mod, sign } from '../shadernode/ShaderNodeBaseElements.js';
|
|
3
3
|
|
|
4
4
|
const checkerShaderNode = new ShaderNode( ( inputs ) => {
|
|
@@ -13,7 +13,7 @@ const checkerShaderNode = new ShaderNode( ( inputs ) => {
|
|
|
13
13
|
|
|
14
14
|
} );
|
|
15
15
|
|
|
16
|
-
class CheckerNode extends
|
|
16
|
+
class CheckerNode extends TempNode {
|
|
17
17
|
|
|
18
18
|
constructor( uvNode = uv() ) {
|
|
19
19
|
|
|
@@ -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
|
|
|
@@ -187,17 +202,17 @@ const ints = [ - 1, - 2 ];
|
|
|
187
202
|
const floats = [ 0.5, 1.5, 1 / 3, 1e-6, 1e6, Math.PI, Math.PI * 2, 1 / Math.PI, 2 / Math.PI, 1 / ( Math.PI * 2 ), Math.PI / 2 ];
|
|
188
203
|
|
|
189
204
|
const boolsCacheMap = new Map();
|
|
190
|
-
for (
|
|
205
|
+
for ( const bool of bools ) boolsCacheMap.set( bool, new ConstNode( bool ) );
|
|
191
206
|
|
|
192
207
|
const uintsCacheMap = new Map();
|
|
193
|
-
for (
|
|
208
|
+
for ( const uint of uints ) uintsCacheMap.set( uint, new ConstNode( uint, 'uint' ) );
|
|
194
209
|
|
|
195
210
|
const intsCacheMap = new Map( [ ...uintsCacheMap ].map( el => new ConstNode( el.value, 'int' ) ) );
|
|
196
|
-
for (
|
|
211
|
+
for ( const int of ints ) intsCacheMap.set( int, new ConstNode( int, 'int' ) );
|
|
197
212
|
|
|
198
213
|
const floatsCacheMap = new Map( [ ...intsCacheMap ].map( el => new ConstNode( el.value ) ) );
|
|
199
|
-
for (
|
|
200
|
-
for (
|
|
214
|
+
for ( const float of floats ) floatsCacheMap.set( float, new ConstNode( float ) );
|
|
215
|
+
for ( const float of floats ) floatsCacheMap.set( - float, new ConstNode( - float ) );
|
|
201
216
|
|
|
202
217
|
export const cacheMaps = { bool: boolsCacheMap, uint: uintsCacheMap, ints: intsCacheMap, float: floatsCacheMap };
|
|
203
218
|
|
|
@@ -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
|
|
|
@@ -11,9 +11,10 @@ import InstanceIndexNode from '../core/InstanceIndexNode.js';
|
|
|
11
11
|
import PropertyNode from '../core/PropertyNode.js';
|
|
12
12
|
import UniformNode from '../core/UniformNode.js';
|
|
13
13
|
import VarNode from '../core/VarNode.js';
|
|
14
|
-
import
|
|
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';
|
|
@@ -87,12 +89,12 @@ export const bmat4 = new ConvertType( 'bmat4' );
|
|
|
87
89
|
|
|
88
90
|
// @TODO: ArrayUniformNode
|
|
89
91
|
|
|
90
|
-
export const func = ( code ) => {
|
|
92
|
+
export const func = ( code, includes ) => {
|
|
91
93
|
|
|
92
|
-
const node = nodeObject( new FunctionNode( code ) );
|
|
94
|
+
const node = nodeObject( new FunctionNode( code, includes ) );
|
|
93
95
|
|
|
94
96
|
const call = node.call.bind( node );
|
|
95
|
-
node.call = ( params ) => nodeObject( call( params ) );
|
|
97
|
+
node.call = ( ...params ) => nodeObject( call( params.length > 1 || params[ 0 ]?.isNode === true ? nodeArray( params ) : nodeObjects( params[ 0 ] ) ) );
|
|
96
98
|
|
|
97
99
|
return node;
|
|
98
100
|
|
|
@@ -109,9 +111,13 @@ export const uniform = ( nodeOrType ) => {
|
|
|
109
111
|
|
|
110
112
|
};
|
|
111
113
|
|
|
114
|
+
export const fn = ( code, includes ) => func( code, includes ).call;
|
|
115
|
+
|
|
112
116
|
export const attribute = ( name, nodeType ) => nodeObject( new AttributeNode( name, nodeType ) );
|
|
113
117
|
export const property = ( name, nodeOrType ) => nodeObject( new PropertyNode( name, getConstNodeType( nodeOrType ) ) );
|
|
114
118
|
|
|
119
|
+
export const convert = ( node, types ) => nodeObject( new ConvertNode( nodeObject( node ), types ) );
|
|
120
|
+
|
|
115
121
|
export const bypass = nodeProxy( BypassNode );
|
|
116
122
|
export const code = nodeProxy( CodeNode );
|
|
117
123
|
export const context = nodeProxy( ContextNode );
|
|
@@ -120,66 +126,7 @@ export const call = nodeProxy( FunctionCallNode );
|
|
|
120
126
|
export const instanceIndex = nodeImmutable( InstanceIndexNode );
|
|
121
127
|
export const label = nodeProxy( VarNode );
|
|
122
128
|
export const temp = label;
|
|
123
|
-
export const
|
|
124
|
-
|
|
125
|
-
// accesors
|
|
126
|
-
|
|
127
|
-
export const buffer = ( value, nodeOrType, count ) => nodeObject( new BufferNode( value, getConstNodeType( nodeOrType ), count ) );
|
|
128
|
-
export const storage = ( value, nodeOrType, count ) => nodeObject( new StorageBufferNode( value, getConstNodeType( nodeOrType ), count ) );
|
|
129
|
-
|
|
130
|
-
export const cameraProjectionMatrix = nodeImmutable( CameraNode, CameraNode.PROJECTION_MATRIX );
|
|
131
|
-
export const cameraViewMatrix = nodeImmutable( CameraNode, CameraNode.VIEW_MATRIX );
|
|
132
|
-
export const cameraNormalMatrix = nodeImmutable( CameraNode, CameraNode.NORMAL_MATRIX );
|
|
133
|
-
export const cameraWorldMatrix = nodeImmutable( CameraNode, CameraNode.WORLD_MATRIX );
|
|
134
|
-
export const cameraPosition = nodeImmutable( CameraNode, CameraNode.POSITION );
|
|
135
|
-
|
|
136
|
-
export const materialAlphaTest = nodeImmutable( MaterialNode, MaterialNode.ALPHA_TEST );
|
|
137
|
-
export const materialColor = nodeImmutable( MaterialNode, MaterialNode.COLOR );
|
|
138
|
-
export const materialEmissive = nodeImmutable( MaterialNode, MaterialNode.EMISSIVE );
|
|
139
|
-
export const materialOpacity = nodeImmutable( MaterialNode, MaterialNode.OPACITY );
|
|
140
|
-
//export const materialSpecular = nodeImmutable( MaterialNode, MaterialNode.SPECULAR );
|
|
141
|
-
export const materialRoughness = nodeImmutable( MaterialNode, MaterialNode.ROUGHNESS );
|
|
142
|
-
export const materialMetalness = nodeImmutable( MaterialNode, MaterialNode.METALNESS );
|
|
143
|
-
export const materialRotation = nodeImmutable( MaterialNode, MaterialNode.ROTATION );
|
|
144
|
-
|
|
145
|
-
export const diffuseColor = nodeImmutable( PropertyNode, 'DiffuseColor', 'vec4' );
|
|
146
|
-
export const roughness = nodeImmutable( PropertyNode, 'Roughness', 'float' );
|
|
147
|
-
export const metalness = nodeImmutable( PropertyNode, 'Metalness', 'float' );
|
|
148
|
-
export const alphaTest = nodeImmutable( PropertyNode, 'AlphaTest', 'float' );
|
|
149
|
-
export const specularColor = nodeImmutable( PropertyNode, 'SpecularColor', 'color' );
|
|
150
|
-
|
|
151
|
-
export const reference = ( name, nodeOrType, object ) => nodeObject( new ReferenceNode( name, getConstNodeType( nodeOrType ), object ) );
|
|
152
|
-
export const materialReference = ( name, nodeOrType, material ) => nodeObject( new MaterialReferenceNode( name, getConstNodeType( nodeOrType ), material ) );
|
|
153
|
-
export const userData = ( name, inputType, userData ) => nodeObject( new UserDataNode( name, inputType, userData ) );
|
|
154
|
-
|
|
155
|
-
export const modelViewProjection = nodeProxy( ModelViewProjectionNode );
|
|
156
|
-
|
|
157
|
-
export const normalGeometry = nodeImmutable( NormalNode, NormalNode.GEOMETRY );
|
|
158
|
-
export const normalLocal = nodeImmutable( NormalNode, NormalNode.LOCAL );
|
|
159
|
-
export const normalWorld = nodeImmutable( NormalNode, NormalNode.WORLD );
|
|
160
|
-
export const normalView = nodeImmutable( NormalNode, NormalNode.VIEW );
|
|
161
|
-
export const transformedNormalView = nodeImmutable( VarNode, normalView, 'TransformedNormalView' );
|
|
162
|
-
|
|
163
|
-
export const modelViewMatrix = nodeImmutable( ModelNode, ModelNode.VIEW_MATRIX );
|
|
164
|
-
export const modelNormalMatrix = nodeImmutable( ModelNode, ModelNode.NORMAL_MATRIX );
|
|
165
|
-
export const modelWorldMatrix = nodeImmutable( ModelNode, ModelNode.WORLD_MATRIX );
|
|
166
|
-
export const modelPosition = nodeImmutable( ModelNode, ModelNode.POSITION );
|
|
167
|
-
export const modelViewPosition = nodeImmutable( ModelNode, ModelNode.VIEW_POSITION );
|
|
168
|
-
|
|
169
|
-
export const positionGeometry = nodeImmutable( PositionNode, PositionNode.GEOMETRY );
|
|
170
|
-
export const positionLocal = nodeImmutable( PositionNode, PositionNode.LOCAL );
|
|
171
|
-
export const positionWorld = nodeImmutable( PositionNode, PositionNode.WORLD );
|
|
172
|
-
export const positionView = nodeImmutable( PositionNode, PositionNode.VIEW );
|
|
173
|
-
export const positionViewDirection = nodeImmutable( PositionNode, PositionNode.VIEW_DIRECTION );
|
|
174
|
-
|
|
175
|
-
export const texture = nodeProxy( TextureNode );
|
|
176
|
-
export const sampler = ( texture ) => nodeObject( new ConvertNode( texture.isNode === true ? texture : new TextureNode( texture ), 'sampler' ) );
|
|
177
|
-
export const uv = ( ...params ) => nodeObject( new UVNode( ...params ) );
|
|
178
|
-
export const pointUV = nodeImmutable( PointUVNode );
|
|
179
|
-
|
|
180
|
-
// gpgpu
|
|
181
|
-
|
|
182
|
-
export const compute = ( node, count, workgroupSize ) => nodeObject( new ComputeNode( nodeObject( node ), count, workgroupSize ) );
|
|
129
|
+
export const varying = nodeProxy( VaryingNode );
|
|
183
130
|
|
|
184
131
|
// math
|
|
185
132
|
|
|
@@ -233,9 +180,10 @@ export const negate = nodeProxy( MathNode, MathNode.NEGATE );
|
|
|
233
180
|
export const invert = nodeProxy( MathNode, MathNode.INVERT );
|
|
234
181
|
export const dFdx = nodeProxy( MathNode, MathNode.DFDX );
|
|
235
182
|
export const dFdy = nodeProxy( MathNode, MathNode.DFDY );
|
|
236
|
-
export const saturate = nodeProxy( MathNode, MathNode.SATURATE );
|
|
237
183
|
export const round = nodeProxy( MathNode, MathNode.ROUND );
|
|
184
|
+
export const reciprocal = nodeProxy( MathNode, MathNode.RECIPROCAL );
|
|
238
185
|
|
|
186
|
+
export const atan2 = nodeProxy( MathNode, MathNode.ATAN2 );
|
|
239
187
|
export const min = nodeProxy( MathNode, MathNode.MIN );
|
|
240
188
|
export const max = nodeProxy( MathNode, MathNode.MAX );
|
|
241
189
|
export const mod = nodeProxy( MathNode, MathNode.MOD );
|
|
@@ -251,11 +199,86 @@ export const pow4 = nodeProxy( MathNode, MathNode.POW, 4 );
|
|
|
251
199
|
export const transformDirection = nodeProxy( MathNode, MathNode.TRANSFORM_DIRECTION );
|
|
252
200
|
|
|
253
201
|
export const mix = nodeProxy( MathNode, MathNode.MIX );
|
|
254
|
-
export const clamp =
|
|
202
|
+
export const clamp = ( value, low = 0, high = 1 ) => nodeObject( new MathNode( MathNode.CLAMP, nodeObject( value ), nodeObject( low ), nodeObject( high ) ) );
|
|
255
203
|
export const refract = nodeProxy( MathNode, MathNode.REFRACT );
|
|
256
204
|
export const smoothstep = nodeProxy( MathNode, MathNode.SMOOTHSTEP );
|
|
257
205
|
export const faceforward = nodeProxy( MathNode, MathNode.FACEFORWARD );
|
|
258
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
|
+
|
|
259
282
|
// display
|
|
260
283
|
|
|
261
284
|
export const frontFacing = nodeImmutable( FrontFacingNode );
|
|
@@ -270,5 +293,9 @@ export const element = nodeProxy( ArrayElementNode );
|
|
|
270
293
|
|
|
271
294
|
// miscellaneous
|
|
272
295
|
|
|
273
|
-
export const
|
|
274
|
-
|
|
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 );
|
|
@@ -1,13 +1,17 @@
|
|
|
1
1
|
// accessors
|
|
2
2
|
import CubeTextureNode from '../accessors/CubeTextureNode.js';
|
|
3
3
|
import InstanceNode from '../accessors/InstanceNode.js';
|
|
4
|
-
import
|
|
4
|
+
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';
|
|
9
|
+
import ColorAdjustmentNode from '../display/ColorAdjustmentNode.js';
|
|
8
10
|
import ColorSpaceNode from '../display/ColorSpaceNode.js';
|
|
9
11
|
import NormalMapNode from '../display/NormalMapNode.js';
|
|
12
|
+
import PosterizeNode from '../display/PosterizeNode.js';
|
|
10
13
|
import ToneMappingNode from '../display/ToneMappingNode.js';
|
|
14
|
+
import ViewportNode from '../display/ViewportNode.js';
|
|
11
15
|
|
|
12
16
|
// lighting
|
|
13
17
|
import LightsNode from '../lighting/LightsNode.js';
|
|
@@ -15,11 +19,18 @@ import LightsNode from '../lighting/LightsNode.js';
|
|
|
15
19
|
import LightingContextNode from '../lighting/LightingContextNode.js';
|
|
16
20
|
|
|
17
21
|
// utils
|
|
22
|
+
import EquirectUVNode from '../utils/EquirectUVNode.js';
|
|
18
23
|
import MatcapUVNode from '../utils/MatcapUVNode.js';
|
|
19
24
|
import MaxMipLevelNode from '../utils/MaxMipLevelNode.js';
|
|
20
25
|
import OscNode from '../utils/OscNode.js';
|
|
26
|
+
import RemapNode from '../utils/RemapNode.js';
|
|
27
|
+
import RotateUVNode from '../utils/RotateUVNode.js';
|
|
21
28
|
import SpriteSheetUVNode from '../utils/SpriteSheetUVNode.js';
|
|
22
29
|
import TimerNode from '../utils/TimerNode.js';
|
|
30
|
+
import TriplanarTexturesNode from '../utils/TriplanarTexturesNode.js';
|
|
31
|
+
|
|
32
|
+
// geometry
|
|
33
|
+
import RangeNode from '../geometry/RangeNode.js';
|
|
23
34
|
|
|
24
35
|
// procedural
|
|
25
36
|
import CheckerNode from '../procedural/CheckerNode.js';
|
|
@@ -61,17 +72,34 @@ export const cubeTexture = nodeProxy( CubeTextureNode );
|
|
|
61
72
|
|
|
62
73
|
export const instance = nodeProxy( InstanceNode );
|
|
63
74
|
|
|
64
|
-
export const reflectVector = nodeImmutable(
|
|
65
|
-
export const reflectCube = nodeImmutable( ReflectNode, ReflectNode.CUBE );
|
|
75
|
+
export const reflectVector = nodeImmutable( ReflectVectorNode );
|
|
66
76
|
|
|
67
77
|
export const skinning = nodeProxy( SkinningNode );
|
|
68
78
|
|
|
69
79
|
// display
|
|
70
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
|
+
|
|
86
|
+
export const saturation = nodeProxy( ColorAdjustmentNode, ColorAdjustmentNode.SATURATION );
|
|
87
|
+
export const vibrance = nodeProxy( ColorAdjustmentNode, ColorAdjustmentNode.VIBRANCE );
|
|
88
|
+
export const hue = nodeProxy( ColorAdjustmentNode, ColorAdjustmentNode.HUE );
|
|
89
|
+
|
|
71
90
|
export const colorSpace = ( node, encoding ) => nodeObject( new ColorSpaceNode( null, nodeObject( node ) ).fromEncoding( encoding ) );
|
|
72
91
|
export const normalMap = nodeProxy( NormalMapNode );
|
|
73
92
|
export const toneMapping = ( mapping, exposure, color ) => nodeObject( new ToneMappingNode( mapping, nodeObject( exposure ), nodeObject( color ) ) );
|
|
74
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
|
+
|
|
75
103
|
// lighting
|
|
76
104
|
|
|
77
105
|
//export const lighting = nodeProxy( LightingNode ); // abstract
|
|
@@ -82,6 +110,8 @@ export const lightingContext = nodeProxy( LightingContextNode );
|
|
|
82
110
|
// utils
|
|
83
111
|
|
|
84
112
|
export const matcapUV = nodeImmutable( MatcapUVNode );
|
|
113
|
+
export const equirectUV = nodeProxy( EquirectUVNode );
|
|
114
|
+
|
|
85
115
|
export const maxMipLevel = nodeProxy( MaxMipLevelNode );
|
|
86
116
|
|
|
87
117
|
export const oscSine = nodeProxy( OscNode, OscNode.SINE );
|
|
@@ -89,12 +119,25 @@ export const oscSquare = nodeProxy( OscNode, OscNode.SQUARE );
|
|
|
89
119
|
export const oscTriangle = nodeProxy( OscNode, OscNode.TRIANGLE );
|
|
90
120
|
export const oscSawtooth = nodeProxy( OscNode, OscNode.SAWTOOTH );
|
|
91
121
|
|
|
122
|
+
export const remap = nodeProxy( RemapNode, null, null, { doClamp: false } );
|
|
123
|
+
export const remapClamp = nodeProxy( RemapNode );
|
|
124
|
+
|
|
125
|
+
export const rotateUV = nodeProxy( RotateUVNode );
|
|
126
|
+
|
|
92
127
|
export const spritesheetUV = nodeProxy( SpriteSheetUVNode );
|
|
93
128
|
|
|
94
129
|
// @TODO: add supports to use node in timeScale
|
|
95
|
-
export const timerLocal = ( timeScale ) => nodeObject( new TimerNode( TimerNode.LOCAL, timeScale ) );
|
|
96
|
-
export const timerGlobal = ( timeScale ) => nodeObject( new TimerNode( TimerNode.GLOBAL, timeScale ) );
|
|
97
|
-
export const timerDelta = ( timeScale ) => nodeObject( new TimerNode( TimerNode.DELTA, timeScale ) );
|
|
130
|
+
export const timerLocal = ( timeScale, value = 0 ) => nodeObject( new TimerNode( TimerNode.LOCAL, timeScale, value ) );
|
|
131
|
+
export const timerGlobal = ( timeScale, value = 0 ) => nodeObject( new TimerNode( TimerNode.GLOBAL, timeScale, value ) );
|
|
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 );
|
|
137
|
+
|
|
138
|
+
// geometry
|
|
139
|
+
|
|
140
|
+
export const range = ( min, max ) => nodeObject( new RangeNode( min, max ) );
|
|
98
141
|
|
|
99
142
|
// procedural
|
|
100
143
|
|
|
@@ -11,28 +11,34 @@ 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;
|
|
22
|
+
if ( convertTo === null || builder.getTypeLength( requestType ) === builder.getTypeLength( overloadingType ) ) {
|
|
24
23
|
|
|
25
|
-
|
|
24
|
+
convertTo = overloadingType;
|
|
26
25
|
|
|
27
|
-
|
|
26
|
+
}
|
|
28
27
|
|
|
29
|
-
|
|
28
|
+
}
|
|
30
29
|
|
|
31
|
-
|
|
30
|
+
return convertTo;
|
|
32
31
|
|
|
33
|
-
|
|
32
|
+
}
|
|
34
33
|
|
|
35
|
-
|
|
34
|
+
generate( builder, output ) {
|
|
35
|
+
|
|
36
|
+
const node = this.node;
|
|
37
|
+
const type = this.getNodeType( builder );
|
|
38
|
+
|
|
39
|
+
const snippet = node.build( builder, type );
|
|
40
|
+
|
|
41
|
+
return builder.format( snippet, type, output );
|
|
36
42
|
|
|
37
43
|
}
|
|
38
44
|
|
|
@@ -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;
|