super-three 0.137.0 → 0.141.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +23 -25
- package/build/three.cjs +3721 -4964
- package/build/three.js +3723 -4966
- package/build/three.min.js +1 -1
- package/build/three.module.js +5705 -7216
- package/examples/js/animation/CCDIKSolver.js +3 -2
- package/examples/js/animation/MMDPhysics.js +2 -2
- package/examples/js/controls/ArcballControls.js +3 -1
- package/examples/js/controls/PointerLockControls.js +3 -2
- package/examples/js/controls/TrackballControls.js +1 -4
- package/examples/js/controls/TransformControls.js +5 -6
- package/examples/js/controls/experimental/CameraControls.js +2 -2
- package/examples/js/csm/CSMFrustum.js +1 -1
- package/examples/js/csm/CSMShader.js +51 -35
- package/examples/js/curves/CurveExtras.js +14 -18
- package/examples/js/effects/AnaglyphEffect.js +7 -4
- package/examples/js/effects/AsciiEffect.js +10 -29
- package/examples/js/exporters/ColladaExporter.js +29 -7
- package/examples/js/exporters/EXRExporter.js +458 -0
- package/examples/js/exporters/GLTFExporter.js +213 -128
- package/examples/js/exporters/OBJExporter.js +12 -18
- package/examples/js/exporters/PLYExporter.js +15 -20
- package/examples/js/exporters/USDZExporter.js +13 -0
- package/examples/js/geometries/DecalGeometry.js +0 -7
- package/examples/js/geometries/LightningStrike.js +2 -2
- package/examples/js/geometries/ParametricGeometries.js +3 -3
- package/examples/js/helpers/OctreeHelper.js +74 -0
- package/examples/js/helpers/VertexNormalsHelper.js +4 -23
- package/examples/js/helpers/VertexTangentsHelper.js +3 -13
- package/examples/js/helpers/ViewHelper.js +266 -0
- package/examples/js/interactive/HTMLMesh.js +235 -40
- package/examples/js/interactive/SelectionHelper.js +1 -1
- package/examples/js/libs/opentype.min.js +1 -118
- package/examples/js/lines/Line2.js +1 -2
- package/examples/js/lines/LineGeometry.js +10 -21
- package/examples/js/lines/LineMaterial.js +2 -3
- package/examples/js/lines/LineSegments2.js +214 -140
- package/examples/js/lines/LineSegmentsGeometry.js +3 -14
- package/examples/js/lines/Wireframe.js +2 -3
- package/examples/js/lines/WireframeGeometry2.js +1 -2
- package/examples/js/loaders/3MFLoader.js +21 -17
- package/examples/js/loaders/AMFLoader.js +1 -1
- package/examples/js/loaders/ColladaLoader.js +33 -12
- package/examples/js/loaders/DDSLoader.js +23 -30
- package/examples/js/loaders/EXRLoader.js +269 -266
- package/examples/js/loaders/FBXLoader.js +11 -0
- package/examples/js/loaders/FontLoader.js +1 -2
- package/examples/js/loaders/GCodeLoader.js +0 -1
- package/examples/js/loaders/GLTFLoader.js +249 -60
- package/examples/js/loaders/KMZLoader.js +1 -1
- package/examples/js/loaders/KTX2Loader.js +1 -9
- package/examples/js/loaders/LDrawLoader.js +3 -11
- package/examples/js/loaders/LUT3dlLoader.js +1 -1
- package/examples/js/loaders/LUTCubeLoader.js +1 -1
- package/examples/js/loaders/LWOLoader.js +4 -2
- package/examples/js/loaders/LogLuvLoader.js +1 -2
- package/examples/js/loaders/MMDLoader.js +18 -4
- package/examples/js/loaders/NRRDLoader.js +1 -1
- package/examples/js/loaders/OBJLoader.js +9 -5
- package/examples/js/loaders/PCDLoader.js +22 -13
- package/examples/js/loaders/PDBLoader.js +11 -11
- package/examples/js/loaders/PLYLoader.js +5 -1
- package/examples/js/loaders/RGBELoader.js +3 -11
- package/examples/js/loaders/RGBMLoader.js +12 -15
- package/examples/js/loaders/SVGLoader.js +16 -9
- package/examples/js/loaders/VOXLoader.js +3 -4
- package/examples/js/loaders/VTKLoader.js +260 -295
- package/examples/js/loaders/lwo/LWO2Parser.js +4 -4
- package/examples/js/loaders/lwo/LWO3Parser.js +4 -4
- package/examples/js/math/ConvexHull.js +6 -15
- package/examples/js/math/Lut.js +27 -26
- package/examples/js/misc/MorphAnimMesh.js +2 -2
- package/examples/js/misc/ProgressiveLightMap.js +1 -1
- package/examples/js/misc/Volume.js +37 -46
- package/examples/js/misc/VolumeSlice.js +21 -21
- package/examples/js/modifiers/EdgeSplitModifier.js +0 -7
- package/examples/js/modifiers/SimplifyModifier.js +1 -8
- package/examples/js/modifiers/TessellateModifier.js +0 -7
- package/examples/js/objects/Lensflare.js +2 -2
- package/examples/js/objects/LightningStorm.js +4 -5
- package/examples/js/objects/MarchingCubes.js +6 -11
- package/examples/js/objects/Reflector.js +10 -4
- package/examples/js/objects/ReflectorForSSRPass.js +1 -1
- package/examples/js/objects/Refractor.js +10 -4
- package/examples/js/objects/ShadowMesh.js +1 -2
- package/examples/js/objects/Sky.js +1 -1
- package/examples/js/objects/Water.js +1 -2
- package/examples/js/objects/Water2.js +1 -1
- package/examples/js/postprocessing/AdaptiveToneMappingPass.js +6 -10
- package/examples/js/postprocessing/AfterimagePass.js +2 -6
- package/examples/js/postprocessing/BloomPass.js +50 -19
- package/examples/js/postprocessing/DotScreenPass.js +1 -1
- package/examples/js/postprocessing/EffectComposer.js +1 -6
- package/examples/js/postprocessing/LUTPass.js +2 -2
- package/examples/js/postprocessing/OutlinePass.js +7 -12
- package/examples/js/postprocessing/SAOPass.js +2 -7
- package/examples/js/postprocessing/SSAARenderPass.js +1 -6
- package/examples/js/postprocessing/SSRPass.js +3 -8
- package/examples/js/postprocessing/TAARenderPass.js +4 -4
- package/examples/js/postprocessing/UnrealBloomPass.js +3 -12
- package/examples/js/renderers/CSS2DRenderer.js +20 -25
- package/examples/js/renderers/CSS3DRenderer.js +6 -7
- package/examples/js/renderers/Projector.js +97 -124
- package/examples/js/renderers/SVGRenderer.js +3 -4
- package/examples/js/shaders/BlendShader.js +2 -1
- package/examples/js/shaders/CopyShader.js +4 -3
- package/examples/js/shaders/FXAAShader.js +239 -1069
- package/examples/js/shaders/FreiChenShader.js +1 -1
- package/examples/js/shaders/HorizontalBlurShader.js +1 -1
- package/examples/js/shaders/HorizontalTiltShiftShader.js +1 -1
- package/examples/js/shaders/SSRShader.js +3 -3
- package/examples/js/shaders/ToneMapShader.js +1 -1
- package/examples/js/utils/BufferGeometryUtils.js +282 -22
- package/examples/js/utils/GPUStatsPanel.js +1 -1
- package/examples/js/utils/LDrawUtils.js +6 -6
- package/examples/js/utils/SceneUtils.js +59 -0
- package/examples/js/utils/SkeletonUtils.js +1 -1
- package/examples/js/utils/UVsDebug.js +23 -33
- package/examples/jsm/animation/CCDIKSolver.js +3 -9
- package/examples/jsm/animation/MMDPhysics.js +1 -1
- package/examples/jsm/capabilities/WebGPU.js +6 -0
- package/examples/jsm/controls/ArcballControls.js +3 -1
- package/examples/jsm/controls/PointerLockControls.js +4 -2
- package/examples/jsm/controls/TrackballControls.js +1 -4
- package/examples/jsm/controls/TransformControls.js +6 -6
- package/examples/jsm/controls/experimental/CameraControls.js +2 -2
- package/examples/jsm/csm/CSMFrustum.js +1 -1
- package/examples/jsm/csm/CSMShader.js +51 -35
- package/examples/jsm/curves/CurveExtras.js +15 -17
- package/examples/jsm/effects/AnaglyphEffect.js +4 -4
- package/examples/jsm/effects/AsciiEffect.js +9 -22
- package/examples/jsm/exporters/ColladaExporter.js +31 -6
- package/examples/jsm/exporters/EXRExporter.js +507 -0
- package/examples/jsm/exporters/GLTFExporter.js +231 -125
- package/examples/jsm/exporters/KTX2Exporter.js +281 -0
- package/examples/jsm/exporters/OBJExporter.js +11 -18
- package/examples/jsm/exporters/PLYExporter.js +23 -21
- package/examples/jsm/exporters/USDZExporter.js +12 -0
- package/examples/jsm/geometries/DecalGeometry.js +0 -7
- package/examples/jsm/geometries/LightningStrike.js +2 -2
- package/examples/jsm/geometries/ParametricGeometries.js +3 -3
- package/examples/jsm/helpers/OctreeHelper.js +58 -0
- package/examples/jsm/helpers/VertexNormalsHelper.js +4 -25
- package/examples/jsm/helpers/VertexTangentsHelper.js +3 -15
- package/examples/jsm/helpers/ViewHelper.js +295 -0
- package/examples/jsm/interactive/HTMLMesh.js +252 -34
- package/examples/jsm/interactive/SelectionHelper.js +1 -1
- package/examples/jsm/libs/flow.module.js +30 -27
- package/examples/jsm/libs/ktx-parse.module.js +1 -1
- package/examples/jsm/libs/mikktspace.module.js +128 -0
- package/examples/jsm/libs/opentype.module.js +14568 -0
- package/examples/jsm/lines/Line2.js +2 -2
- package/examples/jsm/lines/LineGeometry.js +11 -19
- package/examples/jsm/lines/LineMaterial.js +3 -3
- package/examples/jsm/lines/LineSegments2.js +210 -145
- package/examples/jsm/lines/LineSegmentsGeometry.js +3 -12
- package/examples/jsm/lines/Wireframe.js +3 -3
- package/examples/jsm/lines/WireframeGeometry2.js +2 -2
- package/examples/jsm/loaders/3DMLoader.js +3 -2
- package/examples/jsm/loaders/3MFLoader.js +21 -17
- package/examples/jsm/loaders/AMFLoader.js +1 -1
- package/examples/jsm/loaders/ColladaLoader.js +40 -12
- package/examples/jsm/loaders/DDSLoader.js +21 -28
- package/examples/jsm/loaders/EXRLoader.js +268 -265
- package/examples/jsm/loaders/FBXLoader.js +11 -0
- package/examples/jsm/loaders/FontLoader.js +2 -2
- package/examples/jsm/loaders/GCodeLoader.js +0 -1
- package/examples/jsm/loaders/GLTFLoader.js +263 -66
- package/examples/jsm/loaders/KMZLoader.js +1 -1
- package/examples/jsm/loaders/KTX2Loader.js +1 -10
- package/examples/jsm/loaders/LDrawLoader.js +4 -11
- package/examples/jsm/loaders/LUT3dlLoader.js +2 -2
- package/examples/jsm/loaders/LUTCubeLoader.js +2 -2
- package/examples/jsm/loaders/LWOLoader.js +5 -3
- package/examples/jsm/loaders/LogLuvLoader.js +2 -2
- package/examples/jsm/loaders/MMDLoader.js +21 -3
- package/examples/jsm/loaders/NRRDLoader.js +1 -2
- package/examples/jsm/loaders/OBJLoader.js +11 -7
- package/examples/jsm/loaders/PCDLoader.js +23 -15
- package/examples/jsm/loaders/PDBLoader.js +11 -11
- package/examples/jsm/loaders/PLYLoader.js +10 -2
- package/examples/jsm/loaders/RGBELoader.js +4 -12
- package/examples/jsm/loaders/RGBMLoader.js +14 -11
- package/examples/jsm/loaders/SVGLoader.js +17 -9
- package/examples/jsm/loaders/TTFLoader.js +1 -1
- package/examples/jsm/loaders/VOXLoader.js +5 -5
- package/examples/jsm/loaders/VTKLoader.js +256 -284
- package/examples/jsm/loaders/ifc/web-ifc-api.js +9 -8
- package/examples/jsm/loaders/lwo/LWO2Parser.js +4 -4
- package/examples/jsm/loaders/lwo/LWO3Parser.js +4 -4
- package/examples/jsm/math/ConvexHull.js +6 -15
- package/examples/jsm/math/Lut.js +35 -25
- package/examples/jsm/misc/MorphAnimMesh.js +2 -2
- package/examples/jsm/misc/ProgressiveLightMap.js +1 -1
- package/examples/jsm/misc/Volume.js +37 -44
- package/examples/jsm/misc/VolumeSlice.js +21 -21
- package/examples/jsm/modifiers/EdgeSplitModifier.js +0 -7
- package/examples/jsm/modifiers/SimplifyModifier.js +1 -8
- package/examples/jsm/modifiers/TessellateModifier.js +0 -7
- package/examples/jsm/node-editor/NodeEditor.js +78 -9
- package/examples/jsm/node-editor/accessors/MatcapUVEditor.js +14 -0
- package/examples/jsm/node-editor/accessors/NormalEditor.js +1 -1
- package/examples/jsm/node-editor/accessors/PositionEditor.js +1 -1
- package/examples/jsm/node-editor/accessors/UVEditor.js +1 -1
- package/examples/jsm/node-editor/core/BaseNode.js +17 -11
- package/examples/jsm/node-editor/core/DataFile.js +59 -0
- package/examples/jsm/node-editor/core/FileEditor.js +20 -0
- package/examples/jsm/node-editor/core/FileURLEditor.js +29 -0
- package/examples/jsm/node-editor/display/BlendEditor.js +3 -3
- package/examples/jsm/node-editor/display/NormalMapEditor.js +49 -0
- package/examples/jsm/node-editor/examples/matcap.json +1 -0
- package/examples/jsm/node-editor/inputs/ColorEditor.js +7 -6
- package/examples/jsm/node-editor/inputs/FloatEditor.js +2 -2
- package/examples/jsm/node-editor/inputs/SliderEditor.js +2 -2
- package/examples/jsm/node-editor/inputs/TextureEditor.js +155 -0
- package/examples/jsm/node-editor/inputs/Vector2Editor.js +3 -2
- package/examples/jsm/node-editor/inputs/Vector3Editor.js +3 -2
- package/examples/jsm/node-editor/inputs/Vector4Editor.js +4 -3
- package/examples/jsm/node-editor/materials/BasicMaterialEditor.js +3 -3
- package/examples/jsm/node-editor/materials/PointsMaterialEditor.js +16 -11
- package/examples/jsm/node-editor/materials/StandardMaterialEditor.js +15 -5
- package/examples/jsm/node-editor/math/AngleEditor.js +3 -2
- package/examples/jsm/node-editor/math/DotEditor.js +2 -2
- package/examples/jsm/node-editor/math/InvertEditor.js +4 -4
- package/examples/jsm/node-editor/math/LimiterEditor.js +22 -9
- package/examples/jsm/node-editor/math/NormalizeEditor.js +3 -2
- package/examples/jsm/node-editor/math/OperatorEditor.js +20 -8
- package/examples/jsm/node-editor/math/PowerEditor.js +17 -8
- package/examples/jsm/node-editor/math/TrigonometryEditor.js +3 -2
- package/examples/jsm/node-editor/procedural/CheckerEditor.js +4 -4
- package/examples/jsm/node-editor/utils/JoinEditor.js +2 -2
- package/examples/jsm/node-editor/utils/OscillatorEditor.js +2 -2
- package/examples/jsm/node-editor/utils/PreviewEditor.js +166 -0
- package/examples/jsm/node-editor/utils/SplitEditor.js +2 -2
- package/examples/jsm/node-editor/utils/TimerEditor.js +1 -1
- package/examples/jsm/nodes/Nodes.js +283 -94
- package/examples/jsm/nodes/accessors/BufferNode.js +24 -0
- package/examples/jsm/nodes/accessors/CameraNode.js +27 -196
- package/examples/jsm/nodes/accessors/CubeTextureNode.js +103 -0
- package/examples/jsm/nodes/accessors/InstanceNode.js +58 -0
- package/examples/jsm/{renderers/nodes → nodes}/accessors/MaterialNode.js +49 -11
- package/examples/jsm/{renderers/nodes → nodes}/accessors/MaterialReferenceNode.js +0 -0
- package/examples/jsm/{renderers/nodes → nodes}/accessors/ModelNode.js +8 -0
- package/examples/jsm/{renderers/nodes → nodes}/accessors/ModelViewProjectionNode.js +0 -0
- package/examples/jsm/nodes/accessors/NormalNode.js +39 -99
- package/examples/jsm/{renderers/nodes → nodes}/accessors/Object3DNode.js +34 -17
- package/examples/jsm/{renderers/nodes → nodes}/accessors/PointUVNode.js +2 -2
- package/examples/jsm/nodes/accessors/PositionNode.js +41 -110
- package/examples/jsm/nodes/accessors/ReferenceNode.js +65 -0
- package/examples/jsm/nodes/accessors/ReflectNode.js +34 -121
- package/examples/jsm/nodes/accessors/SkinningNode.js +102 -0
- package/examples/jsm/nodes/accessors/StorageBufferNode.js +21 -0
- package/examples/jsm/nodes/accessors/TextureNode.js +100 -0
- package/examples/jsm/nodes/accessors/UVNode.js +17 -43
- package/examples/jsm/nodes/accessors/UserDataNode.js +23 -0
- package/examples/jsm/nodes/core/ArrayUniformNode.js +23 -0
- package/examples/jsm/nodes/core/AttributeNode.js +33 -30
- package/examples/jsm/{renderers/nodes → nodes}/core/BypassNode.js +2 -2
- package/examples/jsm/{renderers/nodes → nodes}/core/CodeNode.js +2 -30
- package/examples/jsm/nodes/core/ConstNode.js +10 -106
- package/examples/jsm/{renderers/nodes → nodes}/core/ContextNode.js +17 -3
- package/examples/jsm/nodes/core/ExpressionNode.js +24 -7
- package/examples/jsm/nodes/core/FunctionCallNode.js +26 -67
- package/examples/jsm/nodes/core/FunctionNode.js +43 -216
- package/examples/jsm/nodes/core/InputNode.js +28 -60
- package/examples/jsm/nodes/core/InstanceIndexNode.js +21 -0
- package/examples/jsm/nodes/core/Node.js +228 -94
- package/examples/jsm/{renderers/nodes → nodes}/core/NodeAttribute.js +2 -2
- package/examples/jsm/nodes/core/NodeBuilder.js +388 -560
- package/examples/jsm/{renderers/nodes → nodes}/core/NodeCode.js +0 -0
- package/examples/jsm/nodes/core/NodeFrame.js +30 -23
- package/examples/jsm/{renderers/nodes → nodes}/core/NodeFunction.js +0 -0
- package/examples/jsm/{renderers/nodes → nodes}/core/NodeFunctionInput.js +0 -0
- package/examples/jsm/{renderers/nodes → nodes}/core/NodeKeywords.js +0 -0
- package/examples/jsm/{renderers/nodes → nodes}/core/NodeParser.js +0 -0
- package/examples/jsm/nodes/core/NodeUniform.js +8 -6
- package/examples/jsm/nodes/core/NodeUtils.js +69 -37
- package/examples/jsm/{renderers/nodes → nodes}/core/NodeVar.js +2 -2
- package/examples/jsm/{renderers/nodes → nodes}/core/NodeVary.js +2 -2
- package/examples/jsm/{renderers/nodes → nodes}/core/PropertyNode.js +0 -0
- package/examples/jsm/nodes/core/TempNode.js +20 -112
- package/examples/jsm/nodes/core/UniformNode.js +46 -0
- package/examples/jsm/nodes/core/VarNode.js +58 -27
- package/examples/jsm/{renderers/nodes → nodes}/core/VaryNode.js +0 -0
- package/examples/jsm/{renderers/nodes → nodes}/core/constants.js +0 -0
- package/examples/jsm/{renderers/nodes → nodes}/display/ColorSpaceNode.js +10 -11
- package/examples/jsm/nodes/display/FrontFacingNode.js +21 -0
- package/examples/jsm/nodes/display/NormalMapNode.js +86 -0
- package/examples/jsm/nodes/display/ToneMappingNode.js +51 -0
- package/examples/jsm/nodes/fog/FogNode.js +31 -0
- package/examples/jsm/nodes/fog/FogRangeNode.js +27 -0
- package/examples/jsm/nodes/functions/BSDF/BRDF_GGX.js +33 -0
- package/examples/jsm/nodes/functions/BSDF/BRDF_Lambert.js +9 -0
- package/examples/jsm/nodes/functions/BSDF/DFGApprox.js +27 -0
- package/examples/jsm/nodes/functions/BSDF/D_GGX.js +18 -0
- package/examples/jsm/nodes/functions/BSDF/F_Schlick.js +18 -0
- package/examples/jsm/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +18 -0
- package/examples/jsm/nodes/functions/PhysicalLightingModel.js +94 -0
- package/examples/jsm/nodes/functions/light/getDistanceAttenuation.js +22 -0
- package/examples/jsm/nodes/functions/material/getGeometryRoughness.js +12 -0
- package/examples/jsm/nodes/functions/material/getRoughness.js +18 -0
- package/examples/jsm/nodes/gpgpu/ComputeNode.js +63 -0
- package/examples/jsm/nodes/lighting/AONode.js +25 -0
- package/examples/jsm/nodes/lighting/AnalyticLightNode.js +37 -0
- package/examples/jsm/nodes/lighting/EnvironmentNode.js +65 -0
- package/examples/jsm/nodes/lighting/HemisphereLightNode.js +50 -0
- package/examples/jsm/nodes/lighting/LightingContextNode.js +75 -0
- package/examples/jsm/nodes/lighting/LightingNode.js +19 -0
- package/examples/jsm/nodes/lighting/LightsNode.js +120 -0
- package/examples/jsm/nodes/lighting/PunctualLightNode.js +68 -0
- package/examples/jsm/nodes/loaders/NodeLoader.js +107 -0
- package/examples/jsm/nodes/loaders/NodeMaterialLoader.js +42 -0
- package/examples/jsm/nodes/loaders/NodeObjectLoader.js +70 -0
- package/examples/jsm/{renderers/nodes → nodes}/materials/LineBasicNodeMaterial.js +11 -4
- package/examples/jsm/nodes/materials/Materials.js +65 -0
- package/examples/jsm/{renderers/nodes → nodes}/materials/MeshBasicNodeMaterial.js +13 -4
- package/examples/jsm/nodes/materials/MeshStandardNodeMaterial.js +162 -22
- package/examples/jsm/nodes/materials/NodeMaterial.js +128 -113
- package/examples/jsm/{renderers/nodes → nodes}/materials/PointsNodeMaterial.js +13 -4
- package/examples/jsm/nodes/materials/SpriteNodeMaterial.js +84 -16
- package/examples/jsm/nodes/math/CondNode.js +26 -95
- package/examples/jsm/nodes/math/MathNode.js +164 -187
- package/examples/jsm/nodes/math/OperatorNode.js +161 -41
- package/examples/jsm/{renderers/nodes → nodes}/parsers/GLSLNodeFunction.js +2 -2
- package/examples/jsm/{renderers/nodes → nodes}/parsers/GLSLNodeParser.js +0 -0
- package/examples/jsm/{renderers/nodes → nodes}/parsers/WGSLNodeFunction.js +20 -5
- package/examples/jsm/{renderers/nodes → nodes}/parsers/WGSLNodeParser.js +0 -0
- package/examples/jsm/nodes/procedural/CheckerNode.js +16 -57
- package/examples/jsm/nodes/shadernode/ShaderNode.js +262 -0
- package/examples/jsm/nodes/shadernode/ShaderNodeBaseElements.js +274 -0
- package/examples/jsm/nodes/shadernode/ShaderNodeElements.js +106 -0
- package/examples/jsm/{renderers/nodes → nodes}/utils/ArrayElementNode.js +3 -3
- package/examples/jsm/{renderers/nodes → nodes}/utils/ConvertNode.js +11 -3
- package/examples/jsm/nodes/utils/JoinNode.js +17 -89
- package/examples/jsm/nodes/utils/MatcapUVNode.js +25 -0
- package/examples/jsm/nodes/utils/MaxMipLevelNode.js +32 -0
- package/examples/jsm/{renderers/nodes → nodes}/utils/OscNode.js +18 -2
- package/examples/jsm/{renderers/nodes → nodes}/utils/SplitNode.js +16 -0
- package/examples/jsm/{renderers/nodes → nodes}/utils/SpriteSheetUVNode.js +3 -3
- package/examples/jsm/nodes/utils/TimerNode.js +30 -65
- package/examples/jsm/objects/Lensflare.js +2 -2
- package/examples/jsm/objects/LightningStorm.js +4 -4
- package/examples/jsm/objects/MarchingCubes.js +5 -9
- package/examples/jsm/objects/Reflector.js +8 -4
- package/examples/jsm/objects/ReflectorForSSRPass.js +2 -2
- package/examples/jsm/objects/Refractor.js +8 -4
- package/examples/jsm/objects/ShadowMesh.js +2 -2
- package/examples/jsm/objects/Sky.js +2 -2
- package/examples/jsm/objects/Water.js +2 -2
- package/examples/jsm/objects/Water2.js +2 -2
- package/examples/jsm/offscreen/jank.js +5 -5
- package/examples/jsm/offscreen/offscreen.js +1 -1
- package/examples/jsm/offscreen/scene.js +11 -11
- package/examples/jsm/postprocessing/AdaptiveToneMappingPass.js +5 -7
- package/examples/jsm/postprocessing/AfterimagePass.js +0 -10
- package/examples/jsm/postprocessing/BloomPass.js +48 -20
- package/examples/jsm/postprocessing/DotScreenPass.js +1 -1
- package/examples/jsm/postprocessing/EffectComposer.js +1 -9
- package/examples/jsm/postprocessing/LUTPass.js +2 -2
- package/examples/jsm/postprocessing/OutlinePass.js +7 -11
- package/examples/jsm/postprocessing/SAOPass.js +2 -9
- package/examples/jsm/postprocessing/SSAARenderPass.js +1 -4
- package/examples/jsm/postprocessing/SSRPass.js +3 -9
- package/examples/jsm/postprocessing/TAARenderPass.js +4 -4
- package/examples/jsm/postprocessing/UnrealBloomPass.js +3 -8
- package/examples/jsm/renderers/CSS2DRenderer.js +21 -24
- package/examples/jsm/renderers/CSS3DRenderer.js +7 -8
- package/examples/jsm/renderers/Projector.js +101 -128
- package/examples/jsm/renderers/SVGRenderer.js +4 -4
- package/examples/jsm/renderers/webgl/nodes/SlotNode.js +1 -1
- package/examples/jsm/renderers/webgl/nodes/WebGLNodeBuilder.js +127 -23
- package/examples/jsm/renderers/webgl/nodes/WebGLNodes.js +14 -3
- package/examples/jsm/renderers/webgl/nodes/WebGLPhysicalContextNode.js +5 -5
- package/examples/jsm/renderers/webgpu/WebGPUAttributes.js +4 -4
- package/examples/jsm/renderers/webgpu/WebGPUBackground.js +16 -10
- package/examples/jsm/renderers/webgpu/WebGPUBindings.js +8 -7
- package/examples/jsm/renderers/webgpu/WebGPUBuffer.js +43 -0
- package/examples/jsm/renderers/webgpu/WebGPUComputePipelines.js +14 -7
- package/examples/jsm/renderers/webgpu/WebGPUInfo.js +1 -1
- package/examples/jsm/renderers/webgpu/WebGPUObjects.js +0 -6
- package/examples/jsm/renderers/webgpu/WebGPURenderPipeline.js +20 -20
- package/examples/jsm/renderers/webgpu/WebGPURenderPipelines.js +2 -1
- package/examples/jsm/renderers/webgpu/WebGPURenderStates.js +66 -0
- package/examples/jsm/renderers/webgpu/WebGPURenderer.js +47 -24
- package/examples/jsm/renderers/webgpu/WebGPUSampledTexture.js +14 -14
- package/examples/jsm/renderers/webgpu/WebGPUSampler.js +2 -2
- package/examples/jsm/renderers/webgpu/WebGPUStorageBuffer.js +5 -8
- package/examples/jsm/renderers/webgpu/WebGPUTextureUtils.js +23 -20
- package/examples/jsm/renderers/webgpu/WebGPUTextures.js +37 -18
- package/examples/jsm/renderers/webgpu/WebGPUUniform.js +14 -14
- package/examples/jsm/renderers/webgpu/WebGPUUniformBuffer.js +5 -32
- package/examples/jsm/renderers/webgpu/WebGPUUniformsGroup.js +2 -2
- package/examples/jsm/renderers/webgpu/constants.js +3 -2
- package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeBuilder.js +276 -284
- package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeSampledTexture.js +20 -2
- package/examples/jsm/renderers/webgpu/nodes/WebGPUNodes.js +24 -14
- package/examples/jsm/shaders/BlendShader.js +2 -1
- package/examples/jsm/shaders/CopyShader.js +4 -3
- package/examples/jsm/shaders/FXAAShader.js +219 -1051
- package/examples/jsm/shaders/FreiChenShader.js +1 -1
- package/examples/jsm/shaders/HorizontalBlurShader.js +1 -1
- package/examples/jsm/shaders/HorizontalTiltShiftShader.js +1 -1
- package/examples/jsm/shaders/SSRShader.js +3 -3
- package/examples/jsm/shaders/ToneMapShader.js +1 -1
- package/examples/jsm/utils/BufferGeometryUtils.js +292 -22
- package/examples/jsm/utils/GPUStatsPanel.js +1 -1
- package/examples/jsm/utils/LDrawUtils.js +6 -6
- package/examples/jsm/utils/SceneUtils.js +76 -2
- package/examples/jsm/utils/SkeletonUtils.js +1 -1
- package/examples/jsm/utils/UVsDebug.js +23 -32
- package/examples/jsm/webxr/ARButton.js +14 -4
- package/examples/jsm/webxr/OculusHandPointerModel.js +3 -3
- package/examples/jsm/webxr/Text2D.js +1 -1
- package/examples/jsm/webxr/VRButton.js +15 -1
- package/examples/jsm/webxr/XRHandMeshModel.js +3 -7
- package/examples/jsm/webxr/XRHandModelFactory.js +3 -0
- package/package.json +37 -19
- package/src/Three.Legacy.js +41 -1912
- package/src/Three.js +6 -3
- package/src/animation/AnimationClip.js +1 -1
- package/src/animation/AnimationMixer.js +5 -3
- package/src/animation/AnimationObjectGroup.js +2 -2
- package/src/animation/PropertyBinding.js +8 -18
- package/src/audio/PositionalAudio.js +8 -0
- package/src/cameras/ArrayCamera.js +2 -3
- package/src/cameras/Camera.js +2 -2
- package/src/cameras/CubeCamera.js +6 -1
- package/src/cameras/OrthographicCamera.js +2 -2
- package/src/cameras/PerspectiveCamera.js +2 -2
- package/src/constants.js +7 -2
- package/src/core/BufferAttribute.js +7 -12
- package/src/core/BufferGeometry.js +4 -4
- package/src/core/GLBufferAttribute.js +2 -2
- package/src/core/InstancedBufferAttribute.js +2 -2
- package/src/core/InstancedBufferGeometry.js +2 -2
- package/src/core/InstancedInterleavedBuffer.js +2 -2
- package/src/core/InterleavedBuffer.js +2 -2
- package/src/core/InterleavedBufferAttribute.js +5 -11
- package/src/core/Object3D.js +6 -3
- package/src/core/Raycaster.js +2 -2
- package/src/extras/DataUtils.js +127 -40
- package/src/extras/Earcut.js +2 -2
- package/src/extras/PMREMGenerator.js +132 -104
- package/src/extras/core/CurvePath.js +3 -3
- package/src/extras/core/ShapePath.js +5 -6
- package/src/extras/curves/ArcCurve.js +2 -2
- package/src/extras/curves/CatmullRomCurve3.js +2 -2
- package/src/extras/curves/CubicBezierCurve.js +2 -2
- package/src/extras/curves/CubicBezierCurve3.js +2 -2
- package/src/extras/curves/EllipseCurve.js +2 -2
- package/src/extras/curves/LineCurve.js +2 -2
- package/src/extras/curves/LineCurve3.js +2 -1
- package/src/extras/curves/QuadraticBezierCurve.js +2 -2
- package/src/extras/curves/QuadraticBezierCurve3.js +2 -2
- package/src/extras/curves/SplineCurve.js +2 -2
- package/src/geometries/CapsuleGeometry.js +33 -0
- package/src/geometries/ExtrudeGeometry.js +2 -0
- package/src/geometries/Geometries.js +1 -0
- package/src/geometries/TorusKnotGeometry.js +2 -2
- package/src/geometries/WireframeGeometry.js +3 -2
- package/src/helpers/BoxHelper.js +2 -2
- package/src/helpers/PointLightHelper.js +1 -1
- package/src/helpers/SkeletonHelper.js +3 -2
- package/src/lights/AmbientLight.js +2 -2
- package/src/lights/AmbientLightProbe.js +2 -2
- package/src/lights/DirectionalLight.js +2 -2
- package/src/lights/DirectionalLightShadow.js +2 -2
- package/src/lights/HemisphereLight.js +4 -4
- package/src/lights/HemisphereLightProbe.js +2 -2
- package/src/lights/Light.js +4 -4
- package/src/lights/LightProbe.js +2 -2
- package/src/lights/PointLight.js +4 -4
- package/src/lights/PointLightShadow.js +2 -2
- package/src/lights/RectAreaLight.js +2 -2
- package/src/lights/SpotLight.js +4 -4
- package/src/lights/SpotLightShadow.js +2 -2
- package/src/loaders/FileLoader.js +3 -1
- package/src/loaders/ImageBitmapLoader.js +2 -2
- package/src/loaders/ImageLoader.js +1 -1
- package/src/loaders/LoaderUtils.js +1 -1
- package/src/loaders/MaterialLoader.js +8 -3
- package/src/loaders/ObjectLoader.js +23 -25
- package/src/materials/LineBasicMaterial.js +6 -13
- package/src/materials/LineDashedMaterial.js +2 -15
- package/src/materials/Material.js +48 -14
- package/src/materials/Materials.js +66 -18
- package/src/materials/MeshBasicMaterial.js +6 -31
- package/src/materials/MeshDepthMaterial.js +2 -22
- package/src/materials/MeshDistanceMaterial.js +2 -22
- package/src/materials/MeshLambertMaterial.js +6 -34
- package/src/materials/MeshMatcapMaterial.js +6 -28
- package/src/materials/MeshNormalMaterial.js +2 -26
- package/src/materials/MeshPhongMaterial.js +6 -48
- package/src/materials/MeshPhysicalMaterial.js +32 -35
- package/src/materials/MeshStandardMaterial.js +6 -54
- package/src/materials/MeshToonMaterial.js +6 -38
- package/src/materials/PointsMaterial.js +6 -15
- package/src/materials/RawShaderMaterial.js +2 -2
- package/src/materials/ShaderMaterial.js +3 -17
- package/src/materials/ShadowMaterial.js +6 -8
- package/src/materials/SpriteMaterial.js +6 -12
- package/src/math/Box2.js +2 -2
- package/src/math/Box3.js +5 -5
- package/src/math/Color.js +84 -35
- package/src/math/ColorManagement.js +74 -0
- package/src/math/Euler.js +16 -14
- package/src/math/Interpolant.js +4 -9
- package/src/math/MathUtils.js +76 -7
- package/src/math/Matrix3.js +2 -2
- package/src/math/Matrix4.js +2 -3
- package/src/math/Plane.js +2 -2
- package/src/math/Quaternion.js +11 -2
- package/src/math/Spherical.js +1 -1
- package/src/math/SphericalHarmonics3.js +2 -2
- package/src/math/Vector2.js +2 -2
- package/src/math/Vector3.js +12 -3
- package/src/math/Vector4.js +2 -2
- package/src/math/interpolants/DiscreteInterpolant.js +1 -1
- package/src/objects/Bone.js +2 -2
- package/src/objects/Group.js +2 -2
- package/src/objects/InstancedMesh.js +4 -4
- package/src/objects/Line.js +76 -107
- package/src/objects/LineLoop.js +2 -2
- package/src/objects/LineSegments.js +15 -23
- package/src/objects/Mesh.js +82 -104
- package/src/objects/Points.js +32 -54
- package/src/objects/SkinnedMesh.js +5 -8
- package/src/objects/Sprite.js +4 -4
- package/src/renderers/WebGL3DRenderTarget.js +22 -0
- package/src/renderers/WebGLArrayRenderTarget.js +22 -0
- package/src/renderers/WebGLCubeRenderTarget.js +7 -14
- package/src/renderers/WebGLMultipleRenderTargets.js +8 -5
- package/src/renderers/WebGLRenderTarget.js +16 -18
- package/src/renderers/WebGLRenderer.js +108 -63
- package/src/renderers/shaders/ShaderChunk/bsdfs.glsl.js +46 -0
- package/src/renderers/shaders/ShaderChunk/common.glsl.js +1 -0
- package/src/renderers/shaders/ShaderChunk/cube_uv_reflection_fragment.glsl.js +12 -13
- package/src/renderers/shaders/ShaderChunk/dithering_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +3 -19
- package/src/renderers/shaders/ShaderChunk/iridescence_fragment.glsl.js +107 -0
- package/src/renderers/shaders/ShaderChunk/iridescence_pars_fragment.glsl.js +14 -0
- package/src/renderers/shaders/ShaderChunk/lightmap_fragment.glsl.js +0 -6
- package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +25 -0
- package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +0 -6
- package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +23 -0
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +43 -5
- package/src/renderers/shaders/ShaderChunk/morphcolor_vertex.glsl.js +24 -0
- package/src/renderers/shaders/ShaderChunk/morphnormal_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/morphtarget_pars_vertex.glsl.js +7 -7
- package/src/renderers/shaders/ShaderChunk/morphtarget_vertex.glsl.js +1 -9
- package/src/renderers/shaders/ShaderChunk/skinning_pars_vertex.glsl.js +16 -31
- package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk.js +6 -0
- package/src/renderers/shaders/ShaderLib/background.glsl.js +8 -0
- package/src/renderers/shaders/ShaderLib/linedashed.glsl.js +1 -0
- package/src/renderers/shaders/ShaderLib/meshbasic.glsl.js +3 -2
- package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +1 -0
- package/src/renderers/shaders/ShaderLib/meshmatcap.glsl.js +1 -0
- package/src/renderers/shaders/ShaderLib/meshnormal.glsl.js +6 -0
- package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +1 -0
- package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +10 -0
- package/src/renderers/shaders/ShaderLib/meshtoon.glsl.js +1 -0
- package/src/renderers/shaders/ShaderLib/points.glsl.js +1 -0
- package/src/renderers/shaders/ShaderLib.js +6 -0
- package/src/renderers/shaders/UniformsLib.js +2 -2
- package/src/renderers/webgl/WebGLAttributes.js +6 -6
- package/src/renderers/webgl/WebGLBackground.js +3 -0
- package/src/renderers/webgl/WebGLBindingStates.js +57 -29
- package/src/renderers/webgl/WebGLLights.js +0 -1
- package/src/renderers/webgl/WebGLMaterials.js +72 -187
- package/src/renderers/webgl/WebGLMorphtargets.js +47 -23
- package/src/renderers/webgl/WebGLProgram.js +57 -19
- package/src/renderers/webgl/WebGLPrograms.js +75 -86
- package/src/renderers/webgl/WebGLShaderCache.js +4 -3
- package/src/renderers/webgl/WebGLShadowMap.js +6 -8
- package/src/renderers/webgl/WebGLTextures.js +567 -380
- package/src/renderers/webgl/WebGLUniforms.js +79 -80
- package/src/renderers/webgl/WebGLUtils.js +12 -1
- package/src/renderers/webxr/WebXRManager.js +60 -45
- package/src/scenes/Fog.js +2 -2
- package/src/scenes/FogExp2.js +2 -2
- package/src/scenes/Scene.js +2 -2
- package/src/textures/CanvasTexture.js +2 -2
- package/src/textures/CompressedTexture.js +2 -2
- package/src/textures/CubeTexture.js +2 -2
- package/src/textures/{DataTexture3D.js → Data3DTexture.js} +4 -4
- package/src/textures/{DataTexture2DArray.js → DataArrayTexture.js} +4 -4
- package/src/textures/DataTexture.js +2 -5
- package/src/textures/DepthTexture.js +5 -5
- package/src/textures/FramebufferTexture.js +2 -2
- package/src/textures/Source.js +123 -0
- package/src/textures/Texture.js +27 -97
- package/src/textures/VideoTexture.js +2 -2
- package/examples/js/csm/Frustum.js +0 -133
- package/examples/js/deprecated/Geometry.js +0 -1656
- package/examples/js/loaders/VRMLoader.js +0 -72
- package/examples/js/objects/ReflectorRTT.js +0 -16
- package/examples/js/postprocessing/SSRrPass.js +0 -494
- package/examples/js/shaders/SSRrShader.js +0 -336
- package/examples/jsm/deprecated/Geometry.js +0 -1869
- package/examples/jsm/libs/opentype.module.min.js +0 -119
- package/examples/jsm/loaders/NodeMaterialLoader.js +0 -263
- package/examples/jsm/loaders/VRMLoader.js +0 -78
- package/examples/jsm/nodes/accessors/ColorsNode.js +0 -56
- package/examples/jsm/nodes/accessors/LightNode.js +0 -60
- package/examples/jsm/nodes/accessors/ResolutionNode.js +0 -64
- package/examples/jsm/nodes/accessors/ScreenUVNode.js +0 -64
- package/examples/jsm/nodes/core/NodeLib.js +0 -64
- package/examples/jsm/nodes/core/StructNode.js +0 -106
- package/examples/jsm/nodes/effects/BlurNode.js +0 -171
- package/examples/jsm/nodes/effects/ColorAdjustmentNode.js +0 -140
- package/examples/jsm/nodes/effects/LuminanceNode.js +0 -75
- package/examples/jsm/nodes/inputs/BoolNode.js +0 -51
- package/examples/jsm/nodes/inputs/ColorNode.js +0 -58
- package/examples/jsm/nodes/inputs/CubeTextureNode.js +0 -108
- package/examples/jsm/nodes/inputs/FloatNode.js +0 -51
- package/examples/jsm/nodes/inputs/IntNode.js +0 -51
- package/examples/jsm/nodes/inputs/Matrix3Node.js +0 -63
- package/examples/jsm/nodes/inputs/Matrix4Node.js +0 -63
- package/examples/jsm/nodes/inputs/PropertyNode.js +0 -47
- package/examples/jsm/nodes/inputs/RTTNode.js +0 -157
- package/examples/jsm/nodes/inputs/ReflectorNode.js +0 -90
- package/examples/jsm/nodes/inputs/ScreenNode.js +0 -28
- package/examples/jsm/nodes/inputs/TextureNode.js +0 -116
- package/examples/jsm/nodes/inputs/Vector2Node.js +0 -57
- package/examples/jsm/nodes/inputs/Vector3Node.js +0 -58
- package/examples/jsm/nodes/inputs/Vector4Node.js +0 -59
- package/examples/jsm/nodes/materials/BasicNodeMaterial.js +0 -26
- package/examples/jsm/nodes/materials/PhongNodeMaterial.js +0 -36
- package/examples/jsm/nodes/materials/StandardNodeMaterial.js +0 -40
- package/examples/jsm/nodes/materials/nodes/BasicNode.js +0 -154
- package/examples/jsm/nodes/materials/nodes/MeshStandardNode.js +0 -116
- package/examples/jsm/nodes/materials/nodes/PhongNode.js +0 -409
- package/examples/jsm/nodes/materials/nodes/RawNode.js +0 -62
- package/examples/jsm/nodes/materials/nodes/SpriteNode.js +0 -236
- package/examples/jsm/nodes/materials/nodes/StandardNode.js +0 -609
- package/examples/jsm/nodes/misc/BumpMapNode.js +0 -163
- package/examples/jsm/nodes/misc/NormalMapNode.js +0 -138
- package/examples/jsm/nodes/misc/TextureCubeNode.js +0 -86
- package/examples/jsm/nodes/misc/TextureCubeUVNode.js +0 -280
- package/examples/jsm/nodes/postprocessing/NodePass.js +0 -93
- package/examples/jsm/nodes/postprocessing/NodePostProcessing.js +0 -148
- package/examples/jsm/nodes/procedural/Fractal3DNode.js +0 -104
- package/examples/jsm/nodes/procedural/Noise2DNode.js +0 -149
- package/examples/jsm/nodes/procedural/Noise3DNode.js +0 -141
- package/examples/jsm/nodes/utils/BypassNode.js +0 -85
- package/examples/jsm/nodes/utils/ColorSpaceNode.js +0 -145
- package/examples/jsm/nodes/utils/MaxMIPLevelNode.js +0 -56
- package/examples/jsm/nodes/utils/RemapNode.js +0 -155
- package/examples/jsm/nodes/utils/SpecularMIPLevelNode.js +0 -101
- package/examples/jsm/nodes/utils/SubSlotNode.js +0 -77
- package/examples/jsm/nodes/utils/SwitchNode.js +0 -103
- package/examples/jsm/nodes/utils/UVTransformNode.js +0 -66
- package/examples/jsm/nodes/utils/VelocityNode.js +0 -170
- package/examples/jsm/objects/ReflectorRTT.js +0 -15
- package/examples/jsm/postprocessing/SSRrPass.js +0 -579
- package/examples/jsm/renderers/nodes/Nodes.js +0 -166
- package/examples/jsm/renderers/nodes/ShaderNode.js +0 -373
- package/examples/jsm/renderers/nodes/accessors/CameraNode.js +0 -68
- package/examples/jsm/renderers/nodes/accessors/NormalNode.js +0 -63
- package/examples/jsm/renderers/nodes/accessors/PositionNode.js +0 -67
- package/examples/jsm/renderers/nodes/accessors/ReferenceNode.js +0 -91
- package/examples/jsm/renderers/nodes/accessors/SkinningNode.js +0 -107
- package/examples/jsm/renderers/nodes/accessors/UVNode.js +0 -25
- package/examples/jsm/renderers/nodes/core/ArrayInputNode.js +0 -23
- package/examples/jsm/renderers/nodes/core/AttributeNode.js +0 -54
- package/examples/jsm/renderers/nodes/core/ExpressionNode.js +0 -32
- package/examples/jsm/renderers/nodes/core/FunctionCallNode.js +0 -67
- package/examples/jsm/renderers/nodes/core/FunctionNode.js +0 -87
- package/examples/jsm/renderers/nodes/core/InputNode.js +0 -66
- package/examples/jsm/renderers/nodes/core/Node.js +0 -104
- package/examples/jsm/renderers/nodes/core/NodeBuilder.js +0 -634
- package/examples/jsm/renderers/nodes/core/NodeFrame.js +0 -59
- package/examples/jsm/renderers/nodes/core/NodeUniform.js +0 -28
- package/examples/jsm/renderers/nodes/core/TempNode.js +0 -43
- package/examples/jsm/renderers/nodes/core/VarNode.js +0 -51
- package/examples/jsm/renderers/nodes/display/NormalMapNode.js +0 -87
- package/examples/jsm/renderers/nodes/functions/BSDFs.js +0 -122
- package/examples/jsm/renderers/nodes/functions/PhysicalMaterialFunctions.js +0 -27
- package/examples/jsm/renderers/nodes/inputs/BufferNode.js +0 -25
- package/examples/jsm/renderers/nodes/inputs/ColorNode.js +0 -18
- package/examples/jsm/renderers/nodes/inputs/FloatNode.js +0 -17
- package/examples/jsm/renderers/nodes/inputs/IntNode.js +0 -17
- package/examples/jsm/renderers/nodes/inputs/Matrix3Node.js +0 -18
- package/examples/jsm/renderers/nodes/inputs/Matrix4Node.js +0 -18
- package/examples/jsm/renderers/nodes/inputs/TextureNode.js +0 -74
- package/examples/jsm/renderers/nodes/inputs/Vector2Node.js +0 -18
- package/examples/jsm/renderers/nodes/inputs/Vector3Node.js +0 -18
- package/examples/jsm/renderers/nodes/inputs/Vector4Node.js +0 -18
- package/examples/jsm/renderers/nodes/lights/LightContextNode.js +0 -59
- package/examples/jsm/renderers/nodes/lights/LightNode.js +0 -79
- package/examples/jsm/renderers/nodes/lights/LightsNode.js +0 -44
- package/examples/jsm/renderers/nodes/materials/Materials.js +0 -11
- package/examples/jsm/renderers/nodes/materials/MeshStandardNodeMaterial.js +0 -63
- package/examples/jsm/renderers/nodes/math/CondNode.js +0 -60
- package/examples/jsm/renderers/nodes/math/MathNode.js +0 -242
- package/examples/jsm/renderers/nodes/math/OperatorNode.js +0 -174
- package/examples/jsm/renderers/nodes/procedural/CheckerNode.js +0 -36
- package/examples/jsm/renderers/nodes/utils/JoinNode.js +0 -42
- package/examples/jsm/renderers/nodes/utils/TimerNode.js +0 -47
- package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeUniformsGroup.js +0 -20
- package/examples/jsm/shaders/SSRrShader.js +0 -307
- package/src/renderers/WebGLMultisampleRenderTarget.js +0 -33
|
@@ -2,6 +2,7 @@ import { EventDispatcher } from '../core/EventDispatcher.js';
|
|
|
2
2
|
import { Texture } from '../textures/Texture.js';
|
|
3
3
|
import { LinearFilter } from '../constants.js';
|
|
4
4
|
import { Vector4 } from '../math/Vector4.js';
|
|
5
|
+
import { Source } from '../textures/Source.js';
|
|
5
6
|
|
|
6
7
|
/*
|
|
7
8
|
In options, we can specify:
|
|
@@ -14,6 +15,8 @@ class WebGLRenderTarget extends EventDispatcher {
|
|
|
14
15
|
|
|
15
16
|
super();
|
|
16
17
|
|
|
18
|
+
this.isWebGLRenderTarget = true;
|
|
19
|
+
|
|
17
20
|
this.width = width;
|
|
18
21
|
this.height = height;
|
|
19
22
|
this.depth = 1;
|
|
@@ -23,30 +26,22 @@ class WebGLRenderTarget extends EventDispatcher {
|
|
|
23
26
|
|
|
24
27
|
this.viewport = new Vector4( 0, 0, width, height );
|
|
25
28
|
|
|
26
|
-
|
|
27
|
-
this.texture.isRenderTargetTexture = true;
|
|
29
|
+
const image = { width: width, height: height, depth: 1 };
|
|
28
30
|
|
|
29
|
-
this.texture
|
|
31
|
+
this.texture = new Texture( image, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.encoding );
|
|
32
|
+
this.texture.isRenderTargetTexture = true;
|
|
30
33
|
|
|
34
|
+
this.texture.flipY = false;
|
|
31
35
|
this.texture.generateMipmaps = options.generateMipmaps !== undefined ? options.generateMipmaps : false;
|
|
32
36
|
this.texture.internalFormat = options.internalFormat !== undefined ? options.internalFormat : null;
|
|
33
37
|
this.texture.minFilter = options.minFilter !== undefined ? options.minFilter : LinearFilter;
|
|
34
38
|
|
|
35
39
|
this.depthBuffer = options.depthBuffer !== undefined ? options.depthBuffer : true;
|
|
36
40
|
this.stencilBuffer = options.stencilBuffer !== undefined ? options.stencilBuffer : false;
|
|
37
|
-
this.depthTexture = options.depthTexture !== undefined ? options.depthTexture : null;
|
|
38
|
-
|
|
39
|
-
}
|
|
40
41
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
texture.image = {
|
|
44
|
-
width: this.width,
|
|
45
|
-
height: this.height,
|
|
46
|
-
depth: this.depth
|
|
47
|
-
};
|
|
42
|
+
this.depthTexture = options.depthTexture !== undefined ? options.depthTexture : null;
|
|
48
43
|
|
|
49
|
-
this.
|
|
44
|
+
this.samples = options.samples !== undefined ? options.samples : 0;
|
|
50
45
|
|
|
51
46
|
}
|
|
52
47
|
|
|
@@ -86,14 +81,19 @@ class WebGLRenderTarget extends EventDispatcher {
|
|
|
86
81
|
this.viewport.copy( source.viewport );
|
|
87
82
|
|
|
88
83
|
this.texture = source.texture.clone();
|
|
84
|
+
this.texture.isRenderTargetTexture = true;
|
|
89
85
|
|
|
90
86
|
// ensure image object is not shared, see #20328
|
|
91
87
|
|
|
92
|
-
|
|
88
|
+
const image = Object.assign( {}, source.texture.image );
|
|
89
|
+
this.texture.source = new Source( image );
|
|
93
90
|
|
|
94
91
|
this.depthBuffer = source.depthBuffer;
|
|
95
92
|
this.stencilBuffer = source.stencilBuffer;
|
|
96
|
-
|
|
93
|
+
|
|
94
|
+
if ( source.depthTexture !== null ) this.depthTexture = source.depthTexture.clone();
|
|
95
|
+
|
|
96
|
+
this.samples = source.samples;
|
|
97
97
|
|
|
98
98
|
return this;
|
|
99
99
|
|
|
@@ -107,6 +107,4 @@ class WebGLRenderTarget extends EventDispatcher {
|
|
|
107
107
|
|
|
108
108
|
}
|
|
109
109
|
|
|
110
|
-
WebGLRenderTarget.prototype.isWebGLRenderTarget = true;
|
|
111
|
-
|
|
112
110
|
export { WebGLRenderTarget };
|
|
@@ -9,12 +9,12 @@ import {
|
|
|
9
9
|
UnsignedByteType,
|
|
10
10
|
LinearEncoding,
|
|
11
11
|
NoToneMapping,
|
|
12
|
-
LinearMipmapLinearFilter
|
|
13
|
-
NearestFilter,
|
|
14
|
-
ClampToEdgeWrapping
|
|
12
|
+
LinearMipmapLinearFilter
|
|
15
13
|
} from '../constants.js';
|
|
14
|
+
import { floorPowerOfTwo } from '../math/MathUtils.js';
|
|
16
15
|
import { Frustum } from '../math/Frustum.js';
|
|
17
16
|
import { Matrix4 } from '../math/Matrix4.js';
|
|
17
|
+
import { Vector2 } from '../math/Vector2.js';
|
|
18
18
|
import { Vector3 } from '../math/Vector3.js';
|
|
19
19
|
import { Vector4 } from '../math/Vector4.js';
|
|
20
20
|
import { WebGLAnimation } from './webgl/WebGLAnimation.js';
|
|
@@ -31,7 +31,6 @@ import { WebGLGeometries } from './webgl/WebGLGeometries.js';
|
|
|
31
31
|
import { WebGLIndexedBufferRenderer } from './webgl/WebGLIndexedBufferRenderer.js';
|
|
32
32
|
import { WebGLInfo } from './webgl/WebGLInfo.js';
|
|
33
33
|
import { WebGLMorphtargets } from './webgl/WebGLMorphtargets.js';
|
|
34
|
-
import { WebGLMultisampleRenderTarget } from './WebGLMultisampleRenderTarget.js';
|
|
35
34
|
import { WebGLObjects } from './webgl/WebGLObjects.js';
|
|
36
35
|
import { WebGLPrograms } from './webgl/WebGLPrograms.js';
|
|
37
36
|
import { WebGLProperties } from './webgl/WebGLProperties.js';
|
|
@@ -58,10 +57,11 @@ function createCanvasElement() {
|
|
|
58
57
|
|
|
59
58
|
function WebGLRenderer( parameters = {} ) {
|
|
60
59
|
|
|
60
|
+
this.isWebGLRenderer = true;
|
|
61
|
+
|
|
61
62
|
const _canvas = parameters.canvas !== undefined ? parameters.canvas : createCanvasElement(),
|
|
62
63
|
_context = parameters.context !== undefined ? parameters.context : null,
|
|
63
64
|
|
|
64
|
-
_alpha = parameters.alpha !== undefined ? parameters.alpha : false,
|
|
65
65
|
_depth = parameters.depth !== undefined ? parameters.depth : true,
|
|
66
66
|
_stencil = parameters.stencil !== undefined ? parameters.stencil : true,
|
|
67
67
|
_antialias = parameters.antialias !== undefined ? parameters.antialias : false,
|
|
@@ -70,6 +70,18 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
70
70
|
_powerPreference = parameters.powerPreference !== undefined ? parameters.powerPreference : 'default',
|
|
71
71
|
_failIfMajorPerformanceCaveat = parameters.failIfMajorPerformanceCaveat !== undefined ? parameters.failIfMajorPerformanceCaveat : false;
|
|
72
72
|
|
|
73
|
+
let _alpha;
|
|
74
|
+
|
|
75
|
+
if ( _context !== null ) {
|
|
76
|
+
|
|
77
|
+
_alpha = _context.getContextAttributes().alpha;
|
|
78
|
+
|
|
79
|
+
} else {
|
|
80
|
+
|
|
81
|
+
_alpha = parameters.alpha !== undefined ? parameters.alpha : false;
|
|
82
|
+
|
|
83
|
+
}
|
|
84
|
+
|
|
73
85
|
let currentRenderList = null;
|
|
74
86
|
let currentRenderState = null;
|
|
75
87
|
|
|
@@ -122,6 +134,28 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
122
134
|
this.toneMapping = NoToneMapping;
|
|
123
135
|
this.toneMappingExposure = 1.0;
|
|
124
136
|
|
|
137
|
+
//
|
|
138
|
+
|
|
139
|
+
Object.defineProperties( this, {
|
|
140
|
+
|
|
141
|
+
// @deprecated since r136, 0e21088102b4de7e0a0a33140620b7a3424b9e6d
|
|
142
|
+
|
|
143
|
+
gammaFactor: {
|
|
144
|
+
get: function () {
|
|
145
|
+
|
|
146
|
+
console.warn( 'THREE.WebGLRenderer: .gammaFactor has been removed.' );
|
|
147
|
+
return 2;
|
|
148
|
+
|
|
149
|
+
},
|
|
150
|
+
set: function () {
|
|
151
|
+
|
|
152
|
+
console.warn( 'THREE.WebGLRenderer: .gammaFactor has been removed.' );
|
|
153
|
+
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
} );
|
|
158
|
+
|
|
125
159
|
// internal properties
|
|
126
160
|
|
|
127
161
|
const _this = this;
|
|
@@ -171,6 +205,7 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
171
205
|
|
|
172
206
|
const _projScreenMatrix = new Matrix4();
|
|
173
207
|
|
|
208
|
+
const _vector2 = new Vector2();
|
|
174
209
|
const _vector3 = new Vector3();
|
|
175
210
|
|
|
176
211
|
const _emptyScene = { background: null, fog: null, environment: null, overrideMaterial: null, isScene: true };
|
|
@@ -218,6 +253,7 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
218
253
|
// event listeners must be registered before WebGL context is created, see #12753
|
|
219
254
|
_canvas.addEventListener( 'webglcontextlost', onContextLost, false );
|
|
220
255
|
_canvas.addEventListener( 'webglcontextrestored', onContextRestore, false );
|
|
256
|
+
_canvas.addEventListener( 'webglcontextcreationerror', onContextCreationError, false );
|
|
221
257
|
|
|
222
258
|
if ( _gl === null ) {
|
|
223
259
|
|
|
@@ -298,7 +334,7 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
298
334
|
morphtargets = new WebGLMorphtargets( _gl, capabilities, textures );
|
|
299
335
|
clipping = new WebGLClipping( properties );
|
|
300
336
|
programCache = new WebGLPrograms( _this, cubemaps, cubeuvmaps, extensions, capabilities, bindingStates, clipping );
|
|
301
|
-
materials = new WebGLMaterials( properties );
|
|
337
|
+
materials = new WebGLMaterials( _this, properties );
|
|
302
338
|
renderLists = new WebGLRenderLists();
|
|
303
339
|
renderStates = new WebGLRenderStates( extensions, capabilities );
|
|
304
340
|
background = new WebGLBackground( _this, cubemaps, state, objects, _alpha, _premultipliedAlpha );
|
|
@@ -521,13 +557,13 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
521
557
|
|
|
522
558
|
};
|
|
523
559
|
|
|
524
|
-
this.clear = function ( color, depth, stencil ) {
|
|
560
|
+
this.clear = function ( color = true, depth = true, stencil = true ) {
|
|
525
561
|
|
|
526
562
|
let bits = 0;
|
|
527
563
|
|
|
528
|
-
if ( color
|
|
529
|
-
if ( depth
|
|
530
|
-
if ( stencil
|
|
564
|
+
if ( color ) bits |= _gl.COLOR_BUFFER_BIT;
|
|
565
|
+
if ( depth ) bits |= _gl.DEPTH_BUFFER_BIT;
|
|
566
|
+
if ( stencil ) bits |= _gl.STENCIL_BUFFER_BIT;
|
|
531
567
|
|
|
532
568
|
_gl.clear( bits );
|
|
533
569
|
|
|
@@ -557,6 +593,7 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
557
593
|
|
|
558
594
|
_canvas.removeEventListener( 'webglcontextlost', onContextLost, false );
|
|
559
595
|
_canvas.removeEventListener( 'webglcontextrestored', onContextRestore, false );
|
|
596
|
+
_canvas.removeEventListener( 'webglcontextcreationerror', onContextCreationError, false );
|
|
560
597
|
|
|
561
598
|
renderLists.dispose();
|
|
562
599
|
renderStates.dispose();
|
|
@@ -617,6 +654,12 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
617
654
|
|
|
618
655
|
}
|
|
619
656
|
|
|
657
|
+
function onContextCreationError( event ) {
|
|
658
|
+
|
|
659
|
+
console.error( 'THREE.WebGLRenderer: A WebGL context could not be created. Reason: ', event.statusMessage );
|
|
660
|
+
|
|
661
|
+
}
|
|
662
|
+
|
|
620
663
|
function onMaterialDispose( event ) {
|
|
621
664
|
|
|
622
665
|
const material = event.target;
|
|
@@ -879,7 +922,7 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
879
922
|
const animation = new WebGLAnimation();
|
|
880
923
|
animation.setAnimationLoop( onAnimationFrame );
|
|
881
924
|
|
|
882
|
-
if ( typeof
|
|
925
|
+
if ( typeof self !== 'undefined' ) animation.setContext( self );
|
|
883
926
|
|
|
884
927
|
this.setAnimationLoop = function ( callback ) {
|
|
885
928
|
|
|
@@ -1009,20 +1052,11 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
1009
1052
|
|
|
1010
1053
|
if ( scene.isScene === true ) scene.onAfterRender( _this, scene, camera );
|
|
1011
1054
|
|
|
1012
|
-
// Ensure depth buffer writing is enabled so it can be cleared on next render
|
|
1013
|
-
|
|
1014
|
-
state.buffers.depth.setTest( true );
|
|
1015
|
-
state.buffers.depth.setMask( true );
|
|
1016
|
-
state.buffers.color.setMask( true );
|
|
1017
|
-
|
|
1018
|
-
state.setPolygonOffset( false );
|
|
1019
|
-
|
|
1020
1055
|
if ( xr.enabled && xr.submitFrame ) {
|
|
1021
1056
|
|
|
1022
1057
|
xr.submitFrame();
|
|
1023
1058
|
|
|
1024
1059
|
}
|
|
1025
|
-
|
|
1026
1060
|
// _gl.finish();
|
|
1027
1061
|
|
|
1028
1062
|
bindingStates.resetDefaultState();
|
|
@@ -1185,27 +1219,45 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
1185
1219
|
if ( transmissiveObjects.length > 0 ) renderObjects( transmissiveObjects, scene, camera );
|
|
1186
1220
|
if ( transparentObjects.length > 0 ) renderObjects( transparentObjects, scene, camera );
|
|
1187
1221
|
|
|
1222
|
+
// Ensure depth buffer writing is enabled so it can be cleared on next render
|
|
1223
|
+
|
|
1224
|
+
state.buffers.depth.setTest( true );
|
|
1225
|
+
state.buffers.depth.setMask( true );
|
|
1226
|
+
state.buffers.color.setMask( true );
|
|
1227
|
+
|
|
1228
|
+
state.setPolygonOffset( false );
|
|
1229
|
+
|
|
1188
1230
|
}
|
|
1189
1231
|
|
|
1190
1232
|
function renderTransmissionPass( opaqueObjects, scene, camera ) {
|
|
1191
1233
|
|
|
1192
|
-
|
|
1234
|
+
const isWebGL2 = capabilities.isWebGL2;
|
|
1193
1235
|
|
|
1194
|
-
|
|
1195
|
-
const renderTargetType = needsAntialias ? WebGLMultisampleRenderTarget : WebGLRenderTarget;
|
|
1236
|
+
if ( _transmissionRenderTarget === null ) {
|
|
1196
1237
|
|
|
1197
|
-
_transmissionRenderTarget = new
|
|
1238
|
+
_transmissionRenderTarget = new WebGLRenderTarget( 1, 1, {
|
|
1198
1239
|
generateMipmaps: true,
|
|
1199
|
-
type:
|
|
1240
|
+
type: extensions.has( 'EXT_color_buffer_half_float' ) ? HalfFloatType : UnsignedByteType,
|
|
1200
1241
|
minFilter: LinearMipmapLinearFilter,
|
|
1201
|
-
|
|
1202
|
-
wrapS: ClampToEdgeWrapping,
|
|
1203
|
-
wrapT: ClampToEdgeWrapping,
|
|
1204
|
-
useRenderToTexture: extensions.has( 'WEBGL_multisampled_render_to_texture' )
|
|
1242
|
+
samples: ( isWebGL2 && _antialias === true ) ? 4 : 0
|
|
1205
1243
|
} );
|
|
1206
1244
|
|
|
1207
1245
|
}
|
|
1208
1246
|
|
|
1247
|
+
_this.getDrawingBufferSize( _vector2 );
|
|
1248
|
+
|
|
1249
|
+
if ( isWebGL2 ) {
|
|
1250
|
+
|
|
1251
|
+
_transmissionRenderTarget.setSize( _vector2.x, _vector2.y );
|
|
1252
|
+
|
|
1253
|
+
} else {
|
|
1254
|
+
|
|
1255
|
+
_transmissionRenderTarget.setSize( floorPowerOfTwo( _vector2.x ), floorPowerOfTwo( _vector2.y ) );
|
|
1256
|
+
|
|
1257
|
+
}
|
|
1258
|
+
|
|
1259
|
+
//
|
|
1260
|
+
|
|
1209
1261
|
const currentRenderTarget = _this.getRenderTarget();
|
|
1210
1262
|
_this.setRenderTarget( _transmissionRenderTarget );
|
|
1211
1263
|
_this.clear();
|
|
@@ -1403,6 +1455,7 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
1403
1455
|
materialProperties.skinning = parameters.skinning;
|
|
1404
1456
|
materialProperties.morphTargets = parameters.morphTargets;
|
|
1405
1457
|
materialProperties.morphNormals = parameters.morphNormals;
|
|
1458
|
+
materialProperties.morphColors = parameters.morphColors;
|
|
1406
1459
|
materialProperties.morphTargetsCount = parameters.morphTargetsCount;
|
|
1407
1460
|
materialProperties.numClippingPlanes = parameters.numClippingPlanes;
|
|
1408
1461
|
materialProperties.numIntersection = parameters.numClipIntersection;
|
|
@@ -1426,9 +1479,12 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
1426
1479
|
const vertexTangents = !! material.normalMap && !! geometry.attributes.tangent;
|
|
1427
1480
|
const morphTargets = !! geometry.morphAttributes.position;
|
|
1428
1481
|
const morphNormals = !! geometry.morphAttributes.normal;
|
|
1429
|
-
const
|
|
1482
|
+
const morphColors = !! geometry.morphAttributes.color;
|
|
1430
1483
|
const toneMapping = material.toneMapped ? _this.toneMapping : NoToneMapping;
|
|
1431
1484
|
|
|
1485
|
+
const morphAttribute = geometry.morphAttributes.position || geometry.morphAttributes.normal || geometry.morphAttributes.color;
|
|
1486
|
+
const morphTargetsCount = ( morphAttribute !== undefined ) ? morphAttribute.length : 0;
|
|
1487
|
+
|
|
1432
1488
|
const materialProperties = properties.get( material );
|
|
1433
1489
|
const lights = currentRenderState.state.lights;
|
|
1434
1490
|
|
|
@@ -1483,7 +1539,7 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
1483
1539
|
|
|
1484
1540
|
needsProgramChange = true;
|
|
1485
1541
|
|
|
1486
|
-
} else if ( material.fog && materialProperties.fog !== fog ) {
|
|
1542
|
+
} else if ( material.fog === true && materialProperties.fog !== fog ) {
|
|
1487
1543
|
|
|
1488
1544
|
needsProgramChange = true;
|
|
1489
1545
|
|
|
@@ -1509,6 +1565,10 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
1509
1565
|
|
|
1510
1566
|
needsProgramChange = true;
|
|
1511
1567
|
|
|
1568
|
+
} else if ( materialProperties.morphColors !== morphColors ) {
|
|
1569
|
+
|
|
1570
|
+
needsProgramChange = true;
|
|
1571
|
+
|
|
1512
1572
|
} else if ( materialProperties.toneMapping !== toneMapping ) {
|
|
1513
1573
|
|
|
1514
1574
|
needsProgramChange = true;
|
|
@@ -1651,7 +1711,7 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
1651
1711
|
|
|
1652
1712
|
} else {
|
|
1653
1713
|
|
|
1654
|
-
|
|
1714
|
+
console.warn( 'THREE.WebGLRenderer: SkinnedMesh can only be used with WebGL 2. With WebGL 1 OES_texture_float and vertex textures support is required.' );
|
|
1655
1715
|
|
|
1656
1716
|
}
|
|
1657
1717
|
|
|
@@ -1659,7 +1719,9 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
1659
1719
|
|
|
1660
1720
|
}
|
|
1661
1721
|
|
|
1662
|
-
|
|
1722
|
+
const morphAttributes = geometry.morphAttributes;
|
|
1723
|
+
|
|
1724
|
+
if ( morphAttributes.position !== undefined || morphAttributes.normal !== undefined || ( morphAttributes.color !== undefined && capabilities.isWebGL2 === true ) ) {
|
|
1663
1725
|
|
|
1664
1726
|
morphtargets.update( object, geometry, material, program );
|
|
1665
1727
|
|
|
@@ -1694,7 +1756,7 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
1694
1756
|
|
|
1695
1757
|
// refresh uniforms common to several materials
|
|
1696
1758
|
|
|
1697
|
-
if ( fog && material.fog ) {
|
|
1759
|
+
if ( fog && material.fog === true ) {
|
|
1698
1760
|
|
|
1699
1761
|
materials.refreshFogUniforms( m_uniforms, fog );
|
|
1700
1762
|
|
|
@@ -1815,11 +1877,10 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
1815
1877
|
|
|
1816
1878
|
// The multisample_render_to_texture extension doesn't work properly if there
|
|
1817
1879
|
// are midframe flushes and an external depth buffer. Disable use of the extension.
|
|
1818
|
-
if (
|
|
1880
|
+
if ( extensions.has( 'WEBGL_multisampled_render_to_texture' ) === true ) {
|
|
1819
1881
|
|
|
1820
|
-
console.warn( '
|
|
1821
|
-
|
|
1822
|
-
renderTarget.useRenderbuffer = true;
|
|
1882
|
+
console.warn( 'THREE.WebGLRenderer: Render-to-texture extension was disabled because an external texture was provided' );
|
|
1883
|
+
renderTargetProperties.__useRenderToTexture = false;
|
|
1823
1884
|
|
|
1824
1885
|
}
|
|
1825
1886
|
|
|
@@ -1842,6 +1903,7 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
1842
1903
|
_currentRenderTarget = renderTarget;
|
|
1843
1904
|
_currentActiveCubeFace = activeCubeFace;
|
|
1844
1905
|
_currentActiveMipmapLevel = activeMipmapLevel;
|
|
1906
|
+
|
|
1845
1907
|
let useDefaultFramebuffer = true;
|
|
1846
1908
|
|
|
1847
1909
|
if ( renderTarget ) {
|
|
@@ -1875,7 +1937,7 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
1875
1937
|
|
|
1876
1938
|
const texture = renderTarget.texture;
|
|
1877
1939
|
|
|
1878
|
-
if ( texture.
|
|
1940
|
+
if ( texture.isData3DTexture || texture.isDataArrayTexture ) {
|
|
1879
1941
|
|
|
1880
1942
|
isRenderTarget3D = true;
|
|
1881
1943
|
|
|
@@ -1888,7 +1950,7 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
1888
1950
|
framebuffer = __webglFramebuffer[ activeCubeFace ];
|
|
1889
1951
|
isCube = true;
|
|
1890
1952
|
|
|
1891
|
-
} else if ( renderTarget.
|
|
1953
|
+
} else if ( ( capabilities.isWebGL2 && renderTarget.samples > 0 ) && textures.useMultisampledRTT( renderTarget ) === false ) {
|
|
1892
1954
|
|
|
1893
1955
|
framebuffer = properties.get( renderTarget ).__webglMultisampledFramebuffer;
|
|
1894
1956
|
|
|
@@ -1984,19 +2046,11 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
1984
2046
|
|
|
1985
2047
|
}
|
|
1986
2048
|
|
|
1987
|
-
if
|
|
2049
|
+
// the following if statement ensures valid read requests (no out-of-bounds pixels, see #8604)
|
|
1988
2050
|
|
|
1989
|
-
|
|
2051
|
+
if ( ( x >= 0 && x <= ( renderTarget.width - width ) ) && ( y >= 0 && y <= ( renderTarget.height - height ) ) ) {
|
|
1990
2052
|
|
|
1991
|
-
|
|
1992
|
-
|
|
1993
|
-
_gl.readPixels( x, y, width, height, utils.convert( textureFormat ), utils.convert( textureType ), buffer );
|
|
1994
|
-
|
|
1995
|
-
}
|
|
1996
|
-
|
|
1997
|
-
} else {
|
|
1998
|
-
|
|
1999
|
-
console.error( 'THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.' );
|
|
2053
|
+
_gl.readPixels( x, y, width, height, utils.convert( textureFormat ), utils.convert( textureType ), buffer );
|
|
2000
2054
|
|
|
2001
2055
|
}
|
|
2002
2056
|
|
|
@@ -2015,13 +2069,6 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
2015
2069
|
|
|
2016
2070
|
this.copyFramebufferToTexture = function ( position, texture, level = 0 ) {
|
|
2017
2071
|
|
|
2018
|
-
if ( texture.isFramebufferTexture !== true ) {
|
|
2019
|
-
|
|
2020
|
-
console.error( 'THREE.WebGLRenderer: copyFramebufferToTexture() can only be used with FramebufferTexture.' );
|
|
2021
|
-
return;
|
|
2022
|
-
|
|
2023
|
-
}
|
|
2024
|
-
|
|
2025
2072
|
const levelScale = Math.pow( 2, - level );
|
|
2026
2073
|
const width = Math.floor( texture.image.width * levelScale );
|
|
2027
2074
|
const height = Math.floor( texture.image.height * levelScale );
|
|
@@ -2090,12 +2137,12 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
2090
2137
|
const glType = utils.convert( dstTexture.type );
|
|
2091
2138
|
let glTarget;
|
|
2092
2139
|
|
|
2093
|
-
if ( dstTexture.
|
|
2140
|
+
if ( dstTexture.isData3DTexture ) {
|
|
2094
2141
|
|
|
2095
2142
|
textures.setTexture3D( dstTexture, 0 );
|
|
2096
2143
|
glTarget = _gl.TEXTURE_3D;
|
|
2097
2144
|
|
|
2098
|
-
} else if ( dstTexture.
|
|
2145
|
+
} else if ( dstTexture.isDataArrayTexture ) {
|
|
2099
2146
|
|
|
2100
2147
|
textures.setTexture2DArray( dstTexture, 0 );
|
|
2101
2148
|
glTarget = _gl.TEXTURE_2D_ARRAY;
|
|
@@ -2125,7 +2172,7 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
2125
2172
|
_gl.pixelStorei( _gl.UNPACK_SKIP_ROWS, sourceBox.min.y );
|
|
2126
2173
|
_gl.pixelStorei( _gl.UNPACK_SKIP_IMAGES, sourceBox.min.z );
|
|
2127
2174
|
|
|
2128
|
-
if ( srcTexture.isDataTexture || srcTexture.
|
|
2175
|
+
if ( srcTexture.isDataTexture || srcTexture.isData3DTexture ) {
|
|
2129
2176
|
|
|
2130
2177
|
_gl.texSubImage3D( glTarget, level, position.x, position.y, position.z, width, height, depth, glFormat, glType, image.data );
|
|
2131
2178
|
|
|
@@ -2184,6 +2231,4 @@ function WebGLRenderer( parameters = {} ) {
|
|
|
2184
2231
|
|
|
2185
2232
|
}
|
|
2186
2233
|
|
|
2187
|
-
WebGLRenderer.prototype.isWebGLRenderer = true;
|
|
2188
|
-
|
|
2189
2234
|
export { WebGLRenderer };
|
|
@@ -19,6 +19,27 @@ vec3 F_Schlick( const in vec3 f0, const in float f90, const in float dotVH ) {
|
|
|
19
19
|
|
|
20
20
|
} // validated
|
|
21
21
|
|
|
22
|
+
float F_Schlick( const in float f0, const in float f90, const in float dotVH ) {
|
|
23
|
+
|
|
24
|
+
// Original approximation by Christophe Schlick '94
|
|
25
|
+
// float fresnel = pow( 1.0 - dotVH, 5.0 );
|
|
26
|
+
|
|
27
|
+
// Optimized variant (presented by Epic at SIGGRAPH '13)
|
|
28
|
+
// https://cdn2.unrealengine.com/Resources/files/2013SiggraphPresentationsNotes-26915738.pdf
|
|
29
|
+
float fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );
|
|
30
|
+
|
|
31
|
+
return f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );
|
|
32
|
+
|
|
33
|
+
} // validated
|
|
34
|
+
|
|
35
|
+
vec3 Schlick_to_F0( const in vec3 f, const in float f90, const in float dotVH ) {
|
|
36
|
+
float x = clamp( 1.0 - dotVH, 0.0, 1.0 );
|
|
37
|
+
float x2 = x * x;
|
|
38
|
+
float x5 = clamp( x * x2 * x2, 0.0, 0.9999 );
|
|
39
|
+
|
|
40
|
+
return ( f - vec3( f90 ) * x5 ) / ( 1.0 - x5 );
|
|
41
|
+
}
|
|
42
|
+
|
|
22
43
|
// Moving Frostbite to Physically Based Rendering 3.0 - page 12, listing 2
|
|
23
44
|
// https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf
|
|
24
45
|
float V_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {
|
|
@@ -67,6 +88,31 @@ vec3 BRDF_GGX( const in vec3 lightDir, const in vec3 viewDir, const in vec3 norm
|
|
|
67
88
|
|
|
68
89
|
}
|
|
69
90
|
|
|
91
|
+
#ifdef USE_IRIDESCENCE
|
|
92
|
+
|
|
93
|
+
vec3 BRDF_GGX_Iridescence( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 f0, const in float f90, const in float iridescence, const in vec3 iridescenceFresnel, const in float roughness ) {
|
|
94
|
+
|
|
95
|
+
float alpha = pow2( roughness ); // UE4's roughness
|
|
96
|
+
|
|
97
|
+
vec3 halfDir = normalize( lightDir + viewDir );
|
|
98
|
+
|
|
99
|
+
float dotNL = saturate( dot( normal, lightDir ) );
|
|
100
|
+
float dotNV = saturate( dot( normal, viewDir ) );
|
|
101
|
+
float dotNH = saturate( dot( normal, halfDir ) );
|
|
102
|
+
float dotVH = saturate( dot( viewDir, halfDir ) );
|
|
103
|
+
|
|
104
|
+
vec3 F = mix(F_Schlick( f0, f90, dotVH ), iridescenceFresnel, iridescence);
|
|
105
|
+
|
|
106
|
+
float V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );
|
|
107
|
+
|
|
108
|
+
float D = D_GGX( alpha, dotNH );
|
|
109
|
+
|
|
110
|
+
return F * ( V * D );
|
|
111
|
+
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
#endif
|
|
115
|
+
|
|
70
116
|
// Rect Area Light
|
|
71
117
|
|
|
72
118
|
// Real-Time Polygonal-Light Shading with Linearly Transformed Cosines
|
|
@@ -13,6 +13,7 @@ export default /* glsl */`
|
|
|
13
13
|
#define whiteComplement( a ) ( 1.0 - saturate( a ) )
|
|
14
14
|
|
|
15
15
|
float pow2( const in float x ) { return x*x; }
|
|
16
|
+
vec3 pow2( const in vec3 x ) { return x*x; }
|
|
16
17
|
float pow3( const in float x ) { return x*x*x; }
|
|
17
18
|
float pow4( const in float x ) { float x2 = x*x; return x2*x2; }
|
|
18
19
|
float max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); }
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
export default /* glsl */`
|
|
2
2
|
#ifdef ENVMAP_TYPE_CUBE_UV
|
|
3
3
|
|
|
4
|
-
#define cubeUV_maxMipLevel 8.0
|
|
5
4
|
#define cubeUV_minMipLevel 4.0
|
|
6
|
-
#define cubeUV_maxTileSize 256.0
|
|
7
5
|
#define cubeUV_minTileSize 16.0
|
|
8
6
|
|
|
9
7
|
// These shader functions convert between the UV coordinates of a single face of
|
|
@@ -87,9 +85,7 @@ export default /* glsl */`
|
|
|
87
85
|
|
|
88
86
|
float faceSize = exp2( mipInt );
|
|
89
87
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
vec2 uv = getUV( direction, face ) * ( faceSize - 1.0 ) + 0.5;
|
|
88
|
+
vec2 uv = getUV( direction, face ) * ( faceSize - 2.0 ) + 1.0;
|
|
93
89
|
|
|
94
90
|
if ( face > 2.0 ) {
|
|
95
91
|
|
|
@@ -101,19 +97,22 @@ export default /* glsl */`
|
|
|
101
97
|
|
|
102
98
|
uv.x += face * faceSize;
|
|
103
99
|
|
|
104
|
-
|
|
100
|
+
uv.x += filterInt * 3.0 * cubeUV_minTileSize;
|
|
105
101
|
|
|
106
|
-
|
|
102
|
+
uv.y += 4.0 * ( exp2( CUBEUV_MAX_MIP ) - faceSize );
|
|
107
103
|
|
|
108
|
-
|
|
104
|
+
uv.x *= CUBEUV_TEXEL_WIDTH;
|
|
105
|
+
uv.y *= CUBEUV_TEXEL_HEIGHT;
|
|
106
|
+
|
|
107
|
+
#ifdef texture2DGradEXT
|
|
109
108
|
|
|
110
|
-
|
|
109
|
+
return texture2DGradEXT( envMap, uv, vec2( 0.0 ), vec2( 0.0 ) ).rgb; // disable anisotropic filtering
|
|
111
110
|
|
|
112
|
-
|
|
111
|
+
#else
|
|
113
112
|
|
|
114
|
-
|
|
113
|
+
return texture2D( envMap, uv ).rgb;
|
|
115
114
|
|
|
116
|
-
|
|
115
|
+
#endif
|
|
117
116
|
|
|
118
117
|
}
|
|
119
118
|
|
|
@@ -166,7 +165,7 @@ export default /* glsl */`
|
|
|
166
165
|
|
|
167
166
|
vec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) {
|
|
168
167
|
|
|
169
|
-
float mip = clamp( roughnessToMip( roughness ), m0,
|
|
168
|
+
float mip = clamp( roughnessToMip( roughness ), m0, CUBEUV_MAX_MIP );
|
|
170
169
|
|
|
171
170
|
float mipF = fract( mip );
|
|
172
171
|
|
|
@@ -9,7 +9,7 @@ export default /* glsl */`
|
|
|
9
9
|
//Shift the individual colors differently, thus making it even harder to see the dithering pattern
|
|
10
10
|
vec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );
|
|
11
11
|
|
|
12
|
-
//modify shift
|
|
12
|
+
//modify shift according to grid position.
|
|
13
13
|
dither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );
|
|
14
14
|
|
|
15
15
|
//shift the color by dither_shift
|
|
@@ -1,12 +1,6 @@
|
|
|
1
1
|
export default /* glsl */`
|
|
2
2
|
#if defined( USE_ENVMAP )
|
|
3
3
|
|
|
4
|
-
#ifdef ENVMAP_MODE_REFRACTION
|
|
5
|
-
|
|
6
|
-
uniform float refractionRatio;
|
|
7
|
-
|
|
8
|
-
#endif
|
|
9
|
-
|
|
10
4
|
vec3 getIBLIrradiance( const in vec3 normal ) {
|
|
11
5
|
|
|
12
6
|
#if defined( ENVMAP_TYPE_CUBE_UV )
|
|
@@ -29,20 +23,10 @@ export default /* glsl */`
|
|
|
29
23
|
|
|
30
24
|
#if defined( ENVMAP_TYPE_CUBE_UV )
|
|
31
25
|
|
|
32
|
-
vec3 reflectVec;
|
|
33
|
-
|
|
34
|
-
#ifdef ENVMAP_MODE_REFLECTION
|
|
35
|
-
|
|
36
|
-
reflectVec = reflect( - viewDir, normal );
|
|
37
|
-
|
|
38
|
-
// Mixing the reflection with the normal is more accurate and keeps rough objects from gathering light from behind their tangent plane.
|
|
39
|
-
reflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );
|
|
40
|
-
|
|
41
|
-
#else
|
|
42
|
-
|
|
43
|
-
reflectVec = refract( - viewDir, normal, refractionRatio );
|
|
26
|
+
vec3 reflectVec = reflect( - viewDir, normal );
|
|
44
27
|
|
|
45
|
-
|
|
28
|
+
// Mixing the reflection with the normal is more accurate and keeps rough objects from gathering light from behind their tangent plane.
|
|
29
|
+
reflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );
|
|
46
30
|
|
|
47
31
|
reflectVec = inverseTransformDirection( reflectVec, viewMatrix );
|
|
48
32
|
|