@plastic-software/three 0.180.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 +943 -486
- package/build/three.core.js +506 -327
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +435 -163
- package/build/three.module.min.js +1 -1
- package/build/three.tsl.js +8 -2
- package/build/three.tsl.min.js +1 -1
- package/build/three.webgpu.js +3753 -1177
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +3752 -1176
- 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/animation/CCDIKSolver.js +1 -1
- package/examples/jsm/controls/ArcballControls.js +1 -1
- package/examples/jsm/controls/DragControls.js +1 -1
- package/examples/jsm/controls/FirstPersonControls.js +1 -1
- package/examples/jsm/controls/FlyControls.js +1 -1
- package/examples/jsm/controls/OrbitControls.js +2 -2
- package/examples/jsm/controls/PointerLockControls.js +2 -2
- 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 +3 -3
- 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/lights/RectAreaLightTexturesLib.js +1 -1
- package/examples/jsm/loaders/3MFLoader.js +1 -1
- package/examples/jsm/loaders/ColladaLoader.js +2 -2
- package/examples/jsm/loaders/DDSLoader.js +1 -1
- package/examples/jsm/loaders/DRACOLoader.js +73 -22
- package/examples/jsm/loaders/FBXLoader.js +2 -2
- package/examples/jsm/loaders/FontLoader.js +23 -5
- package/examples/jsm/loaders/GLTFLoader.js +5 -3
- package/examples/jsm/loaders/KTX2Loader.js +28 -21
- 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/SVGLoader.js +2 -2
- package/examples/jsm/loaders/UltraHDRLoader.js +1 -1
- package/examples/jsm/math/ConvexHull.js +1 -1
- package/examples/jsm/math/ImprovedNoise.js +1 -1
- package/examples/jsm/math/SimplexNoise.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/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/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/VignetteShader.js +1 -1
- package/examples/jsm/transpiler/TSLEncoder.js +7 -0
- package/examples/jsm/tsl/display/AfterImageNode.js +26 -24
- package/examples/jsm/tsl/display/AnamorphicNode.js +2 -1
- package/examples/jsm/tsl/display/BloomNode.js +4 -0
- package/examples/jsm/tsl/display/DenoiseNode.js +2 -0
- package/examples/jsm/tsl/display/DepthOfFieldNode.js +7 -0
- package/examples/jsm/tsl/display/GTAONode.js +45 -5
- package/examples/jsm/tsl/display/GaussianBlurNode.js +5 -3
- package/examples/jsm/tsl/display/OutlineNode.js +11 -0
- package/examples/jsm/tsl/display/SSGINode.js +654 -0
- package/examples/jsm/tsl/display/SSRNode.js +2 -0
- package/examples/jsm/tsl/display/SSSNode.js +488 -0
- package/examples/jsm/tsl/display/TRAANode.js +123 -6
- package/examples/jsm/tsl/display/boxBlur.js +1 -0
- package/examples/jsm/tsl/display/hashBlur.js +1 -0
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +21 -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 +3 -2
- package/src/Three.TSL.js +7 -1
- package/src/Three.WebGPU.Nodes.js +2 -0
- package/src/Three.WebGPU.js +2 -0
- package/src/animation/AnimationClip.js +3 -2
- 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 +1 -1
- package/src/core/BufferGeometry.js +8 -8
- 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/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 +7 -7
- 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/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 +4 -3
- package/src/materials/MeshBasicMaterial.js +1 -0
- package/src/materials/MeshDepthMaterial.js +1 -0
- 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/manager/NodeMaterialObserver.js +2 -1
- package/src/math/Color.js +6 -5
- package/src/math/ColorManagement.js +2 -2
- 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 +1 -1
- package/src/nodes/TSL.js +1 -1
- package/src/nodes/accessors/CubeTextureNode.js +3 -2
- package/src/nodes/accessors/InstanceNode.js +22 -4
- package/src/nodes/accessors/Lights.js +10 -0
- package/src/nodes/accessors/Normal.js +5 -4
- package/src/nodes/accessors/Position.js +18 -2
- package/src/nodes/accessors/ReferenceNode.js +2 -1
- 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 +1 -1
- package/src/nodes/accessors/TextureNode.js +61 -27
- package/src/nodes/code/FunctionCallNode.js +5 -4
- package/src/nodes/core/ArrayNode.js +1 -0
- package/src/nodes/core/AttributeNode.js +2 -1
- package/src/nodes/core/ContextNode.js +5 -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 +137 -12
- package/src/nodes/core/NodeBuilder.js +135 -21
- package/src/nodes/core/NodeFrame.js +20 -20
- package/src/nodes/core/NodeFunction.js +2 -1
- package/src/nodes/core/NodeParser.js +2 -1
- package/src/nodes/core/NodeUtils.js +17 -90
- package/src/nodes/core/ParameterNode.js +31 -0
- package/src/nodes/core/PropertyNode.js +7 -0
- package/src/nodes/core/StackNode.js +16 -14
- package/src/nodes/core/UniformNode.js +2 -1
- package/src/nodes/core/VarNode.js +70 -12
- 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/NormalMapNode.js +2 -1
- package/src/nodes/display/PassNode.js +51 -10
- package/src/nodes/display/RenderOutputNode.js +28 -2
- package/src/nodes/display/ScreenNode.js +2 -1
- package/src/nodes/display/ToneMappingNode.js +31 -4
- package/src/nodes/display/ToonOutlinePassNode.js +8 -0
- 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 +25 -0
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +2 -1
- package/src/nodes/lighting/EnvironmentNode.js +6 -6
- package/src/nodes/lighting/LightsNode.js +2 -3
- 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/ConditionalNode.js +6 -5
- package/src/nodes/math/MathNode.js +22 -4
- package/src/nodes/math/OperatorNode.js +3 -2
- 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 +36 -15
- 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 +3 -2
- package/src/nodes/utils/LoopNode.js +20 -24
- package/src/nodes/utils/MemberNode.js +2 -1
- package/src/nodes/utils/PostProcessingUtils.js +28 -1
- package/src/nodes/utils/RTTNode.js +12 -2
- package/src/nodes/utils/ReflectorNode.js +10 -3
- 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 +2 -1
- package/src/renderers/WebGLRenderer.js +48 -32
- package/src/renderers/common/Animation.js +13 -1
- package/src/renderers/common/Backend.js +93 -30
- package/src/renderers/common/Background.js +2 -1
- package/src/renderers/common/Bindings.js +56 -2
- package/src/renderers/common/CanvasTarget.js +341 -0
- 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/PostProcessing.js +6 -25
- package/src/renderers/common/QuadMesh.js +7 -1
- package/src/renderers/common/RenderList.js +7 -3
- package/src/renderers/common/RenderObject.js +3 -1
- package/src/renderers/common/RenderObjects.js +1 -1
- package/src/renderers/common/Renderer.js +436 -228
- package/src/renderers/common/RendererUtils.js +9 -0
- package/src/renderers/common/SampledTexture.js +8 -0
- package/src/renderers/common/Sampler.js +37 -11
- package/src/renderers/common/StorageTexture.js +9 -1
- package/src/renderers/common/Textures.js +89 -35
- package/src/renderers/common/TimestampQueryPool.js +63 -1
- package/src/renderers/common/UniformsGroup.js +2 -1
- package/src/renderers/common/XRManager.js +7 -3
- package/src/renderers/common/extras/PMREMGenerator.js +160 -65
- package/src/renderers/common/nodes/NodeLibrary.js +4 -2
- 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/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 +11 -10
- package/src/renderers/webgl/WebGLPrograms.js +2 -1
- package/src/renderers/webgl/WebGLShadowMap.js +2 -1
- package/src/renderers/webgl/WebGLState.js +15 -14
- package/src/renderers/webgl/WebGLTextures.js +18 -14
- package/src/renderers/webgl/WebGLUniformsGroups.js +5 -3
- package/src/renderers/webgl-fallback/WebGLBackend.js +22 -41
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +74 -11
- package/src/renderers/webgl-fallback/utils/WebGLConstants.js +2 -3
- package/src/renderers/webgl-fallback/utils/WebGLState.js +6 -5
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +117 -16
- package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +42 -12
- package/src/renderers/webgpu/WebGPUBackend.js +134 -108
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +2 -1
- package/src/renderers/webgpu/WebGPURenderer.js +3 -2
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +21 -19
- 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 +5 -0
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +44 -16
- package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +6 -8
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +146 -74
- package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +29 -6
- package/src/renderers/webgpu/utils/WebGPUUtils.js +22 -2
- package/src/renderers/webxr/WebXRManager.js +3 -2
- package/src/textures/Source.js +2 -1
- package/src/textures/Texture.js +3 -2
- package/src/textures/VideoTexture.js +2 -0
- package/src/utils.js +67 -3
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { LinearFilter, LinearMipmapLinearFilter, LinearMipmapNearestFilter, NearestFilter, NearestMipmapLinearFilter, NearestMipmapNearestFilter, RGBAFormat, DepthFormat, DepthStencilFormat, UnsignedIntType, FloatType, MirroredRepeatWrapping, ClampToEdgeWrapping, RepeatWrapping, UnsignedByteType, NoColorSpace, LinearSRGBColorSpace, NeverCompare, AlwaysCompare, LessCompare, LessEqualCompare, EqualCompare, GreaterEqualCompare, GreaterCompare, NotEqualCompare, SRGBTransfer, LinearTransfer, UnsignedShortType, UnsignedInt248Type } from '../../constants.js';
|
|
2
|
-
import { createElementNS } from '../../utils.js';
|
|
2
|
+
import { createElementNS, warn, error } from '../../utils.js';
|
|
3
3
|
import { ColorManagement } from '../../math/ColorManagement.js';
|
|
4
4
|
import { Vector2 } from '../../math/Vector2.js';
|
|
5
5
|
import { getByteLength } from '../../extras/TextureUtils.js';
|
|
@@ -83,7 +83,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
83
83
|
const context = canvas.getContext( '2d' );
|
|
84
84
|
context.drawImage( image, 0, 0, width, height );
|
|
85
85
|
|
|
86
|
-
|
|
86
|
+
warn( 'WebGLRenderer: Texture has been resized from (' + dimensions.width + 'x' + dimensions.height + ') to (' + width + 'x' + height + ').' );
|
|
87
87
|
|
|
88
88
|
return canvas;
|
|
89
89
|
|
|
@@ -91,7 +91,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
91
91
|
|
|
92
92
|
if ( 'data' in image ) {
|
|
93
93
|
|
|
94
|
-
|
|
94
|
+
warn( 'WebGLRenderer: Image in DataTexture is too big (' + dimensions.width + 'x' + dimensions.height + ').' );
|
|
95
95
|
|
|
96
96
|
}
|
|
97
97
|
|
|
@@ -132,7 +132,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
132
132
|
|
|
133
133
|
if ( _gl[ internalFormatName ] !== undefined ) return _gl[ internalFormatName ];
|
|
134
134
|
|
|
135
|
-
|
|
135
|
+
warn( 'WebGLRenderer: Attempt to use non-existing WebGL internal format \'' + internalFormatName + '\'' );
|
|
136
136
|
|
|
137
137
|
}
|
|
138
138
|
|
|
@@ -245,7 +245,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
245
245
|
} else if ( depthType === UnsignedShortType ) {
|
|
246
246
|
|
|
247
247
|
glInternalFormat = _gl.DEPTH24_STENCIL8;
|
|
248
|
-
|
|
248
|
+
warn( 'DepthTexture: 16 bit depth attachment is not supported with stencil. Using 24-bit attachment.' );
|
|
249
249
|
|
|
250
250
|
}
|
|
251
251
|
|
|
@@ -475,7 +475,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
475
475
|
|
|
476
476
|
if ( textureUnit >= capabilities.maxTextures ) {
|
|
477
477
|
|
|
478
|
-
|
|
478
|
+
warn( 'WebGLTextures: Trying to use ' + textureUnit + ' texture units while this GPU supports only ' + capabilities.maxTextures );
|
|
479
479
|
|
|
480
480
|
}
|
|
481
481
|
|
|
@@ -522,11 +522,11 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
522
522
|
|
|
523
523
|
if ( image === null ) {
|
|
524
524
|
|
|
525
|
-
|
|
525
|
+
warn( 'WebGLRenderer: Texture marked for update but no image data found.' );
|
|
526
526
|
|
|
527
527
|
} else if ( image.complete === false ) {
|
|
528
528
|
|
|
529
|
-
|
|
529
|
+
warn( 'WebGLRenderer: Texture marked for update but image is incomplete' );
|
|
530
530
|
|
|
531
531
|
} else {
|
|
532
532
|
|
|
@@ -554,6 +554,10 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
554
554
|
uploadTexture( textureProperties, texture, slot );
|
|
555
555
|
return;
|
|
556
556
|
|
|
557
|
+
} else if ( texture.isExternalTexture ) {
|
|
558
|
+
|
|
559
|
+
textureProperties.__webglTexture = texture.sourceTexture ? texture.sourceTexture : null;
|
|
560
|
+
|
|
557
561
|
}
|
|
558
562
|
|
|
559
563
|
state.bindTexture( _gl.TEXTURE_2D_ARRAY, textureProperties.__webglTexture, _gl.TEXTURE0 + slot );
|
|
@@ -623,7 +627,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
623
627
|
( texture.magFilter === LinearFilter || texture.magFilter === LinearMipmapNearestFilter || texture.magFilter === NearestMipmapLinearFilter || texture.magFilter === LinearMipmapLinearFilter ||
|
|
624
628
|
texture.minFilter === LinearFilter || texture.minFilter === LinearMipmapNearestFilter || texture.minFilter === NearestMipmapLinearFilter || texture.minFilter === LinearMipmapLinearFilter ) ) {
|
|
625
629
|
|
|
626
|
-
|
|
630
|
+
warn( 'WebGLRenderer: Unable to use linear filtering with floating point textures. OES_texture_float_linear not supported on this device.' );
|
|
627
631
|
|
|
628
632
|
}
|
|
629
633
|
|
|
@@ -1032,7 +1036,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
1032
1036
|
|
|
1033
1037
|
} else {
|
|
1034
1038
|
|
|
1035
|
-
|
|
1039
|
+
warn( 'WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()' );
|
|
1036
1040
|
|
|
1037
1041
|
}
|
|
1038
1042
|
|
|
@@ -1088,7 +1092,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
1088
1092
|
|
|
1089
1093
|
} else {
|
|
1090
1094
|
|
|
1091
|
-
|
|
1095
|
+
warn( 'WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()' );
|
|
1092
1096
|
|
|
1093
1097
|
}
|
|
1094
1098
|
|
|
@@ -1382,7 +1386,7 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
1382
1386
|
|
|
1383
1387
|
} else {
|
|
1384
1388
|
|
|
1385
|
-
|
|
1389
|
+
warn( 'WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()' );
|
|
1386
1390
|
|
|
1387
1391
|
}
|
|
1388
1392
|
|
|
@@ -2275,13 +2279,13 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils,
|
|
|
2275
2279
|
|
|
2276
2280
|
if ( format !== RGBAFormat || type !== UnsignedByteType ) {
|
|
2277
2281
|
|
|
2278
|
-
|
|
2282
|
+
warn( 'WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType.' );
|
|
2279
2283
|
|
|
2280
2284
|
}
|
|
2281
2285
|
|
|
2282
2286
|
} else {
|
|
2283
2287
|
|
|
2284
|
-
|
|
2288
|
+
error( 'WebGLTextures: Unsupported texture color space:', colorSpace );
|
|
2285
2289
|
|
|
2286
2290
|
}
|
|
2287
2291
|
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { error, warn } from '../../utils.js';
|
|
2
|
+
|
|
1
3
|
function WebGLUniformsGroups( gl, info, capabilities, state ) {
|
|
2
4
|
|
|
3
5
|
let buffers = {};
|
|
@@ -80,7 +82,7 @@ function WebGLUniformsGroups( gl, info, capabilities, state ) {
|
|
|
80
82
|
|
|
81
83
|
}
|
|
82
84
|
|
|
83
|
-
|
|
85
|
+
error( 'WebGLRenderer: Maximum number of simultaneously usable uniforms groups reached.' );
|
|
84
86
|
|
|
85
87
|
return 0;
|
|
86
88
|
|
|
@@ -335,11 +337,11 @@ function WebGLUniformsGroups( gl, info, capabilities, state ) {
|
|
|
335
337
|
|
|
336
338
|
} else if ( value.isTexture ) {
|
|
337
339
|
|
|
338
|
-
|
|
340
|
+
warn( 'WebGLRenderer: Texture samplers can not be part of an uniforms group.' );
|
|
339
341
|
|
|
340
342
|
} else {
|
|
341
343
|
|
|
342
|
-
|
|
344
|
+
warn( 'WebGLRenderer: Unsupported uniform value type.', value );
|
|
343
345
|
|
|
344
346
|
}
|
|
345
347
|
|
|
@@ -11,7 +11,7 @@ import WebGLCapabilities from './utils/WebGLCapabilities.js';
|
|
|
11
11
|
import { GLFeatureName } from './utils/WebGLConstants.js';
|
|
12
12
|
import { WebGLBufferRenderer } from './WebGLBufferRenderer.js';
|
|
13
13
|
|
|
14
|
-
import { warnOnce } from '../../utils.js';
|
|
14
|
+
import { warnOnce, warn, error } from '../../utils.js';
|
|
15
15
|
import { WebGLCoordinateSystem, TimestampQuery } from '../../constants.js';
|
|
16
16
|
import WebGLTimestampQueryPool from './utils/WebGLTimestampQueryPool.js';
|
|
17
17
|
|
|
@@ -219,7 +219,7 @@ class WebGLBackend extends Backend {
|
|
|
219
219
|
const parameters = this.parameters;
|
|
220
220
|
|
|
221
221
|
const contextAttributes = {
|
|
222
|
-
antialias: renderer.
|
|
222
|
+
antialias: renderer.currentSamples > 0,
|
|
223
223
|
alpha: true, // always true for performance reasons
|
|
224
224
|
depth: renderer.depth,
|
|
225
225
|
stencil: renderer.stencil
|
|
@@ -297,19 +297,6 @@ class WebGLBackend extends Backend {
|
|
|
297
297
|
|
|
298
298
|
}
|
|
299
299
|
|
|
300
|
-
/**
|
|
301
|
-
* Can be used to synchronize CPU operations with GPU tasks. So when this method is called,
|
|
302
|
-
* the CPU waits for the GPU to complete its operation (e.g. a compute task).
|
|
303
|
-
*
|
|
304
|
-
* @async
|
|
305
|
-
* @return {Promise} A Promise that resolves when synchronization has been finished.
|
|
306
|
-
*/
|
|
307
|
-
async waitForGPU() {
|
|
308
|
-
|
|
309
|
-
await this.utils._clientWaitAsync();
|
|
310
|
-
|
|
311
|
-
}
|
|
312
|
-
|
|
313
300
|
/**
|
|
314
301
|
* Ensures the backend is XR compatible.
|
|
315
302
|
*
|
|
@@ -363,7 +350,7 @@ class WebGLBackend extends Backend {
|
|
|
363
350
|
// are midframe flushes and an external depth texture.
|
|
364
351
|
if ( ( this.extensions.has( 'WEBGL_multisampled_render_to_texture' ) === true ) && renderTarget._autoAllocateDepthBuffer === true && renderTarget.multiview === false ) {
|
|
365
352
|
|
|
366
|
-
|
|
353
|
+
warn( 'WebGLBackend: Render-to-texture extension was disabled because an external texture was provided' );
|
|
367
354
|
|
|
368
355
|
}
|
|
369
356
|
|
|
@@ -445,10 +432,6 @@ class WebGLBackend extends Backend {
|
|
|
445
432
|
|
|
446
433
|
//
|
|
447
434
|
|
|
448
|
-
renderContextData.frameCalls = this.renderer.info.render.frameCalls;
|
|
449
|
-
|
|
450
|
-
//
|
|
451
|
-
|
|
452
435
|
if ( renderContext.viewport ) {
|
|
453
436
|
|
|
454
437
|
this.updateViewport( renderContext );
|
|
@@ -807,11 +790,6 @@ class WebGLBackend extends Backend {
|
|
|
807
790
|
beginCompute( computeGroup ) {
|
|
808
791
|
|
|
809
792
|
const { state, gl } = this;
|
|
810
|
-
const computeGroupData = this.get( computeGroup );
|
|
811
|
-
|
|
812
|
-
//
|
|
813
|
-
|
|
814
|
-
computeGroupData.frameCalls = this.renderer.info.compute.frameCalls;
|
|
815
793
|
|
|
816
794
|
//
|
|
817
795
|
|
|
@@ -874,6 +852,12 @@ class WebGLBackend extends Backend {
|
|
|
874
852
|
|
|
875
853
|
count = count[ 0 ];
|
|
876
854
|
|
|
855
|
+
} else if ( count && typeof count === 'object' && count.isIndirectStorageBufferAttribute ) {
|
|
856
|
+
|
|
857
|
+
warnOnce( 'WebGLBackend.compute(): The count parameter must be a single number, not IndirectStorageBufferAttribute' );
|
|
858
|
+
|
|
859
|
+
count = computeNode.count;
|
|
860
|
+
|
|
877
861
|
}
|
|
878
862
|
|
|
879
863
|
if ( attributes[ 0 ].isStorageInstancedBufferAttribute ) {
|
|
@@ -1084,12 +1068,12 @@ class WebGLBackend extends Backend {
|
|
|
1084
1068
|
if ( object._multiDrawInstances !== null ) {
|
|
1085
1069
|
|
|
1086
1070
|
// @deprecated, r174
|
|
1087
|
-
warnOnce( '
|
|
1071
|
+
warnOnce( 'WebGLBackend: renderMultiDrawInstances has been deprecated and will be removed in r184. Append to renderMultiDraw arguments and use indirection.' );
|
|
1088
1072
|
renderer.renderMultiDrawInstances( object._multiDrawStarts, object._multiDrawCounts, object._multiDrawCount, object._multiDrawInstances );
|
|
1089
1073
|
|
|
1090
1074
|
} else if ( ! this.hasFeature( 'WEBGL_multi_draw' ) ) {
|
|
1091
1075
|
|
|
1092
|
-
warnOnce( '
|
|
1076
|
+
warnOnce( 'WebGLBackend: WEBGL_multi_draw not supported.' );
|
|
1093
1077
|
|
|
1094
1078
|
} else {
|
|
1095
1079
|
|
|
@@ -1302,10 +1286,11 @@ class WebGLBackend extends Backend {
|
|
|
1302
1286
|
* Destroys the GPU data for the given texture object.
|
|
1303
1287
|
*
|
|
1304
1288
|
* @param {Texture} texture - The texture.
|
|
1289
|
+
* @param {boolean} [isDefaultTexture=false] - Whether the texture uses a default GPU texture or not.
|
|
1305
1290
|
*/
|
|
1306
|
-
destroyTexture( texture ) {
|
|
1291
|
+
destroyTexture( texture, isDefaultTexture = false ) {
|
|
1307
1292
|
|
|
1308
|
-
this.textureUtils.destroyTexture( texture );
|
|
1293
|
+
this.textureUtils.destroyTexture( texture, isDefaultTexture );
|
|
1309
1294
|
|
|
1310
1295
|
}
|
|
1311
1296
|
|
|
@@ -1330,21 +1315,15 @@ class WebGLBackend extends Backend {
|
|
|
1330
1315
|
/**
|
|
1331
1316
|
* This method does nothing since WebGL 2 has no concept of samplers.
|
|
1332
1317
|
*
|
|
1333
|
-
* @param {Texture} texture - The texture to
|
|
1318
|
+
* @param {Texture} texture - The texture to update the sampler for.
|
|
1319
|
+
* @return {string} The current sampler key.
|
|
1334
1320
|
*/
|
|
1335
|
-
|
|
1321
|
+
updateSampler( /*texture*/ ) {
|
|
1336
1322
|
|
|
1337
|
-
|
|
1323
|
+
return '';
|
|
1338
1324
|
|
|
1339
1325
|
}
|
|
1340
1326
|
|
|
1341
|
-
/**
|
|
1342
|
-
* This method does nothing since WebGL 2 has no concept of samplers.
|
|
1343
|
-
*
|
|
1344
|
-
* @param {Texture} texture - The texture to destroy the sampler for.
|
|
1345
|
-
*/
|
|
1346
|
-
destroySampler( /*texture*/ ) {}
|
|
1347
|
-
|
|
1348
1327
|
// node builder
|
|
1349
1328
|
|
|
1350
1329
|
/**
|
|
@@ -1547,7 +1526,7 @@ class WebGLBackend extends Backend {
|
|
|
1547
1526
|
const vertexErrors = this._getShaderErrors( gl, glVertexShader, 'vertex' );
|
|
1548
1527
|
const fragmentErrors = this._getShaderErrors( gl, glFragmentShader, 'fragment' );
|
|
1549
1528
|
|
|
1550
|
-
|
|
1529
|
+
error(
|
|
1551
1530
|
'THREE.WebGLProgram: Shader Error ' + gl.getError() + ' - ' +
|
|
1552
1531
|
'VALIDATE_STATUS ' + gl.getProgramParameter( programGPU, gl.VALIDATE_STATUS ) + '\n\n' +
|
|
1553
1532
|
'Program Info Log: ' + programLog + '\n' +
|
|
@@ -1559,7 +1538,7 @@ class WebGLBackend extends Backend {
|
|
|
1559
1538
|
|
|
1560
1539
|
} else if ( programLog !== '' ) {
|
|
1561
1540
|
|
|
1562
|
-
|
|
1541
|
+
warn( 'WebGLProgram: Program Info Log:', programLog );
|
|
1563
1542
|
|
|
1564
1543
|
}
|
|
1565
1544
|
|
|
@@ -2619,6 +2598,8 @@ class WebGLBackend extends Backend {
|
|
|
2619
2598
|
*/
|
|
2620
2599
|
dispose() {
|
|
2621
2600
|
|
|
2601
|
+
if ( this.textureUtils !== null ) this.textureUtils.dispose();
|
|
2602
|
+
|
|
2622
2603
|
const extension = this.extensions.get( 'WEBGL_lose_context' );
|
|
2623
2604
|
if ( extension ) extension.loseContext();
|
|
2624
2605
|
|
|
@@ -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,6 +7,12 @@ 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',
|
|
@@ -15,6 +21,8 @@ const glslMethods = {
|
|
|
15
21
|
bitcast_int_float: 'intBitsToFloat',
|
|
16
22
|
bitcast_uint_float: 'uintBitsToFloat',
|
|
17
23
|
bitcast_float_uint: 'floatBitsToUint',
|
|
24
|
+
bitcast_uint_int: 'tsl_bitcast_uint_to_int',
|
|
25
|
+
bitcast_int_uint: 'tsl_bitcast_int_to_uint'
|
|
18
26
|
};
|
|
19
27
|
|
|
20
28
|
const precisionLib = {
|
|
@@ -126,6 +134,25 @@ class GLSLNodeBuilder extends NodeBuilder {
|
|
|
126
134
|
|
|
127
135
|
}
|
|
128
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
|
+
|
|
129
156
|
/**
|
|
130
157
|
* Returns the native shader method name for a given generic name.
|
|
131
158
|
*
|
|
@@ -134,6 +161,12 @@ class GLSLNodeBuilder extends NodeBuilder {
|
|
|
134
161
|
*/
|
|
135
162
|
getMethod( method ) {
|
|
136
163
|
|
|
164
|
+
if ( glslPolyfills[ method ] !== undefined ) {
|
|
165
|
+
|
|
166
|
+
this._include( method );
|
|
167
|
+
|
|
168
|
+
}
|
|
169
|
+
|
|
137
170
|
return glslMethods[ method ] || method;
|
|
138
171
|
|
|
139
172
|
}
|
|
@@ -147,7 +180,7 @@ class GLSLNodeBuilder extends NodeBuilder {
|
|
|
147
180
|
*/
|
|
148
181
|
getBitcastMethod( type, inputType ) {
|
|
149
182
|
|
|
150
|
-
return
|
|
183
|
+
return this.getMethod( `bitcast_${ inputType }_${ type }` );
|
|
151
184
|
|
|
152
185
|
}
|
|
153
186
|
|
|
@@ -367,7 +400,7 @@ ${ flowData.code }
|
|
|
367
400
|
const channel = '.' + vectorComponents.join( '' ).slice( 0, itemSize );
|
|
368
401
|
const uvSnippet = `ivec2(${indexSnippet} % ${ propertySizeName }, ${indexSnippet} / ${ propertySizeName })`;
|
|
369
402
|
|
|
370
|
-
const snippet = this.generateTextureLoad( null, textureName, uvSnippet,
|
|
403
|
+
const snippet = this.generateTextureLoad( null, textureName, uvSnippet, '0', null, null );
|
|
371
404
|
|
|
372
405
|
//
|
|
373
406
|
|
|
@@ -400,12 +433,14 @@ ${ flowData.code }
|
|
|
400
433
|
* @param {?Texture} texture - The texture.
|
|
401
434
|
* @param {string} textureProperty - The name of the texture uniform in the shader.
|
|
402
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.
|
|
403
437
|
* @param {?string} depthSnippet - A GLSL snippet that represents the 0-based texture array index to sample.
|
|
404
438
|
* @param {?string} offsetSnippet - A GLSL snippet that represents the offset that will be applied to the unnormalized texture coordinate before sampling the texture.
|
|
405
|
-
* @param {string} [levelSnippet='0u'] - A GLSL snippet that represents the mip level, with level 0 containing a full size version of the texture.
|
|
406
439
|
* @return {string} The GLSL snippet.
|
|
407
440
|
*/
|
|
408
|
-
generateTextureLoad( texture, textureProperty, uvIndexSnippet, depthSnippet, offsetSnippet
|
|
441
|
+
generateTextureLoad( texture, textureProperty, uvIndexSnippet, levelSnippet, depthSnippet, offsetSnippet ) {
|
|
442
|
+
|
|
443
|
+
if ( levelSnippet === null ) levelSnippet = '0';
|
|
409
444
|
|
|
410
445
|
let snippet;
|
|
411
446
|
|
|
@@ -578,7 +613,7 @@ ${ flowData.code }
|
|
|
578
613
|
|
|
579
614
|
} else {
|
|
580
615
|
|
|
581
|
-
|
|
616
|
+
error( `WebGPURenderer: THREE.DepthTexture.compareFunction() does not support ${ shaderStage } shader.` );
|
|
582
617
|
|
|
583
618
|
}
|
|
584
619
|
|
|
@@ -960,7 +995,8 @@ ${ flowData.code }
|
|
|
960
995
|
}
|
|
961
996
|
|
|
962
997
|
/**
|
|
963
|
-
*
|
|
998
|
+
* Contextually returns either the vertex stage instance index builtin
|
|
999
|
+
* or the linearized index of an compute invocation within a grid of workgroups.
|
|
964
1000
|
*
|
|
965
1001
|
* @return {string} The instance index.
|
|
966
1002
|
*/
|
|
@@ -971,7 +1007,7 @@ ${ flowData.code }
|
|
|
971
1007
|
}
|
|
972
1008
|
|
|
973
1009
|
/**
|
|
974
|
-
* Returns the invocation
|
|
1010
|
+
* Returns a builtin representing the index of an invocation within its workgroup.
|
|
975
1011
|
*
|
|
976
1012
|
* @return {string} The invocation local index.
|
|
977
1013
|
*/
|
|
@@ -985,6 +1021,33 @@ ${ flowData.code }
|
|
|
985
1021
|
|
|
986
1022
|
}
|
|
987
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
|
+
|
|
988
1051
|
/**
|
|
989
1052
|
* Returns the draw index builtin.
|
|
990
1053
|
*
|
|
@@ -1316,6 +1379,9 @@ ${shaderData.extensions}
|
|
|
1316
1379
|
// precision
|
|
1317
1380
|
${ defaultPrecisions }
|
|
1318
1381
|
|
|
1382
|
+
// structs
|
|
1383
|
+
${shaderData.structs}
|
|
1384
|
+
|
|
1319
1385
|
// uniforms
|
|
1320
1386
|
${shaderData.uniforms}
|
|
1321
1387
|
|
|
@@ -1325,9 +1391,6 @@ ${shaderData.varyings}
|
|
|
1325
1391
|
// codes
|
|
1326
1392
|
${shaderData.codes}
|
|
1327
1393
|
|
|
1328
|
-
// structs
|
|
1329
|
-
${shaderData.structs}
|
|
1330
|
-
|
|
1331
1394
|
void main() {
|
|
1332
1395
|
|
|
1333
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
|
|