@plastic-software/three 0.174.0 → 0.175.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/build/three.cjs +10655 -1446
- package/build/three.core.js +9626 -1094
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +834 -157
- package/build/three.module.min.js +1 -1
- package/build/three.tsl.js +4 -2
- package/build/three.tsl.min.js +1 -1
- package/build/three.webgpu.js +2658 -1697
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +2654 -1709
- package/build/three.webgpu.nodes.min.js +1 -1
- package/examples/jsm/Addons.js +1 -1
- package/examples/jsm/animation/AnimationClipCreator.js +57 -6
- package/examples/jsm/animation/CCDIKSolver.js +93 -39
- package/examples/jsm/capabilities/WebGL.js +28 -3
- package/examples/jsm/capabilities/WebGPU.js +16 -6
- package/examples/jsm/controls/ArcballControls.js +424 -154
- package/examples/jsm/controls/DragControls.js +93 -2
- package/examples/jsm/controls/FirstPersonControls.js +113 -4
- package/examples/jsm/controls/FlyControls.js +49 -2
- package/examples/jsm/controls/MapControls.js +42 -9
- package/examples/jsm/controls/OrbitControls.js +345 -42
- package/examples/jsm/controls/PointerLockControls.js +111 -9
- package/examples/jsm/controls/TrackballControls.js +159 -8
- package/examples/jsm/controls/TransformControls.js +252 -6
- package/examples/jsm/csm/CSM.js +226 -15
- package/examples/jsm/csm/CSMFrustum.js +52 -0
- package/examples/jsm/csm/CSMHelper.js +47 -0
- package/examples/jsm/csm/CSMShader.js +10 -1
- package/examples/jsm/csm/CSMShadowNode.js +156 -13
- package/examples/jsm/curves/CurveExtras.js +289 -31
- package/examples/jsm/curves/NURBSCurve.js +57 -14
- package/examples/jsm/curves/NURBSSurface.js +50 -6
- package/examples/jsm/curves/NURBSUtils.js +96 -112
- package/examples/jsm/curves/NURBSVolume.js +22 -4
- package/examples/jsm/effects/AnaglyphEffect.js +30 -0
- package/examples/jsm/effects/AsciiEffect.js +60 -15
- package/examples/jsm/effects/OutlineEffect.js +59 -111
- package/examples/jsm/effects/ParallaxBarrierEffect.js +28 -0
- package/examples/jsm/effects/PeppersGhostEffect.js +21 -2
- package/examples/jsm/effects/StereoEffect.js +29 -0
- package/examples/jsm/environments/DebugEnvironment.js +49 -0
- package/examples/jsm/environments/RoomEnvironment.js +23 -4
- package/examples/jsm/exporters/DRACOExporter.js +53 -13
- package/examples/jsm/exporters/EXRExporter.js +37 -8
- package/examples/jsm/exporters/GLTFExporter.js +171 -48
- package/examples/jsm/exporters/KTX2Exporter.js +20 -0
- package/examples/jsm/exporters/OBJExporter.js +18 -0
- package/examples/jsm/exporters/PLYExporter.js +39 -9
- package/examples/jsm/exporters/STLExporter.js +25 -5
- package/examples/jsm/exporters/USDZExporter.js +70 -3
- package/examples/jsm/geometries/BoxLineGeometry.js +22 -0
- package/examples/jsm/geometries/ConvexGeometry.js +18 -0
- package/examples/jsm/geometries/DecalGeometry.js +20 -9
- package/examples/jsm/geometries/ParametricFunctions.js +97 -0
- package/examples/jsm/geometries/ParametricGeometry.js +37 -5
- package/examples/jsm/geometries/RoundedBoxGeometry.js +21 -0
- package/examples/jsm/geometries/TeapotGeometry.js +22 -38
- package/examples/jsm/geometries/TextGeometry.js +44 -16
- package/examples/jsm/helpers/LightProbeHelper.js +35 -0
- package/examples/jsm/helpers/LightProbeHelperGPU.js +36 -0
- package/examples/jsm/helpers/OctreeHelper.js +35 -0
- package/examples/jsm/helpers/PositionalAudioHelper.js +59 -0
- package/examples/jsm/helpers/RectAreaLightHelper.js +35 -3
- package/examples/jsm/helpers/TextureHelper.js +27 -0
- package/examples/jsm/helpers/TextureHelperGPU.js +28 -0
- package/examples/jsm/helpers/VertexNormalsHelper.js +58 -2
- package/examples/jsm/helpers/VertexTangentsHelper.js +46 -2
- package/examples/jsm/helpers/ViewHelper.js +75 -1
- package/examples/jsm/interactive/HTMLMesh.js +25 -0
- package/examples/jsm/interactive/InteractiveGroup.js +65 -5
- package/examples/jsm/interactive/SelectionBox.js +74 -9
- package/examples/jsm/interactive/SelectionHelper.js +71 -29
- package/examples/jsm/libs/motion-controllers.module.js +1 -1
- package/examples/jsm/lighting/TiledLighting.js +23 -0
- package/examples/jsm/lights/LightProbeGenerator.js +26 -1
- package/examples/jsm/lights/RectAreaLightTexturesLib.js +48 -13
- package/examples/jsm/lights/RectAreaLightUniformsLib.js +15 -0
- package/examples/jsm/lines/Line2.js +36 -0
- package/examples/jsm/lines/LineGeometry.js +52 -0
- package/examples/jsm/lines/LineMaterial.js +95 -0
- package/examples/jsm/lines/LineSegments2.js +51 -2
- package/examples/jsm/lines/LineSegmentsGeometry.js +62 -8
- package/examples/jsm/lines/Wireframe.js +38 -2
- package/examples/jsm/lines/WireframeGeometry2.js +24 -0
- package/examples/jsm/lines/webgpu/Line2.js +25 -1
- package/examples/jsm/lines/webgpu/LineSegments2.js +44 -6
- package/examples/jsm/lines/webgpu/Wireframe.js +30 -2
- package/examples/jsm/loaders/3DMLoader.js +71 -2
- package/examples/jsm/loaders/3MFLoader.js +41 -3
- package/examples/jsm/loaders/AMFLoader.js +31 -12
- package/examples/jsm/loaders/BVHLoader.js +57 -11
- package/examples/jsm/loaders/ColladaLoader.js +35 -0
- package/examples/jsm/loaders/DDSLoader.js +24 -0
- package/examples/jsm/loaders/DRACOLoader.js +73 -1
- package/examples/jsm/loaders/EXRLoader.js +40 -8
- package/examples/jsm/loaders/FBXLoader.js +42 -14
- package/examples/jsm/loaders/FontLoader.js +60 -2
- package/examples/jsm/loaders/GCodeLoader.js +33 -5
- package/examples/jsm/loaders/GLTFLoader.js +218 -5
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +48 -0
- package/examples/jsm/loaders/IESLoader.js +41 -0
- package/examples/jsm/loaders/KMZLoader.js +32 -0
- package/examples/jsm/loaders/KTX2Loader.js +86 -18
- package/examples/jsm/loaders/KTXLoader.js +26 -6
- package/examples/jsm/loaders/LDrawLoader.js +115 -5
- package/examples/jsm/loaders/LUT3dlLoader.js +46 -10
- package/examples/jsm/loaders/LUTCubeLoader.js +45 -9
- package/examples/jsm/loaders/LUTImageLoader.js +78 -38
- package/examples/jsm/loaders/LWOLoader.js +46 -7
- package/examples/jsm/loaders/LottieLoader.js +37 -0
- package/examples/jsm/loaders/MD2Loader.js +36 -1
- package/examples/jsm/loaders/MDDLoader.js +56 -12
- package/examples/jsm/loaders/MTLLoader.js +38 -33
- package/examples/jsm/loaders/MaterialXLoader.js +33 -0
- package/examples/jsm/loaders/NRRDLoader.js +36 -5
- package/examples/jsm/loaders/OBJLoader.js +48 -1
- package/examples/jsm/loaders/PCDLoader.js +47 -0
- package/examples/jsm/loaders/PDBLoader.js +40 -2
- package/examples/jsm/loaders/PLYLoader.js +62 -32
- package/examples/jsm/loaders/PVRLoader.js +23 -5
- package/examples/jsm/loaders/RGBELoader.js +38 -5
- package/examples/jsm/loaders/RGBMLoader.js +67 -1
- package/examples/jsm/loaders/STLLoader.js +47 -38
- package/examples/jsm/loaders/SVGLoader.js +113 -20
- package/examples/jsm/loaders/TDSLoader.js +81 -61
- package/examples/jsm/loaders/TGALoader.js +22 -0
- package/examples/jsm/loaders/TIFFLoader.js +22 -0
- package/examples/jsm/loaders/TTFLoader.js +36 -2
- package/examples/jsm/loaders/USDZLoader.js +34 -1
- package/examples/jsm/loaders/UltraHDRLoader.js +58 -12
- package/examples/jsm/loaders/VOXLoader.js +57 -0
- package/examples/jsm/loaders/VRMLLoader.js +32 -1
- package/examples/jsm/loaders/VTKLoader.js +38 -0
- package/examples/jsm/loaders/XYZLoader.js +35 -0
- package/examples/jsm/materials/LDrawConditionalLineMaterial.js +39 -0
- package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +39 -0
- package/examples/jsm/materials/MeshPostProcessingMaterial.js +24 -2
- package/examples/jsm/math/Capsule.js +89 -14
- package/examples/jsm/math/ColorConverter.js +21 -0
- package/examples/jsm/math/ColorSpaces.js +53 -0
- package/examples/jsm/math/ConvexHull.js +514 -92
- package/examples/jsm/math/ImprovedNoise.js +14 -2
- package/examples/jsm/math/Lut.js +111 -0
- package/examples/jsm/math/MeshSurfaceSampler.js +76 -13
- package/examples/jsm/math/OBB.js +139 -46
- package/examples/jsm/math/Octree.js +132 -5
- package/examples/jsm/math/SimplexNoise.js +66 -42
- package/examples/jsm/misc/ConvexObjectBreaker.js +43 -25
- package/examples/jsm/misc/GPUComputationRenderer.js +92 -17
- package/examples/jsm/misc/Gyroscope.js +11 -0
- package/examples/jsm/misc/MD2Character.js +115 -2
- package/examples/jsm/misc/MD2CharacterComplex.js +170 -8
- package/examples/jsm/misc/MorphAnimMesh.js +43 -0
- package/examples/jsm/misc/MorphBlendMesh.js +102 -0
- package/examples/jsm/misc/ProgressiveLightMap.js +40 -15
- package/examples/jsm/misc/ProgressiveLightMapGPU.js +33 -13
- package/examples/jsm/misc/RollerCoaster.js +52 -0
- package/examples/jsm/misc/Timer.js +79 -2
- package/examples/jsm/misc/TubePainter.js +53 -0
- package/examples/jsm/misc/Volume.js +108 -72
- package/examples/jsm/misc/VolumeSlice.js +88 -45
- package/examples/jsm/modifiers/CurveModifier.js +57 -34
- package/examples/jsm/modifiers/CurveModifierGPU.js +36 -17
- package/examples/jsm/modifiers/EdgeSplitModifier.js +18 -0
- package/examples/jsm/modifiers/SimplifyModifier.js +20 -8
- package/examples/jsm/modifiers/TessellateModifier.js +33 -2
- package/examples/jsm/objects/GroundedSkybox.js +23 -5
- package/examples/jsm/objects/Lensflare.js +91 -2
- package/examples/jsm/objects/LensflareMesh.js +53 -2
- package/examples/jsm/objects/MarchingCubes.js +88 -5
- package/examples/jsm/objects/Reflector.js +70 -0
- package/examples/jsm/objects/ReflectorForSSRPass.js +39 -0
- package/examples/jsm/objects/Refractor.js +61 -0
- package/examples/jsm/objects/ShadowMesh.js +53 -4
- package/examples/jsm/objects/Sky.js +26 -9
- package/examples/jsm/objects/SkyMesh.js +60 -9
- package/examples/jsm/objects/Water.js +44 -5
- package/examples/jsm/objects/Water2.js +42 -3
- package/examples/jsm/objects/Water2Mesh.js +38 -3
- package/examples/jsm/objects/WaterMesh.js +94 -7
- package/examples/jsm/physics/AmmoPhysics.js +47 -0
- package/examples/jsm/physics/JoltPhysics.js +48 -0
- package/examples/jsm/physics/RapierPhysics.js +56 -0
- package/examples/jsm/postprocessing/AfterimagePass.js +90 -38
- package/examples/jsm/postprocessing/BloomPass.js +125 -24
- package/examples/jsm/postprocessing/BokehPass.js +98 -22
- package/examples/jsm/postprocessing/ClearPass.js +53 -3
- package/examples/jsm/postprocessing/CubeTexturePass.js +81 -21
- package/examples/jsm/postprocessing/DotScreenPass.js +58 -10
- package/examples/jsm/postprocessing/EffectComposer.js +131 -0
- package/examples/jsm/postprocessing/FilmPass.js +53 -5
- package/examples/jsm/postprocessing/GTAOPass.js +191 -48
- package/examples/jsm/postprocessing/GlitchPass.js +84 -33
- package/examples/jsm/postprocessing/HalftonePass.js +64 -10
- package/examples/jsm/postprocessing/LUTPass.js +37 -8
- package/examples/jsm/postprocessing/MaskPass.js +90 -0
- package/examples/jsm/postprocessing/OutlinePass.js +266 -133
- package/examples/jsm/postprocessing/OutputPass.js +53 -14
- package/examples/jsm/postprocessing/Pass.js +98 -4
- package/examples/jsm/postprocessing/RenderPass.js +83 -0
- package/examples/jsm/postprocessing/RenderPixelatedPass.js +123 -45
- package/examples/jsm/postprocessing/RenderTransitionPass.js +119 -21
- package/examples/jsm/postprocessing/SAOPass.js +126 -53
- package/examples/jsm/postprocessing/SMAAPass.js +103 -71
- package/examples/jsm/postprocessing/SSAARenderPass.js +117 -35
- package/examples/jsm/postprocessing/SSAOPass.js +160 -47
- package/examples/jsm/postprocessing/SSRPass.js +230 -49
- package/examples/jsm/postprocessing/SavePass.js +68 -16
- package/examples/jsm/postprocessing/ShaderPass.js +64 -7
- package/examples/jsm/postprocessing/TAARenderPass.js +78 -24
- package/examples/jsm/postprocessing/TexturePass.js +71 -8
- package/examples/jsm/postprocessing/UnrealBloomPass.js +113 -37
- package/examples/jsm/renderers/CSS2DRenderer.js +77 -1
- package/examples/jsm/renderers/CSS3DRenderer.js +99 -3
- package/examples/jsm/renderers/Projector.js +18 -2
- package/examples/jsm/renderers/SVGRenderer.js +124 -0
- package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +9 -5
- package/examples/jsm/shaders/AfterimageShader.js +6 -4
- package/examples/jsm/shaders/BasicShader.js +6 -2
- package/examples/jsm/shaders/BleachBypassShader.js +8 -4
- package/examples/jsm/shaders/BlendShader.js +6 -2
- package/examples/jsm/shaders/BokehShader.js +7 -4
- package/examples/jsm/shaders/BokehShader2.js +7 -3
- package/examples/jsm/shaders/BrightnessContrastShader.js +8 -5
- package/examples/jsm/shaders/ColorCorrectionShader.js +6 -2
- package/examples/jsm/shaders/ColorifyShader.js +6 -2
- package/examples/jsm/shaders/ConvolutionShader.js +7 -39
- package/examples/jsm/shaders/CopyShader.js +6 -2
- package/examples/jsm/shaders/DOFMipMapShader.js +8 -4
- package/examples/jsm/shaders/DepthLimitedBlurShader.js +7 -1
- package/examples/jsm/shaders/DigitalGlitch.js +7 -7
- package/examples/jsm/shaders/DotScreenShader.js +6 -4
- package/examples/jsm/shaders/ExposureShader.js +6 -2
- package/examples/jsm/shaders/FXAAShader.js +15 -7
- package/examples/jsm/shaders/FilmShader.js +10 -0
- package/examples/jsm/shaders/FocusShader.js +6 -4
- package/examples/jsm/shaders/FreiChenShader.js +7 -3
- package/examples/jsm/shaders/GTAOShader.js +33 -39
- package/examples/jsm/shaders/GammaCorrectionShader.js +8 -2
- package/examples/jsm/shaders/GodRaysShader.js +14 -5
- package/examples/jsm/shaders/HalftoneShader.js +11 -5
- package/examples/jsm/shaders/HorizontalBlurShader.js +9 -3
- package/examples/jsm/shaders/HorizontalTiltShiftShader.js +6 -2
- package/examples/jsm/shaders/HueSaturationShader.js +7 -3
- package/examples/jsm/shaders/KaleidoShader.js +8 -4
- package/examples/jsm/shaders/LuminosityHighPassShader.js +6 -5
- package/examples/jsm/shaders/LuminosityShader.js +6 -3
- package/examples/jsm/shaders/MirrorShader.js +7 -4
- package/examples/jsm/shaders/NormalMapShader.js +5 -3
- package/examples/jsm/shaders/OutputShader.js +11 -0
- package/examples/jsm/shaders/PoissonDenoiseShader.js +21 -15
- package/examples/jsm/shaders/RGBShiftShader.js +5 -1
- package/examples/jsm/shaders/SAOShader.js +8 -2
- package/examples/jsm/shaders/SMAAShader.js +23 -1
- package/examples/jsm/shaders/SSAOShader.js +23 -5
- package/examples/jsm/shaders/SSRShader.js +25 -1
- package/examples/jsm/shaders/SepiaShader.js +6 -4
- package/examples/jsm/shaders/SobelOperatorShader.js +5 -2
- package/examples/jsm/shaders/SubsurfaceScatteringShader.js +10 -8
- package/examples/jsm/shaders/TechnicolorShader.js +7 -4
- package/examples/jsm/shaders/ToonShader.js +29 -7
- package/examples/jsm/shaders/TriangleBlurShader.js +6 -4
- package/examples/jsm/shaders/UnpackDepthRGBAShader.js +6 -3
- package/examples/jsm/shaders/VelocityShader.js +6 -2
- package/examples/jsm/shaders/VerticalBlurShader.js +6 -2
- package/examples/jsm/shaders/VerticalTiltShiftShader.js +5 -1
- package/examples/jsm/shaders/VignetteShader.js +6 -4
- package/examples/jsm/shaders/VolumeShader.js +7 -1
- package/examples/jsm/shaders/WaterRefractionShader.js +8 -0
- package/examples/jsm/textures/FlakesTexture.js +12 -0
- package/examples/jsm/transpiler/Transpiler.js +31 -0
- package/examples/jsm/tsl/display/AfterImageNode.js +1 -1
- package/examples/jsm/tsl/display/BloomNode.js +1 -1
- package/examples/jsm/tsl/display/PixelationPassNode.js +4 -4
- package/examples/jsm/tsl/display/SSRNode.js +1 -1
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +29 -3
- package/examples/jsm/tsl/math/Bayer.js +14 -1
- package/examples/jsm/tsl/utils/Raymarching.js +4 -2
- package/examples/jsm/utils/BufferGeometryUtils.js +88 -29
- package/examples/jsm/utils/CameraUtils.js +10 -7
- package/examples/jsm/utils/GeometryCompressionUtils.js +20 -30
- package/examples/jsm/utils/GeometryUtils.js +12 -13
- package/examples/jsm/utils/LDrawUtils.js +11 -4
- package/examples/jsm/utils/SceneOptimizer.js +66 -20
- package/examples/jsm/utils/SceneUtils.js +50 -3
- package/examples/jsm/utils/ShadowMapViewer.js +47 -24
- package/examples/jsm/utils/ShadowMapViewerGPU.js +47 -24
- package/examples/jsm/utils/SkeletonUtils.js +45 -0
- package/examples/jsm/utils/SortUtils.js +14 -5
- package/examples/jsm/utils/UVsDebug.js +9 -4
- package/examples/jsm/utils/WebGLTextureUtils.js +13 -0
- package/examples/jsm/utils/WebGPUTextureUtils.js +14 -0
- package/examples/jsm/utils/WorkerPool.js +65 -2
- package/examples/jsm/webxr/ARButton.js +18 -0
- package/examples/jsm/webxr/OculusHandModel.js +83 -0
- package/examples/jsm/webxr/OculusHandPointerModel.js +125 -0
- package/examples/jsm/webxr/Text2D.js +11 -0
- package/examples/jsm/webxr/VRButton.js +30 -0
- package/examples/jsm/webxr/XRButton.js +22 -0
- package/examples/jsm/webxr/XRControllerModelFactory.js +87 -3
- package/examples/jsm/webxr/XREstimatedLight.js +33 -3
- package/examples/jsm/webxr/XRHandMeshModel.js +35 -0
- package/examples/jsm/webxr/XRHandModelFactory.js +92 -0
- package/examples/jsm/webxr/XRHandPrimitiveModel.js +42 -0
- package/examples/jsm/webxr/XRPlanes.js +17 -0
- package/package.json +1 -1
- package/src/Three.TSL.js +3 -1
- package/src/animation/AnimationAction.js +262 -30
- package/src/animation/AnimationClip.js +141 -2
- package/src/animation/AnimationMixer.js +99 -15
- package/src/animation/AnimationObjectGroup.js +41 -18
- package/src/animation/AnimationUtils.js +168 -18
- package/src/animation/KeyframeTrack.js +144 -10
- package/src/animation/PropertyBinding.js +77 -3
- package/src/animation/PropertyMixer.js +72 -5
- package/src/animation/tracks/BooleanKeyframeTrack.js +33 -6
- package/src/animation/tracks/ColorKeyframeTrack.js +26 -5
- package/src/animation/tracks/NumberKeyframeTrack.js +26 -2
- package/src/animation/tracks/QuaternionKeyframeTrack.js +30 -1
- package/src/animation/tracks/StringKeyframeTrack.js +33 -2
- package/src/animation/tracks/VectorKeyframeTrack.js +26 -2
- package/src/audio/AudioAnalyser.js +1 -1
- package/src/audio/AudioListener.js +2 -2
- package/src/audio/PositionalAudio.js +5 -5
- package/src/constants.js +1429 -5
- package/src/core/BufferAttribute.js +413 -3
- package/src/core/BufferGeometry.js +337 -1
- package/src/core/Clock.js +60 -0
- package/src/core/GLBufferAttribute.js +99 -0
- package/src/core/InstancedBufferAttribute.js +29 -0
- package/src/core/InstancedBufferGeometry.js +20 -0
- package/src/core/InstancedInterleavedBuffer.js +26 -0
- package/src/core/InterleavedBuffer.js +137 -3
- package/src/core/InterleavedBufferAttribute.js +197 -0
- package/src/core/Layers.js +71 -10
- package/src/core/Object3D.js +23 -0
- package/src/core/Raycaster.js +134 -1
- package/src/core/RenderTarget.js +166 -7
- package/src/core/RenderTarget3D.js +25 -0
- package/src/core/RenderTargetArray.js +18 -0
- package/src/core/Uniform.js +29 -0
- package/src/core/UniformsGroup.js +84 -2
- package/src/extras/Controls.js +16 -1
- package/src/extras/Earcut.js +3 -781
- package/src/extras/ImageUtils.js +3 -2
- package/src/extras/PMREMGenerator.js +22 -17
- package/src/extras/core/Curve.js +1 -1
- package/src/extras/core/Path.js +1 -1
- package/src/extras/lib/earcut.js +685 -0
- package/src/geometries/ConeGeometry.js +2 -2
- package/src/geometries/CylinderGeometry.js +2 -2
- package/src/geometries/ExtrudeGeometry.js +71 -39
- package/src/geometries/LatheGeometry.js +1 -1
- package/src/lights/LightShadow.js +1 -1
- package/src/lights/webgpu/IESSpotLight.js +1 -1
- package/src/loaders/AnimationLoader.js +31 -0
- package/src/loaders/AudioLoader.js +31 -0
- package/src/loaders/BufferGeometryLoader.js +34 -0
- package/src/loaders/Cache.js +45 -0
- package/src/loaders/CompressedTextureLoader.js +36 -3
- package/src/loaders/CubeTextureLoader.js +45 -0
- package/src/loaders/DataTextureLoader.js +44 -3
- package/src/loaders/FileLoader.js +57 -1
- package/src/loaders/ImageBitmapLoader.js +57 -0
- package/src/loaders/ImageLoader.js +30 -0
- package/src/loaders/Loader.js +4 -6
- package/src/loaders/LoaderUtils.js +18 -36
- package/src/loaders/LoadingManager.js +142 -0
- package/src/loaders/MaterialLoader.js +57 -0
- package/src/loaders/ObjectLoader.js +53 -0
- package/src/loaders/TextureLoader.js +33 -0
- package/src/loaders/nodes/NodeLoader.js +6 -2
- package/src/loaders/nodes/NodeMaterialLoader.js +1 -1
- package/src/loaders/nodes/NodeObjectLoader.js +3 -3
- package/src/materials/LineBasicMaterial.js +74 -1
- package/src/materials/LineDashedMaterial.js +52 -0
- package/src/materials/Material.js +18 -3
- package/src/materials/MeshBasicMaterial.js +165 -0
- package/src/materials/MeshDepthMaterial.js +93 -0
- package/src/materials/MeshDistanceMaterial.js +76 -0
- package/src/materials/MeshLambertMaterial.js +273 -0
- package/src/materials/MeshMatcapMaterial.js +142 -0
- package/src/materials/MeshNormalMaterial.js +113 -0
- package/src/materials/MeshPhongMaterial.js +288 -0
- package/src/materials/MeshPhysicalMaterial.js +292 -1
- package/src/materials/MeshStandardMaterial.js +297 -0
- package/src/materials/MeshToonMaterial.js +218 -0
- package/src/materials/PointsMaterial.js +89 -0
- package/src/materials/RawShaderMaterial.js +25 -0
- package/src/materials/ShaderMaterial.js +215 -6
- package/src/materials/ShadowMaterial.js +54 -0
- package/src/materials/SpriteMaterial.js +82 -0
- package/src/materials/nodes/Line2NodeMaterial.js +1 -1
- package/src/materials/nodes/LineBasicNodeMaterial.js +2 -2
- package/src/materials/nodes/LineDashedNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshBasicNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshLambertNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshMatcapNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshNormalNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshPhongNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshSSSNodeMaterial.js +1 -1
- package/src/materials/nodes/MeshStandardNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshToonNodeMaterial.js +2 -2
- package/src/materials/nodes/NodeMaterial.js +7 -3
- package/src/materials/nodes/PointsNodeMaterial.js +1 -1
- package/src/materials/nodes/ShadowNodeMaterial.js +11 -2
- package/src/materials/nodes/SpriteNodeMaterial.js +1 -1
- package/src/materials/nodes/VolumeNodeMaterial.js +10 -1
- package/src/math/Color.js +1 -1
- package/src/math/MathUtils.js +223 -0
- package/src/nodes/Nodes.js +1 -0
- package/src/nodes/accessors/BatchNode.js +8 -8
- package/src/nodes/accessors/BuiltinNode.js +1 -1
- package/src/nodes/accessors/CubeTextureNode.js +1 -1
- package/src/nodes/accessors/InstanceNode.js +5 -5
- package/src/nodes/accessors/InstancedMeshNode.js +1 -1
- package/src/nodes/accessors/MorphNode.js +27 -23
- package/src/nodes/accessors/Normal.js +1 -1
- package/src/nodes/accessors/Object3DNode.js +12 -12
- package/src/nodes/accessors/ReferenceBaseNode.js +2 -2
- package/src/nodes/accessors/ReferenceNode.js +1 -1
- package/src/nodes/accessors/SkinningNode.js +46 -37
- package/src/nodes/accessors/StorageBufferNode.js +1 -1
- package/src/nodes/accessors/StorageTextureNode.js +3 -3
- package/src/nodes/accessors/Texture3DNode.js +1 -1
- package/src/nodes/accessors/TextureNode.js +25 -5
- package/src/nodes/accessors/TextureSizeNode.js +1 -1
- package/src/nodes/accessors/UniformArrayNode.js +2 -2
- package/src/nodes/code/CodeNode.js +4 -4
- package/src/nodes/code/ExpressionNode.js +4 -4
- package/src/nodes/code/FunctionCallNode.js +23 -3
- package/src/nodes/code/ScriptableNode.js +4 -4
- package/src/nodes/code/ScriptableValueNode.js +2 -2
- package/src/nodes/core/AssignNode.js +1 -1
- package/src/nodes/core/AttributeNode.js +1 -1
- package/src/nodes/core/BypassNode.js +1 -1
- package/src/nodes/core/CacheNode.js +1 -1
- package/src/nodes/core/ContextNode.js +1 -1
- package/src/nodes/core/InputNode.js +2 -2
- package/src/nodes/core/Node.js +14 -2
- package/src/nodes/core/NodeBuilder.js +86 -14
- package/src/nodes/core/StackNode.js +5 -5
- package/src/nodes/core/StructNode.js +1 -1
- package/src/nodes/core/StructTypeNode.js +2 -2
- package/src/nodes/core/VarNode.js +2 -8
- package/src/nodes/core/VaryingNode.js +3 -3
- package/src/nodes/display/BlendModes.js +4 -4
- package/src/nodes/display/BumpMapNode.js +1 -1
- package/src/nodes/display/NormalMapNode.js +1 -1
- package/src/nodes/display/PosterizeNode.js +1 -1
- package/src/nodes/display/ScreenNode.js +3 -3
- package/src/nodes/display/ViewportDepthNode.js +2 -2
- package/src/nodes/display/ViewportDepthTextureNode.js +2 -2
- package/src/nodes/display/ViewportSharedTextureNode.js +2 -2
- package/src/nodes/display/ViewportTextureNode.js +4 -4
- package/src/nodes/functions/ShadowMaskModel.js +4 -4
- package/src/nodes/functions/material/getParallaxCorrectNormal.js +6 -6
- package/src/nodes/geometry/RangeNode.js +1 -1
- package/src/nodes/gpgpu/AtomicFunctionNode.js +16 -40
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +1 -1
- package/src/nodes/gpgpu/ComputeNode.js +30 -2
- package/src/nodes/lighting/AnalyticLightNode.js +9 -1
- package/src/nodes/lighting/LightsNode.js +3 -3
- package/src/nodes/lighting/ShadowNode.js +1 -1
- package/src/nodes/math/ConditionalNode.js +20 -3
- package/src/nodes/math/MathNode.js +83 -78
- package/src/nodes/math/OperatorNode.js +171 -82
- package/src/nodes/pmrem/PMREMNode.js +4 -4
- package/src/nodes/pmrem/PMREMUtils.js +2 -2
- package/src/nodes/tsl/TSLBase.js +2 -1
- package/src/nodes/tsl/TSLCore.js +115 -12
- package/src/nodes/utils/ArrayElementNode.js +3 -1
- package/src/nodes/utils/CubeMapNode.js +3 -3
- package/src/nodes/utils/DebugNode.js +70 -0
- package/src/nodes/utils/EquirectUVNode.js +2 -2
- package/src/nodes/utils/JoinNode.js +27 -2
- package/src/nodes/utils/LoopNode.js +58 -28
- package/src/nodes/utils/MaxMipLevelNode.js +1 -1
- package/src/nodes/utils/ReflectorNode.js +2 -2
- package/src/nodes/utils/RemapNode.js +6 -6
- package/src/nodes/utils/RotateNode.js +1 -1
- package/src/nodes/utils/SpriteSheetUVNode.js +3 -3
- package/src/nodes/utils/StorageArrayElementNode.js +1 -1
- package/src/nodes/utils/TriplanarTexturesNode.js +3 -3
- package/src/objects/BatchedMesh.js +4 -4
- package/src/objects/InstancedMesh.js +2 -2
- package/src/objects/LOD.js +1 -1
- package/src/objects/Skeleton.js +1 -1
- package/src/renderers/WebGL3DRenderTarget.js +25 -0
- package/src/renderers/WebGLArrayRenderTarget.js +25 -0
- package/src/renderers/WebGLCubeRenderTarget.js +39 -1
- package/src/renderers/WebGLRenderTarget.js +19 -0
- package/src/renderers/WebGLRenderer.js +617 -79
- package/src/renderers/common/Animation.js +2 -2
- package/src/renderers/common/Attributes.js +2 -2
- package/src/renderers/common/Backend.js +12 -3
- package/src/renderers/common/Background.js +1 -0
- package/src/renderers/common/Color4.js +1 -1
- package/src/renderers/common/CubeRenderTarget.js +13 -0
- package/src/renderers/common/PostProcessing.js +2 -0
- package/src/renderers/common/QuadMesh.js +2 -0
- package/src/renderers/common/RenderList.js +2 -2
- package/src/renderers/common/RenderObject.js +1 -1
- package/src/renderers/common/RenderObjects.js +2 -2
- package/src/renderers/common/Renderer.js +52 -31
- package/src/renderers/common/XRManager.js +333 -10
- package/src/renderers/common/extras/PMREMGenerator.js +6 -0
- package/src/renderers/common/nodes/NodeBuilderState.js +3 -3
- package/src/renderers/shaders/UniformsLib.js +1 -4
- package/src/renderers/shaders/UniformsUtils.js +1 -3
- package/src/renderers/webgl/WebGLBackground.js +4 -2
- package/src/renderers/webgl/WebGLState.js +9 -9
- package/src/renderers/webgl-fallback/WebGLBackend.js +25 -26
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +3 -12
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +67 -19
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +1 -1
- package/src/renderers/webgpu/WebGPUBackend.js +128 -87
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +1 -11
- package/src/renderers/webgpu/WebGPURenderer.js +17 -11
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +4 -4
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +5 -3
- package/src/renderers/webgpu/utils/WebGPUConstants.js +1 -1
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +1 -1
- package/src/renderers/webxr/WebXRController.js +87 -2
- package/src/renderers/webxr/WebXRDepthSensing.js +49 -0
- package/src/renderers/webxr/WebXRManager.js +173 -1
- package/src/scenes/Scene.js +2 -1
- package/src/textures/CanvasTexture.js +28 -0
- package/src/textures/CompressedArrayTexture.js +57 -0
- package/src/textures/CompressedCubeTexture.js +29 -0
- package/src/textures/CompressedTexture.js +64 -6
- package/src/textures/CubeTexture.js +52 -4
- package/src/textures/Data3DTexture.js +77 -0
- package/src/textures/DataArrayTexture.js +93 -0
- package/src/textures/DataTexture.js +65 -0
- package/src/textures/DepthTexture.js +59 -9
- package/src/textures/FramebufferTexture.js +62 -0
- package/src/textures/Source.js +69 -0
- package/src/textures/Texture.js +5 -5
- package/src/textures/VideoFrameTexture.js +43 -6
- package/src/textures/VideoTexture.js +49 -4
- package/examples/jsm/geometries/ParametricGeometries.js +0 -254
|
@@ -6,36 +6,18 @@ import {
|
|
|
6
6
|
Vector3,
|
|
7
7
|
} from 'three';
|
|
8
8
|
|
|
9
|
+
/** @module GTAOShader */
|
|
10
|
+
|
|
9
11
|
/**
|
|
10
|
-
*
|
|
11
|
-
* - implemented algorithm - GTAO
|
|
12
|
-
* - https://iryoku.com/downloads/Practical-Realtime-Strategies-for-Accurate-Indirect-Occlusion.pdf
|
|
13
|
-
* - https://github.com/Patapom/GodComplex/blob/master/Tests/TestHBIL/2018%20Mayaux%20-%20Horizon-Based%20Indirect%20Lighting%20(HBIL).pdf
|
|
12
|
+
* GTAO shader. Use by {@link GTAOPass}.
|
|
14
13
|
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
* - https://learnopengl.com/Advanced-Lighting/SSAO
|
|
19
|
-
* - https://creativecoding.soe.ucsc.edu/courses/cmpm164/_schedule/AmbientOcclusion.pdf
|
|
20
|
-
* - https://drive.google.com/file/d/1SyagcEVplIm2KkRD3WQYSO9O0Iyi1hfy/edit
|
|
21
|
-
* - Scalable Ambient Occlusion (SAO), see also SAOShader.js
|
|
22
|
-
* - https://casual-effects.com/research/McGuire2012SAO/index.html
|
|
23
|
-
* - https://research.nvidia.com/sites/default/files/pubs/2012-06_Scalable-Ambient-Obscurance/McGuire12SAO.pdf
|
|
24
|
-
* - N8HO
|
|
25
|
-
* - https://github.com/N8python/n8ao
|
|
26
|
-
* - Horizon Based Ambient Occlusion (HBAO)
|
|
27
|
-
* - http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.577.2286&rep=rep1&type=pdf
|
|
28
|
-
* - https://www.derschmale.com/2013/12/20/an-alternative-implementation-for-hbao-2/
|
|
14
|
+
* References:
|
|
15
|
+
* - [Practical Realtime Strategies for Accurate Indirect Occlusion]{@link https://iryoku.com/downloads/Practical-Realtime-Strategies-for-Accurate-Indirect-Occlusion.pdf}.
|
|
16
|
+
* - [Horizon-Based Indirect Lighting (HBIL)]{@link https://github.com/Patapom/GodComplex/blob/master/Tests/TestHBIL/2018%20Mayaux%20-%20Horizon-Based%20Indirect%20Lighting%20(HBIL).pdf}
|
|
29
17
|
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
* - https://www.comp.nus.edu.sg/~lowkl/publications/mssao_visual_computer_2012.pdf
|
|
33
|
-
* - https://web.ics.purdue.edu/~tmcgraw/papers/mcgraw-ao-2008.pdf
|
|
34
|
-
* - https://www.activision.com/cdn/research/Practical_Real_Time_Strategies_for_Accurate_Indirect_Occlusion_NEW%20VERSION_COLOR.pdf
|
|
35
|
-
* - https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.390.2463&rep=rep1&type=pdf
|
|
36
|
-
* - https://www.intel.com/content/www/us/en/developer/articles/technical/adaptive-screen-space-ambient-occlusion.html
|
|
18
|
+
* @constant
|
|
19
|
+
* @type {ShaderMaterial~Shader}
|
|
37
20
|
*/
|
|
38
|
-
|
|
39
21
|
const GTAOShader = {
|
|
40
22
|
|
|
41
23
|
name: 'GTAOShader',
|
|
@@ -87,7 +69,7 @@ const GTAOShader = {
|
|
|
87
69
|
uniform float cameraNear;
|
|
88
70
|
uniform float cameraFar;
|
|
89
71
|
uniform mat4 cameraProjectionMatrix;
|
|
90
|
-
uniform mat4 cameraProjectionMatrixInverse;
|
|
72
|
+
uniform mat4 cameraProjectionMatrixInverse;
|
|
91
73
|
uniform mat4 cameraWorldMatrix;
|
|
92
74
|
uniform float radius;
|
|
93
75
|
uniform float distanceExponent;
|
|
@@ -98,7 +80,7 @@ const GTAOShader = {
|
|
|
98
80
|
uniform vec3 sceneBoxMin;
|
|
99
81
|
uniform vec3 sceneBoxMax;
|
|
100
82
|
#endif
|
|
101
|
-
|
|
83
|
+
|
|
102
84
|
#include <common>
|
|
103
85
|
#include <packing>
|
|
104
86
|
|
|
@@ -112,11 +94,11 @@ const GTAOShader = {
|
|
|
112
94
|
return viewSpacePosition.xyz / viewSpacePosition.w;
|
|
113
95
|
}
|
|
114
96
|
|
|
115
|
-
float getDepth(const vec2 uv) {
|
|
97
|
+
float getDepth(const vec2 uv) {
|
|
116
98
|
return textureLod(tDepth, uv.xy, 0.0).DEPTH_SWIZZLING;
|
|
117
99
|
}
|
|
118
100
|
|
|
119
|
-
float fetchDepth(const ivec2 uv) {
|
|
101
|
+
float fetchDepth(const ivec2 uv) {
|
|
120
102
|
return texelFetch(tDepth, uv.xy, 0).DEPTH_SWIZZLING;
|
|
121
103
|
}
|
|
122
104
|
|
|
@@ -166,7 +148,7 @@ const GTAOShader = {
|
|
|
166
148
|
float sampleSceneDepth = getDepth(sampleUv);
|
|
167
149
|
return vec3(sampleUv, sampleSceneDepth);
|
|
168
150
|
}
|
|
169
|
-
|
|
151
|
+
|
|
170
152
|
void main() {
|
|
171
153
|
float depth = getDepth(vUv.xy);
|
|
172
154
|
if (depth >= 1.0) {
|
|
@@ -192,7 +174,7 @@ const GTAOShader = {
|
|
|
192
174
|
return;
|
|
193
175
|
}
|
|
194
176
|
#endif
|
|
195
|
-
|
|
177
|
+
|
|
196
178
|
vec2 noiseResolution = vec2(textureSize(tNoise, 0));
|
|
197
179
|
vec2 noiseUv = vUv * resolution / noiseResolution;
|
|
198
180
|
vec4 noiseTexel = textureLod(tNoise, noiseUv, 0.0);
|
|
@@ -205,21 +187,21 @@ const GTAOShader = {
|
|
|
205
187
|
const int STEPS = (SAMPLES + DIRECTIONS - 1) / DIRECTIONS;
|
|
206
188
|
float ao = 0.0;
|
|
207
189
|
for (int i = 0; i < DIRECTIONS; ++i) {
|
|
208
|
-
|
|
190
|
+
|
|
209
191
|
float angle = float(i) / float(DIRECTIONS) * PI;
|
|
210
|
-
vec4 sampleDir = vec4(cos(angle), sin(angle), 0., 0.5 + 0.5 * noiseTexel.w);
|
|
192
|
+
vec4 sampleDir = vec4(cos(angle), sin(angle), 0., 0.5 + 0.5 * noiseTexel.w);
|
|
211
193
|
sampleDir.xyz = normalize(kernelMatrix * sampleDir.xyz);
|
|
212
194
|
|
|
213
195
|
vec3 viewDir = normalize(-viewPos.xyz);
|
|
214
196
|
vec3 sliceBitangent = normalize(cross(sampleDir.xyz, viewDir));
|
|
215
197
|
vec3 sliceTangent = cross(sliceBitangent, viewDir);
|
|
216
198
|
vec3 normalInSlice = normalize(viewNormal - sliceBitangent * dot(viewNormal, sliceBitangent));
|
|
217
|
-
|
|
199
|
+
|
|
218
200
|
vec3 tangentToNormalInSlice = cross(normalInSlice, sliceBitangent);
|
|
219
201
|
vec2 cosHorizons = vec2(dot(viewDir, tangentToNormalInSlice), dot(viewDir, -tangentToNormalInSlice));
|
|
220
|
-
|
|
202
|
+
|
|
221
203
|
for (int j = 0; j < STEPS; ++j) {
|
|
222
|
-
vec3 sampleViewOffset = sampleDir.xyz * radiusToUse * sampleDir.w * pow(float(j + 1) / float(STEPS), distanceExponent);
|
|
204
|
+
vec3 sampleViewOffset = sampleDir.xyz * radiusToUse * sampleDir.w * pow(float(j + 1) / float(STEPS), distanceExponent);
|
|
223
205
|
|
|
224
206
|
vec3 sampleSceneUvDepth = getSceneUvAndDepth(viewPos + sampleViewOffset);
|
|
225
207
|
vec3 sampleSceneViewPos = getViewPosition(sampleSceneUvDepth.xy, sampleSceneUvDepth.z);
|
|
@@ -227,7 +209,7 @@ const GTAOShader = {
|
|
|
227
209
|
if (abs(viewDelta.z) < thickness) {
|
|
228
210
|
float sampleCosHorizon = dot(viewDir, normalize(viewDelta));
|
|
229
211
|
cosHorizons.x += max(0., (sampleCosHorizon - cosHorizons.x) * mix(1., 2. / float(j + 2), distanceFallOff));
|
|
230
|
-
}
|
|
212
|
+
}
|
|
231
213
|
|
|
232
214
|
sampleSceneUvDepth = getSceneUvAndDepth(viewPos - sampleViewOffset);
|
|
233
215
|
sampleSceneViewPos = getViewPosition(sampleSceneUvDepth.xy, sampleSceneUvDepth.z);
|
|
@@ -247,7 +229,7 @@ const GTAOShader = {
|
|
|
247
229
|
ao += occlusion;
|
|
248
230
|
}
|
|
249
231
|
|
|
250
|
-
ao = clamp(ao / float(DIRECTIONS), 0., 1.);
|
|
232
|
+
ao = clamp(ao / float(DIRECTIONS), 0., 1.);
|
|
251
233
|
#if SCENE_CLIP_BOX == 1
|
|
252
234
|
ao = mix(ao, 1., smoothstep(0., radiusToUse, boxDistance));
|
|
253
235
|
#endif
|
|
@@ -258,6 +240,12 @@ const GTAOShader = {
|
|
|
258
240
|
|
|
259
241
|
};
|
|
260
242
|
|
|
243
|
+
/**
|
|
244
|
+
* GTAO depth shader. Use by {@link GTAOPass}.
|
|
245
|
+
*
|
|
246
|
+
* @constant
|
|
247
|
+
* @type {Object}
|
|
248
|
+
*/
|
|
261
249
|
const GTAODepthShader = {
|
|
262
250
|
|
|
263
251
|
name: 'GTAODepthShader',
|
|
@@ -306,6 +294,12 @@ const GTAODepthShader = {
|
|
|
306
294
|
|
|
307
295
|
};
|
|
308
296
|
|
|
297
|
+
/**
|
|
298
|
+
* GTAO blend shader. Use by {@link GTAOPass}.
|
|
299
|
+
*
|
|
300
|
+
* @constant
|
|
301
|
+
* @type {Object}
|
|
302
|
+
*/
|
|
309
303
|
const GTAOBlendShader = {
|
|
310
304
|
|
|
311
305
|
name: 'GTAOBlendShader',
|
|
@@ -1,8 +1,14 @@
|
|
|
1
|
+
/** @module GammaCorrectionShader */
|
|
2
|
+
|
|
1
3
|
/**
|
|
2
4
|
* Gamma Correction Shader
|
|
3
|
-
*
|
|
5
|
+
*
|
|
6
|
+
* References:
|
|
7
|
+
* - {@link http://en.wikipedia.org/wiki/gamma_correction}.
|
|
8
|
+
*
|
|
9
|
+
* @constant
|
|
10
|
+
* @type {ShaderMaterial~Shader}
|
|
4
11
|
*/
|
|
5
|
-
|
|
6
12
|
const GammaCorrectionShader = {
|
|
7
13
|
|
|
8
14
|
name: 'GammaCorrectionShader',
|
|
@@ -3,6 +3,8 @@ import {
|
|
|
3
3
|
Vector3
|
|
4
4
|
} from 'three';
|
|
5
5
|
|
|
6
|
+
/** @module GodRaysShader */
|
|
7
|
+
|
|
6
8
|
/**
|
|
7
9
|
* God-rays (crepuscular rays)
|
|
8
10
|
*
|
|
@@ -17,10 +19,11 @@ import {
|
|
|
17
19
|
* 6*6*6 = 216 samples.
|
|
18
20
|
*
|
|
19
21
|
* References:
|
|
22
|
+
* - [Sousa2008, Crysis Next Gen Effects, GDC2008]{@link http://www.crytek.com/sites/default/files/GDC08_SousaT_CrysisEffects.ppt}.
|
|
20
23
|
*
|
|
21
|
-
*
|
|
24
|
+
* @constant
|
|
25
|
+
* @type {ShaderMaterial~Shader}
|
|
22
26
|
*/
|
|
23
|
-
|
|
24
27
|
const GodRaysDepthMaskShader = {
|
|
25
28
|
|
|
26
29
|
name: 'GodRaysDepthMaskShader',
|
|
@@ -72,8 +75,10 @@ const GodRaysDepthMaskShader = {
|
|
|
72
75
|
*
|
|
73
76
|
* The results of the previous pass are re-blurred, each time with a
|
|
74
77
|
* decreased distance between samples.
|
|
78
|
+
*
|
|
79
|
+
* @constant
|
|
80
|
+
* @type {ShaderMaterial~Shader}
|
|
75
81
|
*/
|
|
76
|
-
|
|
77
82
|
const GodRaysGenerateShader = {
|
|
78
83
|
|
|
79
84
|
name: 'GodRaysGenerateShader',
|
|
@@ -194,8 +199,10 @@ const GodRaysGenerateShader = {
|
|
|
194
199
|
/**
|
|
195
200
|
* Additively applies god rays from texture tGodRays to a background (tColors).
|
|
196
201
|
* fGodRayIntensity attenuates the god rays.
|
|
202
|
+
*
|
|
203
|
+
* @constant
|
|
204
|
+
* @type {ShaderMaterial~Shader}
|
|
197
205
|
*/
|
|
198
|
-
|
|
199
206
|
const GodRaysCombineShader = {
|
|
200
207
|
|
|
201
208
|
name: 'GodRaysCombineShader',
|
|
@@ -253,8 +260,10 @@ const GodRaysCombineShader = {
|
|
|
253
260
|
/**
|
|
254
261
|
* A dodgy sun/sky shader. Makes a bright spot at the sun location. Would be
|
|
255
262
|
* cheaper/faster/simpler to implement this as a simple sun sprite.
|
|
263
|
+
*
|
|
264
|
+
* @constant
|
|
265
|
+
* @type {Object}
|
|
256
266
|
*/
|
|
257
|
-
|
|
258
267
|
const GodRaysFakeSunShader = {
|
|
259
268
|
|
|
260
269
|
name: 'GodRaysFakeSunShader',
|
|
@@ -1,10 +1,16 @@
|
|
|
1
|
+
/** @module HalftoneShader */
|
|
2
|
+
|
|
1
3
|
/**
|
|
2
|
-
* RGB Halftone shader
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* RGB Halftone shader.
|
|
5
|
+
*
|
|
6
|
+
* Used by {@link HalftonePass}.
|
|
7
|
+
*
|
|
8
|
+
* Shape (1 = Dot, 2 = Ellipse, 3 = Line, 4 = Square)
|
|
9
|
+
* Blending Mode (1 = Linear, 2 = Multiply, 3 = Add, 4 = Lighter, 5 = Darker)
|
|
10
|
+
*
|
|
11
|
+
* @constant
|
|
12
|
+
* @type {ShaderMaterial~Shader}
|
|
6
13
|
*/
|
|
7
|
-
|
|
8
14
|
const HalftoneShader = {
|
|
9
15
|
|
|
10
16
|
name: 'HalftoneShader',
|
|
@@ -1,12 +1,18 @@
|
|
|
1
|
+
/** @module HorizontalBlurShader */
|
|
2
|
+
|
|
1
3
|
/**
|
|
2
|
-
* Two pass Gaussian blur filter (horizontal and vertical blur shaders)
|
|
3
|
-
*
|
|
4
|
+
* Two pass Gaussian blur filter (horizontal and vertical blur shaders).
|
|
5
|
+
*
|
|
6
|
+
* References:
|
|
7
|
+
* - {@link http://www.cake23.de/traveling-wavefronts-lit-up.html}.
|
|
4
8
|
*
|
|
5
9
|
* - 9 samples per pass
|
|
6
10
|
* - standard deviation 2.7
|
|
7
11
|
* - "h" and "v" parameters should be set to "1 / width" and "1 / height"
|
|
12
|
+
*
|
|
13
|
+
* @constant
|
|
14
|
+
* @type {ShaderMaterial~Shader}
|
|
8
15
|
*/
|
|
9
|
-
|
|
10
16
|
const HorizontalBlurShader = {
|
|
11
17
|
|
|
12
18
|
name: 'HorizontalBlurShader',
|
|
@@ -1,12 +1,16 @@
|
|
|
1
|
+
/** @module HorizontalTiltShiftShader */
|
|
2
|
+
|
|
1
3
|
/**
|
|
2
|
-
* Simple fake tilt-shift effect, modulating two pass Gaussian blur (see above) by vertical position
|
|
4
|
+
* Simple fake tilt-shift effect, modulating two pass Gaussian blur (see above) by vertical position.
|
|
3
5
|
*
|
|
4
6
|
* - 9 samples per pass
|
|
5
7
|
* - standard deviation 2.7
|
|
6
8
|
* - "h" and "v" parameters should be set to "1 / width" and "1 / height"
|
|
7
9
|
* - "r" parameter control where "focused" horizontal line lies
|
|
10
|
+
*
|
|
11
|
+
* @constant
|
|
12
|
+
* @type {ShaderMaterial~Shader}
|
|
8
13
|
*/
|
|
9
|
-
|
|
10
14
|
const HorizontalTiltShiftShader = {
|
|
11
15
|
|
|
12
16
|
name: 'HorizontalTiltShiftShader',
|
|
@@ -1,10 +1,14 @@
|
|
|
1
|
+
/** @module HueSaturationShader */
|
|
2
|
+
|
|
1
3
|
/**
|
|
2
|
-
* Hue and saturation adjustment
|
|
3
|
-
*
|
|
4
|
+
* Hue and saturation adjustment, {@link https://github.com/evanw/glfx.js}.
|
|
5
|
+
*
|
|
4
6
|
* hue: -1 to 1 (-1 is 180 degrees in the negative direction, 0 is no change, etc.
|
|
5
7
|
* saturation: -1 to 1 (-1 is solid gray, 0 is no change, and 1 is maximum contrast)
|
|
8
|
+
*
|
|
9
|
+
* @constant
|
|
10
|
+
* @type {ShaderMaterial~Shader}
|
|
6
11
|
*/
|
|
7
|
-
|
|
8
12
|
const HueSaturationShader = {
|
|
9
13
|
|
|
10
14
|
name: 'HueSaturationShader',
|
|
@@ -1,13 +1,17 @@
|
|
|
1
|
+
/** @module KaleidoShader */
|
|
2
|
+
|
|
1
3
|
/**
|
|
2
|
-
* Kaleidoscope Shader
|
|
4
|
+
* Kaleidoscope Shader.
|
|
3
5
|
* Radial reflection around center point
|
|
4
|
-
* Ported from: http://pixelshaders.com/editor/
|
|
5
|
-
* by Toby Schachman
|
|
6
|
+
* Ported from: {@link http://pixelshaders.com/editor/}
|
|
7
|
+
* by [Toby Schachman]{@link http://tobyschachman.com/}
|
|
6
8
|
*
|
|
7
9
|
* sides: number of reflections
|
|
8
10
|
* angle: initial angle in radians
|
|
11
|
+
*
|
|
12
|
+
* @constant
|
|
13
|
+
* @type {ShaderMaterial~Shader}
|
|
9
14
|
*/
|
|
10
|
-
|
|
11
15
|
const KaleidoShader = {
|
|
12
16
|
|
|
13
17
|
name: 'KaleidoShader',
|
|
@@ -2,17 +2,18 @@ import {
|
|
|
2
2
|
Color
|
|
3
3
|
} from 'three';
|
|
4
4
|
|
|
5
|
+
/** @module LuminosityHighPassShader */
|
|
6
|
+
|
|
5
7
|
/**
|
|
6
|
-
* Luminosity
|
|
7
|
-
*
|
|
8
|
+
* Luminosity high pass shader.
|
|
9
|
+
*
|
|
10
|
+
* @constant
|
|
11
|
+
* @type {ShaderMaterial~Shader}
|
|
8
12
|
*/
|
|
9
|
-
|
|
10
13
|
const LuminosityHighPassShader = {
|
|
11
14
|
|
|
12
15
|
name: 'LuminosityHighPassShader',
|
|
13
16
|
|
|
14
|
-
shaderID: 'luminosityHighPass',
|
|
15
|
-
|
|
16
17
|
uniforms: {
|
|
17
18
|
|
|
18
19
|
'tDiffuse': { value: null },
|
|
@@ -1,10 +1,13 @@
|
|
|
1
|
+
/** @module MirrorShader */
|
|
2
|
+
|
|
1
3
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
+
* Copies half the input to the other half.
|
|
5
|
+
*
|
|
6
|
+
* side: side of input to mirror (0 = left, 1 = right, 2 = top, 3 = bottom).
|
|
4
7
|
*
|
|
5
|
-
*
|
|
8
|
+
* @constant
|
|
9
|
+
* @type {ShaderMaterial~Shader}
|
|
6
10
|
*/
|
|
7
|
-
|
|
8
11
|
const MirrorShader = {
|
|
9
12
|
|
|
10
13
|
name: 'MirrorShader',
|
|
@@ -2,11 +2,13 @@ import {
|
|
|
2
2
|
Vector2
|
|
3
3
|
} from 'three';
|
|
4
4
|
|
|
5
|
+
/** @module NormalMapShader */
|
|
6
|
+
|
|
5
7
|
/**
|
|
6
|
-
* Normal map shader
|
|
7
|
-
*
|
|
8
|
+
* Normal map shader, compute normals from heightmap.
|
|
9
|
+
* @constant
|
|
10
|
+
* @type {ShaderMaterial~Shader}
|
|
8
11
|
*/
|
|
9
|
-
|
|
10
12
|
const NormalMapShader = {
|
|
11
13
|
|
|
12
14
|
name: 'NormalMapShader',
|
|
@@ -1,3 +1,14 @@
|
|
|
1
|
+
/** @module OutputShader */
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Performs tone mapping and color space conversion for
|
|
5
|
+
* FX workflows.
|
|
6
|
+
*
|
|
7
|
+
* Used by {@link OutputPass}.
|
|
8
|
+
*
|
|
9
|
+
* @constant
|
|
10
|
+
* @type {ShaderMaterial~Shader}
|
|
11
|
+
*/
|
|
1
12
|
const OutputShader = {
|
|
2
13
|
|
|
3
14
|
name: 'OutputShader',
|
|
@@ -4,12 +4,18 @@ import {
|
|
|
4
4
|
Vector3,
|
|
5
5
|
} from 'three';
|
|
6
6
|
|
|
7
|
+
/** @module PoissonDenoiseShader */
|
|
8
|
+
|
|
7
9
|
/**
|
|
10
|
+
* Poisson Denoise Shader.
|
|
11
|
+
*
|
|
8
12
|
* References:
|
|
9
|
-
* https://openaccess.thecvf.com/content/WACV2021/papers/Khademi_Self-Supervised_Poisson-Gaussian_Denoising_WACV_2021_paper.pdf
|
|
10
|
-
* https://arxiv.org/pdf/2206.01856.pdf
|
|
13
|
+
* - [Self-Supervised Poisson-Gaussian Denoising]{@link https://openaccess.thecvf.com/content/WACV2021/papers/Khademi_Self-Supervised_Poisson-Gaussian_Denoising_WACV_2021_paper.pdf}.
|
|
14
|
+
* - [Poisson2Sparse: Self-Supervised Poisson Denoising From a Single Image]{@link https://arxiv.org/pdf/2206.01856.pdf}
|
|
15
|
+
*
|
|
16
|
+
* @constant
|
|
17
|
+
* @type {ShaderMaterial~Shader}
|
|
11
18
|
*/
|
|
12
|
-
|
|
13
19
|
const PoissonDenoiseShader = {
|
|
14
20
|
|
|
15
21
|
name: 'PoissonDenoiseShader',
|
|
@@ -59,7 +65,7 @@ const PoissonDenoiseShader = {
|
|
|
59
65
|
uniform float normalPhi;
|
|
60
66
|
uniform float radius;
|
|
61
67
|
uniform int index;
|
|
62
|
-
|
|
68
|
+
|
|
63
69
|
#include <common>
|
|
64
70
|
#include <packing>
|
|
65
71
|
|
|
@@ -82,9 +88,9 @@ const PoissonDenoiseShader = {
|
|
|
82
88
|
vec4 viewSpacePosition = cameraProjectionMatrixInverse * clipSpacePosition;
|
|
83
89
|
return viewSpacePosition.xyz / viewSpacePosition.w;
|
|
84
90
|
}
|
|
85
|
-
|
|
91
|
+
|
|
86
92
|
float getDepth(const vec2 uv) {
|
|
87
|
-
#if DEPTH_VALUE_SOURCE == 1
|
|
93
|
+
#if DEPTH_VALUE_SOURCE == 1
|
|
88
94
|
return textureLod(tDepth, uv.xy, 0.0).a;
|
|
89
95
|
#else
|
|
90
96
|
return textureLod(tDepth, uv.xy, 0.0).r;
|
|
@@ -92,7 +98,7 @@ const PoissonDenoiseShader = {
|
|
|
92
98
|
}
|
|
93
99
|
|
|
94
100
|
float fetchDepth(const ivec2 uv) {
|
|
95
|
-
#if DEPTH_VALUE_SOURCE == 1
|
|
101
|
+
#if DEPTH_VALUE_SOURCE == 1
|
|
96
102
|
return texelFetch(tDepth, uv.xy, 0).a;
|
|
97
103
|
#else
|
|
98
104
|
return texelFetch(tDepth, uv.xy, 0).r;
|
|
@@ -139,7 +145,7 @@ const PoissonDenoiseShader = {
|
|
|
139
145
|
vec3 sampleNormal = getViewNormal(sampleUv);
|
|
140
146
|
vec3 neighborColor = sampleTexel.rgb;
|
|
141
147
|
vec3 viewPosSample = getViewPosition(sampleUv, sampleDepth);
|
|
142
|
-
|
|
148
|
+
|
|
143
149
|
float normalDiff = dot(viewNormal, sampleNormal);
|
|
144
150
|
float normalSimilarity = pow(max(normalDiff, 0.), normalPhi);
|
|
145
151
|
float lumaDiff = abs(getLuminance(neighborColor) - getLuminance(center));
|
|
@@ -147,14 +153,14 @@ const PoissonDenoiseShader = {
|
|
|
147
153
|
float depthDiff = abs(dot(viewPos - viewPosSample, viewNormal));
|
|
148
154
|
float depthSimilarity = max(1. - depthDiff / depthPhi, 0.);
|
|
149
155
|
float w = lumaSimilarity * depthSimilarity * normalSimilarity;
|
|
150
|
-
|
|
156
|
+
|
|
151
157
|
denoised += w * neighborColor;
|
|
152
158
|
totalWeight += w;
|
|
153
159
|
}
|
|
154
|
-
|
|
160
|
+
|
|
155
161
|
void main() {
|
|
156
|
-
float depth = getDepth(vUv.xy);
|
|
157
|
-
vec3 viewNormal = getViewNormal(vUv);
|
|
162
|
+
float depth = getDepth(vUv.xy);
|
|
163
|
+
vec3 viewNormal = getViewNormal(vUv);
|
|
158
164
|
if (depth == 1. || dot(viewNormal, viewNormal) == 0.) {
|
|
159
165
|
discard;
|
|
160
166
|
return;
|
|
@@ -168,7 +174,7 @@ const PoissonDenoiseShader = {
|
|
|
168
174
|
vec4 noiseTexel = textureLod(tNoise, noiseUv, 0.0);
|
|
169
175
|
vec2 noiseVec = vec2(sin(noiseTexel[index % 4] * 2. * PI), cos(noiseTexel[index % 4] * 2. * PI));
|
|
170
176
|
mat2 rotationMatrix = mat2(noiseVec.x, -noiseVec.y, noiseVec.x, noiseVec.y);
|
|
171
|
-
|
|
177
|
+
|
|
172
178
|
float totalWeight = 1.0;
|
|
173
179
|
vec3 denoised = texel.rgb;
|
|
174
180
|
for (int i = 0; i < SAMPLES; i++) {
|
|
@@ -177,8 +183,8 @@ const PoissonDenoiseShader = {
|
|
|
177
183
|
vec2 sampleUv = vUv + offset;
|
|
178
184
|
denoiseSample(center, viewNormal, viewPos, sampleUv, denoised, totalWeight);
|
|
179
185
|
}
|
|
180
|
-
|
|
181
|
-
if (totalWeight > 0.) {
|
|
186
|
+
|
|
187
|
+
if (totalWeight > 0.) {
|
|
182
188
|
denoised /= totalWeight;
|
|
183
189
|
}
|
|
184
190
|
gl_FragColor = FRAGMENT_OUTPUT;
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
/** @module RGBShiftShader */
|
|
2
|
+
|
|
1
3
|
/**
|
|
2
4
|
* RGB Shift Shader
|
|
3
5
|
* Shifts red and blue channels from center in opposite directions
|
|
@@ -6,8 +8,10 @@
|
|
|
6
8
|
*
|
|
7
9
|
* amount: shift distance (1 is width of input)
|
|
8
10
|
* angle: shift angle in radians
|
|
11
|
+
*
|
|
12
|
+
* @constant
|
|
13
|
+
* @type {ShaderMaterial~Shader}
|
|
9
14
|
*/
|
|
10
|
-
|
|
11
15
|
const RGBShiftShader = {
|
|
12
16
|
|
|
13
17
|
name: 'RGBShiftShader',
|
|
@@ -3,10 +3,16 @@ import {
|
|
|
3
3
|
Vector2
|
|
4
4
|
} from 'three';
|
|
5
5
|
|
|
6
|
+
/** @module SAOShader */
|
|
7
|
+
|
|
6
8
|
/**
|
|
7
|
-
*
|
|
9
|
+
* SAO shader.
|
|
10
|
+
*
|
|
11
|
+
* Used by {@link SAOPass}.
|
|
12
|
+
*
|
|
13
|
+
* @constant
|
|
14
|
+
* @type {ShaderMaterial~Shader}
|
|
8
15
|
*/
|
|
9
|
-
|
|
10
16
|
const SAOShader = {
|
|
11
17
|
|
|
12
18
|
name: 'SAOShader',
|
|
@@ -5,9 +5,19 @@ import {
|
|
|
5
5
|
/**
|
|
6
6
|
* WebGL port of Subpixel Morphological Antialiasing (SMAA) v2.8
|
|
7
7
|
* Preset: SMAA 1x Medium (with color edge detection)
|
|
8
|
-
*
|
|
8
|
+
*
|
|
9
|
+
* References:
|
|
10
|
+
* - {@link https://github.com/iryoku/smaa/releases/tag/v2.8}
|
|
11
|
+
*
|
|
12
|
+
* @module SMAAShader
|
|
9
13
|
*/
|
|
10
14
|
|
|
15
|
+
/**
|
|
16
|
+
* SMAA Edges shader.
|
|
17
|
+
*
|
|
18
|
+
* @constant
|
|
19
|
+
* @type {ShaderMaterial~Shader}
|
|
20
|
+
*/
|
|
11
21
|
const SMAAEdgesShader = {
|
|
12
22
|
|
|
13
23
|
name: 'SMAAEdgesShader',
|
|
@@ -115,6 +125,12 @@ const SMAAEdgesShader = {
|
|
|
115
125
|
|
|
116
126
|
};
|
|
117
127
|
|
|
128
|
+
/**
|
|
129
|
+
* SMAA Weights shader.
|
|
130
|
+
*
|
|
131
|
+
* @constant
|
|
132
|
+
* @type {ShaderMaterial~Shader}
|
|
133
|
+
*/
|
|
118
134
|
const SMAAWeightsShader = {
|
|
119
135
|
|
|
120
136
|
name: 'SMAAWeightsShader',
|
|
@@ -371,6 +387,12 @@ const SMAAWeightsShader = {
|
|
|
371
387
|
|
|
372
388
|
};
|
|
373
389
|
|
|
390
|
+
/**
|
|
391
|
+
* SMAA Blend shader.
|
|
392
|
+
*
|
|
393
|
+
* @constant
|
|
394
|
+
* @type {ShaderMaterial~Shader}
|
|
395
|
+
*/
|
|
374
396
|
const SMAABlendShader = {
|
|
375
397
|
|
|
376
398
|
name: 'SMAABlendShader',
|
|
@@ -3,13 +3,19 @@ import {
|
|
|
3
3
|
Vector2
|
|
4
4
|
} from 'three';
|
|
5
5
|
|
|
6
|
+
/** @module SSAOShader */
|
|
7
|
+
|
|
6
8
|
/**
|
|
9
|
+
* SSAO shader.
|
|
10
|
+
*
|
|
7
11
|
* References:
|
|
8
|
-
* http://john-chapman-graphics.blogspot.com/2013/01/ssao-tutorial.html
|
|
9
|
-
* https://learnopengl.com/Advanced-Lighting/SSAO
|
|
10
|
-
* https://github.com/McNopper/OpenGL/blob/master/Example28/shader/ssao.frag.glsl
|
|
12
|
+
* - {@link http://john-chapman-graphics.blogspot.com/2013/01/ssao-tutorial.html}
|
|
13
|
+
* - {@link https://learnopengl.com/Advanced-Lighting/SSAO}
|
|
14
|
+
* - {@link https://github.com/McNopper/OpenGL/blob/master/Example28/shader/ssao.frag.glsl}
|
|
15
|
+
*
|
|
16
|
+
* @constant
|
|
17
|
+
* @type {ShaderMaterial~Shader}
|
|
11
18
|
*/
|
|
12
|
-
|
|
13
19
|
const SSAOShader = {
|
|
14
20
|
|
|
15
21
|
name: 'SSAOShader',
|
|
@@ -131,7 +137,7 @@ const SSAOShader = {
|
|
|
131
137
|
if ( depth == 1.0 ) {
|
|
132
138
|
|
|
133
139
|
gl_FragColor = vec4( 1.0 ); // don't influence background
|
|
134
|
-
|
|
140
|
+
|
|
135
141
|
} else {
|
|
136
142
|
|
|
137
143
|
float viewZ = getViewZ( depth );
|
|
@@ -182,6 +188,12 @@ const SSAOShader = {
|
|
|
182
188
|
|
|
183
189
|
};
|
|
184
190
|
|
|
191
|
+
/**
|
|
192
|
+
* SSAO depth shader.
|
|
193
|
+
*
|
|
194
|
+
* @constant
|
|
195
|
+
* @type {ShaderMaterial~Shader}
|
|
196
|
+
*/
|
|
185
197
|
const SSAODepthShader = {
|
|
186
198
|
|
|
187
199
|
name: 'SSAODepthShader',
|
|
@@ -245,6 +257,12 @@ const SSAODepthShader = {
|
|
|
245
257
|
|
|
246
258
|
};
|
|
247
259
|
|
|
260
|
+
/**
|
|
261
|
+
* SSAO blur shader.
|
|
262
|
+
*
|
|
263
|
+
* @constant
|
|
264
|
+
* @type {Object}
|
|
265
|
+
*/
|
|
248
266
|
const SSAOBlurShader = {
|
|
249
267
|
|
|
250
268
|
name: 'SSAOBlurShader',
|