super-three 0.177.0 → 0.181.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/build/three.cjs +1994 -749
- package/build/three.core.js +1358 -506
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +631 -247
- package/build/three.module.min.js +1 -1
- package/build/three.tsl.js +113 -33
- package/build/three.tsl.min.js +1 -1
- package/build/three.webgpu.js +9571 -3424
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +9397 -3426
- package/build/three.webgpu.nodes.min.js +1 -1
- package/examples/fonts/MPLUSRounded1c/MPLUSRounded1c-Regular.typeface.json.zip +0 -0
- package/examples/fonts/MPLUSRounded1c/OFL.txt +91 -0
- package/examples/jsm/Addons.js +2 -3
- package/examples/jsm/animation/CCDIKSolver.js +1 -1
- package/examples/jsm/capabilities/WebGL.js +0 -27
- package/examples/jsm/capabilities/WebGPU.js +1 -1
- package/examples/jsm/controls/ArcballControls.js +9 -9
- package/examples/jsm/controls/DragControls.js +7 -57
- package/examples/jsm/controls/FirstPersonControls.js +3 -3
- package/examples/jsm/controls/FlyControls.js +1 -1
- package/examples/jsm/controls/OrbitControls.js +2 -2
- package/examples/jsm/controls/PointerLockControls.js +2 -10
- package/examples/jsm/controls/TrackballControls.js +1 -1
- package/examples/jsm/controls/TransformControls.js +62 -15
- package/examples/jsm/csm/CSMShadowNode.js +4 -4
- package/examples/jsm/effects/AsciiEffect.js +8 -8
- package/examples/jsm/environments/RoomEnvironment.js +8 -3
- package/examples/jsm/exporters/DRACOExporter.js +2 -2
- package/examples/jsm/exporters/EXRExporter.js +1 -1
- package/examples/jsm/exporters/GLTFExporter.js +33 -25
- package/examples/jsm/exporters/KTX2Exporter.js +4 -2
- package/examples/jsm/exporters/PLYExporter.js +1 -1
- package/examples/jsm/exporters/USDZExporter.js +683 -299
- package/examples/jsm/geometries/DecalGeometry.js +2 -2
- package/examples/jsm/geometries/ParametricGeometry.js +1 -1
- package/examples/jsm/geometries/RoundedBoxGeometry.js +47 -8
- package/examples/jsm/geometries/TeapotGeometry.js +2 -2
- package/examples/jsm/geometries/TextGeometry.js +3 -2
- package/examples/jsm/gpgpu/BitonicSort.js +715 -0
- package/examples/jsm/helpers/ViewHelper.js +43 -5
- package/examples/jsm/inspector/Inspector.js +427 -0
- package/examples/jsm/inspector/RendererInspector.js +415 -0
- package/examples/jsm/inspector/tabs/Console.js +204 -0
- package/examples/jsm/inspector/tabs/Parameters.js +332 -0
- package/examples/jsm/inspector/tabs/Performance.js +268 -0
- package/examples/jsm/inspector/tabs/Viewer.js +166 -0
- package/examples/jsm/inspector/ui/Graph.js +95 -0
- package/examples/jsm/inspector/ui/Item.js +170 -0
- package/examples/jsm/inspector/ui/List.js +75 -0
- package/examples/jsm/inspector/ui/Profiler.js +170 -0
- package/examples/jsm/inspector/ui/Style.js +654 -0
- package/examples/jsm/inspector/ui/Tab.js +46 -0
- package/examples/jsm/inspector/ui/Values.js +423 -0
- package/examples/jsm/inspector/ui/utils.js +56 -0
- package/examples/jsm/interactive/HTMLMesh.js +11 -13
- package/examples/jsm/interactive/InteractiveGroup.js +1 -1
- package/examples/jsm/interactive/SelectionBox.js +30 -0
- package/examples/jsm/libs/ktx-parse.module.js +1 -1
- package/examples/jsm/libs/meshopt_decoder.module.js +75 -58
- package/examples/jsm/lights/LightProbeGenerator.js +14 -3
- package/examples/jsm/lights/RectAreaLightTexturesLib.js +1 -1
- package/examples/jsm/lines/Line2.js +3 -3
- package/examples/jsm/lines/LineGeometry.js +1 -1
- package/examples/jsm/lines/LineSegments2.js +2 -2
- package/examples/jsm/lines/Wireframe.js +2 -2
- package/examples/jsm/lines/WireframeGeometry2.js +1 -1
- package/examples/jsm/lines/webgpu/LineSegments2.js +1 -1
- package/examples/jsm/lines/webgpu/Wireframe.js +1 -1
- package/examples/jsm/loaders/3MFLoader.js +1 -1
- package/examples/jsm/loaders/ColladaLoader.js +4 -4
- package/examples/jsm/loaders/DDSLoader.js +1 -1
- package/examples/jsm/loaders/DRACOLoader.js +73 -22
- package/examples/jsm/loaders/EXRLoader.js +210 -22
- package/examples/jsm/loaders/FBXLoader.js +4 -4
- package/examples/jsm/loaders/FontLoader.js +23 -5
- package/examples/jsm/loaders/GLTFLoader.js +14 -8
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +5 -5
- package/examples/jsm/loaders/HDRLoader.js +486 -0
- package/examples/jsm/loaders/KTX2Loader.js +136 -49
- package/examples/jsm/loaders/KTXLoader.js +2 -2
- package/examples/jsm/loaders/LDrawLoader.js +1 -1
- package/examples/jsm/loaders/LUT3dlLoader.js +2 -2
- package/examples/jsm/loaders/LUTCubeLoader.js +1 -1
- package/examples/jsm/loaders/LWOLoader.js +2 -2
- package/examples/jsm/loaders/MaterialXLoader.js +233 -34
- package/examples/jsm/loaders/OBJLoader.js +1 -1
- package/examples/jsm/loaders/PDBLoader.js +1 -1
- package/examples/jsm/loaders/RGBELoader.js +7 -473
- package/examples/jsm/loaders/SVGLoader.js +2 -2
- package/examples/jsm/loaders/TTFLoader.js +13 -1
- package/examples/jsm/loaders/USDLoader.js +219 -0
- package/examples/jsm/loaders/USDZLoader.js +4 -892
- package/examples/jsm/loaders/UltraHDRLoader.js +2 -2
- package/examples/jsm/loaders/lwo/IFFParser.js +1 -1
- package/examples/jsm/loaders/usd/USDAParser.js +741 -0
- package/examples/jsm/loaders/usd/USDCParser.js +17 -0
- package/examples/jsm/materials/WoodNodeMaterial.js +533 -0
- package/examples/jsm/math/ColorSpaces.js +19 -1
- package/examples/jsm/math/ConvexHull.js +3 -3
- package/examples/jsm/math/ImprovedNoise.js +1 -1
- package/examples/jsm/math/Lut.js +2 -2
- package/examples/jsm/math/SimplexNoise.js +1 -1
- package/examples/jsm/misc/MD2CharacterComplex.js +1 -1
- package/examples/jsm/misc/ProgressiveLightMap.js +9 -3
- package/examples/jsm/misc/ProgressiveLightMapGPU.js +7 -1
- package/examples/jsm/misc/TubePainter.js +383 -40
- package/examples/jsm/misc/Volume.js +1 -1
- package/examples/jsm/modifiers/SimplifyModifier.js +1 -1
- package/examples/jsm/objects/LensflareMesh.js +3 -3
- package/examples/jsm/objects/ReflectorForSSRPass.js +1 -0
- package/examples/jsm/objects/Sky.js +1 -1
- package/examples/jsm/objects/SkyMesh.js +3 -3
- package/examples/jsm/objects/Water.js +3 -3
- package/examples/jsm/objects/WaterMesh.js +6 -6
- package/examples/jsm/physics/RapierPhysics.js +95 -16
- package/examples/jsm/postprocessing/GTAOPass.js +10 -9
- package/examples/jsm/postprocessing/GlitchPass.js +2 -2
- package/examples/jsm/postprocessing/OutlinePass.js +17 -17
- package/examples/jsm/postprocessing/SSAOPass.js +10 -9
- package/examples/jsm/postprocessing/SSRPass.js +37 -8
- package/examples/jsm/postprocessing/UnrealBloomPass.js +8 -6
- package/examples/jsm/renderers/CSS2DRenderer.js +16 -5
- package/examples/jsm/renderers/CSS3DRenderer.js +7 -6
- package/examples/jsm/renderers/SVGRenderer.js +1 -1
- package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +1 -1
- package/examples/jsm/shaders/AfterimageShader.js +1 -1
- package/examples/jsm/shaders/BleachBypassShader.js +1 -1
- package/examples/jsm/shaders/BokehShader.js +1 -1
- package/examples/jsm/shaders/BokehShader2.js +1 -1
- package/examples/jsm/shaders/DotScreenShader.js +1 -1
- package/examples/jsm/shaders/FocusShader.js +1 -1
- package/examples/jsm/shaders/GTAOShader.js +2 -2
- package/examples/jsm/shaders/GodRaysShader.js +1 -1
- package/examples/jsm/shaders/KaleidoShader.js +1 -1
- package/examples/jsm/shaders/PoissonDenoiseShader.js +2 -2
- package/examples/jsm/shaders/SSRShader.js +1 -1
- package/examples/jsm/shaders/SepiaShader.js +1 -1
- package/examples/jsm/shaders/SubsurfaceScatteringShader.js +1 -1
- package/examples/jsm/shaders/TriangleBlurShader.js +1 -1
- package/examples/jsm/shaders/UnpackDepthRGBAShader.js +11 -2
- package/examples/jsm/shaders/VignetteShader.js +1 -1
- package/examples/jsm/transpiler/AST.js +381 -30
- package/examples/jsm/transpiler/GLSLDecoder.js +247 -104
- package/examples/jsm/transpiler/Linker.js +327 -0
- package/examples/jsm/transpiler/TSLEncoder.js +196 -92
- package/examples/jsm/transpiler/Transpiler.js +17 -1
- package/examples/jsm/transpiler/TranspilerUtils.js +29 -0
- package/examples/jsm/transpiler/WGSLEncoder.js +812 -0
- package/examples/jsm/tsl/display/AfterImageNode.js +26 -24
- package/examples/jsm/tsl/display/AnamorphicNode.js +28 -4
- package/examples/jsm/tsl/display/BloomNode.js +11 -6
- package/examples/jsm/tsl/display/ChromaticAberrationNode.js +207 -0
- package/examples/jsm/tsl/display/DenoiseNode.js +2 -0
- package/examples/jsm/tsl/display/DepthOfFieldNode.js +446 -90
- package/examples/jsm/tsl/display/GTAONode.js +53 -5
- package/examples/jsm/tsl/display/GaussianBlurNode.js +55 -43
- package/examples/jsm/tsl/display/OutlineNode.js +13 -2
- package/examples/jsm/tsl/display/SSAAPassNode.js +2 -2
- package/examples/jsm/tsl/display/SSGINode.js +654 -0
- package/examples/jsm/tsl/display/SSRNode.js +182 -65
- package/examples/jsm/tsl/display/SSSNode.js +488 -0
- package/examples/jsm/tsl/display/TRAANode.js +578 -0
- package/examples/jsm/tsl/display/boxBlur.js +65 -0
- package/examples/jsm/tsl/display/hashBlur.js +18 -20
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +22 -2
- package/examples/jsm/utils/BufferGeometryUtils.js +1 -1
- package/examples/jsm/utils/ShadowMapViewerGPU.js +12 -5
- package/examples/jsm/webxr/OculusHandModel.js +1 -1
- package/examples/jsm/webxr/XRControllerModelFactory.js +1 -1
- package/examples/jsm/webxr/XRHandModelFactory.js +2 -6
- package/package.json +5 -10
- package/src/Three.Core.js +5 -2
- package/src/Three.TSL.js +112 -32
- package/src/Three.WebGPU.Nodes.js +2 -0
- package/src/Three.WebGPU.js +4 -0
- package/src/animation/AnimationClip.js +20 -4
- package/src/animation/AnimationMixer.js +3 -3
- package/src/animation/AnimationObjectGroup.js +2 -1
- package/src/animation/KeyframeTrack.js +8 -7
- package/src/animation/PropertyBinding.js +12 -11
- package/src/animation/tracks/BooleanKeyframeTrack.js +1 -1
- package/src/animation/tracks/StringKeyframeTrack.js +1 -1
- package/src/audio/Audio.js +10 -9
- package/src/audio/PositionalAudio.js +1 -1
- package/src/cameras/Camera.js +14 -0
- package/src/cameras/OrthographicCamera.js +2 -2
- package/src/cameras/PerspectiveCamera.js +2 -2
- package/src/cameras/StereoCamera.js +2 -2
- package/src/constants.js +13 -5
- package/src/core/BufferAttribute.js +3 -3
- package/src/core/BufferGeometry.js +10 -10
- package/src/core/Clock.js +2 -8
- package/src/core/EventDispatcher.js +1 -1
- package/src/core/GLBufferAttribute.js +13 -1
- package/src/core/InterleavedBuffer.js +1 -1
- package/src/core/InterleavedBufferAttribute.js +3 -2
- package/src/core/Object3D.js +4 -3
- package/src/core/Raycaster.js +2 -1
- package/src/core/RenderTarget.js +10 -1
- package/{examples/jsm/misc → src/core}/Timer.js +4 -42
- package/src/extras/Controls.js +5 -4
- package/src/extras/DataUtils.js +2 -1
- package/src/extras/Earcut.js +6 -0
- package/src/extras/ImageUtils.js +2 -2
- package/src/extras/PMREMGenerator.js +279 -55
- package/src/extras/TextureUtils.js +2 -1
- package/src/extras/core/Curve.js +2 -1
- package/src/extras/core/Interpolations.js +7 -1
- package/src/extras/core/Path.js +22 -22
- package/src/extras/core/ShapePath.js +4 -4
- package/src/extras/lib/earcut.js +8 -8
- package/src/geometries/BoxGeometry.js +1 -0
- package/src/geometries/CapsuleGeometry.js +1 -0
- package/src/geometries/CircleGeometry.js +1 -0
- package/src/geometries/ConeGeometry.js +1 -0
- package/src/geometries/CylinderGeometry.js +1 -0
- package/src/geometries/DodecahedronGeometry.js +1 -0
- package/src/geometries/ExtrudeGeometry.js +8 -6
- package/src/geometries/IcosahedronGeometry.js +1 -0
- package/src/geometries/LatheGeometry.js +1 -0
- package/src/geometries/OctahedronGeometry.js +1 -0
- package/src/geometries/PlaneGeometry.js +1 -0
- package/src/geometries/RingGeometry.js +1 -0
- package/src/geometries/ShapeGeometry.js +1 -0
- package/src/geometries/SphereGeometry.js +1 -0
- package/src/geometries/TetrahedronGeometry.js +1 -0
- package/src/geometries/TorusGeometry.js +1 -0
- package/src/geometries/TorusKnotGeometry.js +1 -0
- package/src/geometries/TubeGeometry.js +1 -0
- package/src/helpers/CameraHelper.js +42 -12
- package/src/helpers/SkeletonHelper.js +35 -6
- package/src/lights/LightShadow.js +21 -8
- package/src/lights/PointLightShadow.js +1 -1
- package/src/lights/webgpu/ProjectorLight.js +1 -1
- package/src/loaders/AnimationLoader.js +2 -1
- package/src/loaders/AudioLoader.js +2 -1
- package/src/loaders/BufferGeometryLoader.js +2 -2
- package/src/loaders/Cache.js +2 -2
- package/src/loaders/DataTextureLoader.js +1 -1
- package/src/loaders/FileLoader.js +29 -5
- package/src/loaders/ImageBitmapLoader.js +32 -8
- package/src/loaders/ImageLoader.js +56 -9
- package/src/loaders/Loader.js +17 -3
- package/src/loaders/LoadingManager.js +45 -0
- package/src/loaders/MaterialLoader.js +3 -2
- package/src/loaders/ObjectLoader.js +13 -13
- package/src/loaders/TextureLoader.js +1 -1
- package/src/loaders/nodes/NodeLoader.js +3 -2
- package/src/materials/Material.js +16 -3
- package/src/materials/MeshBasicMaterial.js +2 -1
- package/src/materials/MeshDepthMaterial.js +1 -0
- package/src/materials/MeshDistanceMaterial.js +1 -1
- package/src/materials/MeshLambertMaterial.js +2 -1
- package/src/materials/MeshMatcapMaterial.js +22 -0
- package/src/materials/MeshNormalMaterial.js +1 -0
- package/src/materials/MeshPhongMaterial.js +2 -1
- package/src/materials/MeshPhysicalMaterial.js +2 -1
- package/src/materials/MeshStandardMaterial.js +8 -7
- package/src/materials/MeshToonMaterial.js +1 -0
- package/src/materials/PointsMaterial.js +1 -1
- package/src/materials/ShaderMaterial.js +2 -2
- package/src/materials/nodes/Line2NodeMaterial.js +2 -10
- package/src/materials/nodes/MeshBasicNodeMaterial.js +4 -3
- package/src/materials/nodes/MeshMatcapNodeMaterial.js +1 -1
- package/src/materials/nodes/MeshNormalNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +2 -1
- package/src/materials/nodes/MeshSSSNodeMaterial.js +3 -3
- package/src/materials/nodes/NodeMaterial.js +90 -27
- package/src/materials/nodes/PointsNodeMaterial.js +86 -28
- package/src/materials/nodes/SpriteNodeMaterial.js +3 -15
- package/src/materials/nodes/manager/NodeMaterialObserver.js +89 -3
- package/src/math/Color.js +6 -5
- package/src/math/ColorManagement.js +9 -3
- package/src/math/Cylindrical.js +1 -1
- package/src/math/Euler.js +2 -1
- package/src/math/Frustum.js +25 -9
- package/src/math/FrustumArray.js +10 -5
- package/src/math/Line3.js +129 -2
- package/src/math/MathUtils.js +13 -11
- package/src/math/Matrix2.js +1 -1
- package/src/math/Matrix3.js +2 -2
- package/src/math/Matrix4.js +55 -34
- package/src/math/Plane.js +1 -1
- package/src/math/Quaternion.js +69 -67
- package/src/math/Spherical.js +3 -3
- package/src/nodes/Nodes.js +6 -4
- package/src/nodes/TSL.js +9 -4
- package/src/nodes/accessors/AccessorsUtils.js +7 -8
- package/src/nodes/accessors/Bitangent.js +31 -25
- package/src/nodes/accessors/BufferNode.js +1 -1
- package/src/nodes/accessors/Camera.js +142 -16
- package/src/nodes/accessors/ClippingNode.js +6 -5
- package/src/nodes/accessors/CubeTextureNode.js +5 -4
- package/src/nodes/accessors/InstanceNode.js +25 -5
- package/src/nodes/accessors/Lights.js +10 -0
- package/src/nodes/accessors/Normal.js +97 -30
- package/src/nodes/accessors/Object3DNode.js +2 -2
- package/src/nodes/accessors/Position.js +25 -9
- package/src/nodes/accessors/ReferenceBaseNode.js +1 -1
- package/src/nodes/accessors/ReferenceNode.js +20 -4
- package/src/nodes/accessors/ReflectVector.js +3 -3
- package/src/nodes/accessors/SceneNode.js +3 -2
- package/src/nodes/accessors/StorageBufferNode.js +2 -1
- package/src/nodes/accessors/StorageTextureNode.js +23 -1
- package/src/nodes/accessors/Tangent.js +25 -17
- package/src/nodes/accessors/TangentUtils.js +46 -0
- package/src/nodes/accessors/Texture3DNode.js +14 -1
- package/src/nodes/accessors/TextureBicubic.js +21 -3
- package/src/nodes/accessors/TextureNode.js +142 -44
- package/src/nodes/accessors/UniformArrayNode.js +0 -16
- package/src/nodes/code/FunctionCallNode.js +24 -4
- package/src/nodes/code/FunctionNode.js +23 -0
- package/src/nodes/core/ArrayNode.js +13 -0
- package/src/nodes/core/AssignNode.js +6 -2
- package/src/nodes/core/AttributeNode.js +2 -1
- package/src/nodes/core/ContextNode.js +48 -10
- package/src/nodes/core/IndexNode.js +2 -2
- package/src/nodes/core/InputNode.js +2 -1
- package/src/nodes/core/InspectorNode.js +128 -0
- package/src/nodes/core/{CacheNode.js → IsolateNode.js} +36 -17
- package/src/nodes/core/Node.js +167 -34
- package/src/nodes/core/NodeBuilder.js +404 -120
- package/src/nodes/core/NodeFrame.js +21 -21
- package/src/nodes/core/NodeFunction.js +2 -1
- package/src/nodes/core/NodeParser.js +2 -1
- package/src/nodes/core/NodeUniform.js +1 -1
- package/src/nodes/core/NodeUtils.js +17 -88
- package/src/nodes/core/ParameterNode.js +31 -0
- package/src/nodes/core/PropertyNode.js +7 -0
- package/src/nodes/core/StackNode.js +77 -30
- package/src/nodes/core/StructNode.js +5 -5
- package/src/nodes/core/StructTypeNode.js +1 -0
- package/src/nodes/core/SubBuildNode.js +89 -0
- package/src/nodes/core/UniformNode.js +80 -14
- package/src/nodes/core/VarNode.js +142 -16
- package/src/nodes/core/VaryingNode.js +9 -6
- package/src/nodes/display/BlendModes.js +7 -6
- package/src/nodes/display/BumpMapNode.js +1 -1
- package/src/nodes/display/ColorAdjustment.js +1 -1
- package/src/nodes/display/FrontFacingNode.js +35 -7
- package/src/nodes/display/NormalMapNode.js +20 -50
- package/src/nodes/display/PassNode.js +206 -17
- package/src/nodes/display/RenderOutputNode.js +28 -2
- package/src/nodes/display/ScreenNode.js +44 -40
- package/src/nodes/display/ToneMappingNode.js +31 -4
- package/src/nodes/display/ToonOutlinePassNode.js +8 -0
- package/src/nodes/display/ViewportDepthTextureNode.js +16 -4
- package/src/nodes/display/ViewportSharedTextureNode.js +12 -0
- package/src/nodes/display/ViewportTextureNode.js +94 -4
- package/src/nodes/fog/Fog.js +3 -2
- package/src/nodes/functions/BSDF/BRDF_GGX.js +2 -6
- package/src/nodes/functions/BSDF/BRDF_GGX_Multiscatter.js +52 -0
- package/src/nodes/functions/BSDF/BRDF_Sheen.js +4 -4
- package/src/nodes/functions/BSDF/DFGApprox.js +60 -19
- package/src/nodes/functions/BasicLightingModel.js +2 -1
- package/src/nodes/functions/PhongLightingModel.js +3 -3
- package/src/nodes/functions/PhysicalLightingModel.js +19 -18
- package/src/nodes/functions/VolumetricLightingModel.js +5 -5
- package/src/nodes/functions/material/getGeometryRoughness.js +2 -2
- package/src/nodes/geometry/RangeNode.js +40 -4
- package/src/nodes/gpgpu/AtomicFunctionNode.js +1 -1
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +2 -1
- package/src/nodes/gpgpu/ComputeNode.js +81 -25
- package/src/nodes/gpgpu/SubgroupFunctionNode.js +455 -0
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +29 -3
- package/src/nodes/lighting/EnvironmentNode.js +11 -11
- package/src/nodes/lighting/LightsNode.js +7 -8
- package/src/nodes/lighting/PointShadowNode.js +6 -0
- package/src/nodes/lighting/ProjectorLightNode.js +19 -6
- package/src/nodes/lighting/ShadowFilterNode.js +3 -1
- package/src/nodes/lighting/ShadowNode.js +77 -10
- package/src/nodes/materialx/MaterialXNodes.js +131 -2
- package/src/nodes/materialx/lib/mx_noise.js +165 -1
- package/src/nodes/math/BitcastNode.js +156 -0
- package/src/nodes/math/ConditionalNode.js +25 -27
- package/src/nodes/math/MathNode.js +106 -65
- package/src/nodes/math/OperatorNode.js +28 -43
- package/src/nodes/pmrem/PMREMUtils.js +117 -2
- package/src/nodes/shapes/Shapes.js +1 -1
- package/src/nodes/tsl/TSLBase.js +6 -2
- package/src/nodes/tsl/TSLCore.js +546 -186
- package/src/nodes/utils/DebugNode.js +3 -2
- package/src/nodes/utils/EquirectUV.js +27 -0
- package/src/nodes/utils/EventNode.js +119 -0
- package/src/nodes/utils/FunctionOverloadingNode.js +37 -19
- package/src/nodes/utils/JoinNode.js +6 -3
- package/src/nodes/utils/LoopNode.js +20 -41
- package/src/nodes/utils/MatcapUV.js +22 -0
- package/src/nodes/utils/MemberNode.js +59 -7
- package/src/nodes/utils/PostProcessingUtils.js +28 -1
- package/src/nodes/utils/RTTNode.js +33 -6
- package/src/nodes/utils/ReflectorNode.js +68 -10
- package/src/nodes/utils/SampleNode.js +91 -0
- package/src/nodes/utils/SplitNode.js +11 -0
- package/src/nodes/utils/Timer.js +0 -47
- package/src/nodes/utils/TriplanarTextures.js +65 -0
- package/src/objects/BatchedMesh.js +6 -4
- package/src/objects/LOD.js +1 -1
- package/src/objects/Line.js +2 -1
- package/src/objects/LineSegments.js +2 -1
- package/src/objects/Skeleton.js +3 -2
- package/src/objects/SkinnedMesh.js +3 -1
- package/src/objects/Sprite.js +4 -3
- package/src/renderers/WebGLRenderer.js +77 -66
- package/src/renderers/common/Animation.js +13 -1
- package/src/renderers/common/Attributes.js +1 -1
- package/src/renderers/common/Backend.js +108 -27
- package/src/renderers/common/Background.js +4 -3
- package/src/renderers/common/Bindings.js +76 -19
- package/src/renderers/common/CanvasTarget.js +341 -0
- package/src/renderers/common/ChainMap.js +1 -1
- package/src/renderers/common/Color4.js +2 -2
- package/src/renderers/common/CubeRenderTarget.js +1 -1
- package/src/renderers/common/DataMap.js +1 -1
- package/src/renderers/common/Geometries.js +26 -0
- package/src/renderers/common/Info.js +4 -2
- package/src/renderers/common/InspectorBase.js +146 -0
- package/src/renderers/common/Pipelines.js +1 -1
- package/src/renderers/common/PostProcessing.js +61 -25
- package/src/renderers/common/QuadMesh.js +7 -1
- package/src/renderers/common/RenderContext.js +2 -2
- package/src/renderers/common/RenderList.js +7 -3
- package/src/renderers/common/RenderObject.js +84 -5
- package/src/renderers/common/RenderObjects.js +1 -1
- package/src/renderers/common/Renderer.js +486 -255
- package/src/renderers/common/RendererUtils.js +9 -0
- package/src/renderers/common/SampledTexture.js +8 -68
- package/src/renderers/common/Sampler.js +117 -0
- package/src/renderers/common/Storage3DTexture.js +100 -0
- package/src/renderers/common/StorageArrayTexture.js +84 -0
- package/src/renderers/common/StorageTexture.js +27 -0
- package/src/renderers/common/Textures.js +138 -46
- package/src/renderers/common/TimestampQueryPool.js +65 -3
- package/src/renderers/common/UniformsGroup.js +2 -1
- package/src/renderers/common/XRManager.js +63 -24
- package/src/renderers/common/XRRenderTarget.js +21 -4
- package/src/renderers/common/extras/PMREMGenerator.js +161 -66
- package/src/renderers/common/nodes/NodeBuilderState.js +1 -1
- package/src/renderers/common/nodes/NodeLibrary.js +9 -7
- package/src/renderers/common/nodes/NodeSampledTexture.js +0 -12
- package/src/renderers/common/nodes/NodeSampler.js +13 -1
- package/src/renderers/common/nodes/Nodes.js +38 -16
- package/src/renderers/shaders/DFGLUTData.js +64 -0
- package/src/renderers/shaders/ShaderChunk/common.glsl.js +0 -12
- package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +52 -18
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +21 -11
- package/src/renderers/shaders/ShaderLib/depth.glsl.js +11 -2
- package/src/renderers/shaders/UniformsLib.js +1 -0
- package/src/renderers/shaders/UniformsUtils.js +25 -4
- package/src/renderers/webgl/WebGLAttributes.js +4 -0
- package/src/renderers/webgl/WebGLCapabilities.js +4 -3
- package/src/renderers/webgl/WebGLExtensions.js +2 -25
- package/src/renderers/webgl/WebGLInfo.js +3 -1
- package/src/renderers/webgl/WebGLProgram.js +25 -18
- package/src/renderers/webgl/WebGLPrograms.js +9 -6
- package/src/renderers/webgl/WebGLShadowMap.js +13 -2
- package/src/renderers/webgl/WebGLState.js +17 -16
- package/src/renderers/webgl/WebGLTextures.js +38 -21
- package/src/renderers/webgl/WebGLUniformsGroups.js +5 -3
- package/src/renderers/webgl/WebGLUtils.js +3 -2
- package/src/renderers/webgl-fallback/WebGLBackend.js +245 -182
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +184 -30
- package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +4 -0
- package/src/renderers/webgl-fallback/utils/WebGLConstants.js +2 -3
- package/src/renderers/webgl-fallback/utils/WebGLState.js +9 -8
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +171 -19
- package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +51 -22
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +3 -2
- package/src/renderers/webgpu/WebGPUBackend.js +205 -128
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +2 -1
- package/src/renderers/webgpu/WebGPURenderer.js +3 -2
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +198 -121
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +8 -1
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +49 -33
- package/src/renderers/webgpu/utils/WebGPUConstants.js +14 -3
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +56 -37
- package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +6 -8
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +266 -158
- package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +32 -9
- package/src/renderers/webgpu/utils/WebGPUUtils.js +24 -19
- package/src/renderers/webxr/WebXRDepthSensing.js +6 -10
- package/src/renderers/webxr/WebXRManager.js +89 -13
- package/src/textures/ExternalTexture.js +56 -0
- package/src/textures/FramebufferTexture.js +2 -2
- package/src/textures/Source.js +14 -3
- package/src/textures/Texture.js +3 -2
- package/src/textures/VideoTexture.js +29 -2
- package/src/utils.js +67 -3
- package/examples/jsm/loaders/RGBMLoader.js +0 -1148
- package/examples/jsm/tsl/display/TRAAPassNode.js +0 -452
- package/src/nodes/utils/EquirectUVNode.js +0 -65
- package/src/nodes/utils/MatcapUVNode.js +0 -49
- package/src/nodes/utils/TriplanarTexturesNode.js +0 -148
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { GLSLNodeParser, NodeBuilder, TextureNode, vectorComponents } from '../../../nodes/Nodes.js';
|
|
1
|
+
import { GLSLNodeParser, NodeBuilder, TextureNode, vectorComponents, CodeNode } from '../../../nodes/Nodes.js';
|
|
2
2
|
|
|
3
3
|
import NodeUniformBuffer from '../../common/nodes/NodeUniformBuffer.js';
|
|
4
4
|
import NodeUniformsGroup from '../../common/nodes/NodeUniformsGroup.js';
|
|
@@ -7,10 +7,22 @@ import { NodeSampledTexture, NodeSampledCubeTexture, NodeSampledTexture3D } from
|
|
|
7
7
|
|
|
8
8
|
import { NoColorSpace, ByteType, ShortType, RGBAIntegerFormat, RGBIntegerFormat, RedIntegerFormat, RGIntegerFormat, UnsignedByteType, UnsignedIntType, UnsignedShortType, RedFormat, RGFormat, IntType, RGBFormat, RGBAFormat, FloatType } from '../../../constants.js';
|
|
9
9
|
import { DataTexture } from '../../../textures/DataTexture.js';
|
|
10
|
+
import { error } from '../../../utils.js';
|
|
11
|
+
|
|
12
|
+
const glslPolyfills = {
|
|
13
|
+
bitcast_int_uint: new CodeNode( /* glsl */'uint tsl_bitcast_uint_to_int ( int x ) { return floatBitsToInt( uintBitsToFloat( x ) ); }' ),
|
|
14
|
+
bitcast_uint_int: new CodeNode( /* glsl */'uint tsl_bitcast_int_to_uint ( int x ) { return floatBitsToUint( intBitsToFloat ( x ) ); }' )
|
|
15
|
+
};
|
|
10
16
|
|
|
11
17
|
const glslMethods = {
|
|
12
18
|
textureDimensions: 'textureSize',
|
|
13
|
-
equals: 'equal'
|
|
19
|
+
equals: 'equal',
|
|
20
|
+
bitcast_float_int: 'floatBitsToInt',
|
|
21
|
+
bitcast_int_float: 'intBitsToFloat',
|
|
22
|
+
bitcast_uint_float: 'uintBitsToFloat',
|
|
23
|
+
bitcast_float_uint: 'floatBitsToUint',
|
|
24
|
+
bitcast_uint_int: 'tsl_bitcast_uint_to_int',
|
|
25
|
+
bitcast_int_uint: 'tsl_bitcast_int_to_uint'
|
|
14
26
|
};
|
|
15
27
|
|
|
16
28
|
const precisionLib = {
|
|
@@ -30,9 +42,7 @@ const interpolationTypeMap = {
|
|
|
30
42
|
};
|
|
31
43
|
|
|
32
44
|
const interpolationModeMap = {
|
|
33
|
-
'centroid': 'centroid'
|
|
34
|
-
'flat first': 'flat',
|
|
35
|
-
'flat either': 'flat'
|
|
45
|
+
'centroid': 'centroid'
|
|
36
46
|
};
|
|
37
47
|
|
|
38
48
|
const defaultPrecisions = `
|
|
@@ -124,6 +134,25 @@ class GLSLNodeBuilder extends NodeBuilder {
|
|
|
124
134
|
|
|
125
135
|
}
|
|
126
136
|
|
|
137
|
+
/**
|
|
138
|
+
* Includes the given method name into the current
|
|
139
|
+
* function node.
|
|
140
|
+
*
|
|
141
|
+
* @private
|
|
142
|
+
* @param {string} name - The method name to include.
|
|
143
|
+
* @return {CodeNode} The respective code node.
|
|
144
|
+
*/
|
|
145
|
+
_include( name ) {
|
|
146
|
+
|
|
147
|
+
const codeNode = glslPolyfills[ name ];
|
|
148
|
+
codeNode.build( this );
|
|
149
|
+
|
|
150
|
+
this.addInclude( codeNode );
|
|
151
|
+
|
|
152
|
+
return codeNode;
|
|
153
|
+
|
|
154
|
+
}
|
|
155
|
+
|
|
127
156
|
/**
|
|
128
157
|
* Returns the native shader method name for a given generic name.
|
|
129
158
|
*
|
|
@@ -132,10 +161,43 @@ class GLSLNodeBuilder extends NodeBuilder {
|
|
|
132
161
|
*/
|
|
133
162
|
getMethod( method ) {
|
|
134
163
|
|
|
164
|
+
if ( glslPolyfills[ method ] !== undefined ) {
|
|
165
|
+
|
|
166
|
+
this._include( method );
|
|
167
|
+
|
|
168
|
+
}
|
|
169
|
+
|
|
135
170
|
return glslMethods[ method ] || method;
|
|
136
171
|
|
|
137
172
|
}
|
|
138
173
|
|
|
174
|
+
/**
|
|
175
|
+
* Returns the bitcast method name for a given input and outputType.
|
|
176
|
+
*
|
|
177
|
+
* @param {string} type - The output type to bitcast to.
|
|
178
|
+
* @param {string} inputType - The input type of the.
|
|
179
|
+
* @return {string} The resolved WGSL bitcast invocation.
|
|
180
|
+
*/
|
|
181
|
+
getBitcastMethod( type, inputType ) {
|
|
182
|
+
|
|
183
|
+
return this.getMethod( `bitcast_${ inputType }_${ type }` );
|
|
184
|
+
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
/**
|
|
188
|
+
* Returns the native snippet for a ternary operation.
|
|
189
|
+
*
|
|
190
|
+
* @param {string} condSnippet - The condition determining which expression gets resolved.
|
|
191
|
+
* @param {string} ifSnippet - The expression to resolve to if the condition is true.
|
|
192
|
+
* @param {string} elseSnippet - The expression to resolve to if the condition is false.
|
|
193
|
+
* @return {string} The resolved method name.
|
|
194
|
+
*/
|
|
195
|
+
getTernary( condSnippet, ifSnippet, elseSnippet ) {
|
|
196
|
+
|
|
197
|
+
return `${condSnippet} ? ${ifSnippet} : ${elseSnippet}`;
|
|
198
|
+
|
|
199
|
+
}
|
|
200
|
+
|
|
139
201
|
/**
|
|
140
202
|
* Returns the output struct name. Not relevant for GLSL.
|
|
141
203
|
*
|
|
@@ -251,7 +313,7 @@ ${ flowData.code }
|
|
|
251
313
|
attribute.pboNode = pbo;
|
|
252
314
|
attribute.pbo = pbo.value;
|
|
253
315
|
|
|
254
|
-
this.getUniformFromNode( attribute.pboNode, 'texture', this.shaderStage, this.context.
|
|
316
|
+
this.getUniformFromNode( attribute.pboNode, 'texture', this.shaderStage, this.context.nodeName );
|
|
255
317
|
|
|
256
318
|
}
|
|
257
319
|
|
|
@@ -295,7 +357,7 @@ ${ flowData.code }
|
|
|
295
357
|
|
|
296
358
|
}
|
|
297
359
|
|
|
298
|
-
const nodeUniform = this.getUniformFromNode( attribute.pboNode, 'texture', this.shaderStage, this.context.
|
|
360
|
+
const nodeUniform = this.getUniformFromNode( attribute.pboNode, 'texture', this.shaderStage, this.context.nodeName );
|
|
299
361
|
const textureName = this.getPropertyName( nodeUniform );
|
|
300
362
|
|
|
301
363
|
this.increaseUsage( indexNode ); // force cache generate to be used as index in x,y
|
|
@@ -338,7 +400,7 @@ ${ flowData.code }
|
|
|
338
400
|
const channel = '.' + vectorComponents.join( '' ).slice( 0, itemSize );
|
|
339
401
|
const uvSnippet = `ivec2(${indexSnippet} % ${ propertySizeName }, ${indexSnippet} / ${ propertySizeName })`;
|
|
340
402
|
|
|
341
|
-
const snippet = this.generateTextureLoad( null, textureName, uvSnippet,
|
|
403
|
+
const snippet = this.generateTextureLoad( null, textureName, uvSnippet, '0', null, null );
|
|
342
404
|
|
|
343
405
|
//
|
|
344
406
|
|
|
@@ -368,25 +430,54 @@ ${ flowData.code }
|
|
|
368
430
|
/**
|
|
369
431
|
* Generates the GLSL snippet that reads a single texel from a texture without sampling or filtering.
|
|
370
432
|
*
|
|
371
|
-
* @param {Texture} texture - The texture.
|
|
433
|
+
* @param {?Texture} texture - The texture.
|
|
372
434
|
* @param {string} textureProperty - The name of the texture uniform in the shader.
|
|
373
435
|
* @param {string} uvIndexSnippet - A GLSL snippet that represents texture coordinates used for sampling.
|
|
436
|
+
* @param {?string} levelSnippet - A GLSL snippet that represents the mip level, with level 0 containing a full size version of the texture.
|
|
374
437
|
* @param {?string} depthSnippet - A GLSL snippet that represents the 0-based texture array index to sample.
|
|
375
|
-
* @param {string}
|
|
438
|
+
* @param {?string} offsetSnippet - A GLSL snippet that represents the offset that will be applied to the unnormalized texture coordinate before sampling the texture.
|
|
376
439
|
* @return {string} The GLSL snippet.
|
|
377
440
|
*/
|
|
378
|
-
generateTextureLoad( texture, textureProperty, uvIndexSnippet, depthSnippet,
|
|
441
|
+
generateTextureLoad( texture, textureProperty, uvIndexSnippet, levelSnippet, depthSnippet, offsetSnippet ) {
|
|
442
|
+
|
|
443
|
+
if ( levelSnippet === null ) levelSnippet = '0';
|
|
444
|
+
|
|
445
|
+
let snippet;
|
|
379
446
|
|
|
380
447
|
if ( depthSnippet ) {
|
|
381
448
|
|
|
382
|
-
|
|
449
|
+
if ( offsetSnippet ) {
|
|
450
|
+
|
|
451
|
+
snippet = `texelFetchOffset( ${ textureProperty }, ivec3( ${ uvIndexSnippet }, ${ depthSnippet } ), ${ levelSnippet }, ${ offsetSnippet } )`;
|
|
452
|
+
|
|
453
|
+
} else {
|
|
454
|
+
|
|
455
|
+
snippet = `texelFetch( ${ textureProperty }, ivec3( ${ uvIndexSnippet }, ${ depthSnippet } ), ${ levelSnippet } )`;
|
|
456
|
+
|
|
457
|
+
}
|
|
383
458
|
|
|
384
459
|
} else {
|
|
385
460
|
|
|
386
|
-
|
|
461
|
+
if ( offsetSnippet ) {
|
|
462
|
+
|
|
463
|
+
snippet = `texelFetchOffset( ${ textureProperty }, ${ uvIndexSnippet }, ${ levelSnippet }, ${ offsetSnippet } )`;
|
|
464
|
+
|
|
465
|
+
} else {
|
|
466
|
+
|
|
467
|
+
snippet = `texelFetch( ${ textureProperty }, ${ uvIndexSnippet }, ${ levelSnippet } )`;
|
|
468
|
+
|
|
469
|
+
}
|
|
470
|
+
|
|
471
|
+
}
|
|
472
|
+
|
|
473
|
+
if ( texture !== null && texture.isDepthTexture ) {
|
|
474
|
+
|
|
475
|
+
snippet += '.x';
|
|
387
476
|
|
|
388
477
|
}
|
|
389
478
|
|
|
479
|
+
return snippet;
|
|
480
|
+
|
|
390
481
|
}
|
|
391
482
|
|
|
392
483
|
/**
|
|
@@ -396,23 +487,24 @@ ${ flowData.code }
|
|
|
396
487
|
* @param {string} textureProperty - The name of the texture uniform in the shader.
|
|
397
488
|
* @param {string} uvSnippet - A GLSL snippet that represents texture coordinates used for sampling.
|
|
398
489
|
* @param {?string} depthSnippet - A GLSL snippet that represents the 0-based texture array index to sample.
|
|
490
|
+
* @param {?string} offsetSnippet - A GLSL snippet that represents the offset that will be applied to the unnormalized texture coordinate before sampling the texture.
|
|
399
491
|
* @return {string} The GLSL snippet.
|
|
400
492
|
*/
|
|
401
|
-
generateTexture( texture, textureProperty, uvSnippet, depthSnippet ) {
|
|
493
|
+
generateTexture( texture, textureProperty, uvSnippet, depthSnippet, offsetSnippet ) {
|
|
494
|
+
|
|
495
|
+
if ( depthSnippet ) uvSnippet = `vec3( ${ uvSnippet }, ${ depthSnippet } )`;
|
|
402
496
|
|
|
403
497
|
if ( texture.isDepthTexture ) {
|
|
404
498
|
|
|
405
|
-
if (
|
|
499
|
+
if ( offsetSnippet ) return `textureOffset( ${ textureProperty }, ${ uvSnippet }, ${ offsetSnippet } ).x`;
|
|
406
500
|
|
|
407
501
|
return `texture( ${ textureProperty }, ${ uvSnippet } ).x`;
|
|
408
502
|
|
|
409
|
-
}
|
|
410
|
-
|
|
411
|
-
if ( depthSnippet ) uvSnippet = `vec3( ${ uvSnippet }, ${ depthSnippet } )`;
|
|
503
|
+
}
|
|
412
504
|
|
|
413
|
-
|
|
505
|
+
if ( offsetSnippet ) return `textureOffset( ${ textureProperty }, ${ uvSnippet }, ${ offsetSnippet } )`;
|
|
414
506
|
|
|
415
|
-
}
|
|
507
|
+
return `texture( ${ textureProperty }, ${ uvSnippet } )`;
|
|
416
508
|
|
|
417
509
|
}
|
|
418
510
|
|
|
@@ -423,9 +515,16 @@ ${ flowData.code }
|
|
|
423
515
|
* @param {string} textureProperty - The name of the texture uniform in the shader.
|
|
424
516
|
* @param {string} uvSnippet - A GLSL snippet that represents texture coordinates used for sampling.
|
|
425
517
|
* @param {string} levelSnippet - A GLSL snippet that represents the mip level, with level 0 containing a full size version of the texture.
|
|
518
|
+
* @param {?string} offsetSnippet - A GLSL snippet that represents the offset that will be applied to the unnormalized texture coordinate before sampling the texture.
|
|
426
519
|
* @return {string} The GLSL snippet.
|
|
427
520
|
*/
|
|
428
|
-
generateTextureLevel( texture, textureProperty, uvSnippet, levelSnippet ) {
|
|
521
|
+
generateTextureLevel( texture, textureProperty, uvSnippet, levelSnippet, offsetSnippet ) {
|
|
522
|
+
|
|
523
|
+
if ( offsetSnippet ) {
|
|
524
|
+
|
|
525
|
+
return `textureLodOffset( ${ textureProperty }, ${ uvSnippet }, ${ levelSnippet }, ${ offsetSnippet } )`;
|
|
526
|
+
|
|
527
|
+
}
|
|
429
528
|
|
|
430
529
|
return `textureLod( ${ textureProperty }, ${ uvSnippet }, ${ levelSnippet } )`;
|
|
431
530
|
|
|
@@ -438,9 +537,16 @@ ${ flowData.code }
|
|
|
438
537
|
* @param {string} textureProperty - The name of the texture uniform in the shader.
|
|
439
538
|
* @param {string} uvSnippet - A GLSL snippet that represents texture coordinates used for sampling.
|
|
440
539
|
* @param {string} biasSnippet - A GLSL snippet that represents the bias to apply to the mip level before sampling.
|
|
540
|
+
* @param {?string} offsetSnippet - A GLSL snippet that represents the offset that will be applied to the unnormalized texture coordinate before sampling the texture.
|
|
441
541
|
* @return {string} The GLSL snippet.
|
|
442
542
|
*/
|
|
443
|
-
generateTextureBias( texture, textureProperty, uvSnippet, biasSnippet ) {
|
|
543
|
+
generateTextureBias( texture, textureProperty, uvSnippet, biasSnippet, offsetSnippet ) {
|
|
544
|
+
|
|
545
|
+
if ( offsetSnippet ) {
|
|
546
|
+
|
|
547
|
+
return `textureOffset( ${ textureProperty }, ${ uvSnippet }, ${ offsetSnippet }, ${ biasSnippet } )`;
|
|
548
|
+
|
|
549
|
+
}
|
|
444
550
|
|
|
445
551
|
return `texture( ${ textureProperty }, ${ uvSnippet }, ${ biasSnippet } )`;
|
|
446
552
|
|
|
@@ -453,9 +559,16 @@ ${ flowData.code }
|
|
|
453
559
|
* @param {string} textureProperty - The name of the texture uniform in the shader.
|
|
454
560
|
* @param {string} uvSnippet - A GLSL snippet that represents texture coordinates used for sampling.
|
|
455
561
|
* @param {Array<string>} gradSnippet - An array holding both gradient GLSL snippets.
|
|
562
|
+
* @param {?string} offsetSnippet - A GLSL snippet that represents the offset that will be applied to the unnormalized texture coordinate before sampling the texture.
|
|
456
563
|
* @return {string} The GLSL snippet.
|
|
457
564
|
*/
|
|
458
|
-
generateTextureGrad( texture, textureProperty, uvSnippet, gradSnippet ) {
|
|
565
|
+
generateTextureGrad( texture, textureProperty, uvSnippet, gradSnippet, offsetSnippet ) {
|
|
566
|
+
|
|
567
|
+
if ( offsetSnippet ) {
|
|
568
|
+
|
|
569
|
+
return `textureGradOffset( ${ textureProperty }, ${ uvSnippet }, ${ gradSnippet[ 0 ] }, ${ gradSnippet[ 1 ] }, ${ offsetSnippet } )`;
|
|
570
|
+
|
|
571
|
+
}
|
|
459
572
|
|
|
460
573
|
return `textureGrad( ${ textureProperty }, ${ uvSnippet }, ${ gradSnippet[ 0 ] }, ${ gradSnippet[ 1 ] } )`;
|
|
461
574
|
|
|
@@ -470,24 +583,37 @@ ${ flowData.code }
|
|
|
470
583
|
* @param {string} uvSnippet - A GLSL snippet that represents texture coordinates used for sampling.
|
|
471
584
|
* @param {string} compareSnippet - A GLSL snippet that represents the reference value.
|
|
472
585
|
* @param {?string} depthSnippet - A GLSL snippet that represents 0-based texture array index to sample.
|
|
586
|
+
* @param {?string} offsetSnippet - A GLSL snippet that represents the offset that will be applied to the unnormalized texture coordinate before sampling the texture.
|
|
473
587
|
* @param {string} [shaderStage=this.shaderStage] - The shader stage this code snippet is generated for.
|
|
474
588
|
* @return {string} The GLSL snippet.
|
|
475
589
|
*/
|
|
476
|
-
generateTextureCompare( texture, textureProperty, uvSnippet, compareSnippet, depthSnippet, shaderStage = this.shaderStage ) {
|
|
590
|
+
generateTextureCompare( texture, textureProperty, uvSnippet, compareSnippet, depthSnippet, offsetSnippet, shaderStage = this.shaderStage ) {
|
|
477
591
|
|
|
478
592
|
if ( shaderStage === 'fragment' ) {
|
|
479
593
|
|
|
480
594
|
if ( depthSnippet ) {
|
|
481
595
|
|
|
596
|
+
if ( offsetSnippet ) {
|
|
597
|
+
|
|
598
|
+
return `textureOffset( ${ textureProperty }, vec4( ${ uvSnippet }, ${ depthSnippet }, ${ compareSnippet } ), ${ offsetSnippet } )`;
|
|
599
|
+
|
|
600
|
+
}
|
|
601
|
+
|
|
482
602
|
return `texture( ${ textureProperty }, vec4( ${ uvSnippet }, ${ depthSnippet }, ${ compareSnippet } ) )`;
|
|
483
603
|
|
|
484
604
|
}
|
|
485
605
|
|
|
606
|
+
if ( offsetSnippet ) {
|
|
607
|
+
|
|
608
|
+
return `textureOffset( ${ textureProperty }, vec3( ${ uvSnippet }, ${ compareSnippet } ), ${ offsetSnippet } )`;
|
|
609
|
+
|
|
610
|
+
}
|
|
611
|
+
|
|
486
612
|
return `texture( ${ textureProperty }, vec3( ${ uvSnippet }, ${ compareSnippet } ) )`;
|
|
487
613
|
|
|
488
614
|
} else {
|
|
489
615
|
|
|
490
|
-
|
|
616
|
+
error( `WebGPURenderer: THREE.DepthTexture.compareFunction() does not support ${ shaderStage } shader.` );
|
|
491
617
|
|
|
492
618
|
}
|
|
493
619
|
|
|
@@ -869,7 +995,8 @@ ${ flowData.code }
|
|
|
869
995
|
}
|
|
870
996
|
|
|
871
997
|
/**
|
|
872
|
-
*
|
|
998
|
+
* Contextually returns either the vertex stage instance index builtin
|
|
999
|
+
* or the linearized index of an compute invocation within a grid of workgroups.
|
|
873
1000
|
*
|
|
874
1001
|
* @return {string} The instance index.
|
|
875
1002
|
*/
|
|
@@ -880,7 +1007,7 @@ ${ flowData.code }
|
|
|
880
1007
|
}
|
|
881
1008
|
|
|
882
1009
|
/**
|
|
883
|
-
* Returns the invocation
|
|
1010
|
+
* Returns a builtin representing the index of an invocation within its workgroup.
|
|
884
1011
|
*
|
|
885
1012
|
* @return {string} The invocation local index.
|
|
886
1013
|
*/
|
|
@@ -894,6 +1021,33 @@ ${ flowData.code }
|
|
|
894
1021
|
|
|
895
1022
|
}
|
|
896
1023
|
|
|
1024
|
+
/**
|
|
1025
|
+
* Returns a builtin representing the size of a subgroup within the current shader.
|
|
1026
|
+
*/
|
|
1027
|
+
getSubgroupSize() {
|
|
1028
|
+
|
|
1029
|
+
error( 'GLSLNodeBuilder: WebGLBackend does not support the subgroupSize node' );
|
|
1030
|
+
|
|
1031
|
+
}
|
|
1032
|
+
|
|
1033
|
+
/**
|
|
1034
|
+
* Returns a builtin representing the index of an invocation within its subgroup.
|
|
1035
|
+
*/
|
|
1036
|
+
getInvocationSubgroupIndex() {
|
|
1037
|
+
|
|
1038
|
+
error( 'GLSLNodeBuilder: WebGLBackend does not support the invocationSubgroupIndex node' );
|
|
1039
|
+
|
|
1040
|
+
}
|
|
1041
|
+
|
|
1042
|
+
/**
|
|
1043
|
+
* Returns a builtin representing the index of the current invocation's subgroup within its workgroup.
|
|
1044
|
+
*/
|
|
1045
|
+
getSubgroupIndex() {
|
|
1046
|
+
|
|
1047
|
+
error( 'GLSLNodeBuilder: WebGLBackend does not support the subgroupIndex node' );
|
|
1048
|
+
|
|
1049
|
+
}
|
|
1050
|
+
|
|
897
1051
|
/**
|
|
898
1052
|
* Returns the draw index builtin.
|
|
899
1053
|
*
|
|
@@ -1225,6 +1379,9 @@ ${shaderData.extensions}
|
|
|
1225
1379
|
// precision
|
|
1226
1380
|
${ defaultPrecisions }
|
|
1227
1381
|
|
|
1382
|
+
// structs
|
|
1383
|
+
${shaderData.structs}
|
|
1384
|
+
|
|
1228
1385
|
// uniforms
|
|
1229
1386
|
${shaderData.uniforms}
|
|
1230
1387
|
|
|
@@ -1234,9 +1391,6 @@ ${shaderData.varyings}
|
|
|
1234
1391
|
// codes
|
|
1235
1392
|
${shaderData.codes}
|
|
1236
1393
|
|
|
1237
|
-
// structs
|
|
1238
|
-
${shaderData.structs}
|
|
1239
|
-
|
|
1240
1394
|
void main() {
|
|
1241
1395
|
|
|
1242
1396
|
// vars
|
|
@@ -114,6 +114,10 @@ class WebGLAttributeUtils {
|
|
|
114
114
|
|
|
115
115
|
type = gl.FLOAT;
|
|
116
116
|
|
|
117
|
+
} else if ( typeof Float16Array !== 'undefined' && array instanceof Float16Array ) {
|
|
118
|
+
|
|
119
|
+
type = gl.HALF_FLOAT;
|
|
120
|
+
|
|
117
121
|
} else if ( array instanceof Uint16Array ) {
|
|
118
122
|
|
|
119
123
|
if ( attribute.isFloat16BufferAttribute ) {
|
|
@@ -5,9 +5,8 @@ export const GLFeatureName = {
|
|
|
5
5
|
'WEBGL_compressed_texture_etc': 'texture-compression-etc2',
|
|
6
6
|
'WEBGL_compressed_texture_etc1': 'texture-compression-etc1',
|
|
7
7
|
'WEBGL_compressed_texture_pvrtc': 'texture-compression-pvrtc',
|
|
8
|
-
'
|
|
9
|
-
'
|
|
10
|
-
'EXT_texture_compression_bptc': 'texture-compression-bptc',
|
|
8
|
+
'WEBGL_compressed_texture_s3tc': 'texture-compression-s3tc',
|
|
9
|
+
'EXT_texture_compression_bptc': 'texture-compression-bc',
|
|
11
10
|
'EXT_disjoint_timer_query_webgl2': 'timestamp-query',
|
|
12
11
|
'OVR_multiview2': 'OVR_multiview2'
|
|
13
12
|
|
|
@@ -7,6 +7,7 @@ import {
|
|
|
7
7
|
NeverDepth, AlwaysDepth, LessDepth, LessEqualDepth, EqualDepth, GreaterEqualDepth, GreaterDepth, NotEqualDepth
|
|
8
8
|
} from '../../../constants.js';
|
|
9
9
|
import { Vector4 } from '../../../math/Vector4.js';
|
|
10
|
+
import { error } from '../../../utils.js';
|
|
10
11
|
|
|
11
12
|
let equationToGL, factorToGL;
|
|
12
13
|
|
|
@@ -339,11 +340,11 @@ class WebGLState {
|
|
|
339
340
|
break;
|
|
340
341
|
|
|
341
342
|
case MultiplyBlending:
|
|
342
|
-
gl.blendFuncSeparate( gl.
|
|
343
|
+
gl.blendFuncSeparate( gl.DST_COLOR, gl.ONE_MINUS_SRC_ALPHA, gl.ZERO, gl.ONE );
|
|
343
344
|
break;
|
|
344
345
|
|
|
345
346
|
default:
|
|
346
|
-
|
|
347
|
+
error( 'WebGLState: Invalid blending: ', blending );
|
|
347
348
|
break;
|
|
348
349
|
|
|
349
350
|
}
|
|
@@ -357,19 +358,19 @@ class WebGLState {
|
|
|
357
358
|
break;
|
|
358
359
|
|
|
359
360
|
case AdditiveBlending:
|
|
360
|
-
gl.
|
|
361
|
+
gl.blendFuncSeparate( gl.SRC_ALPHA, gl.ONE, gl.ONE, gl.ONE );
|
|
361
362
|
break;
|
|
362
363
|
|
|
363
364
|
case SubtractiveBlending:
|
|
364
|
-
|
|
365
|
+
error( 'WebGLState: SubtractiveBlending requires material.premultipliedAlpha = true' );
|
|
365
366
|
break;
|
|
366
367
|
|
|
367
368
|
case MultiplyBlending:
|
|
368
|
-
|
|
369
|
+
error( 'WebGLState: MultiplyBlending requires material.premultipliedAlpha = true' );
|
|
369
370
|
break;
|
|
370
371
|
|
|
371
372
|
default:
|
|
372
|
-
|
|
373
|
+
error( 'WebGLState: Invalid blending: ', blending );
|
|
373
374
|
break;
|
|
374
375
|
|
|
375
376
|
}
|
|
@@ -754,7 +755,7 @@ class WebGLState {
|
|
|
754
755
|
|
|
755
756
|
this.setPolygonOffset( material.polygonOffset, material.polygonOffsetFactor, material.polygonOffsetUnits );
|
|
756
757
|
|
|
757
|
-
material.alphaToCoverage === true && this.backend.renderer.
|
|
758
|
+
material.alphaToCoverage === true && this.backend.renderer.currentSamples > 0
|
|
758
759
|
? this.enable( gl.SAMPLE_ALPHA_TO_COVERAGE )
|
|
759
760
|
: this.disable( gl.SAMPLE_ALPHA_TO_COVERAGE );
|
|
760
761
|
|
|
@@ -848,7 +849,7 @@ class WebGLState {
|
|
|
848
849
|
* Sets the vertex state by binding the given VAO and element buffer.
|
|
849
850
|
*
|
|
850
851
|
* @param {WebGLVertexArrayObject} vao - The VAO.
|
|
851
|
-
* @param {WebGLBuffer} indexBuffer - The index buffer.
|
|
852
|
+
* @param {?WebGLBuffer} indexBuffer - The index buffer.
|
|
852
853
|
* @return {boolean} Whether a vertex state has been changed or not.
|
|
853
854
|
*/
|
|
854
855
|
setVertexState( vao, indexBuffer = null ) {
|