@unikia/upe-renderer 0.186.110 → 0.187.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -7
- package/UPSTREAM.md +4 -4
- package/build/three.core.js +853 -277
- package/build/three.module.js +1098 -1280
- package/build/three.tsl.js +41938 -686
- package/build/three.webgpu.js +10604 -49055
- package/build/three.webgpu.nodes.js +9249 -5788
- package/examples/jsm/Addons.js +2 -0
- package/examples/jsm/animation/CCDIKSolver.js +17 -5
- package/examples/jsm/controls/FirstPersonControls.js +1 -1
- package/examples/jsm/controls/OrbitControls.js +27 -14
- package/examples/jsm/csm/CSMShader.js +74 -3
- package/examples/jsm/curves/CurveExtras.js +4 -4
- package/examples/jsm/curves/NURBSCurve.js +14 -0
- package/examples/jsm/exporters/EXRExporter.js +673 -16
- package/examples/jsm/exporters/GLTFExporter.js +4 -4
- package/examples/jsm/exporters/KTX2Exporter.js +1 -1
- package/examples/jsm/exporters/OBJExporter.js +48 -5
- package/examples/jsm/exporters/PLYExporter.js +22 -11
- package/examples/jsm/generators/CityGenerator.js +3 -2
- package/examples/jsm/generators/city/SkyscraperGenerator.js +63 -21
- package/examples/jsm/gpgpu/BitonicSort.js +30 -23
- package/examples/jsm/helpers/VertexTangentsHelper.js +1 -1
- package/examples/jsm/inspector/Extension.js +1 -1
- package/examples/jsm/inspector/Inspector.js +6 -46
- package/examples/jsm/inspector/RendererInspector.js +43 -8
- package/examples/jsm/inspector/Storage.js +49 -0
- package/examples/jsm/inspector/extensions/color-grading/ColorGrading.js +32 -27
- package/examples/jsm/inspector/tabs/Parameters.js +5 -1
- package/examples/jsm/inspector/tabs/Performance.js +22 -7
- package/examples/jsm/inspector/tabs/Settings.js +1 -1
- package/examples/jsm/inspector/tabs/Timeline.js +83 -7
- package/examples/jsm/inspector/tabs/Viewer.js +25 -10
- package/examples/jsm/inspector/ui/Profiler.js +1 -1
- package/examples/jsm/inspector/ui/Style.js +21 -53
- package/examples/jsm/inspector/ui/Values.js +28 -3
- package/examples/jsm/libs/fflate.module.js +83 -56
- package/examples/jsm/libs/mikktspace.README.md +27 -0
- package/examples/jsm/libs/mikktspace.module.js +721 -109
- package/examples/jsm/lighting/ClusteredLighting.js +100 -2
- package/examples/jsm/lighting/LightMapper.js +295 -0
- package/examples/jsm/lighting/LightProbeGrid.js +242 -139
- package/examples/jsm/lighting/LightProbeGridWebGL.js +30 -14
- package/examples/jsm/lighting/vxgi/VXGIConeTracer.js +54 -5
- package/examples/jsm/lighting/vxgi/VXGIIrradiance.js +43 -0
- package/examples/jsm/lighting/vxgi/VXGINode.js +13 -56
- package/examples/jsm/lighting/vxgi/VXGISceneCollector.js +316 -1
- package/examples/jsm/lighting/vxgi/VXGIVolume.js +69 -59
- package/examples/jsm/lights/SunLight.js +9 -4
- package/examples/jsm/lights/SunLightNode.js +3 -3
- package/examples/jsm/lines/LineMaterial.js +26 -10
- package/examples/jsm/loaders/3DMLoader.js +10 -1
- package/examples/jsm/loaders/3MFLoader.js +5 -1
- package/examples/jsm/loaders/AMFLoader.js +2 -0
- package/examples/jsm/loaders/BVHLoader.js +2 -0
- package/examples/jsm/loaders/ColladaLoader.js +8 -0
- package/examples/jsm/loaders/DDSLoader.js +1 -1
- package/examples/jsm/loaders/DRACOLoader.js +5 -1
- package/examples/jsm/loaders/EXRLoader.js +120 -104
- package/examples/jsm/loaders/FBXLoader.js +4 -0
- package/examples/jsm/loaders/FontLoader.js +2 -0
- package/examples/jsm/loaders/GCodeLoader.js +5 -9
- package/examples/jsm/loaders/GLTFLoader.js +112 -31
- package/examples/jsm/loaders/GaussianSplatPLYLoader.js +2 -0
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +3 -0
- package/examples/jsm/loaders/IESLoader.js +46 -12
- package/examples/jsm/loaders/JXLLoader.js +159 -0
- package/examples/jsm/loaders/KMZLoader.js +6 -0
- package/examples/jsm/loaders/KSPLATLoader.js +2 -0
- package/examples/jsm/loaders/KTX2Loader.js +49 -4
- package/examples/jsm/loaders/KTXLoader.js +5 -3
- package/examples/jsm/loaders/LDrawLoader.js +15 -22
- package/examples/jsm/loaders/LUT3dlLoader.js +5 -1
- package/examples/jsm/loaders/LUTCubeLoader.js +6 -2
- package/examples/jsm/loaders/LUTImageLoader.js +2 -0
- package/examples/jsm/loaders/LWOLoader.js +6 -0
- package/examples/jsm/loaders/MD2Loader.js +2 -0
- package/examples/jsm/loaders/MDDLoader.js +4 -0
- package/examples/jsm/loaders/MTLLoader.js +8 -0
- package/examples/jsm/loaders/MaterialXLoader.js +57 -5
- package/examples/jsm/loaders/NRRDLoader.js +4 -2
- package/examples/jsm/loaders/OBJLoader.js +10 -4
- package/examples/jsm/loaders/PCDLoader.js +6 -2
- package/examples/jsm/loaders/PDBLoader.js +5 -3
- package/examples/jsm/loaders/PLYLoader.js +39 -15
- package/examples/jsm/loaders/PVRLoader.js +2 -2
- package/examples/jsm/loaders/SPLATLoader.js +2 -0
- package/examples/jsm/loaders/SPZLoader.js +2 -0
- package/examples/jsm/loaders/STLLoader.js +3 -1
- package/examples/jsm/loaders/SVGLoader.js +27 -49
- package/examples/jsm/loaders/TDSLoader.js +4 -0
- package/examples/jsm/loaders/TGALoader.js +6 -5
- package/examples/jsm/loaders/TTFLoader.js +2 -0
- package/examples/jsm/loaders/USDLoader.js +14 -0
- package/examples/jsm/loaders/UltraHDRLoader.js +2 -0
- package/examples/jsm/loaders/VOXLoader.js +3 -0
- package/examples/jsm/loaders/VRMLLoader.js +4 -0
- package/examples/jsm/loaders/VTKLoader.js +2 -0
- package/examples/jsm/loaders/XYZLoader.js +2 -0
- package/examples/jsm/loaders/collada/ColladaComposer.js +15 -8
- package/examples/jsm/loaders/materialx/MaterialXDocument.js +610 -138
- package/examples/jsm/loaders/materialx/MaterialXInterfaceValidation.js +12 -95
- package/examples/jsm/loaders/materialx/MaterialXLog.js +4 -0
- package/examples/jsm/loaders/materialx/MaterialXNodeDefs.js +99 -0
- package/examples/jsm/loaders/materialx/MaterialXNodeInterfaceRegistry.js +760 -1
- package/examples/jsm/loaders/materialx/MaterialXNodeLibrary.js +222 -372
- package/examples/jsm/loaders/materialx/MaterialXSurfaceMappings.js +163 -259
- package/examples/jsm/loaders/materialx/MaterialXUtils.js +25 -0
- package/examples/jsm/loaders/materialx/compile/MaterialXCompileRegistry.js +161 -159
- package/examples/jsm/loaders/usd/USDAParser.js +56 -47
- package/examples/jsm/loaders/usd/USDComposer.js +25 -30
- package/examples/jsm/math/ColorConverter.js +7 -3
- package/examples/jsm/math/Lut.js +2 -2
- package/examples/jsm/math/OBB.js +3 -3
- package/examples/jsm/math/Octree.js +20 -17
- package/examples/jsm/objects/GaussianSplat.js +5 -4
- package/examples/jsm/objects/Reflector.js +5 -0
- package/examples/jsm/objects/SkyMesh.js +14 -7
- package/examples/jsm/objects/Water2Mesh.js +2 -2
- package/examples/jsm/physics/RapierPhysics.js +2 -2
- package/examples/jsm/pipelines/MeshletDrawingPipeline.js +5571 -0
- package/examples/jsm/pipelines/VisibilityBufferDrawingPipeline.js +954 -0
- package/examples/jsm/postprocessing/BokehPass.js +1 -1
- package/examples/jsm/postprocessing/GTAOPass.js +26 -18
- package/examples/jsm/renderers/SVGRenderer.js +3 -2
- package/examples/jsm/shaders/GTAOShader.js +7 -4
- package/examples/jsm/shaders/PoissonDenoiseShader.js +1 -10
- package/examples/jsm/tsl/WebGLNodesHandler.js +21 -9
- package/examples/jsm/tsl/display/AfterImageNode.js +3 -3
- package/examples/jsm/tsl/display/BilateralBlurNode.js +3 -3
- package/examples/jsm/tsl/display/BloomNode.js +3 -3
- package/examples/jsm/tsl/display/ChromaticAberrationNode.js +8 -19
- package/examples/jsm/tsl/display/DenoiseNode.js +5 -5
- package/examples/jsm/tsl/display/DepthOfFieldNode.js +3 -3
- package/examples/jsm/tsl/display/DotScreenNode.js +3 -3
- package/examples/jsm/tsl/display/FSR1Node.js +3 -3
- package/examples/jsm/tsl/display/FXAANode.js +3 -10
- package/examples/jsm/tsl/display/FilmNode.js +3 -3
- package/examples/jsm/tsl/display/GTAONode.js +33 -25
- package/examples/jsm/tsl/display/GaussianBlurNode.js +3 -3
- package/examples/jsm/tsl/display/GodraysNode.js +5 -19
- package/examples/jsm/tsl/display/ImportanceSampledEnvironment.js +8 -4
- package/examples/jsm/tsl/display/LensflareNode.js +3 -3
- package/examples/jsm/tsl/display/Lut3DNode.js +3 -3
- package/examples/jsm/tsl/display/OITPassNode.js +0 -11
- package/examples/jsm/tsl/display/OutlineNode.js +107 -5
- package/examples/jsm/tsl/display/PixelationPassNode.js +85 -193
- package/examples/jsm/tsl/display/RGBShiftNode.js +3 -3
- package/examples/jsm/tsl/display/RecurrentDenoiseNode.js +23 -126
- package/examples/jsm/tsl/display/SMAANode.js +3 -3
- package/examples/jsm/tsl/display/SSAONode.js +6 -20
- package/examples/jsm/tsl/display/SSGINode.js +36 -29
- package/examples/jsm/tsl/display/SSRNode.js +135 -63
- package/examples/jsm/tsl/display/SSSNode.js +6 -20
- package/examples/jsm/tsl/display/SharpenNode.js +3 -3
- package/examples/jsm/tsl/display/SobelOperatorNode.js +3 -3
- package/examples/jsm/tsl/display/TAAUNode.js +10 -42
- package/examples/jsm/tsl/display/TRAANode.js +11 -43
- package/examples/jsm/tsl/display/TemporalReprojectNode.js +42 -47
- package/examples/jsm/tsl/display/TransitionNode.js +3 -3
- package/examples/jsm/tsl/display/lensDirt.js +30 -0
- package/examples/jsm/tsl/lighting/ClusteredLightsNode.js +482 -121
- package/examples/jsm/tsl/lighting/DynamicLightsNode.js +41 -140
- package/examples/jsm/tsl/lighting/LightProbeGridNode.js +72 -25
- package/examples/jsm/tsl/lighting/data/AmbientLightDataNode.js +6 -0
- package/examples/jsm/tsl/lighting/data/DirectionalLightDataNode.js +6 -0
- package/examples/jsm/tsl/lighting/data/HemisphereLightDataNode.js +6 -0
- package/examples/jsm/tsl/lighting/data/PointLightDataNode.js +6 -0
- package/examples/jsm/tsl/lighting/data/SpotLightDataNode.js +6 -0
- package/examples/jsm/tsl/shadows/TileShadowNode.js +102 -14
- package/examples/jsm/tsl/utils/Raymarching.js +1 -1
- package/examples/jsm/tsl/utils/SoftParticles.js +5 -12
- package/examples/jsm/tsl/utils/SpecularHelpers.js +47 -70
- package/examples/jsm/tsl/utils/TAAUtils.js +6 -17
- package/examples/jsm/utils/BufferGeometryUtils.js +110 -88
- package/examples/jsm/utils/MeshletGeometryUtils.js +417 -0
- package/examples/jsm/utils/SceneOptimizer.js +2 -1
- package/examples/jsm/utils/SceneUtils.js +1 -1
- package/examples/jsm/utils/unwrapUVs.js +865 -0
- package/examples/jsm/webxr/XREstimatedLight.js +11 -4
- package/package.json +3 -3
- package/src/Three.TSL.js +2 -683
- package/src/Three.WebGPU.Nodes.js +2 -1
- package/src/Three.WebGPU.js +2 -1
- package/src/animation/AnimationAction.js +1 -1
- package/src/animation/AnimationUtils.js +1 -3
- package/src/animation/KeyframeTrack.js +19 -0
- package/src/cameras/ArrayCamera.js +12 -0
- package/src/cameras/CubeCamera.js +3 -3
- package/src/constants.js +1 -9
- package/src/core/BufferAttribute.js +57 -21
- package/src/core/BufferGeometry.js +5 -13
- package/src/core/Clock.js +1 -1
- package/src/core/InterleavedBuffer.js +28 -18
- package/src/core/InterleavedBufferAttribute.js +54 -20
- package/src/core/Object3D.js +19 -9
- package/src/core/Raycaster.js +2 -0
- package/src/core/RenderTarget.js +11 -5
- package/src/core/UniformsGroup.js +7 -3
- package/src/extras/PMREMGenerator.js +392 -685
- package/src/extras/core/Curve.js +4 -0
- package/src/extras/core/CurvePath.js +13 -0
- package/src/extras/core/ShapePath.js +1 -1
- package/src/geometries/EdgesGeometry.js +12 -10
- package/src/geometries/LatheGeometry.js +2 -0
- package/src/helpers/PolarGridHelper.js +1 -1
- package/src/lights/Light.js +11 -0
- package/src/lights/LightProbe.js +2 -0
- package/src/lights/LightShadow.js +2 -0
- package/src/loaders/AnimationLoader.js +2 -0
- package/src/loaders/AudioLoader.js +2 -0
- package/src/loaders/BufferGeometryLoader.js +2 -0
- package/src/loaders/CompressedTextureLoader.js +2 -0
- package/src/loaders/CubeTextureLoader.js +2 -0
- package/src/loaders/DataTextureLoader.js +2 -0
- package/src/loaders/FileLoader.js +2 -0
- package/src/loaders/ImageBitmapLoader.js +3 -1
- package/src/loaders/ImageLoader.js +1 -0
- package/src/loaders/Loader.js +47 -0
- package/src/loaders/MaterialLoader.js +2 -0
- package/src/loaders/ObjectLoader.js +27 -8
- package/src/loaders/TextureLoader.js +5 -3
- package/src/loaders/nodes/NodeLoader.js +2 -0
- package/src/materials/Material.js +21 -2
- package/src/materials/MeshDepthMaterial.js +1 -1
- package/src/materials/MeshDistanceMaterial.js +1 -1
- package/src/materials/MeshLambertMaterial.js +1 -1
- package/src/materials/MeshMatcapMaterial.js +1 -1
- package/src/materials/MeshNormalMaterial.js +1 -1
- package/src/materials/MeshPhongMaterial.js +1 -1
- package/src/materials/MeshPhysicalMaterial.js +90 -11
- package/src/materials/MeshStandardMaterial.js +1 -1
- package/src/materials/MeshToonMaterial.js +1 -1
- package/src/materials/nodes/Line2NodeMaterial.js +32 -10
- package/src/materials/nodes/MeshLambertNodeMaterial.js +13 -0
- package/src/materials/nodes/MeshPhongNodeMaterial.js +13 -0
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +40 -5
- package/src/materials/nodes/MeshToonNodeMaterial.js +13 -0
- package/src/materials/nodes/NodeMaterial.js +36 -16
- package/src/materials/nodes/NodeMaterialInstance.js +193 -0
- package/src/materials/nodes/NodeMaterials.js +1 -0
- package/src/materials/nodes/PointsNodeMaterial.js +1 -1
- package/src/materials/nodes/SpriteNodeMaterial.js +3 -3
- package/src/materials/nodes/manager/NodeMaterialObserver.js +191 -22
- package/src/math/Box3.js +2 -2
- package/src/math/Color.js +8 -8
- package/src/math/ColorManagement.js +2 -21
- package/src/math/FrustumArray.js +12 -0
- package/src/math/Interpolant.js +1 -1
- package/src/math/Line3.js +2 -4
- package/src/math/MathUtils.js +33 -46
- package/src/math/Matrix2.js +1 -1
- package/src/math/Matrix3.js +1 -1
- package/src/math/Matrix4.js +1 -1
- package/src/math/Triangle.js +2 -1
- package/src/math/Vector2.js +1 -1
- package/src/math/Vector3.js +1 -1
- package/src/math/Vector4.js +1 -1
- package/src/nodes/Nodes.js +1 -0
- package/src/nodes/TSL.js +2 -0
- package/src/nodes/accessors/Arrays.js +1 -1
- package/src/nodes/accessors/Batch.js +29 -23
- package/src/nodes/accessors/BufferAttributeNode.js +21 -1
- package/src/nodes/accessors/BuiltinNode.js +6 -0
- package/src/nodes/accessors/Camera.js +100 -93
- package/src/nodes/accessors/ClippingNode.js +17 -6
- package/src/nodes/accessors/CubeTextureNode.js +12 -24
- package/src/nodes/accessors/Instance.js +198 -160
- package/src/nodes/accessors/Lights.js +19 -6
- package/src/nodes/accessors/MaterialNode.js +33 -4
- package/src/nodes/accessors/Morph.js +81 -22
- package/src/nodes/accessors/Normal.js +0 -42
- package/src/nodes/accessors/Object3DNode.js +6 -0
- package/src/nodes/accessors/PointUVNode.js +6 -0
- package/src/nodes/accessors/ReferenceAttributeNode.js +279 -0
- package/src/nodes/accessors/ReferenceBaseNode.js +6 -0
- package/src/nodes/accessors/ReferenceNode.js +6 -0
- package/src/nodes/accessors/Skinning.js +57 -52
- package/src/nodes/accessors/StorageBufferNode.js +3 -12
- package/src/nodes/accessors/TextureBicubic.js +30 -27
- package/src/nodes/accessors/TextureNode.js +164 -78
- package/src/nodes/accessors/TextureSizeNode.js +6 -0
- package/src/nodes/accessors/UniformArrayNode.js +8 -15
- package/src/nodes/accessors/VelocityNode.js +13 -8
- package/src/nodes/code/CodeNode.js +6 -0
- package/src/nodes/code/ExpressionNode.js +6 -0
- package/src/nodes/code/FunctionCallNode.js +3 -3
- package/src/nodes/code/FunctionNode.js +15 -13
- package/src/nodes/core/ArrayNode.js +3 -3
- package/src/nodes/core/AssignNode.js +10 -9
- package/src/nodes/core/AttributeNode.js +39 -0
- package/src/nodes/core/BypassNode.js +6 -0
- package/src/nodes/core/ConstNode.js +31 -1
- package/src/nodes/core/ContextNode.js +11 -6
- package/src/nodes/core/IndexNode.js +6 -0
- package/src/nodes/core/InputNode.js +6 -0
- package/src/nodes/core/InspectorNode.js +17 -31
- package/src/nodes/core/IsolateNode.js +8 -0
- package/src/nodes/core/Node.js +367 -67
- package/src/nodes/core/NodeBuilder.js +664 -222
- package/src/nodes/core/NodeUtils.js +25 -0
- package/src/nodes/core/NodeVar.js +10 -1
- package/src/nodes/core/OutputStructNode.js +6 -0
- package/src/nodes/core/OverrideContextNode.js +38 -37
- package/src/nodes/core/PropertyNode.js +14 -0
- package/src/nodes/core/StackNode.js +33 -21
- package/src/nodes/core/StructNode.js +6 -0
- package/src/nodes/core/StructTypeNode.js +6 -0
- package/src/nodes/core/SubBuildNode.js +8 -0
- package/src/nodes/core/TempNode.js +10 -35
- package/src/nodes/core/UniformGroupNode.js +6 -0
- package/src/nodes/core/VarNode.js +43 -135
- package/src/nodes/core/VaryingNode.js +33 -2
- package/src/nodes/display/BlendModes.js +5 -40
- package/src/nodes/display/BumpMapNode.js +17 -7
- package/src/nodes/display/ColorAdjustment.js +22 -10
- package/src/nodes/display/ColorSpaceFunctions.js +2 -14
- package/src/nodes/display/ColorSpaceNode.js +3 -3
- package/src/nodes/display/FrontFacingNode.js +6 -0
- package/src/nodes/display/NormalMapNode.js +3 -3
- package/src/nodes/display/PassNode.js +75 -16
- package/src/nodes/display/RenderOutputNode.js +22 -5
- package/src/nodes/display/ScreenNode.js +6 -0
- package/src/nodes/display/ToneMappingFunctions.js +9 -51
- package/src/nodes/display/ToneMappingNode.js +3 -3
- package/src/nodes/display/ToonOutlinePassNode.js +66 -2
- package/src/nodes/display/ViewportDepthNode.js +34 -4
- package/src/nodes/functions/BSDF/BRDF_EON.js +65 -0
- package/src/nodes/functions/BSDF/BRDF_GGX.js +5 -3
- package/src/nodes/functions/BSDF/BRDF_Sheen.js +2 -16
- package/src/nodes/functions/BSDF/D_GGX.js +1 -8
- package/src/nodes/functions/BSDF/D_GGX_Anisotropic.js +7 -10
- package/src/nodes/functions/BSDF/LTC.js +20 -47
- package/src/nodes/functions/BSDF/Schlick_to_F0.js +1 -9
- package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +1 -9
- package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +10 -13
- package/src/nodes/functions/PhysicalLightingModel.js +84 -51
- package/src/nodes/functions/VolumetricLightingModel.js +1 -1
- package/src/nodes/functions/material/getAlphaHashThreshold.js +3 -9
- package/src/nodes/functions/material/getParallaxCorrectNormal.js +10 -11
- package/src/nodes/functions/material/getRoughness.js +3 -1
- package/src/nodes/geometry/RangeNode.js +52 -69
- package/src/nodes/gpgpu/AtomicFunctionNode.js +11 -6
- package/src/nodes/gpgpu/BarrierNode.js +6 -0
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +6 -0
- package/src/nodes/gpgpu/ComputeNode.js +6 -0
- package/src/nodes/gpgpu/SubgroupFunctionNode.js +38 -29
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +6 -0
- package/src/nodes/lighting/AnalyticLightNode.js +7 -14
- package/src/nodes/lighting/BasicEnvironmentNode.js +5 -1
- package/src/nodes/lighting/EnvironmentNode.js +58 -8
- package/src/nodes/lighting/IESSpotLightNode.js +19 -4
- package/src/nodes/lighting/LightProbeNode.js +2 -1
- package/src/nodes/lighting/LightUtils.js +2 -2
- package/src/nodes/lighting/LightingNode.js +6 -0
- package/src/nodes/lighting/LightsNode.js +26 -32
- package/src/nodes/lighting/PointShadowNode.js +92 -48
- package/src/nodes/lighting/ProjectorLightNode.js +1 -1
- package/src/nodes/lighting/RectAreaLightNode.js +13 -14
- package/src/nodes/lighting/ShadowBaseNode.js +9 -17
- package/src/nodes/lighting/ShadowFilterNode.js +26 -3
- package/src/nodes/lighting/ShadowNode.js +13 -11
- package/src/nodes/materialx/MaterialXColor.js +2 -14
- package/src/nodes/materialx/MaterialXColorTransform.js +1 -7
- package/src/nodes/materialx/MaterialXNodes.js +8 -11
- package/src/nodes/materialx/MaterialXNoise.js +195 -454
- package/src/nodes/math/BitcastNode.js +5 -5
- package/src/nodes/math/BitcountNode.js +18 -46
- package/src/nodes/math/ConditionalNode.js +92 -22
- package/src/nodes/math/Hash.js +1 -1
- package/src/nodes/math/MathNode.js +86 -64
- package/src/nodes/math/MathUtils.js +2 -2
- package/src/nodes/math/OperatorNode.js +42 -59
- package/src/nodes/math/PackFloatNode.js +9 -9
- package/src/nodes/math/Packed4x8IntegerNode.js +20 -52
- package/src/nodes/math/TriNoise3D.js +3 -23
- package/src/nodes/math/UnpackFloatNode.js +9 -9
- package/src/nodes/pmrem/PMREMNode.js +38 -75
- package/src/nodes/pmrem/PMREMUtils.js +108 -272
- package/src/nodes/procedural/Checker.js +1 -1
- package/src/nodes/tsl/TSLCore.js +199 -74
- package/src/nodes/utils/ArrayElementNode.js +19 -1
- package/src/nodes/utils/CubeMapNode.js +3 -3
- package/src/nodes/utils/DebugNode.js +2 -2
- package/src/nodes/utils/EventNode.js +6 -0
- package/src/nodes/utils/FlipNode.js +3 -3
- package/src/nodes/utils/FunctionOverloadingNode.js +7 -1
- package/src/nodes/utils/JoinNode.js +3 -3
- package/src/nodes/utils/LoopNode.js +14 -9
- package/src/nodes/utils/MemberNode.js +18 -0
- package/src/nodes/utils/PostProcessingUtils.js +20 -25
- package/src/nodes/utils/RTTNode.js +2 -0
- package/src/nodes/utils/ReflectorNode.js +24 -0
- package/src/nodes/utils/RotateNode.js +3 -3
- package/src/nodes/utils/SampleNode.js +6 -0
- package/src/nodes/utils/SetNode.js +3 -3
- package/src/nodes/utils/SplitNode.js +6 -0
- package/src/nodes/utils/UVUtils.js +2 -2
- package/src/objects/BatchedMesh.js +146 -15
- package/src/objects/InstancedMesh.js +12 -4
- package/src/objects/Line.js +20 -0
- package/src/objects/Mesh.js +8 -0
- package/src/objects/Points.js +20 -0
- package/src/objects/Skeleton.js +26 -0
- package/src/objects/SkinnedMesh.js +3 -3
- package/src/objects/Sprite.js +10 -0
- package/src/renderers/WebGLRenderer.js +104 -70
- package/src/renderers/common/Animation.js +5 -1
- package/src/renderers/common/Attributes.js +67 -57
- package/src/renderers/common/Backend.js +78 -3
- package/src/renderers/common/BindGroup.js +11 -0
- package/src/renderers/common/Binding.js +0 -11
- package/src/renderers/common/Bindings.js +116 -10
- package/src/renderers/common/Buffer.js +1 -1
- package/src/renderers/common/ClippingContext.js +12 -1
- package/src/renderers/common/ComputePipeline.js +17 -1
- package/src/renderers/common/DirectRenderPipeline.js +7 -3
- package/src/renderers/common/Geometries.js +170 -132
- package/src/renderers/common/Info.js +1 -1
- package/src/renderers/common/InspectorBase.js +5 -5
- package/src/renderers/common/Lighting.js +59 -0
- package/src/renderers/common/Pipelines.js +26 -12
- package/src/renderers/common/ProgrammableStage.js +1 -17
- package/src/renderers/common/RenderContext.js +21 -0
- package/src/renderers/common/RenderContexts.js +13 -4
- package/src/renderers/common/RenderObject.js +111 -35
- package/src/renderers/common/RenderObjects.js +37 -19
- package/src/renderers/common/Renderer.js +537 -295
- package/src/renderers/common/RendererUtils.js +15 -0
- package/src/renderers/common/StandardDrawingPipeline.js +343 -0
- package/src/renderers/common/Storage3DTexture.js +11 -0
- package/src/renderers/common/StorageArrayTexture.js +10 -0
- package/src/renderers/common/StorageTexture.js +0 -9
- package/src/renderers/common/Textures.js +144 -37
- package/src/renderers/common/UniformsGroup.js +19 -0
- package/src/renderers/common/XRManager.js +10 -91
- package/src/renderers/common/extras/PMREMGenerator.js +298 -576
- package/src/renderers/common/nodes/NodeBuilderState.js +7 -5
- package/src/renderers/common/nodes/NodeLibrary.js +11 -35
- package/src/renderers/common/nodes/NodeManager.js +80 -31
- package/src/renderers/common/nodes/NodeSampledTexture.js +14 -0
- package/src/renderers/common/nodes/NodeSampler.js +14 -0
- package/src/renderers/common/nodes/NodeStorageBuffer.js +1 -1
- package/src/renderers/common/nodes/NodeUniformBuffer.js +1 -14
- package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +13 -4
- package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +8 -8
- package/src/renderers/shaders/ShaderChunk/lightprobes_pars_fragment.glsl.js +23 -11
- package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +21 -2
- package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +18 -2
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +104 -7
- package/src/renderers/shaders/ShaderChunk/morphcolor_vertex.glsl.js +11 -2
- package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +36 -20
- package/src/renderers/shaders/ShaderChunk/uv_pars_fragment.glsl.js +5 -0
- package/src/renderers/shaders/ShaderChunk/uv_pars_vertex.glsl.js +6 -0
- package/src/renderers/shaders/ShaderChunk/uv_vertex.glsl.js +5 -0
- package/src/renderers/shaders/ShaderChunk.js +0 -2
- package/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +4 -18
- package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +0 -1
- package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +0 -1
- package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +8 -1
- package/src/renderers/shaders/ShaderLib.js +3 -0
- package/src/renderers/shaders/UniformsLib.js +4 -5
- package/src/renderers/webgl/WebGLBackground.js +3 -3
- package/src/renderers/webgl/WebGLBindingStates.js +4 -2
- package/src/renderers/webgl/WebGLCapabilities.js +7 -1
- package/src/renderers/webgl/WebGLEnvironments.js +2 -2
- package/src/renderers/webgl/WebGLGeometries.js +42 -14
- package/src/renderers/webgl/WebGLMaterials.js +15 -2
- package/src/renderers/webgl/WebGLOutput.js +37 -1
- package/src/renderers/webgl/WebGLProgram.js +13 -54
- package/src/renderers/webgl/WebGLPrograms.js +22 -8
- package/src/renderers/webgl/WebGLRenderStates.js +11 -8
- package/src/renderers/webgl/WebGLShadowMap.js +6 -4
- package/src/renderers/webgl/WebGLState.js +10 -6
- package/src/renderers/webgl/WebGLTextures.js +129 -77
- package/src/renderers/webgl/WebGLUniforms.js +44 -6
- package/src/renderers/webgl/WebGLUniformsGroups.js +75 -69
- package/src/renderers/webgl-fallback/WebGLBackend.js +206 -278
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +154 -20
- package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +45 -42
- package/src/renderers/webgl-fallback/utils/WebGLState.js +29 -4
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +129 -49
- package/src/renderers/webgl-fallback/utils/WebGLVertexArrayUtils.js +346 -0
- package/src/renderers/webgpu/WebGPUBackend.js +140 -82
- package/src/renderers/webgpu/WebGPURenderer.js +1 -1
- package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +10 -10
- package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +10 -10
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +135 -60
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +128 -55
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +1 -1
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +15 -12
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +55 -19
- package/src/renderers/webgpu/utils/WebGPUUtils.js +20 -3
- package/src/renderers/webxr/WebXRController.js +3 -3
- package/src/renderers/webxr/WebXRManager.js +5 -90
- package/src/scenes/Scene.js +4 -4
- package/src/textures/CompressedTexture.js +2 -2
- package/src/textures/DepthTexture.js +2 -2
- package/src/textures/FramebufferTexture.js +11 -0
- package/src/textures/Texture.js +29 -1
- package/src/textures/TextureSource.js +1 -1
- package/src/upe.js +1 -1
- package/src/utils.js +4 -4
- package/examples/jsm/libs/surfaceNet.js +0 -201
- package/src/renderers/shaders/ShaderChunk/cube_uv_reflection_fragment.glsl.js +0 -186
|
@@ -5,9 +5,15 @@ function WebGLGeometries( gl, attributes, info, bindingStates ) {
|
|
|
5
5
|
const geometries = {};
|
|
6
6
|
const wireframeAttributes = new WeakMap();
|
|
7
7
|
|
|
8
|
+
const registry = new FinalizationRegistry( ( id ) => delete geometries[ id ] );
|
|
9
|
+
|
|
8
10
|
function onGeometryDispose( event ) {
|
|
9
11
|
|
|
10
|
-
|
|
12
|
+
destroyGeometry( event.target );
|
|
13
|
+
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
function destroyGeometry( geometry ) {
|
|
11
17
|
|
|
12
18
|
if ( geometry.index !== null ) {
|
|
13
19
|
|
|
@@ -24,6 +30,7 @@ function WebGLGeometries( gl, attributes, info, bindingStates ) {
|
|
|
24
30
|
geometry.removeEventListener( 'dispose', onGeometryDispose );
|
|
25
31
|
|
|
26
32
|
delete geometries[ geometry.id ];
|
|
33
|
+
registry.unregister( geometry );
|
|
27
34
|
|
|
28
35
|
const attribute = wireframeAttributes.get( geometry );
|
|
29
36
|
|
|
@@ -50,11 +57,12 @@ function WebGLGeometries( gl, attributes, info, bindingStates ) {
|
|
|
50
57
|
|
|
51
58
|
function get( object, geometry ) {
|
|
52
59
|
|
|
53
|
-
if ( geometries[ geometry.id ]
|
|
60
|
+
if ( geometries[ geometry.id ] !== undefined ) return geometry;
|
|
54
61
|
|
|
55
62
|
geometry.addEventListener( 'dispose', onGeometryDispose );
|
|
56
63
|
|
|
57
|
-
geometries[ geometry.id ] =
|
|
64
|
+
geometries[ geometry.id ] = new WeakRef( geometry );
|
|
65
|
+
registry.register( geometry, geometry.id, geometry );
|
|
58
66
|
|
|
59
67
|
info.memory.geometries ++;
|
|
60
68
|
|
|
@@ -78,8 +86,6 @@ function WebGLGeometries( gl, attributes, info, bindingStates ) {
|
|
|
78
86
|
|
|
79
87
|
function updateWireframeAttribute( geometry ) {
|
|
80
88
|
|
|
81
|
-
const indices = [];
|
|
82
|
-
|
|
83
89
|
const geometryIndex = geometry.index;
|
|
84
90
|
const geometryPosition = geometry.attributes.position;
|
|
85
91
|
let version = 0;
|
|
@@ -90,41 +96,49 @@ function WebGLGeometries( gl, attributes, info, bindingStates ) {
|
|
|
90
96
|
|
|
91
97
|
}
|
|
92
98
|
|
|
99
|
+
const count = geometryIndex !== null ? geometryIndex.array.length : ( geometryPosition.array.length / 3 ) - 1;
|
|
100
|
+
|
|
101
|
+
// check whether a 32 bit or 16 bit buffer is required to store the indices
|
|
102
|
+
// account for PRIMITIVE_RESTART_FIXED_INDEX, #24565
|
|
103
|
+
const IndexBufferAttribute = geometryPosition.count >= 65535 ? Uint32BufferAttribute : Uint16BufferAttribute;
|
|
104
|
+
const attribute = new IndexBufferAttribute( Math.ceil( count / 3 ) * 6, 1 );
|
|
105
|
+
const indices = attribute.array;
|
|
106
|
+
|
|
93
107
|
if ( geometryIndex !== null ) {
|
|
94
108
|
|
|
95
109
|
const array = geometryIndex.array;
|
|
96
110
|
version = geometryIndex.version;
|
|
97
111
|
|
|
98
|
-
for ( let i = 0,
|
|
112
|
+
for ( let i = 0, j = 0; i < count; i += 3 ) {
|
|
99
113
|
|
|
100
114
|
const a = array[ i + 0 ];
|
|
101
115
|
const b = array[ i + 1 ];
|
|
102
116
|
const c = array[ i + 2 ];
|
|
103
117
|
|
|
104
|
-
indices
|
|
118
|
+
indices[ j ++ ] = a; indices[ j ++ ] = b;
|
|
119
|
+
indices[ j ++ ] = b; indices[ j ++ ] = c;
|
|
120
|
+
indices[ j ++ ] = c; indices[ j ++ ] = a;
|
|
105
121
|
|
|
106
122
|
}
|
|
107
123
|
|
|
108
124
|
} else {
|
|
109
125
|
|
|
110
|
-
const array = geometryPosition.array;
|
|
111
126
|
version = geometryPosition.version;
|
|
112
127
|
|
|
113
|
-
for ( let i = 0,
|
|
128
|
+
for ( let i = 0, j = 0; i < count; i += 3 ) {
|
|
114
129
|
|
|
115
130
|
const a = i + 0;
|
|
116
131
|
const b = i + 1;
|
|
117
132
|
const c = i + 2;
|
|
118
133
|
|
|
119
|
-
indices
|
|
134
|
+
indices[ j ++ ] = a; indices[ j ++ ] = b;
|
|
135
|
+
indices[ j ++ ] = b; indices[ j ++ ] = c;
|
|
136
|
+
indices[ j ++ ] = c; indices[ j ++ ] = a;
|
|
120
137
|
|
|
121
138
|
}
|
|
122
139
|
|
|
123
140
|
}
|
|
124
141
|
|
|
125
|
-
// check whether a 32 bit or 16 bit buffer is required to store the indices
|
|
126
|
-
// account for PRIMITIVE_RESTART_FIXED_INDEX, #24565
|
|
127
|
-
const attribute = new ( geometryPosition.count >= 65535 ? Uint32BufferAttribute : Uint16BufferAttribute )( indices, 1 );
|
|
128
142
|
attribute.version = version;
|
|
129
143
|
|
|
130
144
|
// Updating index buffer in VAO now. See WebGLBindingStates
|
|
@@ -171,12 +185,26 @@ function WebGLGeometries( gl, attributes, info, bindingStates ) {
|
|
|
171
185
|
|
|
172
186
|
}
|
|
173
187
|
|
|
188
|
+
function dispose() {
|
|
189
|
+
|
|
190
|
+
for ( const id in geometries ) {
|
|
191
|
+
|
|
192
|
+
const geometry = geometries[ id ].deref();
|
|
193
|
+
|
|
194
|
+
if ( geometry !== undefined ) destroyGeometry( geometry );
|
|
195
|
+
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
}
|
|
199
|
+
|
|
174
200
|
return {
|
|
175
201
|
|
|
176
202
|
get: get,
|
|
177
203
|
update: update,
|
|
178
204
|
|
|
179
|
-
getWireframeAttribute: getWireframeAttribute
|
|
205
|
+
getWireframeAttribute: getWireframeAttribute,
|
|
206
|
+
|
|
207
|
+
dispose: dispose
|
|
180
208
|
|
|
181
209
|
};
|
|
182
210
|
|
|
@@ -414,6 +414,19 @@ function WebGLMaterials( renderer, properties ) {
|
|
|
414
414
|
|
|
415
415
|
uniforms.ior.value = material.ior; // also part of uniforms common
|
|
416
416
|
|
|
417
|
+
if ( material.diffuseRoughness > 0 ) {
|
|
418
|
+
|
|
419
|
+
uniforms.diffuseRoughness.value = material.diffuseRoughness;
|
|
420
|
+
|
|
421
|
+
if ( material.diffuseRoughnessMap ) {
|
|
422
|
+
|
|
423
|
+
uniforms.diffuseRoughnessMap.value = material.diffuseRoughnessMap;
|
|
424
|
+
refreshTransformUniform( material.diffuseRoughnessMap, uniforms.diffuseRoughnessMapTransform );
|
|
425
|
+
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
}
|
|
429
|
+
|
|
417
430
|
if ( material.sheen > 0 ) {
|
|
418
431
|
|
|
419
432
|
uniforms.sheenColor.value.copy( material.sheenColor ).multiplyScalar( material.sheen );
|
|
@@ -493,8 +506,8 @@ function WebGLMaterials( renderer, properties ) {
|
|
|
493
506
|
|
|
494
507
|
uniforms.iridescence.value = material.iridescence;
|
|
495
508
|
uniforms.iridescenceIOR.value = material.iridescenceIOR;
|
|
496
|
-
uniforms.iridescenceThicknessMinimum.value = material.
|
|
497
|
-
uniforms.iridescenceThicknessMaximum.value = material.
|
|
509
|
+
uniforms.iridescenceThicknessMinimum.value = material.iridescenceThicknessMinimum;
|
|
510
|
+
uniforms.iridescenceThicknessMaximum.value = material.iridescenceThicknessMaximum;
|
|
498
511
|
|
|
499
512
|
if ( material.iridescenceMap ) {
|
|
500
513
|
|
|
@@ -8,13 +8,16 @@ import {
|
|
|
8
8
|
NeutralToneMapping,
|
|
9
9
|
CustomToneMapping,
|
|
10
10
|
SRGBTransfer,
|
|
11
|
-
HalfFloatType
|
|
11
|
+
HalfFloatType,
|
|
12
|
+
DepthStencilFormat,
|
|
13
|
+
UnsignedInt248Type
|
|
12
14
|
} from '../../constants.js';
|
|
13
15
|
import { BufferGeometry } from '../../core/BufferGeometry.js';
|
|
14
16
|
import { Float32BufferAttribute } from '../../core/BufferAttribute.js';
|
|
15
17
|
import { RawShaderMaterial } from '../../materials/RawShaderMaterial.js';
|
|
16
18
|
import { Mesh } from '../../objects/Mesh.js';
|
|
17
19
|
import { OrthographicCamera } from '../../cameras/OrthographicCamera.js';
|
|
20
|
+
import { DepthTexture } from '../../textures/DepthTexture.js';
|
|
18
21
|
import { WebGLRenderTarget } from '../WebGLRenderTarget.js';
|
|
19
22
|
import { ColorManagement } from '../../math/ColorManagement.js';
|
|
20
23
|
|
|
@@ -46,6 +49,9 @@ function WebGLOutput( type, width, height, antialias, depth, stencil ) {
|
|
|
46
49
|
let targetA = null;
|
|
47
50
|
let targetB = null;
|
|
48
51
|
|
|
52
|
+
// scene depth for effects with needsDepthTexture set to true, allocated on demand
|
|
53
|
+
let depthTexture = null;
|
|
54
|
+
|
|
49
55
|
// create fullscreen triangle geometry
|
|
50
56
|
const geometry = new BufferGeometry();
|
|
51
57
|
geometry.setAttribute( 'position', new Float32BufferAttribute( [ - 1, 3, 0, - 1, - 1, 0, 3, - 1, 0 ], 3 ) );
|
|
@@ -150,10 +156,40 @@ function WebGLOutput( type, width, height, antialias, depth, stencil ) {
|
|
|
150
156
|
|
|
151
157
|
}
|
|
152
158
|
|
|
159
|
+
// only store and resolve the scene depth if an effect reads it
|
|
160
|
+
|
|
161
|
+
const needsDepthTexture = depth === true && _effects.some( ( effect ) => effect.needsDepthTexture === true );
|
|
162
|
+
|
|
163
|
+
if ( needsDepthTexture !== ( targetScene.depthTexture !== null ) ) {
|
|
164
|
+
|
|
165
|
+
if ( needsDepthTexture === true && depthTexture === null ) {
|
|
166
|
+
|
|
167
|
+
depthTexture = new DepthTexture( width, height );
|
|
168
|
+
|
|
169
|
+
if ( stencil === true ) {
|
|
170
|
+
|
|
171
|
+
depthTexture.format = DepthStencilFormat;
|
|
172
|
+
depthTexture.type = UnsignedInt248Type;
|
|
173
|
+
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
// release GPU resources so the scene target is rebuilt with the new depth setup
|
|
179
|
+
|
|
180
|
+
targetScene.dispose();
|
|
181
|
+
|
|
182
|
+
targetScene.depthTexture = needsDepthTexture ? depthTexture : null;
|
|
183
|
+
targetScene.resolveDepthBuffer = needsDepthTexture;
|
|
184
|
+
targetScene.storeMultisampledDepthBuffer = needsDepthTexture;
|
|
185
|
+
|
|
186
|
+
}
|
|
187
|
+
|
|
153
188
|
for ( let i = 0; i < _effects.length; i ++ ) {
|
|
154
189
|
|
|
155
190
|
const effect = _effects[ i ];
|
|
156
191
|
if ( effect.setSize ) effect.setSize( width, height );
|
|
192
|
+
if ( needsDepthTexture && effect.needsDepthTexture === true && effect.setDepthTexture ) effect.setDepthTexture( depthTexture );
|
|
157
193
|
|
|
158
194
|
}
|
|
159
195
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { WebGLUniforms } from './WebGLUniforms.js';
|
|
2
2
|
import { WebGLShader } from './WebGLShader.js';
|
|
3
3
|
import { ShaderChunk } from '../shaders/ShaderChunk.js';
|
|
4
|
-
import { NoToneMapping, AddOperation, MixOperation, MultiplyOperation, CubeRefractionMapping,
|
|
4
|
+
import { NoToneMapping, AddOperation, MixOperation, MultiplyOperation, CubeRefractionMapping, PCFShadowMap, VSMShadowMap, AgXToneMapping, ACESFilmicToneMapping, NeutralToneMapping, CineonToneMapping, CustomToneMapping, ReinhardToneMapping, LinearToneMapping, GLSL3, LinearTransfer, SRGBTransfer } from '../../constants.js';
|
|
5
5
|
import { ColorManagement } from '../../math/ColorManagement.js';
|
|
6
6
|
import { Vector3 } from '../../math/Vector3.js';
|
|
7
7
|
import { Matrix3 } from '../../math/Matrix3.js';
|
|
@@ -89,7 +89,7 @@ function getTexelEncodingFunction( functionName, colorSpace ) {
|
|
|
89
89
|
|
|
90
90
|
`vec4 ${functionName}( vec4 value ) {`,
|
|
91
91
|
|
|
92
|
-
` return ${components[ 1 ]}( vec4(
|
|
92
|
+
` return ${components[ 1 ]}( vec4( ${components[ 0 ]} * value.rgb, value.a ) );`,
|
|
93
93
|
|
|
94
94
|
'}',
|
|
95
95
|
|
|
@@ -228,7 +228,8 @@ function replaceLightNums( string, parameters ) {
|
|
|
228
228
|
.replace( /NUM_DIR_LIGHT_SHADOWS/g, parameters.numDirLightShadows )
|
|
229
229
|
.replace( /NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS/g, parameters.numSpotLightShadowsWithMaps )
|
|
230
230
|
.replace( /NUM_SPOT_LIGHT_SHADOWS/g, parameters.numSpotLightShadows )
|
|
231
|
-
.replace( /NUM_POINT_LIGHT_SHADOWS/g, parameters.numPointLightShadows )
|
|
231
|
+
.replace( /NUM_POINT_LIGHT_SHADOWS/g, parameters.numPointLightShadows )
|
|
232
|
+
.replace( /NUM_LIGHT_PROBE_GRIDS/g, parameters.numLightProbeGrids );
|
|
232
233
|
|
|
233
234
|
}
|
|
234
235
|
|
|
@@ -250,26 +251,13 @@ function resolveIncludes( string ) {
|
|
|
250
251
|
|
|
251
252
|
}
|
|
252
253
|
|
|
253
|
-
const shaderChunkMap = new Map();
|
|
254
|
-
|
|
255
254
|
function includeReplacer( match, include ) {
|
|
256
255
|
|
|
257
|
-
|
|
256
|
+
const string = ShaderChunk[ include ];
|
|
258
257
|
|
|
259
258
|
if ( string === undefined ) {
|
|
260
259
|
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
if ( newInclude !== undefined ) {
|
|
264
|
-
|
|
265
|
-
string = ShaderChunk[ newInclude ];
|
|
266
|
-
warn( 'WebGLRenderer: Shader chunk "%s" has been deprecated. Use "%s" instead.', include, newInclude );
|
|
267
|
-
|
|
268
|
-
} else {
|
|
269
|
-
|
|
270
|
-
throw new Error( 'THREE.WebGLProgram: Can not resolve #include <' + include + '>' );
|
|
271
|
-
|
|
272
|
-
}
|
|
260
|
+
throw new Error( 'THREE.WebGLProgram: Can not resolve #include <' + include + '>' );
|
|
273
261
|
|
|
274
262
|
}
|
|
275
263
|
|
|
@@ -355,20 +343,6 @@ function generateShadowMapTypeDefine( parameters ) {
|
|
|
355
343
|
|
|
356
344
|
}
|
|
357
345
|
|
|
358
|
-
const envMapTypeDefines = {
|
|
359
|
-
[ CubeReflectionMapping ]: 'ENVMAP_TYPE_CUBE',
|
|
360
|
-
[ CubeRefractionMapping ]: 'ENVMAP_TYPE_CUBE',
|
|
361
|
-
[ CubeUVReflectionMapping ]: 'ENVMAP_TYPE_CUBE_UV'
|
|
362
|
-
};
|
|
363
|
-
|
|
364
|
-
function generateEnvMapTypeDefine( parameters ) {
|
|
365
|
-
|
|
366
|
-
if ( parameters.envMap === false ) return 'ENVMAP_TYPE_CUBE';
|
|
367
|
-
|
|
368
|
-
return envMapTypeDefines[ parameters.envMapMode ] || 'ENVMAP_TYPE_CUBE';
|
|
369
|
-
|
|
370
|
-
}
|
|
371
|
-
|
|
372
346
|
const envMapModeDefines = {
|
|
373
347
|
[ CubeRefractionMapping ]: 'ENVMAP_MODE_REFRACTION'
|
|
374
348
|
};
|
|
@@ -395,22 +369,6 @@ function generateEnvMapBlendingDefine( parameters ) {
|
|
|
395
369
|
|
|
396
370
|
}
|
|
397
371
|
|
|
398
|
-
function generateCubeUVSize( parameters ) {
|
|
399
|
-
|
|
400
|
-
const imageHeight = parameters.envMapCubeUVHeight;
|
|
401
|
-
|
|
402
|
-
if ( imageHeight === null ) return null;
|
|
403
|
-
|
|
404
|
-
const maxMip = Math.log2( imageHeight ) - 2;
|
|
405
|
-
|
|
406
|
-
const texelHeight = 1.0 / imageHeight;
|
|
407
|
-
|
|
408
|
-
const texelWidth = 1.0 / ( 3 * Math.max( Math.pow( 2, maxMip ), 7 * 16 ) );
|
|
409
|
-
|
|
410
|
-
return { texelWidth, texelHeight, maxMip };
|
|
411
|
-
|
|
412
|
-
}
|
|
413
|
-
|
|
414
372
|
function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
|
|
415
373
|
|
|
416
374
|
// TODO Send this event to Three.js DevTools
|
|
@@ -424,10 +382,9 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
|
|
|
424
382
|
let fragmentShader = parameters.fragmentShader;
|
|
425
383
|
|
|
426
384
|
const shadowMapTypeDefine = generateShadowMapTypeDefine( parameters );
|
|
427
|
-
const envMapTypeDefine =
|
|
385
|
+
const envMapTypeDefine = parameters.envMapPMREM === true ? 'ENVMAP_TYPE_PMREM' : 'ENVMAP_TYPE_CUBE';
|
|
428
386
|
const envMapModeDefine = generateEnvMapModeDefine( parameters );
|
|
429
387
|
const envMapBlendingDefine = generateEnvMapBlendingDefine( parameters );
|
|
430
|
-
const envMapCubeUVSize = generateCubeUVSize( parameters );
|
|
431
388
|
|
|
432
389
|
const customVertexExtensions = generateVertexExtensions( parameters );
|
|
433
390
|
|
|
@@ -509,6 +466,7 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
|
|
|
509
466
|
parameters.clearcoatMap ? '#define USE_CLEARCOATMAP' : '',
|
|
510
467
|
parameters.clearcoatRoughnessMap ? '#define USE_CLEARCOAT_ROUGHNESSMAP' : '',
|
|
511
468
|
parameters.clearcoatNormalMap ? '#define USE_CLEARCOAT_NORMALMAP' : '',
|
|
469
|
+
parameters.diffuseRoughnessMap ? '#define USE_DIFFUSE_ROUGHNESSMAP' : '',
|
|
512
470
|
|
|
513
471
|
parameters.iridescenceMap ? '#define USE_IRIDESCENCEMAP' : '',
|
|
514
472
|
parameters.iridescenceThicknessMap ? '#define USE_IRIDESCENCE_THICKNESSMAP' : '',
|
|
@@ -548,6 +506,7 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
|
|
|
548
506
|
parameters.clearcoatMapUv ? '#define CLEARCOATMAP_UV ' + parameters.clearcoatMapUv : '',
|
|
549
507
|
parameters.clearcoatNormalMapUv ? '#define CLEARCOAT_NORMALMAP_UV ' + parameters.clearcoatNormalMapUv : '',
|
|
550
508
|
parameters.clearcoatRoughnessMapUv ? '#define CLEARCOAT_ROUGHNESSMAP_UV ' + parameters.clearcoatRoughnessMapUv : '',
|
|
509
|
+
parameters.diffuseRoughnessMapUv ? '#define DIFFUSE_ROUGHNESSMAP_UV ' + parameters.diffuseRoughnessMapUv : '',
|
|
551
510
|
|
|
552
511
|
parameters.iridescenceMapUv ? '#define IRIDESCENCEMAP_UV ' + parameters.iridescenceMapUv : '',
|
|
553
512
|
parameters.iridescenceThicknessMapUv ? '#define IRIDESCENCE_THICKNESSMAP_UV ' + parameters.iridescenceThicknessMapUv : '',
|
|
@@ -690,9 +649,8 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
|
|
|
690
649
|
parameters.envMap ? '#define ' + envMapTypeDefine : '',
|
|
691
650
|
parameters.envMap ? '#define ' + envMapModeDefine : '',
|
|
692
651
|
parameters.envMap ? '#define ' + envMapBlendingDefine : '',
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
envMapCubeUVSize ? '#define CUBEUV_MAX_MIP ' + envMapCubeUVSize.maxMip + '.0' : '',
|
|
652
|
+
parameters.envMapPMREM ? '#define ENVMAP_MAX_LOD ' + parameters.envMapMaxLod + '.0' : '',
|
|
653
|
+
parameters.envMapPMREM ? '#define ENVMAP_SIZE ' + parameters.envMapSize + '.0' : '',
|
|
696
654
|
parameters.lightMap ? '#define USE_LIGHTMAP' : '',
|
|
697
655
|
parameters.aoMap ? '#define USE_AOMAP' : '',
|
|
698
656
|
parameters.bumpMap ? '#define USE_BUMPMAP' : '',
|
|
@@ -710,6 +668,8 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
|
|
|
710
668
|
parameters.clearcoatRoughnessMap ? '#define USE_CLEARCOAT_ROUGHNESSMAP' : '',
|
|
711
669
|
parameters.clearcoatNormalMap ? '#define USE_CLEARCOAT_NORMALMAP' : '',
|
|
712
670
|
|
|
671
|
+
parameters.diffuseRoughness ? '#define USE_DIFFUSE_ROUGHNESS' : '',
|
|
672
|
+
parameters.diffuseRoughnessMap ? '#define USE_DIFFUSE_ROUGHNESSMAP' : '',
|
|
713
673
|
parameters.dispersion ? '#define USE_DISPERSION' : '',
|
|
714
674
|
parameters.retroreflection ? '#define USE_RETROREFLECTION' : '',
|
|
715
675
|
|
|
@@ -759,7 +719,6 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
|
|
|
759
719
|
|
|
760
720
|
parameters.numLightProbes > 0 ? '#define USE_LIGHT_PROBES' : '',
|
|
761
721
|
|
|
762
|
-
parameters.numLightProbeGrids > 0 ? '#define USE_LIGHT_PROBES_GRID' : '',
|
|
763
722
|
|
|
764
723
|
parameters.decodeVideoTexture ? '#define DECODE_VIDEO_TEXTURE' : '',
|
|
765
724
|
parameters.decodeVideoTextureEmissive ? '#define DECODE_VIDEO_TEXTURE_EMISSIVE' : '',
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BackSide, DoubleSide,
|
|
1
|
+
import { BackSide, DoubleSide, ObjectSpaceNormalMap, TangentSpaceNormalMap, NoToneMapping, NormalBlending, SRGBTransfer, RGFormat, RG11_EAC_Format, RED_GREEN_RGTC2_Format } from '../../constants.js';
|
|
2
2
|
import { Layers } from '../../core/Layers.js';
|
|
3
3
|
import { WebGLProgram } from './WebGLProgram.js';
|
|
4
4
|
import { WebGLShaderCache } from './WebGLShaderCache.js';
|
|
@@ -23,8 +23,6 @@ function WebGLPrograms( renderer, environments, extensions, capabilities, bindin
|
|
|
23
23
|
|
|
24
24
|
const logarithmicDepthBuffer = capabilities.logarithmicDepthBuffer;
|
|
25
25
|
|
|
26
|
-
let precision = capabilities.precision;
|
|
27
|
-
|
|
28
26
|
const shaderIDs = {
|
|
29
27
|
MeshDepthMaterial: 'depth',
|
|
30
28
|
MeshDistanceMaterial: 'distance',
|
|
@@ -61,13 +59,14 @@ function WebGLPrograms( renderer, environments, extensions, capabilities, bindin
|
|
|
61
59
|
|
|
62
60
|
const usePMREM = material.isMeshStandardMaterial || ( material.isMeshLambertMaterial && ! material.envMap ) || ( material.isMeshPhongMaterial && ! material.envMap );
|
|
63
61
|
const envMap = environments.get( material.envMap || environment, usePMREM );
|
|
64
|
-
const envMapCubeUVHeight = ( !! envMap ) && ( envMap.mapping === CubeUVReflectionMapping ) ? envMap.image.height : null;
|
|
65
62
|
|
|
66
63
|
const shaderID = shaderIDs[ material.type ];
|
|
67
64
|
|
|
68
65
|
// heuristics to create shader parameters according to lights in the scene
|
|
69
66
|
// (not to blow over maxLights budget)
|
|
70
67
|
|
|
68
|
+
let precision = capabilities.precision;
|
|
69
|
+
|
|
71
70
|
if ( material.precision !== null ) {
|
|
72
71
|
|
|
73
72
|
precision = capabilities.getMaxPrecision( material.precision );
|
|
@@ -127,6 +126,7 @@ function WebGLPrograms( renderer, environments, extensions, capabilities, bindin
|
|
|
127
126
|
const HAS_MAP = !! material.map;
|
|
128
127
|
const HAS_MATCAP = !! material.matcap;
|
|
129
128
|
const HAS_ENVMAP = !! envMap;
|
|
129
|
+
const HAS_PMREM = HAS_ENVMAP && envMap.isPMREMTexture === true;
|
|
130
130
|
const HAS_AOMAP = !! material.aoMap;
|
|
131
131
|
const HAS_LIGHTMAP = !! material.lightMap;
|
|
132
132
|
const HAS_BUMPMAP = !! material.bumpMap && material.wireframe === false;
|
|
@@ -139,6 +139,7 @@ function WebGLPrograms( renderer, environments, extensions, capabilities, bindin
|
|
|
139
139
|
|
|
140
140
|
const HAS_ANISOTROPY = material.anisotropy > 0;
|
|
141
141
|
const HAS_CLEARCOAT = material.clearcoat > 0;
|
|
142
|
+
const HAS_DIFFUSE_ROUGHNESS = material.diffuseRoughness > 0;
|
|
142
143
|
const HAS_DISPERSION = material.dispersion > 0;
|
|
143
144
|
const HAS_RETROREFLECTION = material.retroreflectivity > 0;
|
|
144
145
|
const HAS_IRIDESCENCE = material.iridescence > 0;
|
|
@@ -150,6 +151,7 @@ function WebGLPrograms( renderer, environments, extensions, capabilities, bindin
|
|
|
150
151
|
const HAS_CLEARCOATMAP = HAS_CLEARCOAT && !! material.clearcoatMap;
|
|
151
152
|
const HAS_CLEARCOAT_NORMALMAP = HAS_CLEARCOAT && !! material.clearcoatNormalMap;
|
|
152
153
|
const HAS_CLEARCOAT_ROUGHNESSMAP = HAS_CLEARCOAT && !! material.clearcoatRoughnessMap;
|
|
154
|
+
const HAS_DIFFUSE_ROUGHNESSMAP = HAS_DIFFUSE_ROUGHNESS && !! material.diffuseRoughnessMap;
|
|
153
155
|
|
|
154
156
|
const HAS_IRIDESCENCEMAP = HAS_IRIDESCENCE && !! material.iridescenceMap;
|
|
155
157
|
const HAS_IRIDESCENCE_THICKNESSMAP = HAS_IRIDESCENCE && !! material.iridescenceThicknessMap;
|
|
@@ -186,6 +188,8 @@ function WebGLPrograms( renderer, environments, extensions, capabilities, bindin
|
|
|
186
188
|
|
|
187
189
|
}
|
|
188
190
|
|
|
191
|
+
const envMapMipmaps = HAS_PMREM ? ( envMap.isCompressedCubeTexture ? envMap.image[ 0 ].mipmaps : envMap.mipmaps ) : null;
|
|
192
|
+
|
|
189
193
|
const parameters = {
|
|
190
194
|
|
|
191
195
|
shaderID: shaderID,
|
|
@@ -217,7 +221,9 @@ function WebGLPrograms( renderer, environments, extensions, capabilities, bindin
|
|
|
217
221
|
matcap: HAS_MATCAP,
|
|
218
222
|
envMap: HAS_ENVMAP,
|
|
219
223
|
envMapMode: HAS_ENVMAP && envMap.mapping,
|
|
220
|
-
|
|
224
|
+
envMapPMREM: HAS_PMREM,
|
|
225
|
+
envMapMaxLod: HAS_PMREM ? envMapMipmaps.length - 1 : null,
|
|
226
|
+
envMapSize: HAS_PMREM ? envMapMipmaps[ 0 ].width : null,
|
|
221
227
|
aoMap: HAS_AOMAP,
|
|
222
228
|
lightMap: HAS_LIGHTMAP,
|
|
223
229
|
bumpMap: HAS_BUMPMAP,
|
|
@@ -240,6 +246,8 @@ function WebGLPrograms( renderer, environments, extensions, capabilities, bindin
|
|
|
240
246
|
clearcoatNormalMap: HAS_CLEARCOAT_NORMALMAP,
|
|
241
247
|
clearcoatRoughnessMap: HAS_CLEARCOAT_ROUGHNESSMAP,
|
|
242
248
|
|
|
249
|
+
diffuseRoughness: HAS_DIFFUSE_ROUGHNESS,
|
|
250
|
+
diffuseRoughnessMap: HAS_DIFFUSE_ROUGHNESSMAP,
|
|
243
251
|
dispersion: HAS_DISPERSION,
|
|
244
252
|
retroreflection: HAS_RETROREFLECTION,
|
|
245
253
|
|
|
@@ -287,6 +295,7 @@ function WebGLPrograms( renderer, environments, extensions, capabilities, bindin
|
|
|
287
295
|
clearcoatMapUv: HAS_CLEARCOATMAP && getChannel( material.clearcoatMap.channel ),
|
|
288
296
|
clearcoatNormalMapUv: HAS_CLEARCOAT_NORMALMAP && getChannel( material.clearcoatNormalMap.channel ),
|
|
289
297
|
clearcoatRoughnessMapUv: HAS_CLEARCOAT_ROUGHNESSMAP && getChannel( material.clearcoatRoughnessMap.channel ),
|
|
298
|
+
diffuseRoughnessMapUv: HAS_DIFFUSE_ROUGHNESSMAP && getChannel( material.diffuseRoughnessMap.channel ),
|
|
290
299
|
|
|
291
300
|
iridescenceMapUv: HAS_IRIDESCENCEMAP && getChannel( material.iridescenceMap.channel ),
|
|
292
301
|
iridescenceThicknessMapUv: HAS_IRIDESCENCE_THICKNESSMAP && getChannel( material.iridescenceThicknessMap.channel ),
|
|
@@ -353,7 +362,7 @@ function WebGLPrograms( renderer, environments, extensions, capabilities, bindin
|
|
|
353
362
|
|
|
354
363
|
numLightProbes: lights.numLightProbes,
|
|
355
364
|
|
|
356
|
-
numLightProbeGrids: lightProbeGrids.length,
|
|
365
|
+
numLightProbeGrids: lightProbeGrids.filter( grid => grid.texture !== null ).length,
|
|
357
366
|
|
|
358
367
|
numClippingPlanes: clipping.numPlanes,
|
|
359
368
|
numClipIntersection: clipping.numIntersection,
|
|
@@ -444,7 +453,9 @@ function WebGLPrograms( renderer, environments, extensions, capabilities, bindin
|
|
|
444
453
|
array.push( parameters.precision );
|
|
445
454
|
array.push( parameters.outputColorSpace );
|
|
446
455
|
array.push( parameters.envMapMode );
|
|
447
|
-
array.push( parameters.
|
|
456
|
+
array.push( parameters.envMapPMREM );
|
|
457
|
+
array.push( parameters.envMapMaxLod );
|
|
458
|
+
array.push( parameters.envMapSize );
|
|
448
459
|
array.push( parameters.mapUv );
|
|
449
460
|
array.push( parameters.alphaMapUv );
|
|
450
461
|
array.push( parameters.lightMapUv );
|
|
@@ -459,6 +470,7 @@ function WebGLPrograms( renderer, environments, extensions, capabilities, bindin
|
|
|
459
470
|
array.push( parameters.clearcoatMapUv );
|
|
460
471
|
array.push( parameters.clearcoatNormalMapUv );
|
|
461
472
|
array.push( parameters.clearcoatRoughnessMapUv );
|
|
473
|
+
array.push( parameters.diffuseRoughnessMapUv );
|
|
462
474
|
array.push( parameters.iridescenceMapUv );
|
|
463
475
|
array.push( parameters.iridescenceThicknessMapUv );
|
|
464
476
|
array.push( parameters.sheenColorMapUv );
|
|
@@ -472,7 +484,6 @@ function WebGLPrograms( renderer, environments, extensions, capabilities, bindin
|
|
|
472
484
|
array.push( parameters.fogExp2 );
|
|
473
485
|
array.push( parameters.sizeAttenuation );
|
|
474
486
|
array.push( parameters.morphTargetsCount );
|
|
475
|
-
array.push( parameters.morphAttributeCount );
|
|
476
487
|
array.push( parameters.numSunLights );
|
|
477
488
|
array.push( parameters.numDirLights );
|
|
478
489
|
array.push( parameters.numPointLights );
|
|
@@ -486,6 +497,7 @@ function WebGLPrograms( renderer, environments, extensions, capabilities, bindin
|
|
|
486
497
|
array.push( parameters.numSpotLightShadows );
|
|
487
498
|
array.push( parameters.numSpotLightShadowsWithMaps );
|
|
488
499
|
array.push( parameters.numLightProbes );
|
|
500
|
+
array.push( parameters.numLightProbeGrids );
|
|
489
501
|
array.push( parameters.shadowMapType );
|
|
490
502
|
array.push( parameters.toneMapping );
|
|
491
503
|
array.push( parameters.numClippingPlanes );
|
|
@@ -540,6 +552,8 @@ function WebGLPrograms( renderer, environments, extensions, capabilities, bindin
|
|
|
540
552
|
_programLayers.enable( 19 );
|
|
541
553
|
if ( parameters.retroreflection )
|
|
542
554
|
_programLayers.enable( 24 );
|
|
555
|
+
if ( parameters.diffuseRoughness )
|
|
556
|
+
_programLayers.enable( 25 );
|
|
543
557
|
if ( parameters.batchingColor )
|
|
544
558
|
_programLayers.enable( 20 );
|
|
545
559
|
if ( parameters.gradientMap )
|
|
@@ -20,19 +20,21 @@ function WebGLRenderState( extensions ) {
|
|
|
20
20
|
|
|
21
21
|
function pushLight( light ) {
|
|
22
22
|
|
|
23
|
-
|
|
23
|
+
if ( light.isLightProbeGrid ) {
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
lightProbeGridArray.push( light );
|
|
26
26
|
|
|
27
|
-
|
|
27
|
+
} else {
|
|
28
28
|
|
|
29
|
-
|
|
29
|
+
lightsArray.push( light );
|
|
30
|
+
|
|
31
|
+
}
|
|
30
32
|
|
|
31
33
|
}
|
|
32
34
|
|
|
33
|
-
function
|
|
35
|
+
function pushShadow( shadowLight ) {
|
|
34
36
|
|
|
35
|
-
|
|
37
|
+
shadowsArray.push( shadowLight );
|
|
36
38
|
|
|
37
39
|
}
|
|
38
40
|
|
|
@@ -40,6 +42,8 @@ function WebGLRenderState( extensions ) {
|
|
|
40
42
|
|
|
41
43
|
lights.setup( lightsArray );
|
|
42
44
|
|
|
45
|
+
lightProbeGridArray.sort( ( a, b ) => a.priority - b.priority || a.id - b.id );
|
|
46
|
+
|
|
43
47
|
}
|
|
44
48
|
|
|
45
49
|
function setupLightsView( camera ) {
|
|
@@ -68,8 +72,7 @@ function WebGLRenderState( extensions ) {
|
|
|
68
72
|
setupLightsView: setupLightsView,
|
|
69
73
|
|
|
70
74
|
pushLight: pushLight,
|
|
71
|
-
pushShadow: pushShadow
|
|
72
|
-
pushLightProbeGrid: pushLightProbeGrid
|
|
75
|
+
pushShadow: pushShadow
|
|
73
76
|
};
|
|
74
77
|
|
|
75
78
|
}
|
|
@@ -290,6 +290,8 @@ function WebGLShadowMap( renderer, objects, capabilities ) {
|
|
|
290
290
|
|
|
291
291
|
if ( light.isPointLight !== true ) shadow.updateMatrices( light, camera );
|
|
292
292
|
|
|
293
|
+
const layers = ( shadow.camera.layers.mask & 0xFFFFFFFE ) !== 0 ? shadow.camera.layers : camera.layers;
|
|
294
|
+
|
|
293
295
|
for ( let face = 0; face < faceCount; face ++ ) {
|
|
294
296
|
|
|
295
297
|
const shadowCamera = shadow.getCamera( face );
|
|
@@ -355,7 +357,7 @@ function WebGLShadowMap( renderer, objects, capabilities ) {
|
|
|
355
357
|
|
|
356
358
|
_frustum = shadow.getFrustum( face );
|
|
357
359
|
|
|
358
|
-
renderObject( scene, camera, shadowCamera, light, this.type );
|
|
360
|
+
renderObject( scene, camera, shadowCamera, light, layers, this.type );
|
|
359
361
|
|
|
360
362
|
}
|
|
361
363
|
|
|
@@ -515,11 +517,11 @@ function WebGLShadowMap( renderer, objects, capabilities ) {
|
|
|
515
517
|
|
|
516
518
|
}
|
|
517
519
|
|
|
518
|
-
function renderObject( object, camera, shadowCamera, light, type ) {
|
|
520
|
+
function renderObject( object, camera, shadowCamera, light, layers, type ) {
|
|
519
521
|
|
|
520
522
|
if ( object.visible === false ) return;
|
|
521
523
|
|
|
522
|
-
const visible = object.layers.test(
|
|
524
|
+
const visible = object.layers.test( layers );
|
|
523
525
|
|
|
524
526
|
if ( visible && ( object.isMesh || object.isLine || object.isPoints ) ) {
|
|
525
527
|
|
|
@@ -573,7 +575,7 @@ function WebGLShadowMap( renderer, objects, capabilities ) {
|
|
|
573
575
|
|
|
574
576
|
for ( let i = 0, l = children.length; i < l; i ++ ) {
|
|
575
577
|
|
|
576
|
-
renderObject( children[ i ], camera, shadowCamera, light, type );
|
|
578
|
+
renderObject( children[ i ], camera, shadowCamera, light, layers, type );
|
|
577
579
|
|
|
578
580
|
}
|
|
579
581
|
|
|
@@ -349,7 +349,7 @@ function WebGLState( gl, extensions ) {
|
|
|
349
349
|
const depthBuffer = new DepthBuffer();
|
|
350
350
|
const stencilBuffer = new StencilBuffer();
|
|
351
351
|
|
|
352
|
-
|
|
352
|
+
let uboBindings = {};
|
|
353
353
|
const uboProgramMap = new WeakMap();
|
|
354
354
|
|
|
355
355
|
let enabledCapabilities = {};
|
|
@@ -871,6 +871,7 @@ function WebGLState( gl, extensions ) {
|
|
|
871
871
|
if ( depthBuffer.getReversed() ) {
|
|
872
872
|
|
|
873
873
|
factor = - factor;
|
|
874
|
+
units = - units;
|
|
874
875
|
|
|
875
876
|
}
|
|
876
877
|
|
|
@@ -1180,23 +1181,25 @@ function WebGLState( gl, extensions ) {
|
|
|
1180
1181
|
|
|
1181
1182
|
blockIndex = gl.getUniformBlockIndex( program, uniformsGroup.name );
|
|
1182
1183
|
|
|
1184
|
+
// use the block index as the binding point
|
|
1185
|
+
gl.uniformBlockBinding( program, blockIndex, blockIndex );
|
|
1186
|
+
|
|
1183
1187
|
mapping.set( uniformsGroup, blockIndex );
|
|
1184
1188
|
|
|
1185
1189
|
}
|
|
1186
1190
|
|
|
1187
1191
|
}
|
|
1188
1192
|
|
|
1189
|
-
function uniformBlockBinding( uniformsGroup, program ) {
|
|
1193
|
+
function uniformBlockBinding( uniformsGroup, program, buffer ) {
|
|
1190
1194
|
|
|
1191
1195
|
const mapping = uboProgramMap.get( program );
|
|
1192
1196
|
const blockIndex = mapping.get( uniformsGroup );
|
|
1193
1197
|
|
|
1194
|
-
if ( uboBindings
|
|
1198
|
+
if ( uboBindings[ blockIndex ] !== buffer ) {
|
|
1195
1199
|
|
|
1196
|
-
|
|
1197
|
-
gl.uniformBlockBinding( program, blockIndex, uniformsGroup.__bindingPointIndex );
|
|
1200
|
+
gl.bindBufferBase( gl.UNIFORM_BUFFER, blockIndex, buffer );
|
|
1198
1201
|
|
|
1199
|
-
uboBindings
|
|
1202
|
+
uboBindings[ blockIndex ] = buffer;
|
|
1200
1203
|
|
|
1201
1204
|
}
|
|
1202
1205
|
|
|
@@ -1277,6 +1280,7 @@ function WebGLState( gl, extensions ) {
|
|
|
1277
1280
|
currentBoundTextures = {};
|
|
1278
1281
|
|
|
1279
1282
|
currentBoundFramebuffers = {};
|
|
1283
|
+
uboBindings = {};
|
|
1280
1284
|
currentDrawbuffers = new WeakMap();
|
|
1281
1285
|
defaultDrawbuffers = [];
|
|
1282
1286
|
|