super-three 0.181.0 → 0.185.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/LICENSE +1 -1
- package/README.md +3 -4
- package/build/three.cjs +21332 -19201
- package/build/three.core.js +20908 -19853
- package/build/three.core.min.js +2 -2
- package/build/three.module.js +1947 -862
- package/build/three.module.min.js +2 -2
- package/build/three.tsl.js +37 -16
- package/build/three.tsl.min.js +2 -2
- package/build/three.webgpu.js +33628 -25197
- package/build/three.webgpu.min.js +2 -2
- package/build/three.webgpu.nodes.js +33394 -25000
- package/build/three.webgpu.nodes.min.js +2 -2
- package/examples/jsm/Addons.js +14 -3
- package/examples/jsm/animation/CCDIKSolver.js +7 -3
- package/examples/jsm/controls/ArcballControls.js +13 -6
- package/examples/jsm/controls/DragControls.js +2 -2
- package/examples/jsm/controls/FirstPersonControls.js +127 -86
- package/examples/jsm/controls/FlyControls.js +4 -0
- package/examples/jsm/controls/MapControls.js +55 -1
- package/examples/jsm/controls/OrbitControls.js +111 -8
- package/examples/jsm/controls/TrackballControls.js +8 -8
- package/examples/jsm/controls/TransformControls.js +102 -17
- package/examples/jsm/csm/CSM.js +2 -1
- package/examples/jsm/csm/CSMFrustum.js +31 -6
- package/examples/jsm/csm/CSMShadowNode.js +10 -3
- package/examples/jsm/effects/AnaglyphEffect.js +102 -7
- package/examples/jsm/effects/AsciiEffect.js +14 -1
- package/examples/jsm/environments/ColorEnvironment.js +59 -0
- package/examples/jsm/environments/RoomEnvironment.js +3 -0
- package/examples/jsm/exporters/DRACOExporter.js +27 -6
- package/examples/jsm/exporters/EXRExporter.js +1 -1
- package/examples/jsm/exporters/GLTFExporter.js +266 -21
- package/examples/jsm/exporters/PLYExporter.js +286 -73
- package/examples/jsm/exporters/USDZExporter.js +353 -99
- package/examples/jsm/generators/CityGenerator.js +346 -0
- package/examples/jsm/generators/ForestGenerator.js +347 -0
- package/examples/jsm/generators/TerrainGenerator.js +504 -0
- package/examples/jsm/generators/TreeGenerator.js +377 -0
- package/examples/jsm/generators/city/SidewalkGenerator.js +253 -0
- package/examples/jsm/generators/city/SkyscraperGenerator.js +1357 -0
- package/examples/jsm/geometries/DecalGeometry.js +1 -1
- package/examples/jsm/geometries/LoftGeometry.js +355 -0
- package/examples/jsm/geometries/TextGeometry.js +18 -0
- package/examples/jsm/helpers/AnimationPathHelper.js +302 -0
- package/examples/jsm/helpers/LightProbeGridHelper.js +221 -0
- package/examples/jsm/helpers/LightProbeHelper.js +5 -4
- package/examples/jsm/helpers/LightProbeHelperGPU.js +1 -1
- package/examples/jsm/helpers/TextureHelperGPU.js +1 -1
- package/examples/jsm/helpers/ViewHelper.js +83 -14
- package/examples/jsm/inspector/Extension.js +13 -0
- package/examples/jsm/inspector/Inspector.js +244 -91
- package/examples/jsm/inspector/RendererInspector.js +165 -39
- package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphEditor.js +916 -0
- package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphLoader.js +281 -0
- package/examples/jsm/inspector/tabs/Console.js +241 -25
- package/examples/jsm/inspector/tabs/Memory.js +136 -0
- package/examples/jsm/inspector/tabs/Parameters.js +115 -7
- package/examples/jsm/inspector/tabs/Performance.js +24 -9
- package/examples/jsm/inspector/tabs/Settings.js +306 -0
- package/examples/jsm/inspector/tabs/Timeline.js +1696 -0
- package/examples/jsm/inspector/tabs/Viewer.js +723 -9
- package/examples/jsm/inspector/ui/Graph.js +162 -25
- package/examples/jsm/inspector/ui/Item.js +92 -13
- package/examples/jsm/inspector/ui/List.js +2 -2
- package/examples/jsm/inspector/ui/Profiler.js +1991 -44
- package/examples/jsm/inspector/ui/Style.js +1943 -543
- package/examples/jsm/inspector/ui/Tab.js +226 -5
- package/examples/jsm/inspector/ui/Values.js +126 -8
- package/examples/jsm/inspector/ui/utils.js +143 -10
- package/examples/jsm/interaction/InteractionManager.js +226 -0
- package/examples/jsm/libs/basis/README.md +0 -1
- package/examples/jsm/libs/demuxer_mp4.js +3 -3
- package/examples/jsm/libs/draco/README.md +0 -1
- package/examples/jsm/libs/meshopt_clusterizer.module.js +421 -0
- package/examples/jsm/libs/meshopt_decoder.module.js +9 -8
- package/examples/jsm/libs/meshopt_simplifier.module.js +627 -0
- package/examples/jsm/libs/mikktspace.module.js +34 -9
- package/examples/jsm/lighting/ClusteredLighting.js +55 -0
- package/examples/jsm/lighting/DynamicLighting.js +82 -0
- package/examples/jsm/lighting/LightProbeGrid.js +681 -0
- package/examples/jsm/lines/LineMaterial.js +45 -16
- package/examples/jsm/lines/LineSegments2.js +8 -0
- package/examples/jsm/lines/webgpu/LineSegments2.js +8 -0
- package/examples/jsm/loaders/3DMLoader.js +6 -5
- package/examples/jsm/loaders/3MFLoader.js +2 -2
- package/examples/jsm/loaders/AMFLoader.js +2 -2
- package/examples/jsm/loaders/ColladaLoader.js +24 -4026
- package/examples/jsm/loaders/DRACOLoader.js +51 -18
- package/examples/jsm/loaders/EXRLoader.js +701 -90
- package/examples/jsm/loaders/FBXLoader.js +235 -37
- package/examples/jsm/loaders/GCodeLoader.js +34 -8
- package/examples/jsm/loaders/GLTFLoader.js +146 -178
- package/examples/jsm/loaders/HDRLoader.js +7 -30
- package/examples/jsm/loaders/KMZLoader.js +5 -5
- package/examples/jsm/loaders/KTX2Loader.js +58 -17
- package/examples/jsm/loaders/LDrawLoader.js +49 -58
- package/examples/jsm/loaders/LUT3dlLoader.js +2 -2
- package/examples/jsm/loaders/LUTCubeLoader.js +2 -2
- package/examples/jsm/loaders/LWOLoader.js +11 -39
- package/examples/jsm/loaders/LottieLoader.js +1 -1
- package/examples/jsm/loaders/MaterialXLoader.js +31 -9
- package/examples/jsm/loaders/NRRDLoader.js +5 -5
- package/examples/jsm/loaders/PCDLoader.js +11 -9
- package/examples/jsm/loaders/PLYLoader.js +218 -55
- package/examples/jsm/loaders/SVGLoader.js +549 -497
- package/examples/jsm/loaders/TDSLoader.js +0 -2
- package/examples/jsm/loaders/TGALoader.js +0 -2
- package/examples/jsm/loaders/TTFLoader.js +1 -1
- package/examples/jsm/loaders/USDLoader.js +127 -43
- package/examples/jsm/loaders/UltraHDRLoader.js +285 -160
- package/examples/jsm/loaders/VOXLoader.js +660 -117
- package/examples/jsm/loaders/VRMLLoader.js +80 -3
- package/examples/jsm/loaders/VTKLoader.js +42 -25
- package/examples/jsm/loaders/collada/ColladaComposer.js +3044 -0
- package/examples/jsm/loaders/collada/ColladaParser.js +1977 -0
- package/examples/jsm/loaders/usd/USDAParser.js +504 -344
- package/examples/jsm/loaders/usd/USDCParser.js +1867 -6
- package/examples/jsm/loaders/usd/USDComposer.js +4627 -0
- package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +2 -2
- package/examples/jsm/materials/WoodNodeMaterial.js +11 -11
- package/examples/jsm/math/Octree.js +131 -1
- package/examples/jsm/misc/GPUComputationRenderer.js +2 -0
- package/examples/jsm/misc/RollerCoaster.js +42 -4
- package/examples/jsm/misc/TileCreasedNormalsPlugin.js +270 -0
- package/examples/jsm/misc/Volume.js +2 -3
- package/examples/jsm/misc/VolumeSlice.js +0 -1
- package/examples/jsm/modifiers/TessellateModifier.js +1 -1
- package/examples/jsm/objects/GroundedSkybox.js +1 -1
- package/examples/jsm/objects/LensflareMesh.js +1 -1
- package/examples/jsm/objects/Reflector.js +72 -25
- package/examples/jsm/objects/Sky.js +90 -6
- package/examples/jsm/objects/SkyMesh.js +150 -16
- package/examples/jsm/objects/Water.js +4 -3
- package/examples/jsm/objects/Water2.js +5 -3
- package/examples/jsm/objects/Water2Mesh.js +1 -1
- package/examples/jsm/objects/WaterMesh.js +5 -7
- package/examples/jsm/physics/AmmoPhysics.js +27 -15
- package/examples/jsm/physics/JoltPhysics.js +10 -6
- package/examples/jsm/physics/RapierPhysics.js +36 -7
- package/examples/jsm/postprocessing/EffectComposer.js +7 -5
- package/examples/jsm/postprocessing/OutputPass.js +9 -0
- package/examples/jsm/postprocessing/RenderPass.js +10 -0
- package/examples/jsm/postprocessing/RenderTransitionPass.js +1 -1
- package/examples/jsm/postprocessing/UnrealBloomPass.js +48 -18
- package/examples/jsm/renderers/CSS3DRenderer.js +1 -1
- package/examples/jsm/renderers/Projector.js +246 -28
- package/examples/jsm/renderers/SVGRenderer.js +174 -60
- package/examples/jsm/shaders/GTAOShader.js +19 -6
- package/examples/jsm/shaders/HalftoneShader.js +12 -1
- package/examples/jsm/shaders/PoissonDenoiseShader.js +6 -2
- package/examples/jsm/shaders/SAOShader.js +17 -4
- package/examples/jsm/shaders/SSAOShader.js +11 -1
- package/examples/jsm/shaders/SSRShader.js +6 -5
- package/examples/jsm/shaders/UnpackDepthRGBAShader.js +2 -4
- package/examples/jsm/shaders/VignetteShader.js +1 -1
- package/examples/jsm/shaders/VolumeShader.js +31 -44
- package/examples/jsm/transpiler/AST.js +44 -0
- package/examples/jsm/transpiler/GLSLDecoder.js +65 -8
- package/examples/jsm/transpiler/Linker.js +1 -1
- package/examples/jsm/transpiler/ShaderToyDecoder.js +2 -0
- package/examples/jsm/transpiler/TSLEncoder.js +46 -3
- package/examples/jsm/transpiler/TranspilerUtils.js +3 -3
- package/examples/jsm/transpiler/WGSLEncoder.js +27 -0
- package/examples/jsm/tsl/WebGLNodesHandler.js +605 -0
- package/examples/jsm/tsl/display/AfterImageNode.js +11 -1
- package/examples/jsm/tsl/display/AnaglyphPassNode.js +458 -16
- package/examples/jsm/tsl/display/BilateralBlurNode.js +374 -0
- package/examples/jsm/tsl/display/BloomNode.js +75 -25
- package/examples/jsm/tsl/display/CRT.js +150 -0
- package/examples/jsm/tsl/display/ChromaticAberrationNode.js +3 -36
- package/examples/jsm/tsl/display/DenoiseNode.js +1 -1
- package/examples/jsm/tsl/display/DepthOfFieldNode.js +3 -3
- package/examples/jsm/tsl/display/DotScreenNode.js +1 -1
- package/examples/jsm/tsl/display/FSR1Node.js +477 -0
- package/examples/jsm/tsl/display/FXAANode.js +13 -14
- package/examples/jsm/tsl/display/GTAONode.js +40 -17
- package/examples/jsm/tsl/display/GaussianBlurNode.js +21 -2
- package/examples/jsm/tsl/display/GodraysNode.js +615 -0
- package/examples/jsm/tsl/display/ImportanceSampledEnvironment.js +560 -0
- package/examples/jsm/tsl/display/LensflareNode.js +1 -1
- package/examples/jsm/tsl/display/Lut3DNode.js +1 -1
- package/examples/jsm/tsl/display/OutlineNode.js +69 -19
- package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +2 -2
- package/examples/jsm/tsl/display/PixelationPassNode.js +9 -8
- package/examples/jsm/tsl/display/RGBShiftNode.js +2 -2
- package/examples/jsm/tsl/display/RecurrentDenoiseNode.js +912 -0
- package/examples/jsm/tsl/display/RetroPassNode.js +263 -0
- package/examples/jsm/tsl/display/SMAANode.js +2 -2
- package/examples/jsm/tsl/display/SSAAPassNode.js +15 -27
- package/examples/jsm/tsl/display/SSGINode.js +96 -62
- package/examples/jsm/tsl/display/SSRNode.js +831 -134
- package/examples/jsm/tsl/display/SSSNode.js +8 -6
- package/examples/jsm/tsl/display/Shape.js +29 -0
- package/examples/jsm/tsl/display/SharpenNode.js +283 -0
- package/examples/jsm/tsl/display/SobelOperatorNode.js +2 -2
- package/examples/jsm/tsl/display/StereoCompositePassNode.js +8 -1
- package/examples/jsm/tsl/display/StereoPassNode.js +1 -2
- package/examples/jsm/tsl/display/TAAUNode.js +835 -0
- package/examples/jsm/tsl/display/TRAANode.js +315 -126
- package/examples/jsm/tsl/display/TemporalReprojectNode.js +1023 -0
- package/examples/jsm/tsl/display/TransitionNode.js +1 -1
- package/examples/jsm/tsl/display/depthAwareBlend.js +80 -0
- package/examples/jsm/tsl/display/radialBlur.js +68 -0
- package/examples/jsm/tsl/lighting/ClusteredLightsNode.js +622 -0
- package/examples/jsm/tsl/lighting/DynamicLightsNode.js +300 -0
- package/examples/jsm/tsl/lighting/data/AmbientLightDataNode.js +61 -0
- package/examples/jsm/tsl/lighting/data/DirectionalLightDataNode.js +111 -0
- package/examples/jsm/tsl/lighting/data/HemisphereLightDataNode.js +99 -0
- package/examples/jsm/tsl/lighting/data/PointLightDataNode.js +134 -0
- package/examples/jsm/tsl/lighting/data/SpotLightDataNode.js +161 -0
- package/examples/jsm/tsl/math/Bayer.js +53 -3
- package/examples/jsm/tsl/math/curlNoise.js +107 -0
- package/examples/jsm/tsl/shadows/TileShadowNode.js +1 -1
- package/examples/jsm/tsl/shadows/TileShadowNodeHelper.js +3 -3
- package/examples/jsm/tsl/utils/GroundedSkybox.js +62 -0
- package/examples/jsm/tsl/utils/RNoise.js +51 -0
- package/examples/jsm/tsl/utils/SpecularHelpers.js +325 -0
- package/examples/jsm/utils/BufferGeometryUtils.js +128 -62
- package/examples/jsm/utils/ColorUtils.js +76 -0
- package/examples/jsm/utils/GeometryCompressionUtils.js +1 -1
- package/examples/jsm/utils/LDrawUtils.js +1 -1
- package/examples/jsm/utils/SceneOptimizer.js +1 -1
- package/examples/jsm/utils/ShadowMapViewer.js +24 -10
- package/examples/jsm/utils/ShadowMapViewerGPU.js +1 -1
- package/examples/jsm/utils/SkeletonUtils.js +14 -8
- package/examples/jsm/utils/WebGPUTextureUtils.js +1 -1
- package/examples/jsm/webxr/ARButton.js +1 -1
- package/examples/jsm/webxr/WebGLXRFallback.js +89 -0
- package/examples/jsm/webxr/XRControllerModelFactory.js +2 -2
- package/examples/jsm/webxr/XRHandMeshModel.js +36 -10
- package/examples/jsm/webxr/XRHandModelFactory.js +2 -1
- package/package.json +28 -34
- package/src/Three.Core.js +3 -1
- package/src/Three.TSL.js +35 -14
- package/src/Three.WebGPU.Nodes.js +5 -0
- package/src/Three.WebGPU.js +13 -0
- package/src/Three.js +1 -0
- package/src/animation/AnimationAction.js +18 -4
- package/src/animation/AnimationClip.js +0 -139
- package/src/animation/AnimationMixer.js +6 -0
- package/src/animation/AnimationUtils.js +1 -12
- package/src/animation/KeyframeTrack.js +47 -8
- package/src/animation/PropertyBinding.js +2 -2
- package/src/animation/PropertyMixer.js +4 -4
- package/src/animation/tracks/BooleanKeyframeTrack.js +1 -1
- package/src/animation/tracks/ColorKeyframeTrack.js +1 -1
- package/src/animation/tracks/NumberKeyframeTrack.js +1 -1
- package/src/animation/tracks/QuaternionKeyframeTrack.js +1 -1
- package/src/animation/tracks/StringKeyframeTrack.js +1 -1
- package/src/animation/tracks/VectorKeyframeTrack.js +1 -1
- package/src/audio/Audio.js +1 -1
- package/src/audio/AudioContext.js +2 -2
- package/src/audio/AudioListener.js +5 -3
- package/src/cameras/Camera.js +34 -4
- package/src/cameras/CubeCamera.js +20 -0
- package/src/cameras/StereoCamera.js +5 -2
- package/src/constants.js +90 -5
- package/src/core/BufferAttribute.js +13 -1
- package/src/core/BufferGeometry.js +43 -9
- package/src/core/Clock.js +7 -0
- package/src/core/Object3D.js +69 -11
- package/src/core/Raycaster.js +3 -3
- package/src/core/RenderTarget.js +19 -6
- package/src/extras/PMREMGenerator.js +13 -22
- package/src/extras/TextureUtils.js +6 -2
- package/src/extras/core/ShapePath.js +149 -160
- package/src/extras/curves/CatmullRomCurve3.js +3 -2
- package/src/geometries/ExtrudeGeometry.js +2 -2
- package/src/geometries/PolyhedronGeometry.js +1 -1
- package/src/geometries/SphereGeometry.js +8 -3
- package/src/geometries/TorusGeometry.js +8 -3
- package/src/helpers/CameraHelper.js +3 -0
- package/src/helpers/DirectionalLightHelper.js +6 -1
- package/src/helpers/HemisphereLightHelper.js +5 -0
- package/src/helpers/PointLightHelper.js +3 -25
- package/src/helpers/SpotLightHelper.js +4 -1
- package/src/lights/DirectionalLight.js +13 -0
- package/src/lights/HemisphereLight.js +10 -0
- package/src/lights/Light.js +1 -11
- package/src/lights/LightProbe.js +0 -15
- package/src/lights/LightShadow.js +15 -6
- package/src/lights/PointLight.js +15 -0
- package/src/lights/PointLightShadow.js +0 -86
- package/src/lights/SpotLight.js +22 -1
- package/src/lights/webgpu/IESSpotLight.js +2 -1
- package/src/loaders/AudioLoader.js +11 -1
- package/src/loaders/Cache.js +28 -0
- package/src/loaders/DataTextureLoader.js +75 -42
- package/src/loaders/FileLoader.js +2 -3
- package/src/loaders/ImageBitmapLoader.js +12 -9
- package/src/loaders/Loader.js +6 -0
- package/src/loaders/LoadingManager.js +5 -0
- package/src/loaders/MaterialLoader.js +37 -266
- package/src/loaders/ObjectLoader.js +48 -6
- package/src/loaders/nodes/NodeLoader.js +2 -2
- package/src/loaders/nodes/NodeObjectLoader.js +18 -0
- package/src/materials/LineBasicMaterial.js +4 -0
- package/src/materials/Material.js +198 -1
- package/src/materials/MeshBasicMaterial.js +24 -0
- package/src/materials/MeshDepthMaterial.js +10 -0
- package/src/materials/MeshDistanceMaterial.js +10 -0
- package/src/materials/MeshLambertMaterial.js +49 -1
- package/src/materials/MeshMatcapMaterial.js +25 -1
- package/src/materials/MeshNormalMaterial.js +9 -1
- package/src/materials/MeshPhongMaterial.js +49 -1
- package/src/materials/MeshPhysicalMaterial.js +38 -0
- package/src/materials/MeshStandardMaterial.js +42 -1
- package/src/materials/MeshToonMaterial.js +35 -2
- package/src/materials/PointsMaterial.js +7 -0
- package/src/materials/ShaderMaterial.js +106 -1
- package/src/materials/SpriteMaterial.js +7 -0
- package/src/materials/nodes/Line2NodeMaterial.js +380 -297
- package/src/materials/nodes/MeshBasicNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshNormalNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshPhongNodeMaterial.js +0 -9
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +3 -30
- package/src/materials/nodes/MeshSSSNodeMaterial.js +0 -13
- package/src/materials/nodes/MeshStandardNodeMaterial.js +5 -15
- package/src/materials/nodes/NodeMaterial.js +153 -89
- package/src/materials/nodes/SpriteNodeMaterial.js +0 -10
- package/src/materials/nodes/manager/NodeMaterialObserver.js +234 -100
- package/src/math/Box3.js +5 -0
- package/src/math/FrustumArray.js +103 -133
- package/src/math/Interpolant.js +1 -1
- package/src/math/Line3.js +6 -5
- package/src/math/MathUtils.js +12 -12
- package/src/math/Matrix2.js +13 -9
- package/src/math/Matrix3.js +24 -9
- package/src/math/Matrix4.js +112 -74
- package/src/math/Plane.js +4 -3
- package/src/math/Quaternion.js +3 -29
- package/src/math/Sphere.js +1 -1
- package/src/math/Triangle.js +1 -1
- package/src/math/Vector2.js +13 -9
- package/src/math/Vector3.js +17 -15
- package/src/math/Vector4.js +15 -11
- package/src/math/interpolants/BezierInterpolant.js +106 -0
- package/src/nodes/Nodes.js +86 -71
- package/src/nodes/TSL.js +15 -13
- package/src/nodes/accessors/Arrays.js +5 -5
- package/src/nodes/accessors/Batch.js +108 -0
- package/src/nodes/accessors/Bitangent.js +7 -7
- package/src/nodes/accessors/BufferAttributeNode.js +120 -17
- package/src/nodes/accessors/BufferNode.js +29 -2
- package/src/nodes/accessors/Camera.js +149 -28
- package/src/nodes/accessors/ClippingNode.js +5 -5
- package/src/nodes/accessors/CubeTextureNode.js +27 -2
- package/src/nodes/accessors/Instance.js +264 -0
- package/src/nodes/accessors/MaterialNode.js +27 -3
- package/src/nodes/accessors/MaterialProperties.js +6 -8
- package/src/nodes/accessors/MaterialReferenceNode.js +1 -2
- package/src/nodes/accessors/ModelNode.js +1 -1
- package/src/nodes/accessors/{MorphNode.js → Morph.js} +99 -112
- package/src/nodes/accessors/Normal.js +24 -24
- package/src/nodes/accessors/Object3DNode.js +1 -1
- package/src/nodes/accessors/Position.js +39 -3
- package/src/nodes/accessors/ReferenceBaseNode.js +6 -6
- package/src/nodes/accessors/ReferenceNode.js +9 -8
- package/src/nodes/accessors/ReflectVector.js +3 -3
- package/src/nodes/accessors/RendererReferenceNode.js +1 -2
- package/src/nodes/accessors/SceneProperties.js +47 -0
- package/src/nodes/accessors/Skinning.js +263 -0
- package/src/nodes/accessors/StorageBufferNode.js +16 -27
- package/src/nodes/accessors/StorageTexture3DNode.js +100 -0
- package/src/nodes/accessors/StorageTextureNode.js +74 -11
- package/src/nodes/accessors/Tangent.js +8 -18
- package/src/nodes/accessors/Texture3DNode.js +32 -35
- package/src/nodes/accessors/TextureNode.js +124 -25
- package/src/nodes/accessors/UniformArrayNode.js +6 -4
- package/src/nodes/accessors/UserDataNode.js +1 -2
- package/src/nodes/accessors/VertexColorNode.js +1 -2
- package/src/nodes/code/FunctionCallNode.js +1 -1
- package/src/nodes/code/FunctionNode.js +4 -19
- package/src/nodes/core/ArrayNode.js +21 -2
- package/src/nodes/core/AssignNode.js +3 -3
- package/src/nodes/core/AttributeNode.js +3 -3
- package/src/nodes/core/BypassNode.js +1 -1
- package/src/nodes/core/ContextNode.js +104 -5
- package/src/nodes/core/IndexNode.js +2 -1
- package/src/nodes/core/InputNode.js +1 -1
- package/src/nodes/core/InspectorNode.js +1 -1
- package/src/nodes/core/IsolateNode.js +1 -1
- package/src/nodes/core/MRTNode.js +55 -4
- package/src/nodes/core/Node.js +151 -17
- package/src/nodes/core/NodeBuilder.js +479 -101
- package/src/nodes/core/NodeError.js +28 -0
- package/src/nodes/core/NodeFrame.js +12 -4
- package/src/nodes/core/NodeUtils.js +20 -18
- package/src/nodes/core/OutputStructNode.js +13 -11
- package/src/nodes/core/OverrideContextNode.js +153 -0
- package/src/nodes/core/ParameterNode.js +4 -4
- package/src/nodes/core/PropertyNode.js +66 -4
- package/src/nodes/core/StackNode.js +91 -20
- package/src/nodes/core/StackTrace.js +139 -0
- package/src/nodes/core/StructNode.js +20 -8
- package/src/nodes/core/StructTypeNode.js +17 -23
- package/src/nodes/core/SubBuildNode.js +2 -2
- package/src/nodes/core/UniformGroupNode.js +36 -6
- package/src/nodes/core/UniformNode.js +21 -5
- package/src/nodes/core/VarNode.js +56 -23
- package/src/nodes/core/VaryingNode.js +14 -21
- package/src/nodes/display/BlendModes.js +1 -105
- package/src/nodes/display/BumpMapNode.js +6 -1
- package/src/nodes/display/ColorAdjustment.js +27 -9
- package/src/nodes/display/ColorSpaceNode.js +3 -3
- package/src/nodes/display/FrontFacingNode.js +38 -9
- package/src/nodes/display/NormalMapNode.js +41 -6
- package/src/nodes/display/PassNode.js +157 -56
- package/src/nodes/display/PremultiplyAlphaFunctions.js +39 -0
- package/src/nodes/display/RenderOutputNode.js +19 -10
- package/src/nodes/display/ScreenNode.js +4 -2
- package/src/nodes/display/ToneMappingNode.js +1 -1
- package/src/nodes/display/ToonOutlinePassNode.js +2 -2
- package/src/nodes/display/ViewportDepthNode.js +52 -4
- package/src/nodes/display/ViewportDepthTextureNode.js +11 -15
- package/src/nodes/display/ViewportTextureNode.js +39 -11
- package/src/nodes/fog/Fog.js +18 -35
- package/src/nodes/functions/BSDF/BRDF_GGX_Multiscatter.js +3 -3
- package/src/nodes/functions/BSDF/DFGLUT.js +56 -0
- package/src/nodes/functions/BSDF/EnvironmentBRDF.js +2 -2
- package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +2 -2
- package/src/nodes/functions/PhysicalLightingModel.js +126 -45
- package/src/nodes/functions/VolumetricLightingModel.js +40 -7
- package/src/nodes/geometry/RangeNode.js +5 -3
- package/src/nodes/gpgpu/AtomicFunctionNode.js +1 -1
- package/src/nodes/gpgpu/BarrierNode.js +9 -0
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +2 -3
- package/src/nodes/gpgpu/ComputeNode.js +74 -48
- package/src/nodes/gpgpu/SubgroupFunctionNode.js +2 -2
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +5 -5
- package/src/nodes/lighting/AnalyticLightNode.js +53 -0
- package/src/nodes/lighting/EnvironmentNode.js +30 -5
- package/src/nodes/lighting/IESSpotLightNode.js +40 -2
- package/src/nodes/lighting/LightingContextNode.js +10 -2
- package/src/nodes/lighting/LightsNode.js +97 -65
- package/src/nodes/lighting/PointShadowNode.js +166 -148
- package/src/nodes/lighting/ShadowFilterNode.js +74 -117
- package/src/nodes/lighting/ShadowNode.js +149 -51
- package/src/nodes/materialx/lib/mx_noise.js +2 -2
- package/src/nodes/math/BitcastNode.js +1 -1
- package/src/nodes/math/BitcountNode.js +433 -0
- package/src/nodes/math/ConditionalNode.js +6 -6
- package/src/nodes/math/MathNode.js +115 -52
- package/src/nodes/math/OperatorNode.js +24 -23
- package/src/nodes/math/PackFloatNode.js +98 -0
- package/src/nodes/math/UnpackFloatNode.js +96 -0
- package/src/nodes/parsers/GLSLNodeFunction.js +1 -1
- package/src/nodes/pmrem/PMREMNode.js +34 -3
- package/src/nodes/pmrem/PMREMUtils.js +9 -15
- package/src/nodes/tsl/TSLBase.js +1 -1
- package/src/nodes/tsl/TSLCore.js +99 -33
- package/src/nodes/utils/ArrayElementNode.js +14 -1
- package/src/nodes/utils/ConvertNode.js +1 -1
- package/src/nodes/utils/DebugNode.js +12 -12
- package/src/nodes/utils/EquirectUV.js +30 -5
- package/src/nodes/utils/EventNode.js +31 -2
- package/src/nodes/utils/FlipNode.js +1 -1
- package/src/nodes/utils/FunctionOverloadingNode.js +2 -2
- package/src/nodes/utils/JoinNode.js +3 -3
- package/src/nodes/utils/LoopNode.js +1 -1
- package/src/nodes/utils/MemberNode.js +2 -2
- package/src/nodes/utils/Packing.js +48 -5
- package/src/nodes/utils/PostProcessingUtils.js +33 -1
- package/src/nodes/utils/RTTNode.js +41 -25
- package/src/nodes/utils/ReflectorNode.js +4 -4
- package/src/nodes/utils/Remap.js +48 -0
- package/src/nodes/utils/RotateNode.js +1 -1
- package/src/nodes/utils/SampleNode.js +1 -1
- package/src/nodes/utils/SetNode.js +1 -1
- package/src/nodes/utils/SplitNode.js +1 -1
- package/src/nodes/utils/SpriteSheetUV.js +35 -0
- package/src/nodes/utils/StorageArrayElementNode.js +1 -1
- package/src/nodes/utils/UVUtils.js +28 -0
- package/src/objects/BatchedMesh.js +66 -30
- package/src/objects/InstancedMesh.js +19 -3
- package/src/objects/Line.js +1 -1
- package/src/objects/Mesh.js +1 -1
- package/src/objects/Points.js +1 -1
- package/src/objects/SkinnedMesh.js +26 -9
- package/src/renderers/WebGLRenderer.js +344 -156
- package/src/renderers/common/Animation.js +3 -3
- package/src/renderers/common/Attributes.js +15 -1
- package/src/renderers/common/Backend.js +78 -13
- package/src/renderers/common/Background.js +26 -13
- package/src/renderers/common/BindGroup.js +1 -16
- package/src/renderers/common/Binding.js +11 -0
- package/src/renderers/common/Bindings.js +141 -57
- package/src/renderers/common/BlendMode.js +143 -0
- package/src/renderers/common/Buffer.js +49 -0
- package/src/renderers/common/BundleGroup.js +1 -1
- package/src/renderers/common/ChainMap.js +30 -6
- package/src/renderers/common/ClippingContext.js +10 -2
- package/src/renderers/common/ComputePipeline.js +1 -1
- package/src/renderers/common/CubeRenderTarget.js +51 -7
- package/src/renderers/common/Geometries.js +29 -3
- package/src/renderers/common/Info.js +374 -4
- package/src/renderers/common/InspectorBase.js +6 -1
- package/src/renderers/common/Lighting.js +51 -19
- package/src/renderers/common/Pipelines.js +40 -7
- package/src/renderers/common/PostProcessing.js +8 -206
- package/src/renderers/common/ReadbackBuffer.js +78 -0
- package/src/renderers/common/RenderBundle.js +3 -1
- package/src/renderers/common/RenderBundles.js +7 -3
- package/src/renderers/common/RenderContext.js +16 -0
- package/src/renderers/common/RenderContexts.js +33 -49
- package/src/renderers/common/RenderList.js +41 -4
- package/src/renderers/common/RenderLists.js +2 -1
- package/src/renderers/common/RenderObject.js +88 -16
- package/src/renderers/common/RenderObjectPipeline.js +40 -0
- package/src/renderers/common/RenderObjects.js +21 -5
- package/src/renderers/common/RenderPipeline.js +232 -17
- package/src/renderers/common/Renderer.js +700 -163
- package/src/renderers/common/Sampler.js +16 -48
- package/src/renderers/common/StorageBuffer.js +13 -1
- package/src/renderers/common/Textures.js +121 -9
- package/src/renderers/common/TimestampQueryPool.js +6 -4
- package/src/renderers/common/Uniform.js +8 -0
- package/src/renderers/common/UniformsGroup.js +84 -1
- package/src/renderers/common/XRManager.js +377 -51
- package/src/renderers/common/extras/PMREMGenerator.js +40 -61
- package/src/renderers/common/nodes/NodeBuilderState.js +10 -2
- package/src/renderers/common/nodes/NodeLibrary.js +4 -4
- package/src/renderers/common/nodes/{Nodes.js → NodeManager.js} +298 -106
- package/src/renderers/common/nodes/NodeStorageBuffer.js +13 -2
- package/src/renderers/common/nodes/NodeUniformBuffer.js +65 -0
- package/src/renderers/shaders/DFGLUTData.js +19 -34
- package/src/renderers/shaders/ShaderChunk/batching_pars_vertex.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/color_fragment.glsl.js +1 -5
- package/src/renderers/shaders/ShaderChunk/color_pars_fragment.glsl.js +1 -5
- package/src/renderers/shaders/ShaderChunk/color_pars_vertex.glsl.js +1 -5
- package/src/renderers/shaders/ShaderChunk/color_vertex.glsl.js +8 -10
- package/src/renderers/shaders/ShaderChunk/common.glsl.js +13 -4
- package/src/renderers/shaders/ShaderChunk/defaultnormal_vertex.glsl.js +0 -6
- package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +0 -1
- package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +9 -13
- package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/envmap_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/lightprobes_pars_fragment.glsl.js +80 -0
- package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +13 -2
- package/src/renderers/shaders/ShaderChunk/lights_fragment_end.glsl.js +6 -0
- package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +6 -2
- package/src/renderers/shaders/ShaderChunk/lights_pars_begin.glsl.js +3 -1
- package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +8 -4
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +112 -53
- package/src/renderers/shaders/ShaderChunk/normal_fragment_begin.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/normal_fragment_maps.glsl.js +7 -0
- package/src/renderers/shaders/ShaderChunk/normal_vertex.glsl.js +6 -0
- package/src/renderers/shaders/ShaderChunk/packing.glsl.js +20 -4
- package/src/renderers/shaders/ShaderChunk/premultiplied_alpha_fragment.glsl.js +0 -1
- package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +225 -186
- package/src/renderers/shaders/ShaderChunk/shadowmap_vertex.glsl.js +12 -2
- package/src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk.js +5 -3
- package/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +1 -2
- package/src/renderers/shaders/ShaderLib/depth.glsl.js +3 -0
- package/src/renderers/shaders/ShaderLib/{distanceRGBA.glsl.js → distance.glsl.js} +2 -3
- package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +2 -1
- package/src/renderers/shaders/ShaderLib/meshnormal.glsl.js +1 -2
- package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +2 -1
- package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +4 -9
- package/src/renderers/shaders/ShaderLib/meshtoon.glsl.js +0 -1
- package/src/renderers/shaders/ShaderLib/shadow.glsl.js +1 -1
- package/src/renderers/shaders/ShaderLib/vsm.glsl.js +4 -6
- package/src/renderers/shaders/ShaderLib.js +7 -6
- package/src/renderers/shaders/UniformsLib.js +7 -5
- package/src/renderers/shaders/UniformsUtils.js +27 -5
- package/src/renderers/webgl/WebGLAnimation.js +2 -1
- package/src/renderers/webgl/WebGLBackground.js +15 -15
- package/src/renderers/webgl/WebGLBindingStates.js +99 -27
- package/src/renderers/webgl/WebGLBufferRenderer.js +0 -32
- package/src/renderers/webgl/WebGLCapabilities.js +9 -4
- package/src/renderers/webgl/WebGLEnvironments.js +228 -0
- package/src/renderers/webgl/WebGLGeometries.js +10 -7
- package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +0 -32
- package/src/renderers/webgl/WebGLLights.js +18 -1
- package/src/renderers/webgl/WebGLMaterials.js +24 -13
- package/src/renderers/webgl/WebGLObjects.js +3 -1
- package/src/renderers/webgl/WebGLOutput.js +271 -0
- package/src/renderers/webgl/WebGLProgram.js +54 -113
- package/src/renderers/webgl/WebGLPrograms.js +74 -55
- package/src/renderers/webgl/WebGLRenderLists.js +24 -1
- package/src/renderers/webgl/WebGLRenderStates.js +13 -2
- package/src/renderers/webgl/WebGLShaderCache.js +5 -11
- package/src/renderers/webgl/WebGLShadowMap.js +188 -24
- package/src/renderers/webgl/WebGLState.js +75 -37
- package/src/renderers/webgl/WebGLTextures.js +230 -56
- package/src/renderers/webgl/WebGLUniforms.js +40 -3
- package/src/renderers/webgl/WebGLUniformsGroups.js +82 -35
- package/src/renderers/webgl/WebGLUtils.js +6 -2
- package/src/renderers/webgl-fallback/WebGLBackend.js +322 -92
- package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +0 -41
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +295 -66
- package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +53 -19
- package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +25 -0
- package/src/renderers/webgl-fallback/utils/WebGLState.js +223 -6
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +118 -73
- package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +10 -10
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +9 -3
- package/src/renderers/webgpu/WebGPUBackend.js +733 -302
- package/src/renderers/webgpu/WebGPURenderer.js +2 -1
- package/src/renderers/webgpu/descriptors/GPUBindGroupDescriptor.js +48 -0
- package/src/renderers/webgpu/descriptors/GPUBufferDescriptor.js +57 -0
- package/src/renderers/webgpu/descriptors/GPUCommandEncoderDescriptor.js +30 -0
- package/src/renderers/webgpu/descriptors/GPUComputePassDescriptor.js +38 -0
- package/src/renderers/webgpu/descriptors/GPUComputePipelineDescriptor.js +48 -0
- package/src/renderers/webgpu/descriptors/GPUCopyExternalImageDestInfo.js +47 -0
- package/src/renderers/webgpu/descriptors/GPUCopyExternalImageSourceInfo.js +50 -0
- package/src/renderers/webgpu/descriptors/GPUExtent3D.js +51 -0
- package/src/renderers/webgpu/descriptors/GPUPipelineLayoutDescriptor.js +39 -0
- package/src/renderers/webgpu/descriptors/GPUQuerySetDescriptor.js +47 -0
- package/src/renderers/webgpu/descriptors/GPURenderBundleEncoderDescriptor.js +74 -0
- package/src/renderers/webgpu/descriptors/GPURenderPassColorAttachment.js +72 -0
- package/src/renderers/webgpu/descriptors/GPURenderPassDepthStencilAttachment.js +99 -0
- package/src/renderers/webgpu/descriptors/GPURenderPassDescriptor.js +72 -0
- package/src/renderers/webgpu/descriptors/GPURenderPassTimestampWrites.js +49 -0
- package/src/renderers/webgpu/descriptors/GPURenderPipelineDescriptor.js +130 -0
- package/src/renderers/webgpu/descriptors/GPUSamplerDescriptor.js +119 -0
- package/src/renderers/webgpu/descriptors/GPUShaderModuleDescriptor.js +46 -0
- package/src/renderers/webgpu/descriptors/GPUTexelCopyBufferInfo.js +57 -0
- package/src/renderers/webgpu/descriptors/GPUTexelCopyBufferLayout.js +48 -0
- package/src/renderers/webgpu/descriptors/GPUTexelCopyTextureInfo.js +61 -0
- package/src/renderers/webgpu/descriptors/GPUTextureDescriptor.js +99 -0
- package/src/renderers/webgpu/descriptors/GPUTextureViewDescriptor.js +108 -0
- package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +0 -1
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +526 -93
- package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +1 -1
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +194 -61
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +395 -234
- package/src/renderers/webgpu/utils/WebGPUCapabilities.js +48 -0
- package/src/renderers/webgpu/utils/WebGPUConstants.js +10 -0
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +224 -91
- package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +228 -213
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +428 -175
- package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +40 -25
- package/src/renderers/webgpu/utils/WebGPUUtils.js +70 -13
- package/src/renderers/webxr/WebXRController.js +12 -0
- package/src/renderers/webxr/WebXRManager.js +4 -2
- package/src/textures/CubeDepthTexture.js +76 -0
- package/src/textures/DepthTexture.js +1 -1
- package/src/textures/ExternalTexture.js +0 -3
- package/src/textures/HTMLTexture.js +74 -0
- package/src/textures/Source.js +2 -2
- package/src/textures/Texture.js +16 -5
- package/src/utils.js +280 -3
- package/examples/fonts/LICENSE +0 -13
- package/examples/fonts/MPLUSRounded1c/MPLUSRounded1c-Regular.typeface.json.zip +0 -0
- package/examples/fonts/MPLUSRounded1c/OFL.txt +0 -91
- package/examples/fonts/README.md +0 -11
- package/examples/fonts/droid/NOTICE +0 -190
- package/examples/fonts/droid/README.txt +0 -18
- package/examples/fonts/droid/droid_sans_bold.typeface.json +0 -1
- package/examples/fonts/droid/droid_sans_mono_regular.typeface.json +0 -1
- package/examples/fonts/droid/droid_sans_regular.typeface.json +0 -1
- package/examples/fonts/droid/droid_serif_bold.typeface.json +0 -1
- package/examples/fonts/droid/droid_serif_regular.typeface.json +0 -1
- package/examples/fonts/gentilis_bold.typeface.json +0 -1
- package/examples/fonts/gentilis_regular.typeface.json +0 -1
- package/examples/fonts/helvetiker_bold.typeface.json +0 -1
- package/examples/fonts/helvetiker_regular.typeface.json +0 -1
- package/examples/fonts/optimer_bold.typeface.json +0 -1
- package/examples/fonts/optimer_regular.typeface.json +0 -1
- package/examples/fonts/ttf/README.md +0 -9
- package/examples/fonts/ttf/kenpixel.ttf +0 -0
- package/examples/jsm/libs/ammo.wasm.js +0 -822
- package/examples/jsm/libs/ammo.wasm.wasm +0 -0
- package/examples/jsm/libs/draco/draco_encoder.js +0 -33
- package/examples/jsm/libs/draco/gltf/draco_encoder.js +0 -33
- package/examples/jsm/libs/lottie_canvas.module.js +0 -14849
- package/examples/jsm/libs/opentype.module.js +0 -14506
- package/examples/jsm/libs/rhino3dm/rhino3dm.js +0 -21
- package/examples/jsm/libs/rhino3dm/rhino3dm.module.js +0 -16
- package/examples/jsm/libs/rhino3dm/rhino3dm.wasm +0 -0
- package/examples/jsm/lighting/TiledLighting.js +0 -42
- package/examples/jsm/materials/MeshGouraudMaterial.js +0 -434
- package/examples/jsm/materials/MeshPostProcessingMaterial.js +0 -167
- package/examples/jsm/shaders/GodRaysShader.js +0 -333
- package/examples/jsm/tsl/display/AnamorphicNode.js +0 -282
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +0 -442
- package/src/nodes/accessors/BatchNode.js +0 -163
- package/src/nodes/accessors/InstanceNode.js +0 -244
- package/src/nodes/accessors/InstancedMeshNode.js +0 -50
- package/src/nodes/accessors/SceneNode.js +0 -145
- package/src/nodes/accessors/SkinningNode.js +0 -327
- package/src/nodes/code/ScriptableNode.js +0 -726
- package/src/nodes/code/ScriptableValueNode.js +0 -253
- package/src/nodes/display/PosterizeNode.js +0 -65
- package/src/nodes/functions/BSDF/DFGApprox.js +0 -71
- package/src/nodes/utils/RemapNode.js +0 -125
- package/src/nodes/utils/SpriteSheetUVNode.js +0 -90
- package/src/renderers/webgl/WebGLCubeMaps.js +0 -99
- package/src/renderers/webgl/WebGLCubeUVMaps.js +0 -134
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import DataMap from './DataMap.js';
|
|
2
|
-
import
|
|
2
|
+
import RenderObjectPipeline from './RenderObjectPipeline.js';
|
|
3
3
|
import ComputePipeline from './ComputePipeline.js';
|
|
4
4
|
import ProgrammableStage from './ProgrammableStage.js';
|
|
5
5
|
|
|
@@ -15,9 +15,10 @@ class Pipelines extends DataMap {
|
|
|
15
15
|
* Constructs a new pipeline management component.
|
|
16
16
|
*
|
|
17
17
|
* @param {Backend} backend - The renderer's backend.
|
|
18
|
-
* @param {
|
|
18
|
+
* @param {NodeManager} nodes - Renderer component for managing nodes related logic.
|
|
19
|
+
* @param {Info} info - Renderer component for managing metrics and monitoring data.
|
|
19
20
|
*/
|
|
20
|
-
constructor( backend, nodes ) {
|
|
21
|
+
constructor( backend, nodes, info ) {
|
|
21
22
|
|
|
22
23
|
super();
|
|
23
24
|
|
|
@@ -31,10 +32,17 @@ class Pipelines extends DataMap {
|
|
|
31
32
|
/**
|
|
32
33
|
* Renderer component for managing nodes related logic.
|
|
33
34
|
*
|
|
34
|
-
* @type {
|
|
35
|
+
* @type {NodeManager}
|
|
35
36
|
*/
|
|
36
37
|
this.nodes = nodes;
|
|
37
38
|
|
|
39
|
+
/**
|
|
40
|
+
* Renderer component for managing metrics and monitoring data.
|
|
41
|
+
*
|
|
42
|
+
* @type {Info}
|
|
43
|
+
*/
|
|
44
|
+
this.info = info;
|
|
45
|
+
|
|
38
46
|
/**
|
|
39
47
|
* A references to the bindings management component.
|
|
40
48
|
* This reference will be set inside the `Bindings`
|
|
@@ -108,6 +116,7 @@ class Pipelines extends DataMap {
|
|
|
108
116
|
this.programs.compute.set( nodeBuilderState.computeShader, stageCompute );
|
|
109
117
|
|
|
110
118
|
backend.createProgram( stageCompute );
|
|
119
|
+
this.info.createProgram( stageCompute );
|
|
111
120
|
|
|
112
121
|
}
|
|
113
122
|
|
|
@@ -146,7 +155,7 @@ class Pipelines extends DataMap {
|
|
|
146
155
|
*
|
|
147
156
|
* @param {RenderObject} renderObject - The render object.
|
|
148
157
|
* @param {?Array<Promise>} [promises=null] - An array of compilation promises which is only relevant in context of `Renderer.compileAsync()`.
|
|
149
|
-
* @return {
|
|
158
|
+
* @return {RenderObjectPipeline} The render pipeline.
|
|
150
159
|
*/
|
|
151
160
|
getForRender( renderObject, promises = null ) {
|
|
152
161
|
|
|
@@ -184,6 +193,7 @@ class Pipelines extends DataMap {
|
|
|
184
193
|
this.programs.vertex.set( nodeBuilderState.vertexShader, stageVertex );
|
|
185
194
|
|
|
186
195
|
backend.createProgram( stageVertex );
|
|
196
|
+
this.info.createProgram( stageVertex );
|
|
187
197
|
|
|
188
198
|
}
|
|
189
199
|
|
|
@@ -197,6 +207,7 @@ class Pipelines extends DataMap {
|
|
|
197
207
|
this.programs.fragment.set( nodeBuilderState.fragmentShader, stageFragment );
|
|
198
208
|
|
|
199
209
|
backend.createProgram( stageFragment );
|
|
210
|
+
this.info.createProgram( stageFragment );
|
|
200
211
|
|
|
201
212
|
}
|
|
202
213
|
|
|
@@ -234,6 +245,26 @@ class Pipelines extends DataMap {
|
|
|
234
245
|
|
|
235
246
|
}
|
|
236
247
|
|
|
248
|
+
/**
|
|
249
|
+
* Checks if the render pipeline for the given render object is ready for drawing.
|
|
250
|
+
* Returns false if the GPU pipeline is still being compiled asynchronously.
|
|
251
|
+
*
|
|
252
|
+
* @param {RenderObject} renderObject - The render object.
|
|
253
|
+
* @return {boolean} True if the pipeline is ready for drawing.
|
|
254
|
+
*/
|
|
255
|
+
isReady( renderObject ) {
|
|
256
|
+
|
|
257
|
+
const data = this.get( renderObject );
|
|
258
|
+
const pipeline = data.pipeline;
|
|
259
|
+
|
|
260
|
+
if ( pipeline === undefined ) return false;
|
|
261
|
+
|
|
262
|
+
const pipelineData = this.backend.get( pipeline );
|
|
263
|
+
|
|
264
|
+
return pipelineData.pipeline !== undefined && pipelineData.pipeline !== null;
|
|
265
|
+
|
|
266
|
+
}
|
|
267
|
+
|
|
237
268
|
/**
|
|
238
269
|
* Deletes the pipeline for the given render object.
|
|
239
270
|
*
|
|
@@ -344,7 +375,7 @@ class Pipelines extends DataMap {
|
|
|
344
375
|
* @param {ProgrammableStage} stageFragment - The programmable stage representing the fragment shader.
|
|
345
376
|
* @param {string} cacheKey - The cache key.
|
|
346
377
|
* @param {?Array<Promise>} promises - An array of compilation promises which is only relevant in context of `Renderer.compileAsync()`.
|
|
347
|
-
* @return {
|
|
378
|
+
* @return {RenderObjectPipeline} The render pipeline.
|
|
348
379
|
*/
|
|
349
380
|
_getRenderPipeline( renderObject, stageVertex, stageFragment, cacheKey, promises ) {
|
|
350
381
|
|
|
@@ -356,7 +387,7 @@ class Pipelines extends DataMap {
|
|
|
356
387
|
|
|
357
388
|
if ( pipeline === undefined ) {
|
|
358
389
|
|
|
359
|
-
pipeline = new
|
|
390
|
+
pipeline = new RenderObjectPipeline( cacheKey, stageVertex, stageFragment );
|
|
360
391
|
|
|
361
392
|
this.caches.set( cacheKey, pipeline );
|
|
362
393
|
|
|
@@ -428,6 +459,8 @@ class Pipelines extends DataMap {
|
|
|
428
459
|
|
|
429
460
|
this.programs[ stage ].delete( code );
|
|
430
461
|
|
|
462
|
+
this.info.destroyProgram( program );
|
|
463
|
+
|
|
431
464
|
}
|
|
432
465
|
|
|
433
466
|
/**
|
|
@@ -1,223 +1,25 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { ColorManagement } from '../../math/ColorManagement.js';
|
|
3
|
-
import { vec4, renderOutput } from '../../nodes/TSL.js';
|
|
4
|
-
import { NoToneMapping } from '../../constants.js';
|
|
5
|
-
import QuadMesh from '../../renderers/common/QuadMesh.js';
|
|
1
|
+
import RenderPipeline from './RenderPipeline.js';
|
|
6
2
|
import { warnOnce } from '../../utils.js';
|
|
7
3
|
|
|
8
4
|
/**
|
|
9
|
-
*
|
|
10
|
-
* You usually create a single instance of this class and use it to define
|
|
11
|
-
* the output of your post processing effect chain.
|
|
12
|
-
* ```js
|
|
13
|
-
* const postProcessing = new PostProcessing( renderer );
|
|
5
|
+
* @deprecated since r183. Use {@link RenderPipeline} instead. PostProcessing has been renamed to RenderPipeline.
|
|
14
6
|
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
* postProcessing.outputNode = scenePass;
|
|
18
|
-
* ```
|
|
19
|
-
*
|
|
20
|
-
* Note: This module can only be used with `WebGPURenderer`.
|
|
7
|
+
* This class is a wrapper for backward compatibility and will be removed in a future version.
|
|
21
8
|
*/
|
|
22
|
-
class PostProcessing {
|
|
9
|
+
class PostProcessing extends RenderPipeline {
|
|
23
10
|
|
|
24
11
|
/**
|
|
25
12
|
* Constructs a new post processing management module.
|
|
26
13
|
*
|
|
27
14
|
* @param {Renderer} renderer - A reference to the renderer.
|
|
28
15
|
* @param {Node<vec4>} outputNode - An optional output node.
|
|
16
|
+
* @deprecated since r183. Use {@link RenderPipeline} instead.
|
|
29
17
|
*/
|
|
30
|
-
constructor( renderer, outputNode
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* A reference to the renderer.
|
|
34
|
-
*
|
|
35
|
-
* @type {Renderer}
|
|
36
|
-
*/
|
|
37
|
-
this.renderer = renderer;
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* A node which defines the final output of the post
|
|
41
|
-
* processing. This is usually the last node in a chain
|
|
42
|
-
* of effect nodes.
|
|
43
|
-
*
|
|
44
|
-
* @type {Node<vec4>}
|
|
45
|
-
*/
|
|
46
|
-
this.outputNode = outputNode;
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
* Whether the default output tone mapping and color
|
|
50
|
-
* space transformation should be enabled or not.
|
|
51
|
-
*
|
|
52
|
-
* It is enabled by default by it must be disabled when
|
|
53
|
-
* effects must be executed after tone mapping and color
|
|
54
|
-
* space conversion. A typical example is FXAA which
|
|
55
|
-
* requires sRGB input.
|
|
56
|
-
*
|
|
57
|
-
* When set to `false`, the app must control the output
|
|
58
|
-
* transformation with `RenderOutputNode`.
|
|
59
|
-
*
|
|
60
|
-
* ```js
|
|
61
|
-
* const outputPass = renderOutput( scenePass );
|
|
62
|
-
* ```
|
|
63
|
-
*
|
|
64
|
-
* @type {boolean}
|
|
65
|
-
*/
|
|
66
|
-
this.outputColorTransform = true;
|
|
67
|
-
|
|
68
|
-
/**
|
|
69
|
-
* Must be set to `true` when the output node changes.
|
|
70
|
-
*
|
|
71
|
-
* @type {Node<vec4>}
|
|
72
|
-
*/
|
|
73
|
-
this.needsUpdate = true;
|
|
74
|
-
|
|
75
|
-
const material = new NodeMaterial();
|
|
76
|
-
material.name = 'PostProcessing';
|
|
77
|
-
|
|
78
|
-
/**
|
|
79
|
-
* The full screen quad that is used to render
|
|
80
|
-
* the effects.
|
|
81
|
-
*
|
|
82
|
-
* @private
|
|
83
|
-
* @type {QuadMesh}
|
|
84
|
-
*/
|
|
85
|
-
this._quadMesh = new QuadMesh( material );
|
|
86
|
-
this._quadMesh.name = 'Post-Processing';
|
|
87
|
-
|
|
88
|
-
/**
|
|
89
|
-
* The context of the post processing stack.
|
|
90
|
-
*
|
|
91
|
-
* @private
|
|
92
|
-
* @type {?Object}
|
|
93
|
-
* @default null
|
|
94
|
-
*/
|
|
95
|
-
this._context = null;
|
|
96
|
-
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
/**
|
|
100
|
-
* When `PostProcessing` is used to apply post processing effects,
|
|
101
|
-
* the application must use this version of `render()` inside
|
|
102
|
-
* its animation loop (not the one from the renderer).
|
|
103
|
-
*/
|
|
104
|
-
render() {
|
|
105
|
-
|
|
106
|
-
const renderer = this.renderer;
|
|
107
|
-
|
|
108
|
-
this._update();
|
|
109
|
-
|
|
110
|
-
if ( this._context.onBeforePostProcessing !== null ) this._context.onBeforePostProcessing();
|
|
111
|
-
|
|
112
|
-
const toneMapping = renderer.toneMapping;
|
|
113
|
-
const outputColorSpace = renderer.outputColorSpace;
|
|
114
|
-
|
|
115
|
-
renderer.toneMapping = NoToneMapping;
|
|
116
|
-
renderer.outputColorSpace = ColorManagement.workingColorSpace;
|
|
117
|
-
|
|
118
|
-
//
|
|
119
|
-
|
|
120
|
-
const currentXR = renderer.xr.enabled;
|
|
121
|
-
renderer.xr.enabled = false;
|
|
122
|
-
|
|
123
|
-
this._quadMesh.render( renderer );
|
|
124
|
-
|
|
125
|
-
renderer.xr.enabled = currentXR;
|
|
126
|
-
|
|
127
|
-
//
|
|
128
|
-
|
|
129
|
-
renderer.toneMapping = toneMapping;
|
|
130
|
-
renderer.outputColorSpace = outputColorSpace;
|
|
131
|
-
|
|
132
|
-
if ( this._context.onAfterPostProcessing !== null ) this._context.onAfterPostProcessing();
|
|
133
|
-
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
/**
|
|
137
|
-
* Returns the current context of the post processing stack.
|
|
138
|
-
*
|
|
139
|
-
* @readonly
|
|
140
|
-
* @type {?Object}
|
|
141
|
-
*/
|
|
142
|
-
get context() {
|
|
143
|
-
|
|
144
|
-
return this._context;
|
|
145
|
-
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
/**
|
|
149
|
-
* Frees internal resources.
|
|
150
|
-
*/
|
|
151
|
-
dispose() {
|
|
152
|
-
|
|
153
|
-
this._quadMesh.material.dispose();
|
|
154
|
-
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
/**
|
|
158
|
-
* Updates the state of the module.
|
|
159
|
-
*
|
|
160
|
-
* @private
|
|
161
|
-
*/
|
|
162
|
-
_update() {
|
|
163
|
-
|
|
164
|
-
if ( this.needsUpdate === true ) {
|
|
165
|
-
|
|
166
|
-
const renderer = this.renderer;
|
|
167
|
-
|
|
168
|
-
const toneMapping = renderer.toneMapping;
|
|
169
|
-
const outputColorSpace = renderer.outputColorSpace;
|
|
170
|
-
|
|
171
|
-
const context = {
|
|
172
|
-
postProcessing: this,
|
|
173
|
-
onBeforePostProcessing: null,
|
|
174
|
-
onAfterPostProcessing: null
|
|
175
|
-
};
|
|
176
|
-
|
|
177
|
-
let outputNode = this.outputNode;
|
|
178
|
-
|
|
179
|
-
if ( this.outputColorTransform === true ) {
|
|
180
|
-
|
|
181
|
-
outputNode = outputNode.context( context );
|
|
182
|
-
|
|
183
|
-
outputNode = renderOutput( outputNode, toneMapping, outputColorSpace );
|
|
184
|
-
|
|
185
|
-
} else {
|
|
186
|
-
|
|
187
|
-
context.toneMapping = toneMapping;
|
|
188
|
-
context.outputColorSpace = outputColorSpace;
|
|
189
|
-
|
|
190
|
-
outputNode = outputNode.context( context );
|
|
191
|
-
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
this._context = context;
|
|
195
|
-
|
|
196
|
-
this._quadMesh.material.fragmentNode = outputNode;
|
|
197
|
-
this._quadMesh.material.needsUpdate = true;
|
|
198
|
-
|
|
199
|
-
this.needsUpdate = false;
|
|
200
|
-
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
/**
|
|
206
|
-
* When `PostProcessing` is used to apply post processing effects,
|
|
207
|
-
* the application must use this version of `renderAsync()` inside
|
|
208
|
-
* its animation loop (not the one from the renderer).
|
|
209
|
-
*
|
|
210
|
-
* @async
|
|
211
|
-
* @deprecated
|
|
212
|
-
* @return {Promise} A Promise that resolves when the render has been finished.
|
|
213
|
-
*/
|
|
214
|
-
async renderAsync() {
|
|
215
|
-
|
|
216
|
-
warnOnce( 'PostProcessing: "renderAsync()" has been deprecated. Use "render()" and "await renderer.init();" when creating the renderer.' ); // @deprecated r181
|
|
18
|
+
constructor( renderer, outputNode ) {
|
|
217
19
|
|
|
218
|
-
|
|
20
|
+
warnOnce( 'PostProcessing: "PostProcessing" has been renamed to "RenderPipeline". Please update your code to use "THREE.RenderPipeline" instead.' ); // @deprecated, r183
|
|
219
21
|
|
|
220
|
-
|
|
22
|
+
super( renderer, outputNode );
|
|
221
23
|
|
|
222
24
|
}
|
|
223
25
|
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { EventDispatcher } from '../../core/EventDispatcher.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* A readback buffer is used to transfer data from the GPU to the CPU.
|
|
5
|
+
* It is primarily used to read back compute shader results.
|
|
6
|
+
*
|
|
7
|
+
* @augments EventDispatcher
|
|
8
|
+
*/
|
|
9
|
+
class ReadbackBuffer extends EventDispatcher {
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Constructs a new readback buffer.
|
|
13
|
+
*
|
|
14
|
+
* @param {number} maxByteLength - The maximum size of the buffer to be read back.
|
|
15
|
+
*/
|
|
16
|
+
constructor( maxByteLength ) {
|
|
17
|
+
|
|
18
|
+
super();
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Name used for debugging purposes.
|
|
22
|
+
*
|
|
23
|
+
* @type {string}
|
|
24
|
+
*/
|
|
25
|
+
this.name = '';
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* The mapped, read back array buffer.
|
|
29
|
+
*
|
|
30
|
+
* @type {ArrayBuffer|null}
|
|
31
|
+
*/
|
|
32
|
+
this.buffer = null;
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* The maximum size of the buffer to be read back.
|
|
36
|
+
*
|
|
37
|
+
* @type {number}
|
|
38
|
+
*/
|
|
39
|
+
this.maxByteLength = maxByteLength;
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* This flag can be used for type testing.
|
|
43
|
+
*
|
|
44
|
+
* @type {boolean}
|
|
45
|
+
* @readonly
|
|
46
|
+
* @default true
|
|
47
|
+
*/
|
|
48
|
+
this.isReadbackBuffer = true;
|
|
49
|
+
|
|
50
|
+
this._mapped = false;
|
|
51
|
+
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Releases the mapped buffer data so the GPU buffer can be
|
|
56
|
+
* used by the GPU again.
|
|
57
|
+
*
|
|
58
|
+
* Note: Any `ArrayBuffer` data associated with this readback buffer
|
|
59
|
+
* are removed and no longer accessible after calling this method.
|
|
60
|
+
*/
|
|
61
|
+
release() {
|
|
62
|
+
|
|
63
|
+
this.dispatchEvent( { type: 'release' } );
|
|
64
|
+
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Frees internal resources.
|
|
69
|
+
*/
|
|
70
|
+
dispose() {
|
|
71
|
+
|
|
72
|
+
this.dispatchEvent( { type: 'dispose' } );
|
|
73
|
+
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
export default ReadbackBuffer;
|
|
@@ -11,11 +11,13 @@ class RenderBundle {
|
|
|
11
11
|
*
|
|
12
12
|
* @param {BundleGroup} bundleGroup - The bundle group.
|
|
13
13
|
* @param {Camera} camera - The camera the bundle group is rendered with.
|
|
14
|
+
* @param {RenderContext} renderContext - The render context the bundle is rendered with.
|
|
14
15
|
*/
|
|
15
|
-
constructor( bundleGroup, camera ) {
|
|
16
|
+
constructor( bundleGroup, camera, renderContext ) {
|
|
16
17
|
|
|
17
18
|
this.bundleGroup = bundleGroup;
|
|
18
19
|
this.camera = camera;
|
|
20
|
+
this.renderContext = renderContext;
|
|
19
21
|
|
|
20
22
|
}
|
|
21
23
|
|
|
@@ -29,25 +29,29 @@ class RenderBundles {
|
|
|
29
29
|
*
|
|
30
30
|
* @param {BundleGroup} bundleGroup - The bundle group.
|
|
31
31
|
* @param {Camera} camera - The camera the bundle group is rendered with.
|
|
32
|
+
* @param {RenderContext} renderContext - The render context the bundle is rendered with.
|
|
32
33
|
* @return {RenderBundle} The render bundle.
|
|
33
34
|
*/
|
|
34
|
-
get( bundleGroup, camera ) {
|
|
35
|
+
get( bundleGroup, camera, renderContext ) {
|
|
35
36
|
|
|
36
37
|
const bundles = this.bundles;
|
|
37
38
|
|
|
38
39
|
_chainKeys[ 0 ] = bundleGroup;
|
|
39
40
|
_chainKeys[ 1 ] = camera;
|
|
41
|
+
_chainKeys[ 2 ] = renderContext;
|
|
40
42
|
|
|
41
43
|
let bundle = bundles.get( _chainKeys );
|
|
42
44
|
|
|
43
45
|
if ( bundle === undefined ) {
|
|
44
46
|
|
|
45
|
-
bundle = new RenderBundle( bundleGroup, camera );
|
|
47
|
+
bundle = new RenderBundle( bundleGroup, camera, renderContext );
|
|
46
48
|
bundles.set( _chainKeys, bundle );
|
|
47
49
|
|
|
48
50
|
}
|
|
49
51
|
|
|
50
|
-
_chainKeys
|
|
52
|
+
_chainKeys[ 0 ] = null;
|
|
53
|
+
_chainKeys[ 1 ] = null;
|
|
54
|
+
_chainKeys[ 2 ] = null;
|
|
51
55
|
|
|
52
56
|
return bundle;
|
|
53
57
|
|
|
@@ -25,6 +25,14 @@ class RenderContext {
|
|
|
25
25
|
*/
|
|
26
26
|
this.id = _id ++;
|
|
27
27
|
|
|
28
|
+
/**
|
|
29
|
+
* The MRT configuration.
|
|
30
|
+
*
|
|
31
|
+
* @type {?MRTNode}
|
|
32
|
+
* @default null
|
|
33
|
+
*/
|
|
34
|
+
this.mrt = null;
|
|
35
|
+
|
|
28
36
|
/**
|
|
29
37
|
* Whether the current active framebuffer has a color attachment.
|
|
30
38
|
*
|
|
@@ -214,6 +222,14 @@ class RenderContext {
|
|
|
214
222
|
*/
|
|
215
223
|
this.clippingContext = null;
|
|
216
224
|
|
|
225
|
+
/**
|
|
226
|
+
* The current camera.
|
|
227
|
+
*
|
|
228
|
+
* @type {?Camera}
|
|
229
|
+
* @default null
|
|
230
|
+
*/
|
|
231
|
+
this.camera = null;
|
|
232
|
+
|
|
217
233
|
/**
|
|
218
234
|
* This flag can be used for type testing.
|
|
219
235
|
*
|
|
@@ -1,11 +1,4 @@
|
|
|
1
|
-
import ChainMap from './ChainMap.js';
|
|
2
1
|
import RenderContext from './RenderContext.js';
|
|
3
|
-
import { Scene } from '../../scenes/Scene.js';
|
|
4
|
-
import { Camera } from '../../cameras/Camera.js';
|
|
5
|
-
|
|
6
|
-
const _chainKeys = [];
|
|
7
|
-
const _defaultScene = /*@__PURE__*/ new Scene();
|
|
8
|
-
const _defaultCamera = /*@__PURE__*/ new Camera();
|
|
9
2
|
|
|
10
3
|
/**
|
|
11
4
|
* This module manages the render contexts of the renderer.
|
|
@@ -16,31 +9,38 @@ class RenderContexts {
|
|
|
16
9
|
|
|
17
10
|
/**
|
|
18
11
|
* Constructs a new render context management component.
|
|
12
|
+
*
|
|
13
|
+
* @param {Renderer} renderer - The renderer.
|
|
19
14
|
*/
|
|
20
|
-
constructor() {
|
|
15
|
+
constructor( renderer ) {
|
|
21
16
|
|
|
22
17
|
/**
|
|
23
|
-
*
|
|
24
|
-
* for each attachment state.
|
|
18
|
+
* The renderer.
|
|
25
19
|
*
|
|
26
|
-
* @type {
|
|
20
|
+
* @type {Renderer}
|
|
27
21
|
*/
|
|
28
|
-
this.
|
|
22
|
+
this.renderer = renderer;
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* A dictionary that manages render contexts.
|
|
26
|
+
*
|
|
27
|
+
* @type {Object<string,RenderContext>}
|
|
28
|
+
*/
|
|
29
|
+
this._renderContexts = {};
|
|
29
30
|
|
|
30
31
|
}
|
|
31
32
|
|
|
32
33
|
/**
|
|
33
34
|
* Returns a render context for the given scene, camera and render target.
|
|
34
35
|
*
|
|
35
|
-
* @param {Scene} scene - The scene.
|
|
36
|
-
* @param {Camera} camera - The camera that is used to render the scene.
|
|
37
36
|
* @param {?RenderTarget} [renderTarget=null] - The active render target.
|
|
37
|
+
* @param {?MRTNode} [mrt=null] - The MRT configuration
|
|
38
|
+
* @param {?number} [callDepth=0] - The call depth of the renderer.
|
|
38
39
|
* @return {RenderContext} The render context.
|
|
39
40
|
*/
|
|
40
|
-
get(
|
|
41
|
+
get( renderTarget = null, mrt = null, callDepth = 0 ) {
|
|
41
42
|
|
|
42
|
-
|
|
43
|
-
_chainKeys[ 1 ] = camera;
|
|
43
|
+
//
|
|
44
44
|
|
|
45
45
|
let attachmentState;
|
|
46
46
|
|
|
@@ -51,54 +51,38 @@ class RenderContexts {
|
|
|
51
51
|
} else {
|
|
52
52
|
|
|
53
53
|
const format = renderTarget.texture.format;
|
|
54
|
+
const type = renderTarget.texture.type;
|
|
54
55
|
const count = renderTarget.textures.length;
|
|
55
56
|
|
|
56
|
-
attachmentState = `${ count }:${ format }:${ renderTarget.samples }:${ renderTarget.depthBuffer }:${ renderTarget.stencilBuffer }`;
|
|
57
|
+
attachmentState = `${ count }:${ format }:${ type }:${ renderTarget.samples }:${ renderTarget.depthBuffer }:${ renderTarget.stencilBuffer }`;
|
|
57
58
|
|
|
58
59
|
}
|
|
59
60
|
|
|
60
|
-
|
|
61
|
+
//
|
|
62
|
+
|
|
63
|
+
const mrtState = ( mrt !== null ) ? mrt.id : 'default';
|
|
61
64
|
|
|
62
|
-
|
|
65
|
+
//
|
|
66
|
+
|
|
67
|
+
const renderStateKey = attachmentState + '-' + mrtState + '-' + callDepth;
|
|
68
|
+
|
|
69
|
+
let renderState = this._renderContexts[ renderStateKey ];
|
|
63
70
|
|
|
64
71
|
if ( renderState === undefined ) {
|
|
65
72
|
|
|
66
73
|
renderState = new RenderContext();
|
|
74
|
+
renderState.mrt = mrt;
|
|
67
75
|
|
|
68
|
-
|
|
76
|
+
this._renderContexts[ renderStateKey ] = renderState;
|
|
69
77
|
|
|
70
78
|
}
|
|
71
79
|
|
|
72
|
-
_chainKeys.length = 0;
|
|
73
|
-
|
|
74
80
|
if ( renderTarget !== null ) renderState.sampleCount = renderTarget.samples === 0 ? 1 : renderTarget.samples;
|
|
75
81
|
|
|
76
|
-
|
|
82
|
+
renderState.clearDepthValue = this.renderer.getClearDepth();
|
|
83
|
+
renderState.clearStencilValue = this.renderer.getClearStencil();
|
|
77
84
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
/**
|
|
81
|
-
* Returns a render context intended for clear operations.
|
|
82
|
-
*
|
|
83
|
-
* @param {?RenderTarget} [renderTarget=null] - The active render target.
|
|
84
|
-
* @return {RenderContext} The render context.
|
|
85
|
-
*/
|
|
86
|
-
getForClear( renderTarget = null ) {
|
|
87
|
-
|
|
88
|
-
return this.get( _defaultScene, _defaultCamera, renderTarget );
|
|
89
|
-
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
/**
|
|
93
|
-
* Returns a chain map for the given attachment state.
|
|
94
|
-
*
|
|
95
|
-
* @private
|
|
96
|
-
* @param {string} attachmentState - The attachment state.
|
|
97
|
-
* @return {ChainMap} The chain map.
|
|
98
|
-
*/
|
|
99
|
-
_getChainMap( attachmentState ) {
|
|
100
|
-
|
|
101
|
-
return this.chainMaps[ attachmentState ] || ( this.chainMaps[ attachmentState ] = new ChainMap() );
|
|
85
|
+
return renderState;
|
|
102
86
|
|
|
103
87
|
}
|
|
104
88
|
|
|
@@ -107,7 +91,7 @@ class RenderContexts {
|
|
|
107
91
|
*/
|
|
108
92
|
dispose() {
|
|
109
93
|
|
|
110
|
-
this.
|
|
94
|
+
this._renderContexts = {};
|
|
111
95
|
|
|
112
96
|
}
|
|
113
97
|
|