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,6 +1,7 @@
|
|
|
1
1
|
import { GPUInputStepMode } from './WebGPUConstants.js';
|
|
2
2
|
|
|
3
3
|
import { Float16BufferAttribute } from '../../../core/BufferAttribute.js';
|
|
4
|
+
import { error } from '../../../utils.js';
|
|
4
5
|
|
|
5
6
|
const typedArraysToVertexFormatPrefix = new Map( [
|
|
6
7
|
[ Int8Array, [ 'sint8', 'snorm8' ]],
|
|
@@ -12,6 +13,12 @@ const typedArraysToVertexFormatPrefix = new Map( [
|
|
|
12
13
|
[ Float32Array, [ 'float32', ]],
|
|
13
14
|
] );
|
|
14
15
|
|
|
16
|
+
if ( typeof Float16Array !== 'undefined' ) {
|
|
17
|
+
|
|
18
|
+
typedArraysToVertexFormatPrefix.set( Float16Array, [ 'float16' ] );
|
|
19
|
+
|
|
20
|
+
}
|
|
21
|
+
|
|
15
22
|
const typedAttributeToVertexFormatPrefix = new Map( [
|
|
16
23
|
[ Float16BufferAttribute, [ 'float16', ]],
|
|
17
24
|
] );
|
|
@@ -400,7 +407,7 @@ class WebGPUAttributeUtils {
|
|
|
400
407
|
|
|
401
408
|
if ( ! format ) {
|
|
402
409
|
|
|
403
|
-
|
|
410
|
+
error( 'WebGPUAttributeUtils: Vertex format not supported yet.' );
|
|
404
411
|
|
|
405
412
|
}
|
|
406
413
|
|
|
@@ -5,6 +5,7 @@ import {
|
|
|
5
5
|
|
|
6
6
|
import { FloatType, IntType, UnsignedIntType } from '../../../constants.js';
|
|
7
7
|
import { NodeAccess } from '../../../nodes/core/constants.js';
|
|
8
|
+
import { error } from '../../../utils.js';
|
|
8
9
|
|
|
9
10
|
/**
|
|
10
11
|
* A WebGPU backend utility module for managing bindings.
|
|
@@ -93,30 +94,6 @@ class WebGPUBindingUtils {
|
|
|
93
94
|
|
|
94
95
|
bindingGPU.buffer = buffer;
|
|
95
96
|
|
|
96
|
-
} else if ( binding.isSampler ) {
|
|
97
|
-
|
|
98
|
-
const sampler = {}; // GPUSamplerBindingLayout
|
|
99
|
-
|
|
100
|
-
if ( binding.texture.isDepthTexture ) {
|
|
101
|
-
|
|
102
|
-
if ( binding.texture.compareFunction !== null ) {
|
|
103
|
-
|
|
104
|
-
sampler.type = GPUSamplerBindingType.Comparison;
|
|
105
|
-
|
|
106
|
-
} else if ( backend.compatibilityMode ) {
|
|
107
|
-
|
|
108
|
-
sampler.type = GPUSamplerBindingType.NonFiltering;
|
|
109
|
-
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
bindingGPU.sampler = sampler;
|
|
115
|
-
|
|
116
|
-
} else if ( binding.isSampledTexture && binding.texture.isVideoTexture ) {
|
|
117
|
-
|
|
118
|
-
bindingGPU.externalTexture = {}; // GPUExternalTextureBindingLayout
|
|
119
|
-
|
|
120
97
|
} else if ( binding.isSampledTexture && binding.store ) {
|
|
121
98
|
|
|
122
99
|
const storageTexture = {}; // GPUStorageTextureBindingLayout
|
|
@@ -138,6 +115,16 @@ class WebGPUBindingUtils {
|
|
|
138
115
|
|
|
139
116
|
}
|
|
140
117
|
|
|
118
|
+
if ( binding.texture.isArrayTexture ) {
|
|
119
|
+
|
|
120
|
+
storageTexture.viewDimension = GPUTextureViewDimension.TwoDArray;
|
|
121
|
+
|
|
122
|
+
} else if ( binding.texture.is3DTexture ) {
|
|
123
|
+
|
|
124
|
+
storageTexture.viewDimension = GPUTextureViewDimension.ThreeD;
|
|
125
|
+
|
|
126
|
+
}
|
|
127
|
+
|
|
141
128
|
bindingGPU.storageTexture = storageTexture;
|
|
142
129
|
|
|
143
130
|
} else if ( binding.isSampledTexture ) {
|
|
@@ -214,9 +201,29 @@ class WebGPUBindingUtils {
|
|
|
214
201
|
|
|
215
202
|
bindingGPU.texture = texture;
|
|
216
203
|
|
|
204
|
+
} else if ( binding.isSampler ) {
|
|
205
|
+
|
|
206
|
+
const sampler = {}; // GPUSamplerBindingLayout
|
|
207
|
+
|
|
208
|
+
if ( binding.texture.isDepthTexture ) {
|
|
209
|
+
|
|
210
|
+
if ( binding.texture.compareFunction !== null ) {
|
|
211
|
+
|
|
212
|
+
sampler.type = GPUSamplerBindingType.Comparison;
|
|
213
|
+
|
|
214
|
+
} else if ( backend.compatibilityMode ) {
|
|
215
|
+
|
|
216
|
+
sampler.type = GPUSamplerBindingType.NonFiltering;
|
|
217
|
+
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
bindingGPU.sampler = sampler;
|
|
223
|
+
|
|
217
224
|
} else {
|
|
218
225
|
|
|
219
|
-
|
|
226
|
+
error( `WebGPUBindingUtils: Unsupported binding "${ binding }".` );
|
|
220
227
|
|
|
221
228
|
}
|
|
222
229
|
|
|
@@ -395,12 +402,6 @@ class WebGPUBindingUtils {
|
|
|
395
402
|
|
|
396
403
|
entriesGPU.push( { binding: bindingPoint, resource: { buffer: bindingData.buffer } } );
|
|
397
404
|
|
|
398
|
-
} else if ( binding.isSampler ) {
|
|
399
|
-
|
|
400
|
-
const textureGPU = backend.get( binding.texture );
|
|
401
|
-
|
|
402
|
-
entriesGPU.push( { binding: bindingPoint, resource: textureGPU.sampler } );
|
|
403
|
-
|
|
404
405
|
} else if ( binding.isSampledTexture ) {
|
|
405
406
|
|
|
406
407
|
const textureData = backend.get( binding.texture );
|
|
@@ -414,7 +415,16 @@ class WebGPUBindingUtils {
|
|
|
414
415
|
} else {
|
|
415
416
|
|
|
416
417
|
const mipLevelCount = binding.store ? 1 : textureData.texture.mipLevelCount;
|
|
417
|
-
const
|
|
418
|
+
const baseMipLevel = binding.store ? binding.mipLevel : 0;
|
|
419
|
+
let propertyName = `view-${ textureData.texture.width }-${ textureData.texture.height }`;
|
|
420
|
+
|
|
421
|
+
if ( textureData.texture.depthOrArrayLayers > 1 ) {
|
|
422
|
+
|
|
423
|
+
propertyName += `-${ textureData.texture.depthOrArrayLayers }`;
|
|
424
|
+
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
propertyName += `-${ mipLevelCount }-${ baseMipLevel }`;
|
|
418
428
|
|
|
419
429
|
resourceGPU = textureData[ propertyName ];
|
|
420
430
|
|
|
@@ -442,7 +452,7 @@ class WebGPUBindingUtils {
|
|
|
442
452
|
|
|
443
453
|
}
|
|
444
454
|
|
|
445
|
-
resourceGPU = textureData[ propertyName ] = textureData.texture.createView( { aspect: aspectGPU, dimension: dimensionViewGPU, mipLevelCount } );
|
|
455
|
+
resourceGPU = textureData[ propertyName ] = textureData.texture.createView( { aspect: aspectGPU, dimension: dimensionViewGPU, mipLevelCount, baseMipLevel } );
|
|
446
456
|
|
|
447
457
|
}
|
|
448
458
|
|
|
@@ -450,6 +460,12 @@ class WebGPUBindingUtils {
|
|
|
450
460
|
|
|
451
461
|
entriesGPU.push( { binding: bindingPoint, resource: resourceGPU } );
|
|
452
462
|
|
|
463
|
+
} else if ( binding.isSampler ) {
|
|
464
|
+
|
|
465
|
+
const textureGPU = backend.get( binding.texture );
|
|
466
|
+
|
|
467
|
+
entriesGPU.push( { binding: bindingPoint, resource: textureGPU.sampler } );
|
|
468
|
+
|
|
453
469
|
}
|
|
454
470
|
|
|
455
471
|
bindingPoint ++;
|
|
@@ -113,7 +113,7 @@ export const GPUTextureFormat = {
|
|
|
113
113
|
// Packed 32-bit formats
|
|
114
114
|
RGB9E5UFloat: 'rgb9e5ufloat',
|
|
115
115
|
RGB10A2Unorm: 'rgb10a2unorm',
|
|
116
|
-
RG11B10UFloat: '
|
|
116
|
+
RG11B10UFloat: 'rg11b10ufloat',
|
|
117
117
|
|
|
118
118
|
// 64-bit formats
|
|
119
119
|
|
|
@@ -158,7 +158,7 @@ export const GPUTextureFormat = {
|
|
|
158
158
|
BC6HRGBUFloat: 'bc6h-rgb-ufloat',
|
|
159
159
|
BC6HRGBFloat: 'bc6h-rgb-float',
|
|
160
160
|
BC7RGBAUnorm: 'bc7-rgba-unorm',
|
|
161
|
-
BC7RGBAUnormSRGB: 'bc7-rgba-srgb',
|
|
161
|
+
BC7RGBAUnormSRGB: 'bc7-rgba-unorm-srgb',
|
|
162
162
|
|
|
163
163
|
// ETC2 compressed formats usable if 'texture-compression-etc2' is both
|
|
164
164
|
// supported by the device/user agent and enabled in requestDevice.
|
|
@@ -316,18 +316,29 @@ export const GPUInputStepMode = {
|
|
|
316
316
|
};
|
|
317
317
|
|
|
318
318
|
export const GPUFeatureName = {
|
|
319
|
+
CoreFeaturesAndLimits: 'core-features-and-limits',
|
|
319
320
|
DepthClipControl: 'depth-clip-control',
|
|
320
321
|
Depth32FloatStencil8: 'depth32float-stencil8',
|
|
321
322
|
TextureCompressionBC: 'texture-compression-bc',
|
|
323
|
+
TextureCompressionBCSliced3D: 'texture-compression-bc-sliced-3d',
|
|
322
324
|
TextureCompressionETC2: 'texture-compression-etc2',
|
|
323
325
|
TextureCompressionASTC: 'texture-compression-astc',
|
|
326
|
+
TextureCompressionASTCSliced3D: 'texture-compression-astc-sliced-3d',
|
|
324
327
|
TimestampQuery: 'timestamp-query',
|
|
325
328
|
IndirectFirstInstance: 'indirect-first-instance',
|
|
326
329
|
ShaderF16: 'shader-f16',
|
|
327
330
|
RG11B10UFloat: 'rg11b10ufloat-renderable',
|
|
328
331
|
BGRA8UNormStorage: 'bgra8unorm-storage',
|
|
329
332
|
Float32Filterable: 'float32-filterable',
|
|
333
|
+
Float32Blendable: 'float32-blendable',
|
|
330
334
|
ClipDistances: 'clip-distances',
|
|
331
335
|
DualSourceBlending: 'dual-source-blending',
|
|
332
|
-
Subgroups: 'subgroups'
|
|
336
|
+
Subgroups: 'subgroups',
|
|
337
|
+
TextureFormatsTier1: 'texture-formats-tier1',
|
|
338
|
+
TextureFormatsTier2: 'texture-formats-tier2'
|
|
339
|
+
};
|
|
340
|
+
|
|
341
|
+
export const GPUFeatureMap = {
|
|
342
|
+
'texture-compression-s3tc': 'texture-compression-bc',
|
|
343
|
+
'texture-compression-etc1': 'texture-compression-etc2'
|
|
333
344
|
};
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
} from './WebGPUConstants.js';
|
|
6
6
|
|
|
7
7
|
import {
|
|
8
|
-
|
|
8
|
+
BackSide, DoubleSide,
|
|
9
9
|
NeverDepth, AlwaysDepth, LessDepth, LessEqualDepth, EqualDepth, GreaterEqualDepth, GreaterDepth, NotEqualDepth,
|
|
10
10
|
NoBlending, NormalBlending, AdditiveBlending, SubtractiveBlending, MultiplyBlending, CustomBlending,
|
|
11
11
|
ZeroFactor, OneFactor, SrcColorFactor, OneMinusSrcColorFactor, SrcAlphaFactor, OneMinusSrcAlphaFactor, DstColorFactor,
|
|
@@ -15,6 +15,8 @@ import {
|
|
|
15
15
|
NeverStencilFunc, AlwaysStencilFunc, LessStencilFunc, LessEqualStencilFunc, EqualStencilFunc, GreaterEqualStencilFunc, GreaterStencilFunc, NotEqualStencilFunc
|
|
16
16
|
} from '../../../constants.js';
|
|
17
17
|
|
|
18
|
+
import { error } from '../../../utils.js';
|
|
19
|
+
|
|
18
20
|
/**
|
|
19
21
|
* A WebGPU backend utility module for managing pipelines.
|
|
20
22
|
*
|
|
@@ -229,21 +231,47 @@ class WebGPUPipelineUtils {
|
|
|
229
231
|
|
|
230
232
|
}
|
|
231
233
|
|
|
234
|
+
// create pipeline
|
|
235
|
+
|
|
236
|
+
device.pushErrorScope( 'validation' );
|
|
232
237
|
|
|
233
238
|
if ( promises === null ) {
|
|
234
239
|
|
|
235
240
|
pipelineData.pipeline = device.createRenderPipeline( pipelineDescriptor );
|
|
236
241
|
|
|
242
|
+
device.popErrorScope().then( ( err ) => {
|
|
243
|
+
|
|
244
|
+
if ( err !== null ) {
|
|
245
|
+
|
|
246
|
+
pipelineData.error = true;
|
|
247
|
+
|
|
248
|
+
error( err.message );
|
|
249
|
+
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
} );
|
|
253
|
+
|
|
237
254
|
} else {
|
|
238
255
|
|
|
239
|
-
const p = new Promise( ( resolve /*, reject*/ ) => {
|
|
256
|
+
const p = new Promise( async ( resolve /*, reject*/ ) => {
|
|
240
257
|
|
|
241
|
-
|
|
258
|
+
try {
|
|
242
259
|
|
|
243
|
-
pipelineData.pipeline =
|
|
244
|
-
resolve();
|
|
260
|
+
pipelineData.pipeline = await device.createRenderPipelineAsync( pipelineDescriptor );
|
|
245
261
|
|
|
246
|
-
} )
|
|
262
|
+
} catch ( err ) { }
|
|
263
|
+
|
|
264
|
+
const errorScope = await device.popErrorScope();
|
|
265
|
+
|
|
266
|
+
if ( errorScope !== null ) {
|
|
267
|
+
|
|
268
|
+
pipelineData.error = true;
|
|
269
|
+
|
|
270
|
+
error( errorScope.message );
|
|
271
|
+
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
resolve();
|
|
247
275
|
|
|
248
276
|
} );
|
|
249
277
|
|
|
@@ -266,12 +294,12 @@ class WebGPUPipelineUtils {
|
|
|
266
294
|
const { utils, device } = backend;
|
|
267
295
|
|
|
268
296
|
const depthStencilFormat = utils.getCurrentDepthStencilFormat( renderContext );
|
|
269
|
-
const
|
|
297
|
+
const colorFormats = utils.getCurrentColorFormats( renderContext );
|
|
270
298
|
const sampleCount = this._getSampleCount( renderContext );
|
|
271
299
|
|
|
272
300
|
const descriptor = {
|
|
273
|
-
label
|
|
274
|
-
colorFormats
|
|
301
|
+
label,
|
|
302
|
+
colorFormats,
|
|
275
303
|
depthStencilFormat,
|
|
276
304
|
sampleCount
|
|
277
305
|
};
|
|
@@ -389,7 +417,7 @@ class WebGPUPipelineUtils {
|
|
|
389
417
|
break;
|
|
390
418
|
|
|
391
419
|
case MultiplyBlending:
|
|
392
|
-
setBlend( GPUBlendFactor.
|
|
420
|
+
setBlend( GPUBlendFactor.Dst, GPUBlendFactor.OneMinusSrcAlpha, GPUBlendFactor.Zero, GPUBlendFactor.One );
|
|
393
421
|
break;
|
|
394
422
|
|
|
395
423
|
}
|
|
@@ -403,15 +431,15 @@ class WebGPUPipelineUtils {
|
|
|
403
431
|
break;
|
|
404
432
|
|
|
405
433
|
case AdditiveBlending:
|
|
406
|
-
setBlend( GPUBlendFactor.SrcAlpha, GPUBlendFactor.One, GPUBlendFactor.
|
|
434
|
+
setBlend( GPUBlendFactor.SrcAlpha, GPUBlendFactor.One, GPUBlendFactor.One, GPUBlendFactor.One );
|
|
407
435
|
break;
|
|
408
436
|
|
|
409
437
|
case SubtractiveBlending:
|
|
410
|
-
|
|
438
|
+
error( 'WebGPURenderer: SubtractiveBlending requires material.premultipliedAlpha = true' );
|
|
411
439
|
break;
|
|
412
440
|
|
|
413
441
|
case MultiplyBlending:
|
|
414
|
-
|
|
442
|
+
error( 'WebGPURenderer: MultiplyBlending requires material.premultipliedAlpha = true' );
|
|
415
443
|
break;
|
|
416
444
|
|
|
417
445
|
}
|
|
@@ -426,7 +454,7 @@ class WebGPUPipelineUtils {
|
|
|
426
454
|
|
|
427
455
|
} else {
|
|
428
456
|
|
|
429
|
-
|
|
457
|
+
error( 'WebGPURenderer: Invalid blending: ', blending );
|
|
430
458
|
|
|
431
459
|
}
|
|
432
460
|
|
|
@@ -497,7 +525,7 @@ class WebGPUPipelineUtils {
|
|
|
497
525
|
break;
|
|
498
526
|
|
|
499
527
|
default:
|
|
500
|
-
|
|
528
|
+
error( 'WebGPURenderer: Blend factor not supported.', blend );
|
|
501
529
|
|
|
502
530
|
}
|
|
503
531
|
|
|
@@ -553,7 +581,7 @@ class WebGPUPipelineUtils {
|
|
|
553
581
|
break;
|
|
554
582
|
|
|
555
583
|
default:
|
|
556
|
-
|
|
584
|
+
error( 'WebGPURenderer: Invalid stencil function.', stencilFunc );
|
|
557
585
|
|
|
558
586
|
}
|
|
559
587
|
|
|
@@ -607,7 +635,7 @@ class WebGPUPipelineUtils {
|
|
|
607
635
|
break;
|
|
608
636
|
|
|
609
637
|
default:
|
|
610
|
-
|
|
638
|
+
error( 'WebGPURenderer: Invalid stencil operation.', stencilOperation );
|
|
611
639
|
|
|
612
640
|
}
|
|
613
641
|
|
|
@@ -649,7 +677,7 @@ class WebGPUPipelineUtils {
|
|
|
649
677
|
break;
|
|
650
678
|
|
|
651
679
|
default:
|
|
652
|
-
|
|
680
|
+
error( 'WebGPUPipelineUtils: Blend equation not supported.', blendEquation );
|
|
653
681
|
|
|
654
682
|
}
|
|
655
683
|
|
|
@@ -672,6 +700,8 @@ class WebGPUPipelineUtils {
|
|
|
672
700
|
const descriptor = {};
|
|
673
701
|
const utils = this.backend.utils;
|
|
674
702
|
|
|
703
|
+
//
|
|
704
|
+
|
|
675
705
|
descriptor.topology = utils.getPrimitiveTopology( object, material );
|
|
676
706
|
|
|
677
707
|
if ( geometry.index !== null && object.isLine === true && object.isLineSegments !== true ) {
|
|
@@ -680,28 +710,17 @@ class WebGPUPipelineUtils {
|
|
|
680
710
|
|
|
681
711
|
}
|
|
682
712
|
|
|
683
|
-
|
|
713
|
+
//
|
|
684
714
|
|
|
685
|
-
|
|
686
|
-
descriptor.frontFace = GPUFrontFace.CCW;
|
|
687
|
-
descriptor.cullMode = GPUCullMode.Back;
|
|
688
|
-
break;
|
|
715
|
+
let flipSided = ( material.side === BackSide );
|
|
689
716
|
|
|
690
|
-
|
|
691
|
-
descriptor.frontFace = GPUFrontFace.CCW;
|
|
692
|
-
descriptor.cullMode = GPUCullMode.Front;
|
|
693
|
-
break;
|
|
717
|
+
if ( object.isMesh && object.matrixWorld.determinant() < 0 ) flipSided = ! flipSided;
|
|
694
718
|
|
|
695
|
-
|
|
696
|
-
descriptor.frontFace = GPUFrontFace.CCW;
|
|
697
|
-
descriptor.cullMode = GPUCullMode.None;
|
|
698
|
-
break;
|
|
719
|
+
descriptor.frontFace = ( flipSided === true ) ? GPUFrontFace.CW : GPUFrontFace.CCW;
|
|
699
720
|
|
|
700
|
-
|
|
701
|
-
console.error( 'THREE.WebGPUPipelineUtils: Unknown material.side value.', material.side );
|
|
702
|
-
break;
|
|
721
|
+
//
|
|
703
722
|
|
|
704
|
-
|
|
723
|
+
descriptor.cullMode = ( material.side === DoubleSide ) ? GPUCullMode.None : GPUCullMode.Back;
|
|
705
724
|
|
|
706
725
|
return descriptor;
|
|
707
726
|
|
|
@@ -712,7 +731,7 @@ class WebGPUPipelineUtils {
|
|
|
712
731
|
*
|
|
713
732
|
* @private
|
|
714
733
|
* @param {Material} material - The material.
|
|
715
|
-
* @return {
|
|
734
|
+
* @return {number} The GPU color write mask.
|
|
716
735
|
*/
|
|
717
736
|
_getColorWriteMask( material ) {
|
|
718
737
|
|
|
@@ -774,7 +793,7 @@ class WebGPUPipelineUtils {
|
|
|
774
793
|
break;
|
|
775
794
|
|
|
776
795
|
default:
|
|
777
|
-
|
|
796
|
+
error( 'WebGPUPipelineUtils: Invalid depth function.', depthFunc );
|
|
778
797
|
|
|
779
798
|
}
|
|
780
799
|
|
|
@@ -310,29 +310,27 @@ fn main( @location( 0 ) vTex : vec2<f32> ) -> @location( 0 ) vec4<f32> {
|
|
|
310
310
|
* @param {GPUTexture} textureGPU - The GPU texture object.
|
|
311
311
|
* @param {Object} textureGPUDescriptor - The texture descriptor.
|
|
312
312
|
* @param {number} [baseArrayLayer=0] - The index of the first array layer accessible to the texture view.
|
|
313
|
+
* @param {?GPUCommandEncoder} [encoder=null] - An optional command encoder used to generate mipmaps.
|
|
313
314
|
*/
|
|
314
|
-
generateMipmaps( textureGPU, textureGPUDescriptor, baseArrayLayer = 0 ) {
|
|
315
|
+
generateMipmaps( textureGPU, textureGPUDescriptor, baseArrayLayer = 0, encoder = null ) {
|
|
315
316
|
|
|
316
317
|
const textureData = this.get( textureGPU );
|
|
317
318
|
|
|
318
|
-
if ( textureData.
|
|
319
|
+
if ( textureData.layers === undefined ) {
|
|
319
320
|
|
|
320
|
-
textureData.useCount = 0;
|
|
321
321
|
textureData.layers = [];
|
|
322
322
|
|
|
323
323
|
}
|
|
324
324
|
|
|
325
325
|
const passes = textureData.layers[ baseArrayLayer ] || this._mipmapCreateBundles( textureGPU, textureGPUDescriptor, baseArrayLayer );
|
|
326
326
|
|
|
327
|
-
const commandEncoder = this.device.createCommandEncoder( {} );
|
|
327
|
+
const commandEncoder = encoder || this.device.createCommandEncoder( { label: 'mipmapEncoder' } );
|
|
328
328
|
|
|
329
329
|
this._mipmapRunBundles( commandEncoder, passes );
|
|
330
330
|
|
|
331
|
-
this.device.queue.submit( [ commandEncoder.finish() ] );
|
|
332
|
-
|
|
333
|
-
if ( textureData.useCount !== 0 ) textureData.layers[ baseArrayLayer ] = passes;
|
|
331
|
+
if ( encoder === null ) this.device.queue.submit( [ commandEncoder.finish() ] );
|
|
334
332
|
|
|
335
|
-
textureData.
|
|
333
|
+
textureData.layers[ baseArrayLayer ] = passes;
|
|
336
334
|
|
|
337
335
|
}
|
|
338
336
|
|