@plastic-software/three 0.179.0 → 0.181.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/three.cjs +1108 -591
- package/build/three.core.js +616 -345
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +488 -250
- package/build/three.module.min.js +1 -1
- package/build/three.tsl.js +37 -6
- package/build/three.tsl.min.js +1 -1
- package/build/three.webgpu.js +6576 -2152
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +6575 -2151
- 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 +1 -1
- package/examples/jsm/animation/CCDIKSolver.js +1 -1
- package/examples/jsm/controls/ArcballControls.js +8 -8
- 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 +1 -1
- package/examples/jsm/effects/AsciiEffect.js +8 -8
- 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 +9 -2
- package/examples/jsm/geometries/DecalGeometry.js +2 -2
- package/examples/jsm/geometries/ParametricGeometry.js +1 -1
- 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 +6 -10
- 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/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 +3 -3
- package/examples/jsm/loaders/DDSLoader.js +1 -1
- package/examples/jsm/loaders/DRACOLoader.js +73 -22
- package/examples/jsm/loaders/EXRLoader.js +5 -5
- package/examples/jsm/loaders/FBXLoader.js +2 -2
- 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 +22 -5
- 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 +4 -4
- package/examples/jsm/loaders/UltraHDRLoader.js +2 -2
- package/examples/jsm/loaders/lwo/IFFParser.js +1 -1
- 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/ReflectorForSSRPass.js +1 -0
- package/examples/jsm/objects/Sky.js +1 -1
- package/examples/jsm/objects/SkyMesh.js +1 -1
- package/examples/jsm/objects/Water.js +3 -3
- package/examples/jsm/objects/WaterMesh.js +6 -6
- package/examples/jsm/postprocessing/GlitchPass.js +2 -2
- package/examples/jsm/postprocessing/OutlinePass.js +1 -1
- 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 +1 -1
- package/examples/jsm/shaders/VignetteShader.js +1 -1
- package/examples/jsm/transpiler/GLSLDecoder.js +22 -19
- package/examples/jsm/transpiler/TSLEncoder.js +9 -10
- package/examples/jsm/transpiler/WGSLEncoder.js +24 -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 +7 -3
- package/examples/jsm/tsl/display/ChromaticAberrationNode.js +2 -1
- 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 +49 -35
- package/examples/jsm/tsl/display/OutlineNode.js +13 -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 +124 -7
- package/examples/jsm/tsl/display/boxBlur.js +65 -0
- package/examples/jsm/tsl/display/hashBlur.js +16 -18
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +21 -1
- 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 +4 -2
- package/src/Three.TSL.js +36 -5
- package/src/Three.WebGPU.Nodes.js +2 -0
- package/src/Three.WebGPU.js +2 -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 +7 -6
- package/src/animation/PropertyBinding.js +12 -11
- package/src/audio/Audio.js +10 -9
- package/src/audio/PositionalAudio.js +1 -1
- package/src/cameras/OrthographicCamera.js +1 -1
- package/src/cameras/PerspectiveCamera.js +1 -1
- package/src/cameras/StereoCamera.js +2 -2
- package/src/constants.js +11 -3
- package/src/core/BufferGeometry.js +10 -10
- package/src/core/EventDispatcher.js +1 -1
- package/src/core/InterleavedBuffer.js +1 -1
- package/src/core/InterleavedBufferAttribute.js +3 -2
- package/src/core/Object3D.js +3 -2
- package/src/core/Raycaster.js +2 -1
- package/src/core/RenderTarget.js +10 -1
- 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 +268 -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/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 +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 +3 -2
- package/src/loaders/ImageBitmapLoader.js +5 -4
- package/src/loaders/ImageLoader.js +1 -1
- package/src/loaders/Loader.js +3 -3
- package/src/loaders/LoadingManager.js +25 -3
- 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 +1 -0
- 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 -2
- package/src/materials/nodes/MeshSSSNodeMaterial.js +1 -1
- package/src/materials/nodes/NodeMaterial.js +62 -22
- package/src/materials/nodes/PointsNodeMaterial.js +81 -28
- package/src/materials/nodes/SpriteNodeMaterial.js +3 -15
- package/src/materials/nodes/manager/NodeMaterialObserver.js +3 -2
- 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/MathUtils.js +13 -11
- package/src/math/Matrix2.js +1 -1
- package/src/math/Matrix3.js +2 -2
- package/src/math/Matrix4.js +7 -7
- package/src/math/Plane.js +1 -1
- package/src/math/Quaternion.js +68 -66
- package/src/math/Spherical.js +1 -1
- package/src/nodes/Nodes.js +4 -1
- package/src/nodes/TSL.js +4 -1
- package/src/nodes/accessors/BufferNode.js +1 -1
- package/src/nodes/accessors/Camera.js +133 -7
- 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 +5 -4
- package/src/nodes/accessors/Object3DNode.js +1 -1
- package/src/nodes/accessors/Position.js +18 -2
- package/src/nodes/accessors/ReferenceBaseNode.js +1 -1
- package/src/nodes/accessors/ReferenceNode.js +3 -2
- package/src/nodes/accessors/SceneNode.js +2 -1
- package/src/nodes/accessors/StorageBufferNode.js +2 -1
- package/src/nodes/accessors/StorageTextureNode.js +22 -0
- package/src/nodes/accessors/Texture3DNode.js +14 -1
- package/src/nodes/accessors/TextureNode.js +130 -44
- package/src/nodes/code/FunctionCallNode.js +24 -4
- package/src/nodes/code/FunctionNode.js +23 -0
- package/src/nodes/core/ArrayNode.js +1 -0
- package/src/nodes/core/AssignNode.js +4 -3
- package/src/nodes/core/AttributeNode.js +2 -1
- package/src/nodes/core/ContextNode.js +29 -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} +40 -7
- package/src/nodes/core/Node.js +152 -31
- package/src/nodes/core/NodeBuilder.js +183 -35
- 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 -91
- package/src/nodes/core/ParameterNode.js +31 -0
- package/src/nodes/core/PropertyNode.js +7 -0
- package/src/nodes/core/StackNode.js +43 -16
- package/src/nodes/core/StructNode.js +5 -5
- package/src/nodes/core/StructTypeNode.js +1 -0
- package/src/nodes/core/SubBuildNode.js +2 -2
- package/src/nodes/core/UniformNode.js +18 -10
- package/src/nodes/core/VarNode.js +70 -33
- package/src/nodes/core/VaryingNode.js +3 -2
- package/src/nodes/display/BlendModes.js +5 -4
- package/src/nodes/display/BumpMapNode.js +1 -1
- package/src/nodes/display/ColorAdjustment.js +1 -1
- package/src/nodes/display/FrontFacingNode.js +4 -8
- package/src/nodes/display/NormalMapNode.js +2 -1
- package/src/nodes/display/PassNode.js +52 -11
- package/src/nodes/display/RenderOutputNode.js +28 -2
- package/src/nodes/display/ScreenNode.js +44 -14
- 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 +42 -12
- package/src/nodes/fog/Fog.js +3 -2
- package/src/nodes/functions/BSDF/BRDF_GGX_Multiscatter.js +52 -0
- package/src/nodes/functions/BSDF/DFGApprox.js +60 -19
- package/src/nodes/functions/BasicLightingModel.js +2 -1
- package/src/nodes/functions/PhysicalLightingModel.js +3 -2
- package/src/nodes/functions/VolumetricLightingModel.js +5 -5
- package/src/nodes/geometry/RangeNode.js +40 -4
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +2 -1
- package/src/nodes/gpgpu/ComputeNode.js +17 -5
- package/src/nodes/gpgpu/SubgroupFunctionNode.js +455 -0
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +2 -1
- package/src/nodes/lighting/EnvironmentNode.js +6 -6
- package/src/nodes/lighting/LightsNode.js +3 -4
- package/src/nodes/lighting/PointShadowNode.js +6 -0
- package/src/nodes/lighting/ShadowFilterNode.js +2 -0
- package/src/nodes/lighting/ShadowNode.js +75 -8
- package/src/nodes/math/BitcastNode.js +156 -0
- package/src/nodes/math/ConditionalNode.js +24 -7
- package/src/nodes/math/MathNode.js +25 -19
- package/src/nodes/math/OperatorNode.js +7 -5
- package/src/nodes/pmrem/PMREMUtils.js +117 -2
- package/src/nodes/shapes/Shapes.js +1 -1
- package/src/nodes/tsl/TSLBase.js +5 -2
- package/src/nodes/tsl/TSLCore.js +460 -159
- package/src/nodes/utils/DebugNode.js +2 -1
- package/src/nodes/utils/EventNode.js +36 -0
- package/src/nodes/utils/FunctionOverloadingNode.js +37 -19
- package/src/nodes/utils/JoinNode.js +6 -3
- package/src/nodes/utils/LoopNode.js +20 -24
- package/src/nodes/utils/MemberNode.js +59 -7
- package/src/nodes/utils/PostProcessingUtils.js +28 -1
- package/src/nodes/utils/RTTNode.js +13 -3
- package/src/nodes/utils/ReflectorNode.js +58 -7
- package/src/nodes/utils/SampleNode.js +12 -2
- package/src/nodes/utils/SplitNode.js +11 -0
- package/src/nodes/utils/Timer.js +0 -47
- package/src/objects/BatchedMesh.js +2 -2
- 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 +48 -41
- 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 +2 -1
- package/src/renderers/common/Bindings.js +58 -2
- package/src/renderers/common/CanvasTarget.js +341 -0
- package/src/renderers/common/ChainMap.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 +6 -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 +16 -2
- package/src/renderers/common/RenderObjects.js +1 -1
- package/src/renderers/common/Renderer.js +473 -245
- package/src/renderers/common/RendererUtils.js +9 -0
- package/src/renderers/common/SampledTexture.js +9 -1
- package/src/renderers/common/Sampler.js +50 -12
- package/src/renderers/common/StorageTexture.js +9 -1
- package/src/renderers/common/Textures.js +121 -45
- package/src/renderers/common/TimestampQueryPool.js +65 -3
- package/src/renderers/common/UniformsGroup.js +2 -1
- package/src/renderers/common/XRManager.js +42 -22
- package/src/renderers/common/extras/PMREMGenerator.js +160 -65
- package/src/renderers/common/nodes/NodeBuilderState.js +1 -1
- package/src/renderers/common/nodes/NodeLibrary.js +9 -7
- 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 +7 -15
- package/src/renderers/shaders/ShaderLib/depth.glsl.js +1 -1
- package/src/renderers/shaders/UniformsLib.js +1 -0
- package/src/renderers/shaders/UniformsUtils.js +25 -4
- package/src/renderers/webgl/WebGLCapabilities.js +2 -1
- package/src/renderers/webgl/WebGLExtensions.js +2 -25
- package/src/renderers/webgl/WebGLInfo.js +3 -1
- package/src/renderers/webgl/WebGLProgram.js +15 -14
- package/src/renderers/webgl/WebGLPrograms.js +2 -1
- package/src/renderers/webgl/WebGLShadowMap.js +3 -2
- package/src/renderers/webgl/WebGLState.js +15 -14
- package/src/renderers/webgl/WebGLTextures.js +19 -14
- package/src/renderers/webgl/WebGLUniformsGroups.js +5 -3
- package/src/renderers/webgl/WebGLUtils.js +3 -2
- package/src/renderers/webgl-fallback/WebGLBackend.js +199 -167
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +181 -25
- package/src/renderers/webgl-fallback/utils/WebGLConstants.js +2 -3
- package/src/renderers/webgl-fallback/utils/WebGLState.js +7 -6
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +169 -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 +153 -123
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +2 -1
- package/src/renderers/webgpu/WebGPURenderer.js +3 -2
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +142 -50
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +2 -1
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +5 -3
- package/src/renderers/webgpu/utils/WebGPUConstants.js +7 -2
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +53 -34
- package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +6 -8
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +260 -99
- package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +32 -9
- package/src/renderers/webgpu/utils/WebGPUUtils.js +22 -2
- package/src/renderers/webxr/WebXRManager.js +42 -26
- package/src/textures/ExternalTexture.js +15 -4
- package/src/textures/Source.js +3 -2
- package/src/textures/Texture.js +3 -2
- package/src/textures/VideoTexture.js +2 -3
- package/src/utils.js +67 -3
- package/examples/jsm/loaders/RGBMLoader.js +0 -1148
|
@@ -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 = {
|
|
@@ -122,6 +134,25 @@ class GLSLNodeBuilder extends NodeBuilder {
|
|
|
122
134
|
|
|
123
135
|
}
|
|
124
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
|
+
|
|
125
156
|
/**
|
|
126
157
|
* Returns the native shader method name for a given generic name.
|
|
127
158
|
*
|
|
@@ -130,10 +161,43 @@ class GLSLNodeBuilder extends NodeBuilder {
|
|
|
130
161
|
*/
|
|
131
162
|
getMethod( method ) {
|
|
132
163
|
|
|
164
|
+
if ( glslPolyfills[ method ] !== undefined ) {
|
|
165
|
+
|
|
166
|
+
this._include( method );
|
|
167
|
+
|
|
168
|
+
}
|
|
169
|
+
|
|
133
170
|
return glslMethods[ method ] || method;
|
|
134
171
|
|
|
135
172
|
}
|
|
136
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
|
+
|
|
137
201
|
/**
|
|
138
202
|
* Returns the output struct name. Not relevant for GLSL.
|
|
139
203
|
*
|
|
@@ -336,7 +400,7 @@ ${ flowData.code }
|
|
|
336
400
|
const channel = '.' + vectorComponents.join( '' ).slice( 0, itemSize );
|
|
337
401
|
const uvSnippet = `ivec2(${indexSnippet} % ${ propertySizeName }, ${indexSnippet} / ${ propertySizeName })`;
|
|
338
402
|
|
|
339
|
-
const snippet = this.generateTextureLoad( null, textureName, uvSnippet,
|
|
403
|
+
const snippet = this.generateTextureLoad( null, textureName, uvSnippet, '0', null, null );
|
|
340
404
|
|
|
341
405
|
//
|
|
342
406
|
|
|
@@ -366,25 +430,54 @@ ${ flowData.code }
|
|
|
366
430
|
/**
|
|
367
431
|
* Generates the GLSL snippet that reads a single texel from a texture without sampling or filtering.
|
|
368
432
|
*
|
|
369
|
-
* @param {Texture} texture - The texture.
|
|
433
|
+
* @param {?Texture} texture - The texture.
|
|
370
434
|
* @param {string} textureProperty - The name of the texture uniform in the shader.
|
|
371
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.
|
|
372
437
|
* @param {?string} depthSnippet - A GLSL snippet that represents the 0-based texture array index to sample.
|
|
373
|
-
* @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.
|
|
374
439
|
* @return {string} The GLSL snippet.
|
|
375
440
|
*/
|
|
376
|
-
generateTextureLoad( texture, textureProperty, uvIndexSnippet, depthSnippet,
|
|
441
|
+
generateTextureLoad( texture, textureProperty, uvIndexSnippet, levelSnippet, depthSnippet, offsetSnippet ) {
|
|
442
|
+
|
|
443
|
+
if ( levelSnippet === null ) levelSnippet = '0';
|
|
444
|
+
|
|
445
|
+
let snippet;
|
|
377
446
|
|
|
378
447
|
if ( depthSnippet ) {
|
|
379
448
|
|
|
380
|
-
|
|
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
|
+
}
|
|
381
458
|
|
|
382
459
|
} else {
|
|
383
460
|
|
|
384
|
-
|
|
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';
|
|
385
476
|
|
|
386
477
|
}
|
|
387
478
|
|
|
479
|
+
return snippet;
|
|
480
|
+
|
|
388
481
|
}
|
|
389
482
|
|
|
390
483
|
/**
|
|
@@ -394,23 +487,24 @@ ${ flowData.code }
|
|
|
394
487
|
* @param {string} textureProperty - The name of the texture uniform in the shader.
|
|
395
488
|
* @param {string} uvSnippet - A GLSL snippet that represents texture coordinates used for sampling.
|
|
396
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.
|
|
397
491
|
* @return {string} The GLSL snippet.
|
|
398
492
|
*/
|
|
399
|
-
generateTexture( texture, textureProperty, uvSnippet, depthSnippet ) {
|
|
493
|
+
generateTexture( texture, textureProperty, uvSnippet, depthSnippet, offsetSnippet ) {
|
|
494
|
+
|
|
495
|
+
if ( depthSnippet ) uvSnippet = `vec3( ${ uvSnippet }, ${ depthSnippet } )`;
|
|
400
496
|
|
|
401
497
|
if ( texture.isDepthTexture ) {
|
|
402
498
|
|
|
403
|
-
if (
|
|
499
|
+
if ( offsetSnippet ) return `textureOffset( ${ textureProperty }, ${ uvSnippet }, ${ offsetSnippet } ).x`;
|
|
404
500
|
|
|
405
501
|
return `texture( ${ textureProperty }, ${ uvSnippet } ).x`;
|
|
406
502
|
|
|
407
|
-
}
|
|
408
|
-
|
|
409
|
-
if ( depthSnippet ) uvSnippet = `vec3( ${ uvSnippet }, ${ depthSnippet } )`;
|
|
503
|
+
}
|
|
410
504
|
|
|
411
|
-
|
|
505
|
+
if ( offsetSnippet ) return `textureOffset( ${ textureProperty }, ${ uvSnippet }, ${ offsetSnippet } )`;
|
|
412
506
|
|
|
413
|
-
}
|
|
507
|
+
return `texture( ${ textureProperty }, ${ uvSnippet } )`;
|
|
414
508
|
|
|
415
509
|
}
|
|
416
510
|
|
|
@@ -421,9 +515,16 @@ ${ flowData.code }
|
|
|
421
515
|
* @param {string} textureProperty - The name of the texture uniform in the shader.
|
|
422
516
|
* @param {string} uvSnippet - A GLSL snippet that represents texture coordinates used for sampling.
|
|
423
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.
|
|
424
519
|
* @return {string} The GLSL snippet.
|
|
425
520
|
*/
|
|
426
|
-
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
|
+
}
|
|
427
528
|
|
|
428
529
|
return `textureLod( ${ textureProperty }, ${ uvSnippet }, ${ levelSnippet } )`;
|
|
429
530
|
|
|
@@ -436,9 +537,16 @@ ${ flowData.code }
|
|
|
436
537
|
* @param {string} textureProperty - The name of the texture uniform in the shader.
|
|
437
538
|
* @param {string} uvSnippet - A GLSL snippet that represents texture coordinates used for sampling.
|
|
438
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.
|
|
439
541
|
* @return {string} The GLSL snippet.
|
|
440
542
|
*/
|
|
441
|
-
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
|
+
}
|
|
442
550
|
|
|
443
551
|
return `texture( ${ textureProperty }, ${ uvSnippet }, ${ biasSnippet } )`;
|
|
444
552
|
|
|
@@ -451,9 +559,16 @@ ${ flowData.code }
|
|
|
451
559
|
* @param {string} textureProperty - The name of the texture uniform in the shader.
|
|
452
560
|
* @param {string} uvSnippet - A GLSL snippet that represents texture coordinates used for sampling.
|
|
453
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.
|
|
454
563
|
* @return {string} The GLSL snippet.
|
|
455
564
|
*/
|
|
456
|
-
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
|
+
}
|
|
457
572
|
|
|
458
573
|
return `textureGrad( ${ textureProperty }, ${ uvSnippet }, ${ gradSnippet[ 0 ] }, ${ gradSnippet[ 1 ] } )`;
|
|
459
574
|
|
|
@@ -468,24 +583,37 @@ ${ flowData.code }
|
|
|
468
583
|
* @param {string} uvSnippet - A GLSL snippet that represents texture coordinates used for sampling.
|
|
469
584
|
* @param {string} compareSnippet - A GLSL snippet that represents the reference value.
|
|
470
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.
|
|
471
587
|
* @param {string} [shaderStage=this.shaderStage] - The shader stage this code snippet is generated for.
|
|
472
588
|
* @return {string} The GLSL snippet.
|
|
473
589
|
*/
|
|
474
|
-
generateTextureCompare( texture, textureProperty, uvSnippet, compareSnippet, depthSnippet, shaderStage = this.shaderStage ) {
|
|
590
|
+
generateTextureCompare( texture, textureProperty, uvSnippet, compareSnippet, depthSnippet, offsetSnippet, shaderStage = this.shaderStage ) {
|
|
475
591
|
|
|
476
592
|
if ( shaderStage === 'fragment' ) {
|
|
477
593
|
|
|
478
594
|
if ( depthSnippet ) {
|
|
479
595
|
|
|
596
|
+
if ( offsetSnippet ) {
|
|
597
|
+
|
|
598
|
+
return `textureOffset( ${ textureProperty }, vec4( ${ uvSnippet }, ${ depthSnippet }, ${ compareSnippet } ), ${ offsetSnippet } )`;
|
|
599
|
+
|
|
600
|
+
}
|
|
601
|
+
|
|
480
602
|
return `texture( ${ textureProperty }, vec4( ${ uvSnippet }, ${ depthSnippet }, ${ compareSnippet } ) )`;
|
|
481
603
|
|
|
482
604
|
}
|
|
483
605
|
|
|
606
|
+
if ( offsetSnippet ) {
|
|
607
|
+
|
|
608
|
+
return `textureOffset( ${ textureProperty }, vec3( ${ uvSnippet }, ${ compareSnippet } ), ${ offsetSnippet } )`;
|
|
609
|
+
|
|
610
|
+
}
|
|
611
|
+
|
|
484
612
|
return `texture( ${ textureProperty }, vec3( ${ uvSnippet }, ${ compareSnippet } ) )`;
|
|
485
613
|
|
|
486
614
|
} else {
|
|
487
615
|
|
|
488
|
-
|
|
616
|
+
error( `WebGPURenderer: THREE.DepthTexture.compareFunction() does not support ${ shaderStage } shader.` );
|
|
489
617
|
|
|
490
618
|
}
|
|
491
619
|
|
|
@@ -867,7 +995,8 @@ ${ flowData.code }
|
|
|
867
995
|
}
|
|
868
996
|
|
|
869
997
|
/**
|
|
870
|
-
*
|
|
998
|
+
* Contextually returns either the vertex stage instance index builtin
|
|
999
|
+
* or the linearized index of an compute invocation within a grid of workgroups.
|
|
871
1000
|
*
|
|
872
1001
|
* @return {string} The instance index.
|
|
873
1002
|
*/
|
|
@@ -878,7 +1007,7 @@ ${ flowData.code }
|
|
|
878
1007
|
}
|
|
879
1008
|
|
|
880
1009
|
/**
|
|
881
|
-
* Returns the invocation
|
|
1010
|
+
* Returns a builtin representing the index of an invocation within its workgroup.
|
|
882
1011
|
*
|
|
883
1012
|
* @return {string} The invocation local index.
|
|
884
1013
|
*/
|
|
@@ -892,6 +1021,33 @@ ${ flowData.code }
|
|
|
892
1021
|
|
|
893
1022
|
}
|
|
894
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
|
+
|
|
895
1051
|
/**
|
|
896
1052
|
* Returns the draw index builtin.
|
|
897
1053
|
*
|
|
@@ -1223,6 +1379,9 @@ ${shaderData.extensions}
|
|
|
1223
1379
|
// precision
|
|
1224
1380
|
${ defaultPrecisions }
|
|
1225
1381
|
|
|
1382
|
+
// structs
|
|
1383
|
+
${shaderData.structs}
|
|
1384
|
+
|
|
1226
1385
|
// uniforms
|
|
1227
1386
|
${shaderData.uniforms}
|
|
1228
1387
|
|
|
@@ -1232,9 +1391,6 @@ ${shaderData.varyings}
|
|
|
1232
1391
|
// codes
|
|
1233
1392
|
${shaderData.codes}
|
|
1234
1393
|
|
|
1235
|
-
// structs
|
|
1236
|
-
${shaderData.structs}
|
|
1237
|
-
|
|
1238
1394
|
void main() {
|
|
1239
1395
|
|
|
1240
1396
|
// vars
|
|
@@ -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
|
|
|
@@ -343,7 +344,7 @@ class WebGLState {
|
|
|
343
344
|
break;
|
|
344
345
|
|
|
345
346
|
default:
|
|
346
|
-
|
|
347
|
+
error( 'WebGLState: Invalid blending: ', blending );
|
|
347
348
|
break;
|
|
348
349
|
|
|
349
350
|
}
|
|
@@ -361,15 +362,15 @@ class WebGLState {
|
|
|
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 ) {
|