@playdrop/playdrop-cli 0.3.5-build.1 → 0.3.8-build.2
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/config/client-meta.json +5 -5
- package/dist/apps/upload.js +1 -0
- package/dist/catalogue.d.ts +7 -0
- package/dist/catalogue.js +70 -33
- package/dist/commands/create.js +129 -70
- package/dist/commands/createRemixContent.d.ts +3 -0
- package/dist/commands/createRemixContent.js +310 -0
- package/dist/commands/generation.d.ts +0 -1
- package/dist/commands/generation.js +0 -18
- package/dist/commands/init.js +3 -3
- package/dist/commands/upload.js +11 -0
- package/dist/index.js +17 -4
- package/node_modules/@playdrop/ai-client/dist/index.d.ts +1 -1
- package/node_modules/@playdrop/ai-client/dist/index.d.ts.map +1 -1
- package/node_modules/@playdrop/ai-client/dist/index.js +1 -1
- package/node_modules/@playdrop/api-client/dist/client.d.ts +8 -2
- package/node_modules/@playdrop/api-client/dist/client.d.ts.map +1 -1
- package/node_modules/@playdrop/api-client/dist/client.js +2 -0
- package/node_modules/@playdrop/api-client/dist/domains/apps.d.ts +3 -2
- package/node_modules/@playdrop/api-client/dist/domains/apps.d.ts.map +1 -1
- package/node_modules/@playdrop/api-client/dist/domains/apps.js +24 -2
- package/node_modules/@playdrop/api-client/dist/domains/asset-packs.d.ts +3 -1
- package/node_modules/@playdrop/api-client/dist/domains/asset-packs.d.ts.map +1 -1
- package/node_modules/@playdrop/api-client/dist/domains/asset-packs.js +19 -1
- package/node_modules/@playdrop/api-client/dist/domains/assets.d.ts +3 -1
- package/node_modules/@playdrop/api-client/dist/domains/assets.d.ts.map +1 -1
- package/node_modules/@playdrop/api-client/dist/domains/assets.js +19 -1
- package/node_modules/@playdrop/api-client/dist/index.d.ts +3 -0
- package/node_modules/@playdrop/api-client/dist/index.d.ts.map +1 -1
- package/node_modules/@playdrop/api-client/dist/index.js +9 -0
- package/node_modules/@playdrop/config/client-meta.json +5 -5
- package/node_modules/@playdrop/types/dist/api.d.ts +22 -1
- package/node_modules/@playdrop/types/dist/api.d.ts.map +1 -1
- package/node_modules/@playdrop/types/dist/asset-pack.d.ts +1 -0
- package/node_modules/@playdrop/types/dist/asset-pack.d.ts.map +1 -1
- package/node_modules/@playdrop/types/dist/asset.d.ts +27 -0
- package/node_modules/@playdrop/types/dist/asset.d.ts.map +1 -1
- package/node_modules/@playdrop/types/dist/graph.d.ts +21 -0
- package/node_modules/@playdrop/types/dist/graph.d.ts.map +1 -1
- package/node_modules/@playdrop/types/dist/graph.js +66 -0
- package/node_modules/@playdrop/types/dist/version.d.ts +1 -0
- package/node_modules/@playdrop/types/dist/version.d.ts.map +1 -1
- package/node_modules/@playdrop/vox-three/dist/src/index.d.ts +1 -0
- package/node_modules/@playdrop/vox-three/dist/src/index.js +18 -0
- package/node_modules/@playdrop/vox-three/dist/src/index.js.map +1 -0
- package/node_modules/@playdrop/vox-three/dist/src/vox.d.ts +25 -0
- package/node_modules/@playdrop/vox-three/dist/src/vox.js +425 -0
- package/node_modules/@playdrop/vox-three/dist/src/vox.js.map +1 -0
- package/node_modules/@playdrop/vox-three/dist/test/vox.test.d.ts +1 -0
- package/node_modules/@playdrop/vox-three/dist/test/vox.test.js +79 -0
- package/node_modules/@playdrop/vox-three/dist/test/vox.test.js.map +1 -0
- package/node_modules/@playdrop/vox-three/package.json +25 -0
- package/node_modules/three/LICENSE +1 -1
- package/node_modules/three/README.md +7 -7
- package/node_modules/three/build/three.cjs +49655 -25499
- package/node_modules/three/build/three.core.js +58952 -0
- package/node_modules/three/build/three.core.min.js +6 -0
- package/node_modules/three/build/three.module.js +11162 -45962
- package/node_modules/three/build/three.module.min.js +2 -2
- package/node_modules/three/build/three.tsl.js +640 -0
- package/node_modules/three/build/three.tsl.min.js +6 -0
- package/node_modules/three/build/three.webgpu.js +79685 -0
- package/node_modules/three/build/three.webgpu.min.js +6 -0
- package/node_modules/three/build/three.webgpu.nodes.js +79456 -0
- package/node_modules/three/build/three.webgpu.nodes.min.js +6 -0
- package/node_modules/three/examples/fonts/MPLUSRounded1c/MPLUSRounded1c-Regular.typeface.json.zip +0 -0
- package/node_modules/three/examples/fonts/MPLUSRounded1c/OFL.txt +91 -0
- package/node_modules/three/examples/jsm/Addons.js +8 -18
- package/node_modules/three/examples/jsm/animation/AnimationClipCreator.js +59 -7
- package/node_modules/three/examples/jsm/animation/CCDIKSolver.js +154 -45
- package/node_modules/three/examples/jsm/capabilities/WebGL.js +28 -23
- package/node_modules/three/examples/jsm/capabilities/WebGPU.js +19 -17
- package/node_modules/three/examples/jsm/controls/ArcballControls.js +636 -324
- package/node_modules/three/examples/jsm/controls/DragControls.js +332 -101
- package/node_modules/three/examples/jsm/controls/FirstPersonControls.js +291 -169
- package/node_modules/three/examples/jsm/controls/FlyControls.js +245 -191
- package/node_modules/three/examples/jsm/controls/MapControls.js +43 -9
- package/node_modules/three/examples/jsm/controls/OrbitControls.js +1156 -802
- package/node_modules/three/examples/jsm/controls/PointerLockControls.js +137 -35
- package/node_modules/three/examples/jsm/controls/TrackballControls.js +629 -456
- package/node_modules/three/examples/jsm/controls/TransformControls.js +442 -97
- package/node_modules/three/examples/jsm/csm/CSM.js +230 -17
- package/node_modules/three/examples/jsm/csm/CSMFrustum.js +61 -4
- package/node_modules/three/examples/jsm/csm/CSMHelper.js +50 -0
- package/node_modules/three/examples/jsm/csm/CSMShader.js +17 -5
- package/node_modules/three/examples/jsm/csm/CSMShadowNode.js +599 -0
- package/node_modules/three/examples/jsm/curves/CurveExtras.js +303 -31
- package/node_modules/three/examples/jsm/curves/NURBSCurve.js +91 -16
- package/node_modules/three/examples/jsm/curves/NURBSSurface.js +52 -6
- package/node_modules/three/examples/jsm/curves/NURBSUtils.js +102 -112
- package/node_modules/three/examples/jsm/curves/NURBSVolume.js +24 -4
- package/node_modules/three/examples/jsm/effects/AnaglyphEffect.js +39 -14
- package/node_modules/three/examples/jsm/effects/AsciiEffect.js +69 -22
- package/node_modules/three/examples/jsm/effects/OutlineEffect.js +61 -111
- package/node_modules/three/examples/jsm/effects/ParallaxBarrierEffect.js +48 -12
- package/node_modules/three/examples/jsm/effects/StereoEffect.js +37 -1
- package/node_modules/three/examples/jsm/environments/DebugEnvironment.js +50 -0
- package/node_modules/three/examples/jsm/environments/RoomEnvironment.js +82 -48
- package/node_modules/three/examples/jsm/exporters/DRACOExporter.js +59 -15
- package/node_modules/three/examples/jsm/exporters/EXRExporter.js +58 -19
- package/node_modules/three/examples/jsm/exporters/GLTFExporter.js +460 -174
- package/node_modules/three/examples/jsm/exporters/KTX2Exporter.js +80 -25
- package/node_modules/three/examples/jsm/exporters/OBJExporter.js +25 -1
- package/node_modules/three/examples/jsm/exporters/PLYExporter.js +51 -17
- package/node_modules/three/examples/jsm/exporters/STLExporter.js +27 -5
- package/node_modules/three/examples/jsm/exporters/USDZExporter.js +783 -268
- package/node_modules/three/examples/jsm/geometries/BoxLineGeometry.js +23 -0
- package/node_modules/three/examples/jsm/geometries/ConvexGeometry.js +19 -0
- package/node_modules/three/examples/jsm/geometries/DecalGeometry.js +94 -30
- package/node_modules/three/examples/jsm/geometries/ParametricFunctions.js +100 -0
- package/node_modules/three/examples/jsm/geometries/ParametricGeometry.js +38 -5
- package/node_modules/three/examples/jsm/geometries/RoundedBoxGeometry.js +68 -7
- package/node_modules/three/examples/jsm/geometries/TeapotGeometry.js +23 -38
- package/node_modules/three/examples/jsm/geometries/TextGeometry.js +48 -21
- package/node_modules/three/examples/jsm/gpgpu/BitonicSort.js +715 -0
- package/node_modules/three/examples/jsm/helpers/LightProbeHelper.js +79 -44
- package/node_modules/three/examples/jsm/helpers/LightProbeHelperGPU.js +102 -0
- package/node_modules/three/examples/jsm/helpers/OctreeHelper.js +36 -0
- package/node_modules/three/examples/jsm/helpers/PositionalAudioHelper.js +60 -0
- package/node_modules/three/examples/jsm/helpers/RapierHelper.js +59 -0
- package/node_modules/three/examples/jsm/helpers/RectAreaLightHelper.js +36 -3
- package/node_modules/three/examples/jsm/helpers/TextureHelper.js +28 -0
- package/node_modules/three/examples/jsm/helpers/TextureHelperGPU.js +214 -0
- package/node_modules/three/examples/jsm/helpers/VertexNormalsHelper.js +61 -2
- package/node_modules/three/examples/jsm/helpers/VertexTangentsHelper.js +47 -2
- package/node_modules/three/examples/jsm/helpers/ViewHelper.js +192 -65
- package/node_modules/three/examples/jsm/inspector/Inspector.js +427 -0
- package/node_modules/three/examples/jsm/inspector/RendererInspector.js +415 -0
- package/node_modules/three/examples/jsm/inspector/tabs/Console.js +204 -0
- package/node_modules/three/examples/jsm/inspector/tabs/Parameters.js +332 -0
- package/node_modules/three/examples/jsm/inspector/tabs/Performance.js +268 -0
- package/node_modules/three/examples/jsm/inspector/tabs/Viewer.js +166 -0
- package/node_modules/three/examples/jsm/inspector/ui/Graph.js +95 -0
- package/node_modules/three/examples/jsm/inspector/ui/Item.js +170 -0
- package/node_modules/three/examples/jsm/inspector/ui/List.js +75 -0
- package/node_modules/three/examples/jsm/inspector/ui/Profiler.js +170 -0
- package/node_modules/three/examples/jsm/inspector/ui/Style.js +654 -0
- package/node_modules/three/examples/jsm/inspector/ui/Tab.js +46 -0
- package/node_modules/three/examples/jsm/inspector/ui/Values.js +423 -0
- package/node_modules/three/examples/jsm/inspector/ui/utils.js +56 -0
- package/node_modules/three/examples/jsm/interactive/HTMLMesh.js +50 -21
- package/node_modules/three/examples/jsm/interactive/InteractiveGroup.js +170 -62
- package/node_modules/three/examples/jsm/interactive/SelectionBox.js +106 -9
- package/node_modules/three/examples/jsm/interactive/SelectionHelper.js +76 -30
- package/node_modules/three/examples/jsm/libs/basis/basis_transcoder.js +8 -10
- package/node_modules/three/examples/jsm/libs/basis/basis_transcoder.wasm +0 -0
- package/node_modules/three/examples/jsm/libs/demuxer_mp4.js +109 -0
- package/node_modules/three/examples/jsm/libs/draco/README.md +2 -2
- package/node_modules/three/examples/jsm/libs/fflate.module.js +694 -496
- package/node_modules/three/examples/jsm/libs/ktx-parse.module.js +1 -1
- package/node_modules/three/examples/jsm/libs/meshopt_decoder.module.js +75 -58
- package/node_modules/three/examples/jsm/libs/motion-controllers.module.js +1 -1
- package/node_modules/three/examples/jsm/libs/rhino3dm/rhino3dm.js +1 -8723
- package/node_modules/three/examples/jsm/libs/rhino3dm/rhino3dm.module.js +1 -8734
- package/node_modules/three/examples/jsm/libs/rhino3dm/rhino3dm.wasm +0 -0
- package/node_modules/three/examples/jsm/libs/tween.module.js +32 -14
- package/node_modules/three/examples/jsm/lighting/TiledLighting.js +42 -0
- package/node_modules/three/examples/jsm/lights/LightProbeGenerator.js +65 -14
- package/node_modules/three/examples/jsm/lights/RectAreaLightTexturesLib.js +127 -0
- package/node_modules/three/examples/jsm/lights/RectAreaLightUniformsLib.js +20 -59
- package/node_modules/three/examples/jsm/lines/Line2.js +41 -4
- package/node_modules/three/examples/jsm/lines/LineGeometry.js +80 -2
- package/node_modules/three/examples/jsm/lines/LineMaterial.js +100 -22
- package/node_modules/three/examples/jsm/lines/LineSegments2.js +69 -4
- package/node_modules/three/examples/jsm/lines/LineSegmentsGeometry.js +65 -8
- package/node_modules/three/examples/jsm/lines/Wireframe.js +58 -6
- package/node_modules/three/examples/jsm/lines/WireframeGeometry2.js +27 -2
- package/node_modules/three/examples/jsm/lines/webgpu/Line2.js +46 -0
- package/node_modules/three/examples/jsm/lines/webgpu/LineSegments2.js +411 -0
- package/node_modules/three/examples/jsm/lines/webgpu/Wireframe.js +86 -0
- package/node_modules/three/examples/jsm/loaders/3DMLoader.js +86 -23
- package/node_modules/three/examples/jsm/loaders/3MFLoader.js +148 -5
- package/node_modules/three/examples/jsm/loaders/AMFLoader.js +32 -12
- package/node_modules/three/examples/jsm/loaders/BVHLoader.js +59 -12
- package/node_modules/three/examples/jsm/loaders/ColladaLoader.js +51 -12
- package/node_modules/three/examples/jsm/loaders/DDSLoader.js +68 -1
- package/node_modules/three/examples/jsm/loaders/DRACOLoader.js +149 -23
- package/node_modules/three/examples/jsm/loaders/EXRLoader.js +584 -109
- package/node_modules/three/examples/jsm/loaders/FBXLoader.js +165 -97
- package/node_modules/three/examples/jsm/loaders/FontLoader.js +83 -6
- package/node_modules/three/examples/jsm/loaders/GCodeLoader.js +37 -6
- package/node_modules/three/examples/jsm/loaders/GLTFLoader.js +337 -108
- package/node_modules/three/examples/jsm/loaders/HDRCubeTextureLoader.js +52 -3
- package/node_modules/three/examples/jsm/loaders/HDRLoader.js +486 -0
- package/node_modules/three/examples/jsm/loaders/IESLoader.js +42 -0
- package/node_modules/three/examples/jsm/loaders/KMZLoader.js +33 -0
- package/node_modules/three/examples/jsm/loaders/KTX2Loader.js +441 -138
- package/node_modules/three/examples/jsm/loaders/KTXLoader.js +31 -10
- package/node_modules/three/examples/jsm/loaders/LDrawLoader.js +194 -145
- package/node_modules/three/examples/jsm/loaders/LUT3dlLoader.js +47 -25
- package/node_modules/three/examples/jsm/loaders/LUTCubeLoader.js +46 -23
- package/node_modules/three/examples/jsm/loaders/LUTImageLoader.js +79 -52
- package/node_modules/three/examples/jsm/loaders/LWOLoader.js +47 -20
- package/node_modules/three/examples/jsm/loaders/LottieLoader.js +54 -1
- package/node_modules/three/examples/jsm/loaders/MD2Loader.js +37 -1
- package/node_modules/three/examples/jsm/loaders/MDDLoader.js +57 -12
- package/node_modules/three/examples/jsm/loaders/MTLLoader.js +61 -35
- package/node_modules/three/examples/jsm/loaders/MaterialXLoader.js +291 -39
- package/node_modules/three/examples/jsm/loaders/NRRDLoader.js +38 -6
- package/node_modules/three/examples/jsm/loaders/OBJLoader.js +54 -4
- package/node_modules/three/examples/jsm/loaders/PCDLoader.js +183 -32
- package/node_modules/three/examples/jsm/loaders/PDBLoader.js +44 -4
- package/node_modules/three/examples/jsm/loaders/PLYLoader.js +78 -44
- package/node_modules/three/examples/jsm/loaders/PVRLoader.js +25 -6
- package/node_modules/three/examples/jsm/loaders/RGBELoader.js +6 -438
- package/node_modules/three/examples/jsm/loaders/STLLoader.js +51 -40
- package/node_modules/three/examples/jsm/loaders/SVGLoader.js +118 -24
- package/node_modules/three/examples/jsm/loaders/TDSLoader.js +92 -72
- package/node_modules/three/examples/jsm/loaders/TGALoader.js +23 -0
- package/node_modules/three/examples/jsm/loaders/TIFFLoader.js +23 -0
- package/node_modules/three/examples/jsm/loaders/TTFLoader.js +50 -3
- package/node_modules/three/examples/jsm/loaders/USDLoader.js +219 -0
- package/node_modules/three/examples/jsm/loaders/USDZLoader.js +4 -810
- package/node_modules/three/examples/jsm/loaders/UltraHDRLoader.js +630 -0
- package/node_modules/three/examples/jsm/loaders/VOXLoader.js +67 -2
- package/node_modules/three/examples/jsm/loaders/VRMLLoader.js +57 -21
- package/node_modules/three/examples/jsm/loaders/VTKLoader.js +119 -6
- package/node_modules/three/examples/jsm/loaders/XYZLoader.js +39 -2
- package/node_modules/three/examples/jsm/loaders/lwo/IFFParser.js +81 -78
- package/node_modules/three/examples/jsm/loaders/usd/USDAParser.js +741 -0
- package/node_modules/three/examples/jsm/loaders/usd/USDCParser.js +17 -0
- package/node_modules/three/examples/jsm/materials/LDrawConditionalLineMaterial.js +183 -0
- package/node_modules/three/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +154 -0
- package/node_modules/three/examples/jsm/materials/MeshGouraudMaterial.js +9 -1
- package/node_modules/three/examples/jsm/materials/MeshPostProcessingMaterial.js +25 -2
- package/node_modules/three/examples/jsm/materials/WoodNodeMaterial.js +533 -0
- package/node_modules/three/examples/jsm/math/Capsule.js +91 -14
- package/node_modules/three/examples/jsm/math/ColorConverter.js +22 -0
- package/node_modules/three/examples/jsm/math/ColorSpaces.js +147 -0
- package/node_modules/three/examples/jsm/math/ConvexHull.js +517 -93
- package/node_modules/three/examples/jsm/math/ImprovedNoise.js +32 -15
- package/node_modules/three/examples/jsm/math/Lut.js +113 -0
- package/node_modules/three/examples/jsm/math/MeshSurfaceSampler.js +78 -13
- package/node_modules/three/examples/jsm/math/OBB.js +141 -29
- package/node_modules/three/examples/jsm/math/Octree.js +177 -25
- package/node_modules/three/examples/jsm/math/SimplexNoise.js +68 -42
- package/node_modules/three/examples/jsm/misc/ConvexObjectBreaker.js +45 -25
- package/node_modules/three/examples/jsm/misc/GPUComputationRenderer.js +105 -45
- package/node_modules/three/examples/jsm/misc/Gyroscope.js +12 -0
- package/node_modules/three/examples/jsm/misc/MD2Character.js +117 -2
- package/node_modules/three/examples/jsm/misc/MD2CharacterComplex.js +175 -11
- package/node_modules/three/examples/jsm/misc/MorphAnimMesh.js +44 -0
- package/node_modules/three/examples/jsm/misc/MorphBlendMesh.js +103 -0
- package/node_modules/three/examples/jsm/misc/ProgressiveLightMap.js +101 -54
- package/node_modules/three/examples/jsm/misc/ProgressiveLightMapGPU.js +322 -0
- package/node_modules/three/examples/jsm/misc/RollerCoaster.js +57 -0
- package/node_modules/three/examples/jsm/misc/TubePainter.js +437 -40
- package/node_modules/three/examples/jsm/misc/Volume.js +123 -75
- package/node_modules/three/examples/jsm/misc/VolumeSlice.js +95 -48
- package/node_modules/three/examples/jsm/modifiers/CurveModifier.js +77 -47
- package/node_modules/three/examples/jsm/modifiers/CurveModifierGPU.js +256 -0
- package/node_modules/three/examples/jsm/modifiers/EdgeSplitModifier.js +20 -0
- package/node_modules/three/examples/jsm/modifiers/SimplifyModifier.js +26 -11
- package/node_modules/three/examples/jsm/modifiers/TessellateModifier.js +35 -2
- package/node_modules/three/examples/jsm/objects/GroundedSkybox.js +25 -6
- package/node_modules/three/examples/jsm/objects/Lensflare.js +96 -4
- package/node_modules/three/examples/jsm/objects/LensflareMesh.js +376 -0
- package/node_modules/three/examples/jsm/objects/MarchingCubes.js +90 -5
- package/node_modules/three/examples/jsm/objects/Reflector.js +76 -2
- package/node_modules/three/examples/jsm/objects/ReflectorForSSRPass.js +41 -0
- package/node_modules/three/examples/jsm/objects/Refractor.js +62 -0
- package/node_modules/three/examples/jsm/objects/ShadowMesh.js +54 -4
- package/node_modules/three/examples/jsm/objects/Sky.js +30 -12
- package/node_modules/three/examples/jsm/objects/SkyMesh.js +243 -0
- package/node_modules/three/examples/jsm/objects/Water.js +45 -5
- package/node_modules/three/examples/jsm/objects/Water2.js +44 -4
- package/node_modules/three/examples/jsm/objects/Water2Mesh.js +199 -0
- package/node_modules/three/examples/jsm/objects/WaterMesh.js +196 -0
- package/node_modules/three/examples/jsm/physics/AmmoPhysics.js +48 -0
- package/node_modules/three/examples/jsm/physics/JoltPhysics.js +330 -0
- package/node_modules/three/examples/jsm/physics/RapierPhysics.js +231 -19
- package/node_modules/three/examples/jsm/postprocessing/AfterimagePass.js +110 -29
- package/node_modules/three/examples/jsm/postprocessing/BloomPass.js +128 -26
- package/node_modules/three/examples/jsm/postprocessing/BokehPass.js +99 -22
- package/node_modules/three/examples/jsm/postprocessing/ClearPass.js +54 -3
- package/node_modules/three/examples/jsm/postprocessing/CubeTexturePass.js +82 -21
- package/node_modules/three/examples/jsm/postprocessing/DotScreenPass.js +59 -10
- package/node_modules/three/examples/jsm/postprocessing/EffectComposer.js +135 -3
- package/node_modules/three/examples/jsm/postprocessing/FXAAPass.js +40 -0
- package/node_modules/three/examples/jsm/postprocessing/FilmPass.js +54 -5
- package/node_modules/three/examples/jsm/postprocessing/GTAOPass.js +202 -57
- package/node_modules/three/examples/jsm/postprocessing/GlitchPass.js +86 -37
- package/node_modules/three/examples/jsm/postprocessing/HalftonePass.js +65 -10
- package/node_modules/three/examples/jsm/postprocessing/LUTPass.js +43 -79
- package/node_modules/three/examples/jsm/postprocessing/MaskPass.js +91 -0
- package/node_modules/three/examples/jsm/postprocessing/OutlinePass.js +277 -155
- package/node_modules/three/examples/jsm/postprocessing/OutputPass.js +58 -14
- package/node_modules/three/examples/jsm/postprocessing/Pass.js +100 -4
- package/node_modules/three/examples/jsm/postprocessing/RenderPass.js +85 -1
- package/node_modules/three/examples/jsm/postprocessing/RenderPixelatedPass.js +124 -45
- package/node_modules/three/examples/jsm/postprocessing/RenderTransitionPass.js +267 -0
- package/node_modules/three/examples/jsm/postprocessing/SAOPass.js +128 -56
- package/node_modules/three/examples/jsm/postprocessing/SMAAPass.js +106 -75
- package/node_modules/three/examples/jsm/postprocessing/SSAARenderPass.js +120 -35
- package/node_modules/three/examples/jsm/postprocessing/SSAOPass.js +174 -67
- package/node_modules/three/examples/jsm/postprocessing/SSRPass.js +268 -53
- package/node_modules/three/examples/jsm/postprocessing/SavePass.js +69 -16
- package/node_modules/three/examples/jsm/postprocessing/ShaderPass.js +65 -7
- package/node_modules/three/examples/jsm/postprocessing/TAARenderPass.js +79 -24
- package/node_modules/three/examples/jsm/postprocessing/TexturePass.js +72 -8
- package/node_modules/three/examples/jsm/postprocessing/UnrealBloomPass.js +125 -46
- package/node_modules/three/examples/jsm/renderers/CSS2DRenderer.js +122 -9
- package/node_modules/three/examples/jsm/renderers/CSS3DRenderer.js +133 -8
- package/node_modules/three/examples/jsm/renderers/Projector.js +20 -2
- package/node_modules/three/examples/jsm/renderers/SVGRenderer.js +134 -5
- package/node_modules/three/examples/jsm/shaders/ACESFilmicToneMappingShader.js +12 -5
- package/node_modules/three/examples/jsm/shaders/AfterimageShader.js +8 -3
- package/node_modules/three/examples/jsm/shaders/BasicShader.js +8 -1
- package/node_modules/three/examples/jsm/shaders/BleachBypassShader.js +11 -5
- package/node_modules/three/examples/jsm/shaders/BlendShader.js +8 -1
- package/node_modules/three/examples/jsm/shaders/BokehShader.js +9 -3
- package/node_modules/three/examples/jsm/shaders/BokehShader2.js +11 -4
- package/node_modules/three/examples/jsm/shaders/BrightnessContrastShader.js +10 -4
- package/node_modules/three/examples/jsm/shaders/ColorCorrectionShader.js +8 -1
- package/node_modules/three/examples/jsm/shaders/ColorifyShader.js +9 -3
- package/node_modules/three/examples/jsm/shaders/ConvolutionShader.js +9 -38
- package/node_modules/three/examples/jsm/shaders/CopyShader.js +8 -1
- package/node_modules/three/examples/jsm/shaders/DOFMipMapShader.js +10 -3
- package/node_modules/three/examples/jsm/shaders/DepthLimitedBlurShader.js +10 -1
- package/node_modules/three/examples/jsm/shaders/DigitalGlitch.js +10 -7
- package/node_modules/three/examples/jsm/shaders/DotScreenShader.js +8 -3
- package/node_modules/three/examples/jsm/shaders/ExposureShader.js +8 -1
- package/node_modules/three/examples/jsm/shaders/FXAAShader.js +243 -233
- package/node_modules/three/examples/jsm/shaders/FilmShader.js +13 -0
- package/node_modules/three/examples/jsm/shaders/FocusShader.js +8 -3
- package/node_modules/three/examples/jsm/shaders/FreiChenShader.js +10 -3
- package/node_modules/three/examples/jsm/shaders/GTAOShader.js +37 -40
- package/node_modules/three/examples/jsm/shaders/GammaCorrectionShader.js +11 -2
- package/node_modules/three/examples/jsm/shaders/GodRaysShader.js +20 -8
- package/node_modules/three/examples/jsm/shaders/HalftoneShader.js +13 -4
- package/node_modules/three/examples/jsm/shaders/HorizontalBlurShader.js +12 -3
- package/node_modules/three/examples/jsm/shaders/HorizontalTiltShiftShader.js +9 -2
- package/node_modules/three/examples/jsm/shaders/HueSaturationShader.js +10 -3
- package/node_modules/three/examples/jsm/shaders/KaleidoShader.js +11 -4
- package/node_modules/three/examples/jsm/shaders/LuminosityHighPassShader.js +9 -7
- package/node_modules/three/examples/jsm/shaders/LuminosityShader.js +8 -2
- package/node_modules/three/examples/jsm/shaders/MirrorShader.js +10 -4
- package/node_modules/three/examples/jsm/shaders/NormalMapShader.js +7 -2
- package/node_modules/three/examples/jsm/shaders/OutputShader.js +24 -2
- package/node_modules/three/examples/jsm/shaders/PoissonDenoiseShader.js +24 -15
- package/node_modules/three/examples/jsm/shaders/RGBShiftShader.js +8 -1
- package/node_modules/three/examples/jsm/shaders/SAOShader.js +10 -1
- package/node_modules/three/examples/jsm/shaders/SMAAShader.js +24 -1
- package/node_modules/three/examples/jsm/shaders/SSAOShader.js +26 -5
- package/node_modules/three/examples/jsm/shaders/SSRShader.js +26 -1
- package/node_modules/three/examples/jsm/shaders/SepiaShader.js +8 -3
- package/node_modules/three/examples/jsm/shaders/SobelOperatorShader.js +9 -3
- package/node_modules/three/examples/jsm/shaders/SubsurfaceScatteringShader.js +13 -8
- package/node_modules/three/examples/jsm/shaders/TechnicolorShader.js +10 -4
- package/node_modules/three/examples/jsm/shaders/ToonShader.js +29 -6
- package/node_modules/three/examples/jsm/shaders/TriangleBlurShader.js +9 -4
- package/node_modules/three/examples/jsm/shaders/UnpackDepthRGBAShader.js +19 -4
- package/node_modules/three/examples/jsm/shaders/VelocityShader.js +8 -1
- package/node_modules/three/examples/jsm/shaders/VerticalBlurShader.js +9 -2
- package/node_modules/three/examples/jsm/shaders/VerticalTiltShiftShader.js +8 -1
- package/node_modules/three/examples/jsm/shaders/VignetteShader.js +8 -3
- package/node_modules/three/examples/jsm/shaders/VolumeShader.js +11 -2
- package/node_modules/three/examples/jsm/shaders/WaterRefractionShader.js +11 -0
- package/node_modules/three/examples/jsm/textures/FlakesTexture.js +14 -0
- package/node_modules/three/examples/jsm/transpiler/AST.js +392 -31
- package/node_modules/three/examples/jsm/transpiler/GLSLDecoder.js +366 -136
- package/node_modules/three/examples/jsm/transpiler/Linker.js +327 -0
- package/node_modules/three/examples/jsm/transpiler/ShaderToyDecoder.js +3 -3
- package/node_modules/three/examples/jsm/transpiler/TSLEncoder.js +336 -111
- package/node_modules/three/examples/jsm/transpiler/Transpiler.js +50 -1
- package/node_modules/three/examples/jsm/transpiler/TranspilerUtils.js +29 -0
- package/node_modules/three/examples/jsm/transpiler/WGSLEncoder.js +812 -0
- package/node_modules/three/examples/jsm/tsl/display/AfterImageNode.js +244 -0
- package/node_modules/three/examples/jsm/tsl/display/AnaglyphPassNode.js +107 -0
- package/node_modules/three/examples/jsm/tsl/display/AnamorphicNode.js +282 -0
- package/node_modules/three/examples/jsm/tsl/display/BleachBypass.js +33 -0
- package/node_modules/three/examples/jsm/tsl/display/BloomNode.js +524 -0
- package/node_modules/three/examples/jsm/tsl/display/ChromaticAberrationNode.js +207 -0
- package/node_modules/three/examples/jsm/tsl/display/DenoiseNode.js +334 -0
- package/node_modules/three/examples/jsm/tsl/display/DepthOfFieldNode.js +554 -0
- package/node_modules/three/examples/jsm/tsl/display/DotScreenNode.js +104 -0
- package/node_modules/three/examples/jsm/tsl/display/FXAANode.js +365 -0
- package/node_modules/three/examples/jsm/tsl/display/FilmNode.js +101 -0
- package/node_modules/three/examples/jsm/tsl/display/GTAONode.js +570 -0
- package/node_modules/three/examples/jsm/tsl/display/GaussianBlurNode.js +380 -0
- package/node_modules/three/examples/jsm/tsl/display/LensflareNode.js +279 -0
- package/node_modules/three/examples/jsm/tsl/display/Lut3DNode.js +109 -0
- package/node_modules/three/examples/jsm/tsl/display/MotionBlur.js +33 -0
- package/node_modules/three/examples/jsm/tsl/display/OutlineNode.js +762 -0
- package/node_modules/three/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +89 -0
- package/node_modules/three/examples/jsm/tsl/display/PixelationPassNode.js +334 -0
- package/node_modules/three/examples/jsm/tsl/display/RGBShiftNode.js +96 -0
- package/node_modules/three/examples/jsm/tsl/display/SMAANode.js +768 -0
- package/node_modules/three/examples/jsm/tsl/display/SSAAPassNode.js +358 -0
- package/node_modules/three/examples/jsm/tsl/display/SSGINode.js +654 -0
- package/node_modules/three/examples/jsm/tsl/display/SSRNode.js +656 -0
- package/node_modules/three/examples/jsm/tsl/display/SSSNode.js +488 -0
- package/node_modules/three/examples/jsm/tsl/display/Sepia.js +24 -0
- package/node_modules/three/examples/jsm/tsl/display/SobelOperatorNode.js +168 -0
- package/node_modules/three/examples/jsm/tsl/display/StereoCompositePassNode.js +185 -0
- package/node_modules/three/examples/jsm/tsl/display/StereoPassNode.js +120 -0
- package/node_modules/three/examples/jsm/tsl/display/TRAANode.js +578 -0
- package/node_modules/three/examples/jsm/tsl/display/TransitionNode.js +141 -0
- package/node_modules/three/examples/jsm/tsl/display/boxBlur.js +65 -0
- package/node_modules/three/examples/jsm/tsl/display/hashBlur.js +54 -0
- package/node_modules/three/examples/jsm/tsl/lighting/TiledLightsNode.js +442 -0
- package/node_modules/three/examples/jsm/tsl/math/Bayer.js +34 -0
- package/node_modules/three/examples/jsm/tsl/shadows/TileShadowNode.js +456 -0
- package/node_modules/three/examples/jsm/tsl/shadows/TileShadowNodeHelper.js +212 -0
- package/node_modules/three/examples/jsm/tsl/utils/Raymarching.js +70 -0
- package/node_modules/three/examples/jsm/utils/BufferGeometryUtils.js +109 -45
- package/node_modules/three/examples/jsm/utils/CameraUtils.js +15 -6
- package/node_modules/three/examples/jsm/utils/GeometryCompressionUtils.js +54 -146
- package/node_modules/three/examples/jsm/utils/GeometryUtils.js +32 -27
- package/node_modules/three/examples/jsm/utils/LDrawUtils.js +13 -4
- package/node_modules/three/examples/jsm/utils/SceneOptimizer.js +458 -0
- package/node_modules/three/examples/jsm/utils/SceneUtils.js +112 -3
- package/node_modules/three/examples/jsm/utils/ShadowMapViewer.js +51 -31
- package/node_modules/three/examples/jsm/utils/ShadowMapViewerGPU.js +233 -0
- package/node_modules/three/examples/jsm/utils/SkeletonUtils.js +145 -68
- package/node_modules/three/examples/jsm/utils/SortUtils.js +23 -8
- package/node_modules/three/examples/jsm/utils/UVsDebug.js +12 -4
- package/node_modules/three/examples/jsm/utils/{TextureUtils.js → WebGLTextureUtils.js} +19 -2
- package/node_modules/three/examples/jsm/utils/WebGPUTextureUtils.js +81 -0
- package/node_modules/three/examples/jsm/utils/WorkerPool.js +67 -2
- package/node_modules/three/examples/jsm/webxr/ARButton.js +19 -0
- package/node_modules/three/examples/jsm/webxr/OculusHandModel.js +87 -2
- package/node_modules/three/examples/jsm/webxr/OculusHandPointerModel.js +148 -22
- package/node_modules/three/examples/jsm/webxr/Text2D.js +20 -6
- package/node_modules/three/examples/jsm/webxr/VRButton.js +44 -5
- package/node_modules/three/examples/jsm/webxr/XRButton.js +23 -1
- package/node_modules/three/examples/jsm/webxr/XRControllerModelFactory.js +103 -4
- package/node_modules/three/examples/jsm/webxr/XREstimatedLight.js +35 -4
- package/node_modules/three/examples/jsm/webxr/XRHandMeshModel.js +37 -0
- package/node_modules/three/examples/jsm/webxr/XRHandModelFactory.js +101 -9
- package/node_modules/three/examples/jsm/webxr/XRHandPrimitiveModel.js +44 -0
- package/node_modules/three/examples/jsm/webxr/XRPlanes.js +18 -0
- package/node_modules/three/package.json +25 -20
- package/node_modules/three/src/Three.Core.js +185 -0
- package/node_modules/three/src/Three.Legacy.js +0 -1
- package/node_modules/three/src/Three.TSL.js +633 -0
- package/node_modules/three/src/Three.WebGPU.Nodes.js +26 -0
- package/node_modules/three/src/Three.WebGPU.js +28 -0
- package/node_modules/three/src/Three.js +1 -176
- package/node_modules/three/src/animation/AnimationAction.js +262 -30
- package/node_modules/three/src/animation/AnimationClip.js +164 -9
- package/node_modules/three/src/animation/AnimationMixer.js +99 -15
- package/node_modules/three/src/animation/AnimationObjectGroup.js +45 -21
- package/node_modules/three/src/animation/AnimationUtils.js +169 -19
- package/node_modules/three/src/animation/KeyframeTrack.js +151 -16
- package/node_modules/three/src/animation/PropertyBinding.js +91 -16
- package/node_modules/three/src/animation/PropertyMixer.js +72 -5
- package/node_modules/three/src/animation/tracks/BooleanKeyframeTrack.js +42 -6
- package/node_modules/three/src/animation/tracks/ColorKeyframeTrack.js +26 -5
- package/node_modules/three/src/animation/tracks/NumberKeyframeTrack.js +26 -2
- package/node_modules/three/src/animation/tracks/QuaternionKeyframeTrack.js +31 -3
- package/node_modules/three/src/animation/tracks/StringKeyframeTrack.js +42 -2
- package/node_modules/three/src/animation/tracks/VectorKeyframeTrack.js +26 -2
- package/node_modules/three/src/audio/Audio.js +388 -10
- package/node_modules/three/src/audio/AudioAnalyser.js +58 -1
- package/node_modules/three/src/audio/AudioContext.js +15 -0
- package/node_modules/three/src/audio/AudioListener.js +89 -10
- package/node_modules/three/src/audio/PositionalAudio.js +107 -0
- package/node_modules/three/src/cameras/ArrayCamera.js +37 -0
- package/node_modules/three/src/cameras/Camera.js +61 -0
- package/node_modules/three/src/cameras/CubeCamera.js +66 -0
- package/node_modules/three/src/cameras/OrthographicCamera.js +110 -1
- package/node_modules/three/src/cameras/PerspectiveCamera.js +174 -35
- package/node_modules/three/src/cameras/StereoCamera.js +48 -2
- package/node_modules/three/src/constants.js +1477 -18
- package/node_modules/three/src/core/BufferAttribute.js +417 -23
- package/node_modules/three/src/core/BufferGeometry.js +416 -49
- package/node_modules/three/src/core/Clock.js +62 -8
- package/node_modules/three/src/core/EventDispatcher.js +52 -8
- package/node_modules/three/src/core/GLBufferAttribute.js +113 -2
- package/node_modules/three/src/core/InstancedBufferAttribute.js +29 -0
- package/node_modules/three/src/core/InstancedBufferGeometry.js +20 -0
- package/node_modules/three/src/core/InstancedInterleavedBuffer.js +26 -0
- package/node_modules/three/src/core/InterleavedBuffer.js +141 -16
- package/node_modules/three/src/core/InterleavedBufferAttribute.js +200 -2
- package/node_modules/three/src/core/Layers.js +71 -10
- package/node_modules/three/src/core/Object3D.js +665 -54
- package/node_modules/three/src/core/Raycaster.js +160 -8
- package/node_modules/three/src/core/RenderTarget.js +297 -36
- package/node_modules/three/src/core/RenderTarget3D.js +48 -0
- package/node_modules/three/src/core/Timer.js +184 -0
- package/node_modules/three/src/core/Uniform.js +29 -0
- package/node_modules/three/src/core/UniformsGroup.js +84 -2
- package/node_modules/three/src/extras/Controls.js +120 -0
- package/node_modules/three/src/extras/DataUtils.js +50 -9
- package/node_modules/three/src/extras/Earcut.js +18 -779
- package/node_modules/three/src/extras/ImageUtils.js +22 -14
- package/node_modules/three/src/extras/PMREMGenerator.js +329 -64
- package/node_modules/three/src/extras/ShapeUtils.js +24 -2
- package/node_modules/three/src/extras/TextureUtils.js +293 -0
- package/node_modules/three/src/extras/core/Curve.js +156 -55
- package/node_modules/three/src/extras/core/CurvePath.js +63 -22
- package/node_modules/three/src/extras/core/Interpolations.js +34 -2
- package/node_modules/three/src/extras/core/Path.js +134 -1
- package/node_modules/three/src/extras/core/Shape.js +66 -3
- package/node_modules/three/src/extras/core/ShapePath.js +80 -4
- package/node_modules/three/src/extras/curves/ArcCurve.js +22 -0
- package/node_modules/three/src/extras/curves/CatmullRomCurve3.js +89 -18
- package/node_modules/three/src/extras/curves/CubicBezierCurve.js +67 -0
- package/node_modules/three/src/extras/curves/CubicBezierCurve3.js +50 -0
- package/node_modules/three/src/extras/curves/EllipseCurve.js +104 -2
- package/node_modules/three/src/extras/curves/LineCurve.js +36 -0
- package/node_modules/three/src/extras/curves/LineCurve3.js +36 -0
- package/node_modules/three/src/extras/curves/QuadraticBezierCurve.js +59 -0
- package/node_modules/three/src/extras/curves/QuadraticBezierCurve3.js +43 -0
- package/node_modules/three/src/extras/curves/SplineCurve.js +48 -0
- package/node_modules/three/src/extras/lib/earcut.js +685 -0
- package/node_modules/three/src/geometries/BoxGeometry.js +39 -0
- package/node_modules/three/src/geometries/CapsuleGeometry.js +196 -11
- package/node_modules/three/src/geometries/CircleGeometry.js +41 -0
- package/node_modules/three/src/geometries/ConeGeometry.js +39 -0
- package/node_modules/three/src/geometries/CylinderGeometry.js +51 -4
- package/node_modules/three/src/geometries/DodecahedronGeometry.js +33 -0
- package/node_modules/three/src/geometries/EdgesGeometry.js +30 -2
- package/node_modules/three/src/geometries/ExtrudeGeometry.js +146 -50
- package/node_modules/three/src/geometries/IcosahedronGeometry.js +33 -0
- package/node_modules/three/src/geometries/LatheGeometry.js +44 -3
- package/node_modules/three/src/geometries/OctahedronGeometry.js +33 -0
- package/node_modules/three/src/geometries/PlaneGeometry.js +35 -0
- package/node_modules/three/src/geometries/PolyhedronGeometry.js +29 -0
- package/node_modules/three/src/geometries/RingGeometry.js +37 -0
- package/node_modules/three/src/geometries/ShapeGeometry.js +38 -0
- package/node_modules/three/src/geometries/SphereGeometry.js +38 -0
- package/node_modules/three/src/geometries/TetrahedronGeometry.js +33 -0
- package/node_modules/three/src/geometries/TorusGeometry.js +36 -0
- package/node_modules/three/src/geometries/TorusKnotGeometry.js +39 -0
- package/node_modules/three/src/geometries/TubeGeometry.js +50 -0
- package/node_modules/three/src/geometries/WireframeGeometry.js +32 -0
- package/node_modules/three/src/helpers/ArrowHelper.js +62 -5
- package/node_modules/three/src/helpers/AxesHelper.js +28 -0
- package/node_modules/three/src/helpers/Box3Helper.js +28 -0
- package/node_modules/three/src/helpers/BoxHelper.js +43 -7
- package/node_modules/three/src/helpers/CameraHelper.js +100 -27
- package/node_modules/three/src/helpers/DirectionalLightHelper.js +52 -0
- package/node_modules/three/src/helpers/GridHelper.js +26 -0
- package/node_modules/three/src/helpers/HemisphereLightHelper.js +39 -0
- package/node_modules/three/src/helpers/PlaneHelper.js +33 -0
- package/node_modules/three/src/helpers/PointLightHelper.js +43 -0
- package/node_modules/three/src/helpers/PolarGridHelper.js +30 -0
- package/node_modules/three/src/helpers/SkeletonHelper.js +73 -7
- package/node_modules/three/src/helpers/SpotLightHelper.js +58 -1
- package/node_modules/three/src/lights/AmbientLight.js +25 -0
- package/node_modules/three/src/lights/DirectionalLight.js +57 -0
- package/node_modules/three/src/lights/DirectionalLightShadow.js +15 -0
- package/node_modules/three/src/lights/HemisphereLight.js +32 -0
- package/node_modules/three/src/lights/Light.js +37 -0
- package/node_modules/three/src/lights/LightProbe.js +43 -0
- package/node_modules/three/src/lights/LightShadow.js +198 -7
- package/node_modules/three/src/lights/PointLight.js +59 -0
- package/node_modules/three/src/lights/PointLightShadow.js +22 -1
- package/node_modules/three/src/lights/RectAreaLight.js +59 -0
- package/node_modules/three/src/lights/SpotLight.js +102 -0
- package/node_modules/three/src/lights/SpotLightShadow.js +33 -3
- package/node_modules/three/src/lights/webgpu/IESSpotLight.js +46 -0
- package/node_modules/three/src/lights/webgpu/ProjectorLight.js +46 -0
- package/node_modules/three/src/loaders/AnimationLoader.js +34 -2
- package/node_modules/three/src/loaders/AudioLoader.js +34 -2
- package/node_modules/three/src/loaders/BufferGeometryLoader.js +38 -13
- package/node_modules/three/src/loaders/Cache.js +47 -2
- package/node_modules/three/src/loaders/CompressedTextureLoader.js +36 -3
- package/node_modules/three/src/loaders/CubeTextureLoader.js +45 -0
- package/node_modules/three/src/loaders/DataTextureLoader.js +45 -8
- package/node_modules/three/src/loaders/FileLoader.js +90 -6
- package/node_modules/three/src/loaders/ImageBitmapLoader.js +108 -11
- package/node_modules/three/src/loaders/ImageLoader.js +85 -8
- package/node_modules/three/src/loaders/Loader.js +144 -0
- package/node_modules/three/src/loaders/LoaderUtils.js +18 -34
- package/node_modules/three/src/loaders/LoadingManager.js +187 -0
- package/node_modules/three/src/loaders/MaterialLoader.js +70 -4
- package/node_modules/three/src/loaders/ObjectLoader.js +146 -30
- package/node_modules/three/src/loaders/TextureLoader.js +33 -0
- package/node_modules/three/src/loaders/nodes/NodeLoader.js +194 -0
- package/node_modules/three/src/loaders/nodes/NodeMaterialLoader.js +108 -0
- package/node_modules/three/src/loaders/nodes/NodeObjectLoader.js +151 -0
- package/node_modules/three/src/materials/LineBasicMaterial.js +74 -1
- package/node_modules/three/src/materials/LineDashedMaterial.js +52 -1
- package/node_modules/three/src/materials/Material.js +504 -11
- package/node_modules/three/src/materials/MeshBasicMaterial.js +172 -3
- package/node_modules/three/src/materials/MeshDepthMaterial.js +94 -0
- package/node_modules/three/src/materials/MeshDistanceMaterial.js +76 -0
- package/node_modules/three/src/materials/MeshLambertMaterial.js +278 -1
- package/node_modules/three/src/materials/MeshMatcapMaterial.js +164 -0
- package/node_modules/three/src/materials/MeshNormalMaterial.js +114 -0
- package/node_modules/three/src/materials/MeshPhongMaterial.js +293 -1
- package/node_modules/three/src/materials/MeshPhysicalMaterial.js +316 -4
- package/node_modules/three/src/materials/MeshStandardMaterial.js +304 -3
- package/node_modules/three/src/materials/MeshToonMaterial.js +219 -0
- package/node_modules/three/src/materials/PointsMaterial.js +89 -0
- package/node_modules/three/src/materials/RawShaderMaterial.js +25 -0
- package/node_modules/three/src/materials/ShaderMaterial.js +215 -10
- package/node_modules/three/src/materials/ShadowMaterial.js +54 -0
- package/node_modules/three/src/materials/SpriteMaterial.js +82 -0
- package/node_modules/three/{examples/jsm/nodes/materials → src/materials/nodes}/Line2NodeMaterial.js +206 -100
- package/node_modules/three/src/materials/nodes/LineBasicNodeMaterial.js +46 -0
- package/node_modules/three/src/materials/nodes/LineDashedNodeMaterial.js +132 -0
- package/node_modules/three/src/materials/nodes/MeshBasicNodeMaterial.js +134 -0
- package/node_modules/three/src/materials/nodes/MeshLambertNodeMaterial.js +82 -0
- package/node_modules/three/src/materials/nodes/MeshMatcapNodeMaterial.js +77 -0
- package/node_modules/three/src/materials/nodes/MeshNormalNodeMaterial.js +67 -0
- package/node_modules/three/src/materials/nodes/MeshPhongNodeMaterial.js +141 -0
- package/node_modules/three/src/materials/nodes/MeshPhysicalNodeMaterial.js +518 -0
- package/node_modules/three/src/materials/nodes/MeshSSSNodeMaterial.js +175 -0
- package/node_modules/three/src/materials/nodes/MeshStandardNodeMaterial.js +186 -0
- package/node_modules/three/src/materials/nodes/MeshToonNodeMaterial.js +66 -0
- package/node_modules/three/src/materials/nodes/NodeMaterial.js +1310 -0
- package/node_modules/three/{examples/jsm/nodes/materials/Materials.js → src/materials/nodes/NodeMaterials.js} +7 -2
- package/node_modules/three/src/materials/nodes/PointsNodeMaterial.js +211 -0
- package/node_modules/three/src/materials/nodes/ShadowNodeMaterial.js +76 -0
- package/node_modules/three/src/materials/nodes/SpriteNodeMaterial.js +186 -0
- package/node_modules/three/src/materials/nodes/VolumeNodeMaterial.js +81 -0
- package/node_modules/three/src/materials/nodes/manager/NodeMaterialObserver.js +613 -0
- package/node_modules/three/src/math/Box2.js +181 -4
- package/node_modules/three/src/math/Box3.js +277 -6
- package/node_modules/three/src/math/Color.js +355 -11
- package/node_modules/three/src/math/ColorManagement.js +161 -85
- package/node_modules/three/src/math/Cylindrical.js +65 -6
- package/node_modules/three/src/math/Euler.js +139 -5
- package/node_modules/three/src/math/Frustum.js +108 -9
- package/node_modules/three/src/math/FrustumArray.js +258 -0
- package/node_modules/three/src/math/Interpolant.js +87 -8
- package/node_modules/three/src/math/Line3.js +223 -2
- package/node_modules/three/src/math/MathUtils.js +408 -20
- package/node_modules/three/src/math/Matrix2.js +124 -0
- package/node_modules/three/src/math/Matrix3.js +229 -4
- package/node_modules/three/src/math/Matrix4.js +416 -30
- package/node_modules/three/src/math/Plane.js +164 -2
- package/node_modules/three/src/math/Quaternion.js +345 -86
- package/node_modules/three/src/math/Ray.js +162 -0
- package/node_modules/three/src/math/Sphere.js +175 -0
- package/node_modules/three/src/math/Spherical.js +74 -13
- package/node_modules/three/src/math/SphericalHarmonics3.js +112 -14
- package/node_modules/three/src/math/Triangle.js +230 -2
- package/node_modules/three/src/math/Vector2.js +396 -10
- package/node_modules/three/src/math/Vector3.js +557 -20
- package/node_modules/three/src/math/Vector4.js +428 -9
- package/node_modules/three/src/math/interpolants/CubicInterpolant.js +10 -1
- package/node_modules/three/src/math/interpolants/DiscreteInterpolant.js +10 -2
- package/node_modules/three/src/math/interpolants/LinearInterpolant.js +13 -0
- package/node_modules/three/src/math/interpolants/QuaternionLinearInterpolant.js +10 -1
- package/node_modules/three/src/nodes/Nodes.js +148 -0
- package/node_modules/three/src/nodes/TSL.js +173 -0
- package/node_modules/three/src/nodes/accessors/AccessorsUtils.js +53 -0
- package/node_modules/three/src/nodes/accessors/Arrays.js +68 -0
- package/node_modules/three/src/nodes/accessors/BatchNode.js +163 -0
- package/node_modules/three/src/nodes/accessors/Bitangent.js +82 -0
- package/node_modules/three/src/nodes/accessors/BufferAttributeNode.js +340 -0
- package/node_modules/three/src/nodes/accessors/BufferNode.js +101 -0
- package/node_modules/three/src/nodes/accessors/BuiltinNode.js +63 -0
- package/node_modules/three/src/nodes/accessors/Camera.js +282 -0
- package/node_modules/three/src/nodes/accessors/ClippingNode.js +255 -0
- package/node_modules/three/src/nodes/accessors/CubeTextureNode.js +190 -0
- package/node_modules/three/src/nodes/accessors/InstanceNode.js +244 -0
- package/node_modules/three/src/nodes/accessors/InstancedMeshNode.js +50 -0
- package/node_modules/three/src/nodes/accessors/Lights.js +139 -0
- package/node_modules/three/src/nodes/accessors/MaterialNode.js +775 -0
- package/node_modules/three/src/nodes/accessors/MaterialProperties.js +59 -0
- package/node_modules/three/src/nodes/accessors/MaterialReferenceNode.js +85 -0
- package/node_modules/three/src/nodes/accessors/ModelNode.js +184 -0
- package/node_modules/three/src/nodes/accessors/ModelViewProjectionNode.js +13 -0
- package/node_modules/three/{examples/jsm → src}/nodes/accessors/MorphNode.js +122 -57
- package/node_modules/three/src/nodes/accessors/Normal.js +243 -0
- package/node_modules/three/src/nodes/accessors/Object3DNode.js +268 -0
- package/node_modules/three/src/nodes/accessors/PointUVNode.js +55 -0
- package/node_modules/three/src/nodes/accessors/Position.js +90 -0
- package/node_modules/three/src/nodes/accessors/ReferenceBaseNode.js +357 -0
- package/node_modules/three/src/nodes/accessors/ReferenceNode.js +424 -0
- package/node_modules/three/src/nodes/accessors/ReflectVector.js +36 -0
- package/node_modules/three/src/nodes/accessors/RendererReferenceNode.js +79 -0
- package/node_modules/three/src/nodes/accessors/SceneNode.js +145 -0
- package/node_modules/three/src/nodes/accessors/SkinningNode.js +327 -0
- package/node_modules/three/src/nodes/accessors/StorageBufferNode.js +416 -0
- package/node_modules/three/src/nodes/accessors/StorageTextureNode.js +264 -0
- package/node_modules/three/src/nodes/accessors/Tangent.js +70 -0
- package/node_modules/three/src/nodes/accessors/TangentUtils.js +46 -0
- package/node_modules/three/src/nodes/accessors/Texture3DNode.js +199 -0
- package/node_modules/three/{examples/jsm/nodes/accessors/TextureBicubicNode.js → src/nodes/accessors/TextureBicubic.js} +28 -30
- package/node_modules/three/src/nodes/accessors/TextureNode.js +927 -0
- package/node_modules/three/src/nodes/accessors/TextureSizeNode.js +77 -0
- package/node_modules/three/src/nodes/accessors/UV.js +11 -0
- package/node_modules/three/src/nodes/accessors/UniformArrayNode.js +348 -0
- package/node_modules/three/src/nodes/accessors/UserDataNode.js +77 -0
- package/node_modules/three/src/nodes/accessors/VelocityNode.js +224 -0
- package/node_modules/three/src/nodes/accessors/VertexColorNode.js +110 -0
- package/node_modules/three/src/nodes/code/CodeNode.js +181 -0
- package/node_modules/three/src/nodes/code/ExpressionNode.js +68 -0
- package/node_modules/three/src/nodes/code/FunctionCallNode.js +187 -0
- package/node_modules/three/src/nodes/code/FunctionNode.js +183 -0
- package/node_modules/three/{examples/jsm → src}/nodes/code/ScriptableNode.js +253 -15
- package/node_modules/three/{examples/jsm → src}/nodes/code/ScriptableValueNode.js +95 -9
- package/node_modules/three/src/nodes/core/ArrayNode.js +155 -0
- package/node_modules/three/src/nodes/core/AssignNode.js +202 -0
- package/node_modules/three/src/nodes/core/AttributeNode.js +168 -0
- package/node_modules/three/src/nodes/core/BypassNode.js +93 -0
- package/node_modules/three/src/nodes/core/ConstNode.js +67 -0
- package/node_modules/three/src/nodes/core/ContextNode.js +184 -0
- package/node_modules/three/src/nodes/core/IndexNode.js +164 -0
- package/node_modules/three/src/nodes/core/InputNode.js +136 -0
- package/node_modules/three/src/nodes/core/InspectorNode.js +128 -0
- package/node_modules/three/src/nodes/core/IsolateNode.js +133 -0
- package/node_modules/three/src/nodes/core/LightingModel.js +77 -0
- package/node_modules/three/src/nodes/core/MRTNode.js +150 -0
- package/node_modules/three/src/nodes/core/Node.js +1083 -0
- package/node_modules/three/src/nodes/core/NodeAttribute.js +53 -0
- package/node_modules/three/src/nodes/core/NodeBuilder.js +3081 -0
- package/node_modules/three/src/nodes/core/NodeCache.js +75 -0
- package/node_modules/three/src/nodes/core/NodeCode.js +46 -0
- package/node_modules/three/src/nodes/core/NodeFrame.js +306 -0
- package/node_modules/three/src/nodes/core/NodeFunction.js +69 -0
- package/node_modules/three/src/nodes/core/NodeFunctionInput.js +61 -0
- package/node_modules/three/src/nodes/core/NodeParser.js +23 -0
- package/node_modules/three/src/nodes/core/NodeUniform.js +91 -0
- package/node_modules/three/src/nodes/core/NodeUtils.js +406 -0
- package/node_modules/three/src/nodes/core/NodeVar.js +60 -0
- package/node_modules/three/src/nodes/core/NodeVarying.js +63 -0
- package/node_modules/three/src/nodes/core/OutputStructNode.js +103 -0
- package/node_modules/three/src/nodes/core/ParameterNode.js +94 -0
- package/node_modules/three/src/nodes/core/PropertyNode.js +351 -0
- package/node_modules/three/src/nodes/core/StackNode.js +377 -0
- package/node_modules/three/src/nodes/core/StructNode.js +120 -0
- package/node_modules/three/src/nodes/core/StructType.js +13 -0
- package/node_modules/three/src/nodes/core/StructTypeNode.js +154 -0
- package/node_modules/three/src/nodes/core/SubBuildNode.js +89 -0
- package/node_modules/three/src/nodes/core/TempNode.js +88 -0
- package/node_modules/three/src/nodes/core/UniformGroupNode.js +137 -0
- package/node_modules/three/src/nodes/core/UniformNode.js +243 -0
- package/node_modules/three/src/nodes/core/VarNode.js +342 -0
- package/node_modules/three/src/nodes/core/VaryingNode.js +227 -0
- package/node_modules/three/src/nodes/core/constants.js +68 -0
- package/node_modules/three/src/nodes/display/BlendModes.js +235 -0
- package/node_modules/three/src/nodes/display/BumpMapNode.js +117 -0
- package/node_modules/three/src/nodes/display/ColorAdjustment.js +141 -0
- package/node_modules/three/src/nodes/display/ColorSpaceFunctions.js +54 -0
- package/node_modules/three/src/nodes/display/ColorSpaceNode.js +164 -0
- package/node_modules/three/src/nodes/display/FrontFacingNode.js +102 -0
- package/node_modules/three/src/nodes/display/NormalMapNode.js +118 -0
- package/node_modules/three/src/nodes/display/PassNode.js +946 -0
- package/node_modules/three/src/nodes/display/PosterizeNode.js +65 -0
- package/node_modules/three/src/nodes/display/RenderOutputNode.js +150 -0
- package/node_modules/three/src/nodes/display/ScreenNode.js +290 -0
- package/node_modules/three/src/nodes/display/ToneMappingFunctions.js +242 -0
- package/node_modules/three/src/nodes/display/ToneMappingNode.js +147 -0
- package/node_modules/three/src/nodes/display/ToonOutlinePassNode.js +191 -0
- package/node_modules/three/src/nodes/display/ViewportDepthNode.js +294 -0
- package/node_modules/three/src/nodes/display/ViewportDepthTextureNode.js +67 -0
- package/node_modules/three/src/nodes/display/ViewportSharedTextureNode.js +73 -0
- package/node_modules/three/src/nodes/display/ViewportTextureNode.js +228 -0
- package/node_modules/three/src/nodes/fog/Fog.js +114 -0
- package/node_modules/three/src/nodes/functions/BSDF/BRDF_GGX.js +55 -0
- package/node_modules/three/src/nodes/functions/BSDF/BRDF_GGX_Multiscatter.js +52 -0
- package/node_modules/three/{examples/jsm → src}/nodes/functions/BSDF/BRDF_Lambert.js +2 -2
- package/node_modules/three/{examples/jsm → src}/nodes/functions/BSDF/BRDF_Sheen.js +9 -9
- package/node_modules/three/src/nodes/functions/BSDF/DFGApprox.js +71 -0
- package/node_modules/three/{examples/jsm → src}/nodes/functions/BSDF/D_GGX.js +2 -2
- package/node_modules/three/src/nodes/functions/BSDF/D_GGX_Anisotropic.js +28 -0
- package/node_modules/three/{examples/jsm → src}/nodes/functions/BSDF/EnvironmentBRDF.js +2 -2
- package/node_modules/three/{examples/jsm → src}/nodes/functions/BSDF/F_Schlick.js +2 -2
- package/node_modules/three/src/nodes/functions/BSDF/LTC.js +175 -0
- package/node_modules/three/{examples/jsm → src}/nodes/functions/BSDF/Schlick_to_F0.js +2 -2
- package/node_modules/three/{examples/jsm → src}/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +2 -4
- package/node_modules/three/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +29 -0
- package/node_modules/three/src/nodes/functions/BasicLightingModel.js +100 -0
- package/node_modules/three/src/nodes/functions/PhongLightingModel.js +99 -0
- package/node_modules/three/src/nodes/functions/PhysicalLightingModel.js +797 -0
- package/node_modules/three/src/nodes/functions/ShadowMaskModel.js +58 -0
- package/node_modules/three/src/nodes/functions/ToonLightingModel.js +70 -0
- package/node_modules/three/src/nodes/functions/VolumetricLightingModel.js +183 -0
- package/node_modules/three/src/nodes/functions/material/getAlphaHashThreshold.js +68 -0
- package/node_modules/three/src/nodes/functions/material/getGeometryRoughness.js +19 -0
- package/node_modules/three/src/nodes/functions/material/getParallaxCorrectNormal.js +37 -0
- package/node_modules/three/{examples/jsm → src}/nodes/functions/material/getRoughness.js +2 -2
- package/node_modules/three/src/nodes/functions/material/getShIrradianceAt.js +28 -0
- package/node_modules/three/src/nodes/geometry/RangeNode.js +208 -0
- package/node_modules/three/src/nodes/gpgpu/AtomicFunctionNode.js +274 -0
- package/node_modules/three/src/nodes/gpgpu/BarrierNode.js +89 -0
- package/node_modules/three/src/nodes/gpgpu/ComputeBuiltinNode.js +228 -0
- package/node_modules/three/src/nodes/gpgpu/ComputeNode.js +284 -0
- package/node_modules/three/src/nodes/gpgpu/SubgroupFunctionNode.js +455 -0
- package/node_modules/three/src/nodes/gpgpu/WorkgroupInfoNode.js +234 -0
- package/node_modules/three/src/nodes/lighting/AONode.js +45 -0
- package/node_modules/three/{examples/jsm → src}/nodes/lighting/AmbientLightNode.js +16 -8
- package/node_modules/three/src/nodes/lighting/AnalyticLightNode.js +256 -0
- package/node_modules/three/src/nodes/lighting/BasicEnvironmentNode.js +49 -0
- package/node_modules/three/src/nodes/lighting/BasicLightMapNode.js +49 -0
- package/node_modules/three/src/nodes/lighting/DirectionalLightNode.js +39 -0
- package/node_modules/three/src/nodes/lighting/EnvironmentNode.js +153 -0
- package/node_modules/three/src/nodes/lighting/HemisphereLightNode.js +87 -0
- package/node_modules/three/{examples/jsm → src}/nodes/lighting/IESSpotLightNode.js +20 -10
- package/node_modules/three/src/nodes/lighting/IrradianceNode.js +44 -0
- package/node_modules/three/src/nodes/lighting/LightProbeNode.js +73 -0
- package/node_modules/three/src/nodes/lighting/LightUtils.js +25 -0
- package/node_modules/three/src/nodes/lighting/LightingContextNode.js +115 -0
- package/node_modules/three/src/nodes/lighting/LightingNode.js +36 -0
- package/node_modules/three/src/nodes/lighting/LightsNode.js +453 -0
- package/node_modules/three/src/nodes/lighting/PointLightNode.js +102 -0
- package/node_modules/three/src/nodes/lighting/PointShadowNode.js +312 -0
- package/node_modules/three/src/nodes/lighting/ProjectorLightNode.js +91 -0
- package/node_modules/three/src/nodes/lighting/RectAreaLightNode.js +133 -0
- package/node_modules/three/src/nodes/lighting/ShadowBaseNode.js +81 -0
- package/node_modules/three/src/nodes/lighting/ShadowFilterNode.js +276 -0
- package/node_modules/three/src/nodes/lighting/ShadowNode.js +811 -0
- package/node_modules/three/src/nodes/lighting/SpotLightNode.js +168 -0
- package/node_modules/three/src/nodes/materialx/MaterialXNodes.js +197 -0
- package/node_modules/three/{examples/jsm → src}/nodes/materialx/lib/mx_hsv.js +43 -46
- package/node_modules/three/{examples/jsm → src}/nodes/materialx/lib/mx_noise.js +625 -564
- package/node_modules/three/{examples/jsm → src}/nodes/materialx/lib/mx_transform_color.js +3 -9
- package/node_modules/three/src/nodes/math/BitcastNode.js +156 -0
- package/node_modules/three/src/nodes/math/ConditionalNode.js +245 -0
- package/node_modules/three/src/nodes/math/Hash.js +21 -0
- package/node_modules/three/src/nodes/math/MathNode.js +1167 -0
- package/node_modules/three/src/nodes/math/MathUtils.js +54 -0
- package/node_modules/three/src/nodes/math/OperatorNode.js +751 -0
- package/node_modules/three/{examples/jsm → src}/nodes/math/TriNoise3D.js +34 -34
- package/node_modules/three/{examples/jsm → src}/nodes/parsers/GLSLNodeFunction.js +23 -7
- package/node_modules/three/{examples/jsm → src}/nodes/parsers/GLSLNodeParser.js +11 -0
- package/node_modules/three/src/nodes/pmrem/PMREMNode.js +397 -0
- package/node_modules/three/src/nodes/pmrem/PMREMUtils.js +403 -0
- package/node_modules/three/src/nodes/procedural/Checker.js +22 -0
- package/node_modules/three/src/nodes/shapes/Shapes.js +33 -0
- package/node_modules/three/src/nodes/tsl/TSLBase.js +36 -0
- package/node_modules/three/src/nodes/tsl/TSLCore.js +1229 -0
- package/node_modules/three/src/nodes/utils/ArrayElementNode.js +77 -0
- package/node_modules/three/src/nodes/utils/ConvertNode.js +100 -0
- package/node_modules/three/src/nodes/utils/CubeMapNode.js +237 -0
- package/node_modules/three/src/nodes/utils/DebugNode.js +83 -0
- package/node_modules/three/src/nodes/utils/Discard.js +24 -0
- package/node_modules/three/src/nodes/utils/EquirectUV.js +27 -0
- package/node_modules/three/src/nodes/utils/EventNode.js +119 -0
- package/node_modules/three/src/nodes/utils/FlipNode.js +106 -0
- package/node_modules/three/src/nodes/utils/FunctionOverloadingNode.js +170 -0
- package/node_modules/three/src/nodes/utils/JoinNode.js +117 -0
- package/node_modules/three/src/nodes/utils/LoopNode.js +349 -0
- package/node_modules/three/src/nodes/utils/MatcapUV.js +22 -0
- package/node_modules/three/src/nodes/utils/MaxMipLevelNode.js +103 -0
- package/node_modules/three/src/nodes/utils/MemberNode.js +120 -0
- package/node_modules/three/src/nodes/utils/Oscillators.js +41 -0
- package/node_modules/three/src/nodes/utils/Packing.js +21 -0
- package/node_modules/three/src/nodes/utils/PostProcessingUtils.js +122 -0
- package/node_modules/three/src/nodes/utils/RTTNode.js +289 -0
- package/node_modules/three/src/nodes/utils/ReflectorNode.js +630 -0
- package/node_modules/three/src/nodes/utils/RemapNode.js +125 -0
- package/node_modules/three/{examples/jsm → src}/nodes/utils/RotateNode.js +48 -13
- package/node_modules/three/src/nodes/utils/SampleNode.js +91 -0
- package/node_modules/three/{examples/jsm → src}/nodes/utils/SetNode.js +50 -4
- package/node_modules/three/{examples/jsm → src}/nodes/utils/SplitNode.js +73 -6
- package/node_modules/three/src/nodes/utils/SpriteSheetUVNode.js +90 -0
- package/node_modules/three/src/nodes/utils/SpriteUtils.js +63 -0
- package/node_modules/three/src/nodes/utils/StorageArrayElementNode.js +143 -0
- package/node_modules/three/src/nodes/utils/Timer.js +26 -0
- package/node_modules/three/src/nodes/utils/TriplanarTextures.js +65 -0
- package/node_modules/three/src/nodes/utils/UVUtils.js +39 -0
- package/node_modules/three/src/nodes/utils/ViewportUtils.js +26 -0
- package/node_modules/three/src/objects/BatchedMesh.js +940 -305
- package/node_modules/three/src/objects/Bone.js +24 -0
- package/node_modules/three/src/objects/ClippingGroup.js +68 -0
- package/node_modules/three/src/objects/Group.js +24 -0
- package/node_modules/three/src/objects/InstancedMesh.js +182 -1
- package/node_modules/three/src/objects/LOD.js +120 -5
- package/node_modules/three/src/objects/Line.js +151 -44
- package/node_modules/three/src/objects/LineLoop.js +20 -0
- package/node_modules/three/src/objects/LineSegments.js +20 -1
- package/node_modules/three/src/objects/Mesh.js +91 -24
- package/node_modules/three/src/objects/Points.js +62 -0
- package/node_modules/three/src/objects/Skeleton.js +111 -5
- package/node_modules/three/src/objects/SkinnedMesh.js +102 -6
- package/node_modules/three/src/objects/Sprite.js +65 -1
- package/node_modules/three/src/renderers/WebGL3DRenderTarget.js +26 -0
- package/node_modules/three/src/renderers/WebGLArrayRenderTarget.js +26 -0
- package/node_modules/three/src/renderers/WebGLCubeRenderTarget.js +42 -15
- package/node_modules/three/src/renderers/WebGLRenderTarget.js +19 -0
- package/node_modules/three/src/renderers/WebGLRenderer.js +1222 -318
- package/node_modules/three/src/renderers/common/Animation.js +159 -0
- package/node_modules/three/{examples/jsm → src}/renderers/common/Attributes.js +45 -2
- package/node_modules/three/src/renderers/common/Backend.js +748 -0
- package/node_modules/three/src/renderers/common/Background.js +212 -0
- package/node_modules/three/src/renderers/common/BindGroup.js +61 -0
- package/node_modules/three/src/renderers/common/Binding.js +60 -0
- package/node_modules/three/src/renderers/common/Bindings.js +379 -0
- package/node_modules/three/src/renderers/common/Buffer.js +87 -0
- package/node_modules/three/src/renderers/common/BufferUtils.js +58 -0
- package/node_modules/three/src/renderers/common/BundleGroup.js +83 -0
- package/node_modules/three/src/renderers/common/CanvasTarget.js +341 -0
- package/node_modules/three/src/renderers/common/ChainMap.js +98 -0
- package/node_modules/three/src/renderers/common/ClippingContext.js +262 -0
- package/node_modules/three/src/renderers/common/Color4.js +77 -0
- package/node_modules/three/src/renderers/common/ComputePipeline.js +41 -0
- package/node_modules/three/{examples/jsm → src}/renderers/common/Constants.js +2 -1
- package/node_modules/three/{examples/jsm → src}/renderers/common/CubeRenderTarget.js +43 -5
- package/node_modules/three/src/renderers/common/DataMap.js +90 -0
- package/node_modules/three/src/renderers/common/Geometries.js +370 -0
- package/node_modules/three/src/renderers/common/IndirectStorageBufferAttribute.js +38 -0
- package/node_modules/three/src/renderers/common/Info.js +172 -0
- package/node_modules/three/src/renderers/common/InspectorBase.js +146 -0
- package/node_modules/three/src/renderers/common/Lighting.js +73 -0
- package/node_modules/three/src/renderers/common/Pipeline.js +35 -0
- package/node_modules/three/{examples/jsm → src}/renderers/common/Pipelines.js +150 -7
- package/node_modules/three/src/renderers/common/PostProcessing.js +226 -0
- package/node_modules/three/src/renderers/common/ProgrammableStage.js +78 -0
- package/node_modules/three/src/renderers/common/QuadMesh.js +112 -0
- package/node_modules/three/src/renderers/common/RenderBundle.js +24 -0
- package/node_modules/three/src/renderers/common/RenderBundles.js +67 -0
- package/node_modules/three/src/renderers/common/RenderContext.js +265 -0
- package/node_modules/three/src/renderers/common/RenderContexts.js +116 -0
- package/node_modules/three/src/renderers/common/RenderList.js +404 -0
- package/node_modules/three/src/renderers/common/RenderLists.js +77 -0
- package/node_modules/three/src/renderers/common/RenderObject.js +903 -0
- package/node_modules/three/src/renderers/common/RenderObjects.js +202 -0
- package/node_modules/three/src/renderers/common/RenderPipeline.js +40 -0
- package/node_modules/three/src/renderers/common/Renderer.js +3290 -0
- package/node_modules/three/src/renderers/common/RendererUtils.js +200 -0
- package/node_modules/three/src/renderers/common/SampledTexture.js +152 -0
- package/node_modules/three/src/renderers/common/Sampler.js +165 -0
- package/node_modules/three/src/renderers/common/Storage3DTexture.js +100 -0
- package/node_modules/three/src/renderers/common/StorageArrayTexture.js +84 -0
- package/node_modules/three/src/renderers/common/StorageBuffer.js +41 -0
- package/node_modules/three/src/renderers/common/StorageBufferAttribute.js +46 -0
- package/node_modules/three/src/renderers/common/StorageInstancedBufferAttribute.js +46 -0
- package/node_modules/three/src/renderers/common/StorageTexture.js +86 -0
- package/node_modules/three/src/renderers/common/Textures.js +544 -0
- package/node_modules/three/src/renderers/common/TimestampQueryPool.js +161 -0
- package/node_modules/three/src/renderers/common/Uniform.js +367 -0
- package/node_modules/three/src/renderers/common/UniformBuffer.js +34 -0
- package/node_modules/three/src/renderers/common/UniformsGroup.js +487 -0
- package/node_modules/three/src/renderers/common/XRManager.js +1676 -0
- package/node_modules/three/src/renderers/common/XRRenderTarget.js +91 -0
- package/node_modules/three/src/renderers/common/extras/PMREMGenerator.js +1034 -0
- package/node_modules/three/src/renderers/common/nodes/NodeBuilderState.js +152 -0
- package/node_modules/three/src/renderers/common/nodes/NodeLibrary.js +196 -0
- package/node_modules/three/src/renderers/common/nodes/NodeSampledTexture.js +140 -0
- package/node_modules/three/src/renderers/common/nodes/NodeSampler.js +62 -0
- package/node_modules/three/src/renderers/common/nodes/NodeStorageBuffer.js +61 -0
- package/node_modules/three/src/renderers/common/nodes/NodeUniform.js +418 -0
- package/node_modules/three/src/renderers/common/nodes/NodeUniformBuffer.js +53 -0
- package/node_modules/three/src/renderers/common/nodes/NodeUniformsGroup.js +51 -0
- package/node_modules/three/src/renderers/common/nodes/Nodes.js +840 -0
- package/node_modules/three/src/renderers/shaders/DFGLUTData.js +64 -0
- package/node_modules/three/src/renderers/shaders/ShaderChunk/batching_pars_vertex.glsl.js +31 -1
- package/node_modules/three/src/renderers/shaders/ShaderChunk/batching_vertex.glsl.js +1 -1
- package/node_modules/three/src/renderers/shaders/ShaderChunk/color_pars_vertex.glsl.js +1 -1
- package/node_modules/three/src/renderers/shaders/ShaderChunk/color_vertex.glsl.js +9 -1
- package/node_modules/three/src/renderers/shaders/ShaderChunk/colorspace_pars_fragment.glsl.js +4 -33
- package/node_modules/three/src/renderers/shaders/ShaderChunk/common.glsl.js +0 -22
- package/node_modules/three/src/renderers/shaders/ShaderChunk/emissivemap_fragment.glsl.js +8 -0
- package/node_modules/three/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +2 -1
- package/node_modules/three/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +1 -1
- package/node_modules/three/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +3 -3
- package/node_modules/three/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +3 -3
- package/node_modules/three/src/renderers/shaders/ShaderChunk/lights_pars_begin.glsl.js +8 -22
- package/node_modules/three/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +6 -0
- package/node_modules/three/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +55 -20
- package/node_modules/three/src/renderers/shaders/ShaderChunk/logdepthbuf_fragment.glsl.js +2 -2
- package/node_modules/three/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_fragment.glsl.js +1 -1
- package/node_modules/three/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_vertex.glsl.js +3 -11
- package/node_modules/three/src/renderers/shaders/ShaderChunk/logdepthbuf_vertex.glsl.js +3 -17
- package/node_modules/three/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +3 -3
- package/node_modules/three/src/renderers/shaders/ShaderChunk/morphcolor_vertex.glsl.js +1 -1
- package/node_modules/three/src/renderers/shaders/ShaderChunk/morphinstance_vertex.glsl.js +14 -0
- package/node_modules/three/src/renderers/shaders/ShaderChunk/morphnormal_vertex.glsl.js +3 -14
- package/node_modules/three/src/renderers/shaders/ShaderChunk/morphtarget_pars_vertex.glsl.js +12 -24
- package/node_modules/three/src/renderers/shaders/ShaderChunk/morphtarget_vertex.glsl.js +3 -23
- package/node_modules/three/src/renderers/shaders/ShaderChunk/packing.glsl.js +45 -13
- package/node_modules/three/src/renderers/shaders/ShaderChunk/premultiplied_alpha_fragment.glsl.js +1 -1
- package/node_modules/three/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +59 -36
- package/node_modules/three/src/renderers/shaders/ShaderChunk/shadowmap_pars_vertex.glsl.js +3 -0
- package/node_modules/three/src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl.js +3 -3
- package/node_modules/three/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js +33 -2
- package/node_modules/three/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +1 -1
- package/node_modules/three/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +47 -13
- package/node_modules/three/src/renderers/shaders/ShaderChunk.js +2 -2
- package/node_modules/three/src/renderers/shaders/ShaderLib/background.glsl.js +1 -1
- package/node_modules/three/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +3 -2
- package/node_modules/three/src/renderers/shaders/ShaderLib/depth.glsl.js +21 -2
- package/node_modules/three/src/renderers/shaders/ShaderLib/distanceRGBA.glsl.js +2 -0
- package/node_modules/three/src/renderers/shaders/ShaderLib/linedashed.glsl.js +1 -0
- package/node_modules/three/src/renderers/shaders/ShaderLib/meshbasic.glsl.js +1 -0
- package/node_modules/three/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +1 -0
- package/node_modules/three/src/renderers/shaders/ShaderLib/meshmatcap.glsl.js +1 -0
- package/node_modules/three/src/renderers/shaders/ShaderLib/meshnormal.glsl.js +1 -0
- package/node_modules/three/src/renderers/shaders/ShaderLib/meshphong.glsl.js +1 -0
- package/node_modules/three/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +5 -0
- package/node_modules/three/src/renderers/shaders/ShaderLib/meshtoon.glsl.js +1 -0
- package/node_modules/three/src/renderers/shaders/ShaderLib/points.glsl.js +1 -0
- package/node_modules/three/src/renderers/shaders/ShaderLib/shadow.glsl.js +1 -0
- package/node_modules/three/src/renderers/shaders/ShaderLib/sprite.glsl.js +2 -4
- package/node_modules/three/src/renderers/shaders/ShaderLib.js +4 -2
- package/node_modules/three/src/renderers/shaders/UniformsLib.js +6 -4
- package/node_modules/three/src/renderers/shaders/UniformsUtils.js +31 -3
- package/node_modules/three/src/renderers/webgl/WebGLAttributes.js +46 -38
- package/node_modules/three/src/renderers/webgl/WebGLBackground.js +69 -5
- package/node_modules/three/src/renderers/webgl/WebGLBindingStates.js +14 -51
- package/node_modules/three/src/renderers/webgl/WebGLBufferRenderer.js +19 -22
- package/node_modules/three/src/renderers/webgl/WebGLCapabilities.js +39 -14
- package/node_modules/three/src/renderers/webgl/WebGLCubeUVMaps.js +10 -6
- package/node_modules/three/src/renderers/webgl/WebGLExtensions.js +8 -44
- package/node_modules/three/src/renderers/webgl/WebGLGeometries.js +0 -28
- package/node_modules/three/src/renderers/webgl/WebGLIndexedBufferRenderer.js +19 -21
- package/node_modules/three/src/renderers/webgl/WebGLInfo.js +3 -1
- package/node_modules/three/src/renderers/webgl/WebGLLights.js +21 -44
- package/node_modules/three/src/renderers/webgl/WebGLMaterials.js +33 -9
- package/node_modules/three/src/renderers/webgl/WebGLMorphtargets.js +78 -210
- package/node_modules/three/src/renderers/webgl/WebGLProgram.js +103 -121
- package/node_modules/three/src/renderers/webgl/WebGLPrograms.js +32 -26
- package/node_modules/three/src/renderers/webgl/WebGLProperties.js +7 -0
- package/node_modules/three/src/renderers/webgl/WebGLRenderStates.js +15 -9
- package/node_modules/three/src/renderers/webgl/WebGLShadowMap.js +41 -29
- package/node_modules/three/src/renderers/webgl/WebGLState.js +104 -100
- package/node_modules/three/src/renderers/webgl/WebGLTextures.js +567 -408
- package/node_modules/three/src/renderers/webgl/WebGLUniforms.js +12 -2
- package/node_modules/three/src/renderers/webgl/WebGLUniformsGroups.js +13 -11
- package/node_modules/three/src/renderers/webgl/WebGLUtils.js +11 -81
- package/node_modules/three/src/renderers/webgl-fallback/WebGLBackend.js +2612 -0
- package/node_modules/three/src/renderers/webgl-fallback/WebGLBufferRenderer.js +140 -0
- package/node_modules/three/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +1577 -0
- package/node_modules/three/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLAttributeUtils.js +76 -3
- package/node_modules/three/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +64 -0
- package/node_modules/three/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLConstants.js +5 -3
- package/node_modules/three/src/renderers/webgl-fallback/utils/WebGLExtensions.js +83 -0
- package/node_modules/three/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLState.js +427 -21
- package/node_modules/three/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +1309 -0
- package/node_modules/three/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +396 -0
- package/node_modules/three/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLUtils.js +72 -43
- package/node_modules/three/src/renderers/webgpu/WebGPUBackend.js +2482 -0
- package/node_modules/three/src/renderers/webgpu/WebGPURenderer.Nodes.js +69 -0
- package/node_modules/three/src/renderers/webgpu/WebGPURenderer.js +106 -0
- package/node_modules/three/src/renderers/webgpu/nodes/BasicNodeLibrary.js +66 -0
- package/node_modules/three/src/renderers/webgpu/nodes/StandardNodeLibrary.js +100 -0
- package/node_modules/three/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +2247 -0
- package/node_modules/three/src/renderers/webgpu/nodes/WGSLNodeFunction.js +187 -0
- package/node_modules/three/{examples/jsm → src}/renderers/webgpu/nodes/WGSLNodeParser.js +11 -0
- package/node_modules/three/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +449 -0
- package/node_modules/three/src/renderers/webgpu/utils/WebGPUBindingUtils.js +485 -0
- package/node_modules/three/{examples/jsm → src}/renderers/webgpu/utils/WebGPUConstants.js +24 -4
- package/node_modules/three/{examples/jsm → src}/renderers/webgpu/utils/WebGPUPipelineUtils.js +289 -72
- package/node_modules/three/{examples/jsm → src}/renderers/webgpu/utils/WebGPUTexturePassUtils.js +160 -8
- package/node_modules/three/src/renderers/webgpu/utils/WebGPUTextureUtils.js +1576 -0
- package/node_modules/three/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +310 -0
- package/node_modules/three/src/renderers/webgpu/utils/WebGPUUtils.js +247 -0
- package/node_modules/three/src/renderers/webxr/WebXRController.js +87 -2
- package/node_modules/three/src/renderers/webxr/WebXRDepthSensing.js +63 -13
- package/node_modules/three/src/renderers/webxr/WebXRManager.js +323 -44
- package/node_modules/three/src/scenes/Fog.js +60 -0
- package/node_modules/three/src/scenes/FogExp2.js +51 -0
- package/node_modules/three/src/scenes/Scene.js +103 -1
- package/node_modules/three/src/textures/CanvasTexture.js +28 -0
- package/node_modules/three/src/textures/CompressedArrayTexture.js +71 -0
- package/node_modules/three/src/textures/CompressedCubeTexture.js +29 -0
- package/node_modules/three/src/textures/CompressedTexture.js +64 -6
- package/node_modules/three/src/textures/CubeTexture.js +52 -4
- package/node_modules/three/src/textures/Data3DTexture.js +79 -2
- package/node_modules/three/src/textures/DataArrayTexture.js +107 -0
- package/node_modules/three/src/textures/DataTexture.js +65 -0
- package/node_modules/three/src/textures/DepthTexture.js +59 -13
- package/node_modules/three/src/textures/ExternalTexture.js +56 -0
- package/node_modules/three/src/textures/FramebufferTexture.js +62 -0
- package/node_modules/three/src/textures/Source.js +106 -4
- package/node_modules/three/src/textures/Texture.js +490 -27
- package/node_modules/three/src/textures/VideoFrameTexture.js +72 -0
- package/node_modules/three/src/textures/VideoTexture.js +78 -6
- package/node_modules/three/src/utils.js +128 -3
- package/package.json +3 -2
- package/node_modules/three/examples/jsm/animation/MMDAnimationHelper.js +0 -1207
- package/node_modules/three/examples/jsm/animation/MMDPhysics.js +0 -1406
- package/node_modules/three/examples/jsm/cameras/CinematicCamera.js +0 -208
- package/node_modules/three/examples/jsm/effects/PeppersGhostEffect.js +0 -153
- package/node_modules/three/examples/jsm/exporters/MMDExporter.js +0 -217
- package/node_modules/three/examples/jsm/geometries/InstancedPointsGeometry.js +0 -174
- package/node_modules/three/examples/jsm/geometries/ParametricGeometries.js +0 -254
- package/node_modules/three/examples/jsm/geometries/SDFGeometryGenerator.js +0 -144
- package/node_modules/three/examples/jsm/libs/mmdparser.module.js +0 -11530
- package/node_modules/three/examples/jsm/lights/IESSpotLight.js +0 -25
- package/node_modules/three/examples/jsm/loaders/LogLuvLoader.js +0 -606
- package/node_modules/three/examples/jsm/loaders/MMDLoader.js +0 -2276
- package/node_modules/three/examples/jsm/loaders/RGBMLoader.js +0 -1065
- package/node_modules/three/examples/jsm/loaders/TiltLoader.js +0 -520
- package/node_modules/three/examples/jsm/misc/Timer.js +0 -128
- package/node_modules/three/examples/jsm/nodes/Nodes.js +0 -193
- package/node_modules/three/examples/jsm/nodes/accessors/BitangentNode.js +0 -89
- package/node_modules/three/examples/jsm/nodes/accessors/BufferAttributeNode.js +0 -127
- package/node_modules/three/examples/jsm/nodes/accessors/BufferNode.js +0 -30
- package/node_modules/three/examples/jsm/nodes/accessors/CameraNode.js +0 -119
- package/node_modules/three/examples/jsm/nodes/accessors/CubeTextureNode.js +0 -61
- package/node_modules/three/examples/jsm/nodes/accessors/InstanceNode.js +0 -71
- package/node_modules/three/examples/jsm/nodes/accessors/InstancedPointsMaterialNode.js +0 -21
- package/node_modules/three/examples/jsm/nodes/accessors/MaterialNode.js +0 -314
- package/node_modules/three/examples/jsm/nodes/accessors/MaterialReferenceNode.js +0 -51
- package/node_modules/three/examples/jsm/nodes/accessors/ModelNode.js +0 -33
- package/node_modules/three/examples/jsm/nodes/accessors/ModelViewProjectionNode.js +0 -39
- package/node_modules/three/examples/jsm/nodes/accessors/NormalNode.js +0 -96
- package/node_modules/three/examples/jsm/nodes/accessors/Object3DNode.js +0 -150
- package/node_modules/three/examples/jsm/nodes/accessors/PointUVNode.js +0 -26
- package/node_modules/three/examples/jsm/nodes/accessors/PositionNode.js +0 -104
- package/node_modules/three/examples/jsm/nodes/accessors/ReferenceNode.js +0 -102
- package/node_modules/three/examples/jsm/nodes/accessors/ReflectVectorNode.js +0 -35
- package/node_modules/three/examples/jsm/nodes/accessors/SceneNode.js +0 -52
- package/node_modules/three/examples/jsm/nodes/accessors/SkinningNode.js +0 -103
- package/node_modules/three/examples/jsm/nodes/accessors/StorageBufferNode.js +0 -54
- package/node_modules/three/examples/jsm/nodes/accessors/TangentNode.js +0 -103
- package/node_modules/three/examples/jsm/nodes/accessors/TextureNode.js +0 -367
- package/node_modules/three/examples/jsm/nodes/accessors/TextureSizeNode.js +0 -35
- package/node_modules/three/examples/jsm/nodes/accessors/TextureStoreNode.js +0 -82
- package/node_modules/three/examples/jsm/nodes/accessors/UVNode.js +0 -47
- package/node_modules/three/examples/jsm/nodes/accessors/UserDataNode.js +0 -29
- package/node_modules/three/examples/jsm/nodes/accessors/VertexColorNode.js +0 -70
- package/node_modules/three/examples/jsm/nodes/code/CodeNode.js +0 -78
- package/node_modules/three/examples/jsm/nodes/code/ExpressionNode.js +0 -37
- package/node_modules/three/examples/jsm/nodes/code/FunctionCallNode.js +0 -96
- package/node_modules/three/examples/jsm/nodes/code/FunctionNode.js +0 -138
- package/node_modules/three/examples/jsm/nodes/core/ArrayUniformNode.js +0 -26
- package/node_modules/three/examples/jsm/nodes/core/AssignNode.js +0 -72
- package/node_modules/three/examples/jsm/nodes/core/AttributeNode.js +0 -108
- package/node_modules/three/examples/jsm/nodes/core/BypassNode.js +0 -45
- package/node_modules/three/examples/jsm/nodes/core/CacheNode.js +0 -49
- package/node_modules/three/examples/jsm/nodes/core/ConstNode.js +0 -32
- package/node_modules/three/examples/jsm/nodes/core/ContextNode.js +0 -61
- package/node_modules/three/examples/jsm/nodes/core/IndexNode.js +0 -66
- package/node_modules/three/examples/jsm/nodes/core/InputNode.js +0 -83
- package/node_modules/three/examples/jsm/nodes/core/LightingModel.js +0 -17
- package/node_modules/three/examples/jsm/nodes/core/Node.js +0 -483
- package/node_modules/three/examples/jsm/nodes/core/NodeAttribute.js +0 -15
- package/node_modules/three/examples/jsm/nodes/core/NodeBuilder.js +0 -1256
- package/node_modules/three/examples/jsm/nodes/core/NodeCache.js +0 -26
- package/node_modules/three/examples/jsm/nodes/core/NodeCode.js +0 -15
- package/node_modules/three/examples/jsm/nodes/core/NodeFrame.js +0 -143
- package/node_modules/three/examples/jsm/nodes/core/NodeFunction.js +0 -22
- package/node_modules/three/examples/jsm/nodes/core/NodeFunctionInput.js +0 -17
- package/node_modules/three/examples/jsm/nodes/core/NodeKeywords.js +0 -80
- package/node_modules/three/examples/jsm/nodes/core/NodeParser.js +0 -11
- package/node_modules/three/examples/jsm/nodes/core/NodeUniform.js +0 -40
- package/node_modules/three/examples/jsm/nodes/core/NodeUtils.js +0 -210
- package/node_modules/three/examples/jsm/nodes/core/NodeVar.js +0 -14
- package/node_modules/three/examples/jsm/nodes/core/NodeVarying.js +0 -17
- package/node_modules/three/examples/jsm/nodes/core/OutputStructNode.js +0 -62
- package/node_modules/three/examples/jsm/nodes/core/ParameterNode.js +0 -33
- package/node_modules/three/examples/jsm/nodes/core/PropertyNode.js +0 -72
- package/node_modules/three/examples/jsm/nodes/core/StackNode.js +0 -89
- package/node_modules/three/examples/jsm/nodes/core/StructTypeNode.js +0 -24
- package/node_modules/three/examples/jsm/nodes/core/TempNode.js +0 -58
- package/node_modules/three/examples/jsm/nodes/core/UniformGroup.js +0 -13
- package/node_modules/three/examples/jsm/nodes/core/UniformGroupNode.js +0 -36
- package/node_modules/three/examples/jsm/nodes/core/UniformNode.js +0 -80
- package/node_modules/three/examples/jsm/nodes/core/VarNode.js +0 -60
- package/node_modules/three/examples/jsm/nodes/core/VaryingNode.js +0 -65
- package/node_modules/three/examples/jsm/nodes/core/constants.js +0 -28
- package/node_modules/three/examples/jsm/nodes/display/AfterImageNode.js +0 -148
- package/node_modules/three/examples/jsm/nodes/display/AnamorphicNode.js +0 -148
- package/node_modules/three/examples/jsm/nodes/display/BlendModeNode.js +0 -99
- package/node_modules/three/examples/jsm/nodes/display/BumpMapNode.js +0 -99
- package/node_modules/three/examples/jsm/nodes/display/ColorAdjustmentNode.js +0 -99
- package/node_modules/three/examples/jsm/nodes/display/ColorSpaceNode.js +0 -108
- package/node_modules/three/examples/jsm/nodes/display/FrontFacingNode.js +0 -27
- package/node_modules/three/examples/jsm/nodes/display/GaussianBlurNode.js +0 -190
- package/node_modules/three/examples/jsm/nodes/display/NormalMapNode.js +0 -108
- package/node_modules/three/examples/jsm/nodes/display/PassNode.js +0 -183
- package/node_modules/three/examples/jsm/nodes/display/PosterizeNode.js +0 -32
- package/node_modules/three/examples/jsm/nodes/display/ToneMappingNode.js +0 -184
- package/node_modules/three/examples/jsm/nodes/display/ViewportDepthNode.js +0 -97
- package/node_modules/three/examples/jsm/nodes/display/ViewportDepthTextureNode.js +0 -31
- package/node_modules/three/examples/jsm/nodes/display/ViewportNode.js +0 -134
- package/node_modules/three/examples/jsm/nodes/display/ViewportSharedTextureNode.js +0 -31
- package/node_modules/three/examples/jsm/nodes/display/ViewportTextureNode.js +0 -75
- package/node_modules/three/examples/jsm/nodes/fog/FogExp2Node.js +0 -35
- package/node_modules/three/examples/jsm/nodes/fog/FogNode.js +0 -38
- package/node_modules/three/examples/jsm/nodes/fog/FogRangeNode.js +0 -34
- package/node_modules/three/examples/jsm/nodes/functions/BSDF/BRDF_GGX.js +0 -40
- package/node_modules/three/examples/jsm/nodes/functions/BSDF/DFGApprox.js +0 -30
- package/node_modules/three/examples/jsm/nodes/functions/PhongLightingModel.js +0 -67
- package/node_modules/three/examples/jsm/nodes/functions/PhysicalLightingModel.js +0 -393
- package/node_modules/three/examples/jsm/nodes/functions/material/getGeometryRoughness.js +0 -13
- package/node_modules/three/examples/jsm/nodes/geometry/RangeNode.js +0 -104
- package/node_modules/three/examples/jsm/nodes/gpgpu/ComputeNode.js +0 -85
- package/node_modules/three/examples/jsm/nodes/lighting/AONode.js +0 -27
- package/node_modules/three/examples/jsm/nodes/lighting/AnalyticLightNode.js +0 -241
- package/node_modules/three/examples/jsm/nodes/lighting/DirectionalLightNode.js +0 -40
- package/node_modules/three/examples/jsm/nodes/lighting/EnvironmentNode.js +0 -181
- package/node_modules/three/examples/jsm/nodes/lighting/HemisphereLightNode.js +0 -55
- package/node_modules/three/examples/jsm/nodes/lighting/LightNode.js +0 -57
- package/node_modules/three/examples/jsm/nodes/lighting/LightUtils.js +0 -17
- package/node_modules/three/examples/jsm/nodes/lighting/LightingContextNode.js +0 -66
- package/node_modules/three/examples/jsm/nodes/lighting/LightingNode.js +0 -21
- package/node_modules/three/examples/jsm/nodes/lighting/LightsNode.js +0 -188
- package/node_modules/three/examples/jsm/nodes/lighting/PointLightNode.js +0 -68
- package/node_modules/three/examples/jsm/nodes/lighting/SpotLightNode.js +0 -89
- package/node_modules/three/examples/jsm/nodes/loaders/NodeLoader.js +0 -108
- package/node_modules/three/examples/jsm/nodes/loaders/NodeMaterialLoader.js +0 -59
- package/node_modules/three/examples/jsm/nodes/loaders/NodeObjectLoader.js +0 -70
- package/node_modules/three/examples/jsm/nodes/materials/InstancedPointsNodeMaterial.js +0 -162
- package/node_modules/three/examples/jsm/nodes/materials/LineBasicNodeMaterial.js +0 -28
- package/node_modules/three/examples/jsm/nodes/materials/LineDashedNodeMaterial.js +0 -54
- package/node_modules/three/examples/jsm/nodes/materials/MeshBasicNodeMaterial.js +0 -28
- package/node_modules/three/examples/jsm/nodes/materials/MeshLambertNodeMaterial.js +0 -34
- package/node_modules/three/examples/jsm/nodes/materials/MeshNormalNodeMaterial.js +0 -40
- package/node_modules/three/examples/jsm/nodes/materials/MeshPhongNodeMaterial.js +0 -65
- package/node_modules/three/examples/jsm/nodes/materials/MeshPhysicalNodeMaterial.js +0 -155
- package/node_modules/three/examples/jsm/nodes/materials/MeshSSSNodeMaterial.js +0 -84
- package/node_modules/three/examples/jsm/nodes/materials/MeshStandardNodeMaterial.js +0 -80
- package/node_modules/three/examples/jsm/nodes/materials/NodeMaterial.js +0 -570
- package/node_modules/three/examples/jsm/nodes/materials/PointsNodeMaterial.js +0 -39
- package/node_modules/three/examples/jsm/nodes/materials/SpriteNodeMaterial.js +0 -90
- package/node_modules/three/examples/jsm/nodes/materialx/MaterialXNodes.js +0 -68
- package/node_modules/three/examples/jsm/nodes/math/CondNode.js +0 -86
- package/node_modules/three/examples/jsm/nodes/math/HashNode.js +0 -34
- package/node_modules/three/examples/jsm/nodes/math/MathNode.js +0 -371
- package/node_modules/three/examples/jsm/nodes/math/MathUtils.js +0 -15
- package/node_modules/three/examples/jsm/nodes/math/OperatorNode.js +0 -274
- package/node_modules/three/examples/jsm/nodes/procedural/CheckerNode.js +0 -42
- package/node_modules/three/examples/jsm/nodes/shadernode/ShaderNode.js +0 -634
- package/node_modules/three/examples/jsm/nodes/utils/ArrayElementNode.js +0 -41
- package/node_modules/three/examples/jsm/nodes/utils/ConvertNode.js +0 -65
- package/node_modules/three/examples/jsm/nodes/utils/DiscardNode.js +0 -27
- package/node_modules/three/examples/jsm/nodes/utils/EquirectUVNode.js +0 -33
- package/node_modules/three/examples/jsm/nodes/utils/FunctionOverloadingNode.js +0 -95
- package/node_modules/three/examples/jsm/nodes/utils/JoinNode.js +0 -61
- package/node_modules/three/examples/jsm/nodes/utils/LoopNode.js +0 -198
- package/node_modules/three/examples/jsm/nodes/utils/MatcapUVNode.js +0 -30
- package/node_modules/three/examples/jsm/nodes/utils/MaxMipLevelNode.js +0 -46
- package/node_modules/three/examples/jsm/nodes/utils/OscNode.js +0 -81
- package/node_modules/three/examples/jsm/nodes/utils/PackingNode.js +0 -55
- package/node_modules/three/examples/jsm/nodes/utils/ReflectorNode.js +0 -227
- package/node_modules/three/examples/jsm/nodes/utils/RemapNode.js +0 -42
- package/node_modules/three/examples/jsm/nodes/utils/RotateUVNode.js +0 -35
- package/node_modules/three/examples/jsm/nodes/utils/SpecularMIPLevelNode.js +0 -37
- package/node_modules/three/examples/jsm/nodes/utils/SpriteSheetUVNode.js +0 -41
- package/node_modules/three/examples/jsm/nodes/utils/TimerNode.js +0 -94
- package/node_modules/three/examples/jsm/nodes/utils/TriplanarTexturesNode.js +0 -62
- package/node_modules/three/examples/jsm/objects/InstancedPoints.js +0 -21
- package/node_modules/three/examples/jsm/objects/QuadMesh.js +0 -66
- package/node_modules/three/examples/jsm/renderers/common/Animation.js +0 -47
- package/node_modules/three/examples/jsm/renderers/common/Backend.js +0 -195
- package/node_modules/three/examples/jsm/renderers/common/Background.js +0 -134
- package/node_modules/three/examples/jsm/renderers/common/Binding.js +0 -25
- package/node_modules/three/examples/jsm/renderers/common/Bindings.js +0 -173
- package/node_modules/three/examples/jsm/renderers/common/Buffer.js +0 -38
- package/node_modules/three/examples/jsm/renderers/common/BufferUtils.js +0 -33
- package/node_modules/three/examples/jsm/renderers/common/ChainMap.js +0 -89
- package/node_modules/three/examples/jsm/renderers/common/Color4.js +0 -37
- package/node_modules/three/examples/jsm/renderers/common/ComputePipeline.js +0 -17
- package/node_modules/three/examples/jsm/renderers/common/DataMap.js +0 -54
- package/node_modules/three/examples/jsm/renderers/common/Geometries.js +0 -215
- package/node_modules/three/examples/jsm/renderers/common/Info.js +0 -107
- package/node_modules/three/examples/jsm/renderers/common/Pipeline.js +0 -13
- package/node_modules/three/examples/jsm/renderers/common/PostProcessing.js +0 -25
- package/node_modules/three/examples/jsm/renderers/common/ProgrammableStage.js +0 -20
- package/node_modules/three/examples/jsm/renderers/common/RenderContext.js +0 -41
- package/node_modules/three/examples/jsm/renderers/common/RenderContexts.js +0 -74
- package/node_modules/three/examples/jsm/renderers/common/RenderList.js +0 -186
- package/node_modules/three/examples/jsm/renderers/common/RenderLists.js +0 -38
- package/node_modules/three/examples/jsm/renderers/common/RenderObject.js +0 -178
- package/node_modules/three/examples/jsm/renderers/common/RenderObjects.js +0 -91
- package/node_modules/three/examples/jsm/renderers/common/RenderPipeline.js +0 -16
- package/node_modules/three/examples/jsm/renderers/common/Renderer.js +0 -1247
- package/node_modules/three/examples/jsm/renderers/common/SampledTexture.js +0 -83
- package/node_modules/three/examples/jsm/renderers/common/Sampler.js +0 -18
- package/node_modules/three/examples/jsm/renderers/common/StorageBuffer.js +0 -17
- package/node_modules/three/examples/jsm/renderers/common/StorageBufferAttribute.js +0 -17
- package/node_modules/three/examples/jsm/renderers/common/StorageTexture.js +0 -20
- package/node_modules/three/examples/jsm/renderers/common/Textures.js +0 -354
- package/node_modules/three/examples/jsm/renderers/common/Uniform.js +0 -140
- package/node_modules/three/examples/jsm/renderers/common/UniformBuffer.js +0 -15
- package/node_modules/three/examples/jsm/renderers/common/UniformsGroup.js +0 -299
- package/node_modules/three/examples/jsm/renderers/common/nodes/NodeBuilderState.js +0 -44
- package/node_modules/three/examples/jsm/renderers/common/nodes/NodeSampledTexture.js +0 -49
- package/node_modules/three/examples/jsm/renderers/common/nodes/NodeSampler.js +0 -15
- package/node_modules/three/examples/jsm/renderers/common/nodes/NodeUniform.js +0 -135
- package/node_modules/three/examples/jsm/renderers/common/nodes/NodeUniformsGroup.js +0 -44
- package/node_modules/three/examples/jsm/renderers/common/nodes/Nodes.js +0 -495
- package/node_modules/three/examples/jsm/renderers/webgl/WebGLBackend.js +0 -1362
- package/node_modules/three/examples/jsm/renderers/webgl/nodes/GLSLNodeBuilder.js +0 -679
- package/node_modules/three/examples/jsm/renderers/webgl/utils/WebGLCapabilities.js +0 -36
- package/node_modules/three/examples/jsm/renderers/webgl/utils/WebGLExtensions.js +0 -36
- package/node_modules/three/examples/jsm/renderers/webgl/utils/WebGLTextureUtils.js +0 -647
- package/node_modules/three/examples/jsm/renderers/webgl-legacy/nodes/GLSL1NodeBuilder.js +0 -320
- package/node_modules/three/examples/jsm/renderers/webgl-legacy/nodes/SlotNode.js +0 -26
- package/node_modules/three/examples/jsm/renderers/webgl-legacy/nodes/WebGLNodeBuilder.js +0 -794
- package/node_modules/three/examples/jsm/renderers/webgl-legacy/nodes/WebGLNodes.js +0 -51
- package/node_modules/three/examples/jsm/renderers/webgpu/WebGPUBackend.js +0 -1321
- package/node_modules/three/examples/jsm/renderers/webgpu/WebGPURenderer.js +0 -53
- package/node_modules/three/examples/jsm/renderers/webgpu/nodes/WGSLNodeBuilder.js +0 -1103
- package/node_modules/three/examples/jsm/renderers/webgpu/nodes/WGSLNodeFunction.js +0 -104
- package/node_modules/three/examples/jsm/renderers/webgpu/utils/WebGPUAttributeUtils.js +0 -287
- package/node_modules/three/examples/jsm/renderers/webgpu/utils/WebGPUBindingUtils.js +0 -244
- package/node_modules/three/examples/jsm/renderers/webgpu/utils/WebGPUTextureUtils.js +0 -1040
- package/node_modules/three/examples/jsm/renderers/webgpu/utils/WebGPUUtils.js +0 -93
- package/node_modules/three/examples/jsm/shaders/MMDToonShader.js +0 -134
- package/node_modules/three/examples/jsm/utils/GPUStatsPanel.js +0 -128
- package/node_modules/three/examples/jsm/utils/PackedPhongMaterial.js +0 -178
- package/node_modules/three/src/renderers/WebGL1Renderer.js +0 -7
- package/node_modules/three/src/renderers/WebGLMultipleRenderTargets.js +0 -82
- package/node_modules/three/src/renderers/shaders/ShaderChunk/lightmap_fragment.glsl.js +0 -10
- /package/node_modules/three/{examples/jsm → src}/nodes/materialx/DISCLAIMER.md +0 -0
|
@@ -3,16 +3,12 @@ import {
|
|
|
3
3
|
BackSide,
|
|
4
4
|
FrontSide,
|
|
5
5
|
DoubleSide,
|
|
6
|
-
RGBAFormat,
|
|
7
6
|
HalfFloatType,
|
|
8
|
-
FloatType,
|
|
9
7
|
UnsignedByteType,
|
|
10
8
|
NoToneMapping,
|
|
11
9
|
LinearMipmapLinearFilter,
|
|
12
10
|
SRGBColorSpace,
|
|
13
11
|
LinearSRGBColorSpace,
|
|
14
|
-
sRGBEncoding,
|
|
15
|
-
LinearEncoding,
|
|
16
12
|
RGBAIntegerFormat,
|
|
17
13
|
RGIntegerFormat,
|
|
18
14
|
RedIntegerFormat,
|
|
@@ -21,17 +17,13 @@ import {
|
|
|
21
17
|
UnsignedInt248Type,
|
|
22
18
|
UnsignedShort4444Type,
|
|
23
19
|
UnsignedShort5551Type,
|
|
24
|
-
WebGLCoordinateSystem
|
|
25
|
-
DisplayP3ColorSpace,
|
|
26
|
-
LinearDisplayP3ColorSpace
|
|
20
|
+
WebGLCoordinateSystem
|
|
27
21
|
} from '../constants.js';
|
|
28
22
|
import { Color } from '../math/Color.js';
|
|
29
23
|
import { Frustum } from '../math/Frustum.js';
|
|
30
24
|
import { Matrix4 } from '../math/Matrix4.js';
|
|
31
|
-
import { Vector2 } from '../math/Vector2.js';
|
|
32
25
|
import { Vector3 } from '../math/Vector3.js';
|
|
33
26
|
import { Vector4 } from '../math/Vector4.js';
|
|
34
|
-
import { floorPowerOfTwo } from '../math/MathUtils.js';
|
|
35
27
|
import { WebGLAnimation } from './webgl/WebGLAnimation.js';
|
|
36
28
|
import { WebGLAttributes } from './webgl/WebGLAttributes.js';
|
|
37
29
|
import { WebGLBackground } from './webgl/WebGLBackground.js';
|
|
@@ -60,32 +52,57 @@ import { WebGLUtils } from './webgl/WebGLUtils.js';
|
|
|
60
52
|
import { WebXRManager } from './webxr/WebXRManager.js';
|
|
61
53
|
import { WebGLMaterials } from './webgl/WebGLMaterials.js';
|
|
62
54
|
import { WebGLUniformsGroups } from './webgl/WebGLUniformsGroups.js';
|
|
63
|
-
import { createCanvasElement } from '../utils.js';
|
|
55
|
+
import { createCanvasElement, probeAsync, warnOnce, error, warn, log } from '../utils.js';
|
|
64
56
|
import { ColorManagement } from '../math/ColorManagement.js';
|
|
57
|
+
import { getDFGLUT } from './shaders/DFGLUTData.js';
|
|
65
58
|
|
|
59
|
+
/**
|
|
60
|
+
* This renderer uses WebGL 2 to display scenes.
|
|
61
|
+
*
|
|
62
|
+
* WebGL 1 is not supported since `r163`.
|
|
63
|
+
*/
|
|
66
64
|
class WebGLRenderer {
|
|
67
65
|
|
|
66
|
+
/**
|
|
67
|
+
* Constructs a new WebGL renderer.
|
|
68
|
+
*
|
|
69
|
+
* @param {WebGLRenderer~Options} [parameters] - The configuration parameter.
|
|
70
|
+
*/
|
|
68
71
|
constructor( parameters = {} ) {
|
|
69
72
|
|
|
70
73
|
const {
|
|
71
74
|
canvas = createCanvasElement(),
|
|
72
75
|
context = null,
|
|
73
76
|
depth = true,
|
|
74
|
-
stencil =
|
|
77
|
+
stencil = false,
|
|
75
78
|
alpha = false,
|
|
76
79
|
antialias = false,
|
|
77
80
|
premultipliedAlpha = true,
|
|
78
81
|
preserveDrawingBuffer = false,
|
|
79
82
|
powerPreference = 'default',
|
|
80
83
|
failIfMajorPerformanceCaveat = false,
|
|
84
|
+
reversedDepthBuffer = false,
|
|
81
85
|
} = parameters;
|
|
82
86
|
|
|
87
|
+
/**
|
|
88
|
+
* This flag can be used for type testing.
|
|
89
|
+
*
|
|
90
|
+
* @type {boolean}
|
|
91
|
+
* @readonly
|
|
92
|
+
* @default true
|
|
93
|
+
*/
|
|
83
94
|
this.isWebGLRenderer = true;
|
|
84
95
|
|
|
85
96
|
let _alpha;
|
|
86
97
|
|
|
87
98
|
if ( context !== null ) {
|
|
88
99
|
|
|
100
|
+
if ( typeof WebGLRenderingContext !== 'undefined' && context instanceof WebGLRenderingContext ) {
|
|
101
|
+
|
|
102
|
+
throw new Error( 'THREE.WebGLRenderer: WebGL 1 is not supported since r163.' );
|
|
103
|
+
|
|
104
|
+
}
|
|
105
|
+
|
|
89
106
|
_alpha = context.getContextAttributes().alpha;
|
|
90
107
|
|
|
91
108
|
} else {
|
|
@@ -94,6 +111,21 @@ class WebGLRenderer {
|
|
|
94
111
|
|
|
95
112
|
}
|
|
96
113
|
|
|
114
|
+
const INTEGER_FORMATS = new Set( [
|
|
115
|
+
RGBAIntegerFormat,
|
|
116
|
+
RGIntegerFormat,
|
|
117
|
+
RedIntegerFormat
|
|
118
|
+
] );
|
|
119
|
+
|
|
120
|
+
const UNSIGNED_TYPES = new Set( [
|
|
121
|
+
UnsignedByteType,
|
|
122
|
+
UnsignedIntType,
|
|
123
|
+
UnsignedShortType,
|
|
124
|
+
UnsignedInt248Type,
|
|
125
|
+
UnsignedShort4444Type,
|
|
126
|
+
UnsignedShort5551Type
|
|
127
|
+
] );
|
|
128
|
+
|
|
97
129
|
const uintClearColor = new Uint32Array( 4 );
|
|
98
130
|
const intClearColor = new Int32Array( 4 );
|
|
99
131
|
|
|
@@ -108,13 +140,36 @@ class WebGLRenderer {
|
|
|
108
140
|
|
|
109
141
|
// public properties
|
|
110
142
|
|
|
143
|
+
/**
|
|
144
|
+
* A canvas where the renderer draws its output.This is automatically created by the renderer
|
|
145
|
+
* in the constructor (if not provided already); you just need to add it to your page like so:
|
|
146
|
+
* ```js
|
|
147
|
+
* document.body.appendChild( renderer.domElement );
|
|
148
|
+
* ```
|
|
149
|
+
*
|
|
150
|
+
* @type {HTMLCanvasElement|OffscreenCanvas}
|
|
151
|
+
*/
|
|
111
152
|
this.domElement = canvas;
|
|
112
153
|
|
|
113
|
-
|
|
154
|
+
/**
|
|
155
|
+
* A object with debug configuration settings.
|
|
156
|
+
*
|
|
157
|
+
* - `checkShaderErrors`: If it is `true`, defines whether material shader programs are
|
|
158
|
+
* checked for errors during compilation and linkage process. It may be useful to disable
|
|
159
|
+
* this check in production for performance gain. It is strongly recommended to keep these
|
|
160
|
+
* checks enabled during development. If the shader does not compile and link - it will not
|
|
161
|
+
* work and associated material will not render.
|
|
162
|
+
* - `onShaderError(gl, program, glVertexShader,glFragmentShader)`: A callback function that
|
|
163
|
+
* can be used for custom error reporting. The callback receives the WebGL context, an instance
|
|
164
|
+
* of WebGLProgram as well two instances of WebGLShader representing the vertex and fragment shader.
|
|
165
|
+
* Assigning a custom function disables the default error reporting.
|
|
166
|
+
*
|
|
167
|
+
* @type {Object}
|
|
168
|
+
*/
|
|
114
169
|
this.debug = {
|
|
115
170
|
|
|
116
171
|
/**
|
|
117
|
-
* Enables error checking and reporting when shader programs are being compiled
|
|
172
|
+
* Enables error checking and reporting when shader programs are being compiled.
|
|
118
173
|
* @type {boolean}
|
|
119
174
|
*/
|
|
120
175
|
checkShaderErrors: true,
|
|
@@ -127,33 +182,105 @@ class WebGLRenderer {
|
|
|
127
182
|
|
|
128
183
|
// clearing
|
|
129
184
|
|
|
185
|
+
/**
|
|
186
|
+
* Whether the renderer should automatically clear its output before rendering a frame or not.
|
|
187
|
+
*
|
|
188
|
+
* @type {boolean}
|
|
189
|
+
* @default true
|
|
190
|
+
*/
|
|
130
191
|
this.autoClear = true;
|
|
192
|
+
|
|
193
|
+
/**
|
|
194
|
+
* If {@link WebGLRenderer#autoClear} set to `true`, whether the renderer should clear
|
|
195
|
+
* the color buffer or not.
|
|
196
|
+
*
|
|
197
|
+
* @type {boolean}
|
|
198
|
+
* @default true
|
|
199
|
+
*/
|
|
131
200
|
this.autoClearColor = true;
|
|
201
|
+
|
|
202
|
+
/**
|
|
203
|
+
* If {@link WebGLRenderer#autoClear} set to `true`, whether the renderer should clear
|
|
204
|
+
* the depth buffer or not.
|
|
205
|
+
*
|
|
206
|
+
* @type {boolean}
|
|
207
|
+
* @default true
|
|
208
|
+
*/
|
|
132
209
|
this.autoClearDepth = true;
|
|
210
|
+
|
|
211
|
+
/**
|
|
212
|
+
* If {@link WebGLRenderer#autoClear} set to `true`, whether the renderer should clear
|
|
213
|
+
* the stencil buffer or not.
|
|
214
|
+
*
|
|
215
|
+
* @type {boolean}
|
|
216
|
+
* @default true
|
|
217
|
+
*/
|
|
133
218
|
this.autoClearStencil = true;
|
|
134
219
|
|
|
135
220
|
// scene graph
|
|
136
221
|
|
|
222
|
+
/**
|
|
223
|
+
* Whether the renderer should sort objects or not.
|
|
224
|
+
*
|
|
225
|
+
* Note: Sorting is used to attempt to properly render objects that have some
|
|
226
|
+
* degree of transparency. By definition, sorting objects may not work in all
|
|
227
|
+
* cases. Depending on the needs of application, it may be necessary to turn
|
|
228
|
+
* off sorting and use other methods to deal with transparency rendering e.g.
|
|
229
|
+
* manually determining each object's rendering order.
|
|
230
|
+
*
|
|
231
|
+
* @type {boolean}
|
|
232
|
+
* @default true
|
|
233
|
+
*/
|
|
137
234
|
this.sortObjects = true;
|
|
138
235
|
|
|
139
236
|
// user-defined clipping
|
|
140
237
|
|
|
238
|
+
/**
|
|
239
|
+
* User-defined clipping planes specified in world space. These planes apply globally.
|
|
240
|
+
* Points in space whose dot product with the plane is negative are cut away.
|
|
241
|
+
*
|
|
242
|
+
* @type {Array<Plane>}
|
|
243
|
+
*/
|
|
141
244
|
this.clippingPlanes = [];
|
|
142
|
-
this.localClippingEnabled = false;
|
|
143
|
-
|
|
144
|
-
// physically based shading
|
|
145
|
-
|
|
146
|
-
this._outputColorSpace = SRGBColorSpace;
|
|
147
|
-
|
|
148
|
-
// physical lights
|
|
149
245
|
|
|
150
|
-
|
|
246
|
+
/**
|
|
247
|
+
* Whether the renderer respects object-level clipping planes or not.
|
|
248
|
+
*
|
|
249
|
+
* @type {boolean}
|
|
250
|
+
* @default false
|
|
251
|
+
*/
|
|
252
|
+
this.localClippingEnabled = false;
|
|
151
253
|
|
|
152
254
|
// tone mapping
|
|
153
255
|
|
|
256
|
+
/**
|
|
257
|
+
* The tone mapping technique of the renderer.
|
|
258
|
+
*
|
|
259
|
+
* @type {(NoToneMapping|LinearToneMapping|ReinhardToneMapping|CineonToneMapping|ACESFilmicToneMapping|CustomToneMapping|AgXToneMapping|NeutralToneMapping)}
|
|
260
|
+
* @default NoToneMapping
|
|
261
|
+
*/
|
|
154
262
|
this.toneMapping = NoToneMapping;
|
|
263
|
+
|
|
264
|
+
/**
|
|
265
|
+
* Exposure level of tone mapping.
|
|
266
|
+
*
|
|
267
|
+
* @type {number}
|
|
268
|
+
* @default 1
|
|
269
|
+
*/
|
|
155
270
|
this.toneMappingExposure = 1.0;
|
|
156
271
|
|
|
272
|
+
// transmission
|
|
273
|
+
|
|
274
|
+
/**
|
|
275
|
+
* The normalized resolution scale for the transmission render target, measured in percentage
|
|
276
|
+
* of viewport dimensions. Lowering this value can result in significant performance improvements
|
|
277
|
+
* when using {@link MeshPhysicalMaterial#transmission}.
|
|
278
|
+
*
|
|
279
|
+
* @type {number}
|
|
280
|
+
* @default 1
|
|
281
|
+
*/
|
|
282
|
+
this.transmissionResolutionScale = 1.0;
|
|
283
|
+
|
|
157
284
|
// internal properties
|
|
158
285
|
|
|
159
286
|
const _this = this;
|
|
@@ -162,6 +289,8 @@ class WebGLRenderer {
|
|
|
162
289
|
|
|
163
290
|
// internal state cache
|
|
164
291
|
|
|
292
|
+
this._outputColorSpace = SRGBColorSpace;
|
|
293
|
+
|
|
165
294
|
let _currentActiveCubeFace = 0;
|
|
166
295
|
let _currentActiveMipmapLevel = 0;
|
|
167
296
|
let _currentRenderTarget = null;
|
|
@@ -198,19 +327,18 @@ class WebGLRenderer {
|
|
|
198
327
|
let _clippingEnabled = false;
|
|
199
328
|
let _localClippingEnabled = false;
|
|
200
329
|
|
|
201
|
-
// transmission
|
|
202
|
-
|
|
203
|
-
let _transmissionRenderTarget = null;
|
|
204
|
-
|
|
205
330
|
// camera matrices cache
|
|
206
331
|
|
|
207
332
|
const _projScreenMatrix = new Matrix4();
|
|
208
333
|
|
|
209
|
-
const _vector2 = new Vector2();
|
|
210
334
|
const _vector3 = new Vector3();
|
|
211
335
|
|
|
336
|
+
const _vector4 = new Vector4();
|
|
337
|
+
|
|
212
338
|
const _emptyScene = { background: null, fog: null, environment: null, overrideMaterial: null, isScene: true };
|
|
213
339
|
|
|
340
|
+
let _renderBackground = false;
|
|
341
|
+
|
|
214
342
|
function getTargetPixelRatio() {
|
|
215
343
|
|
|
216
344
|
return _currentRenderTarget === null ? _pixelRatio : 1;
|
|
@@ -221,17 +349,9 @@ class WebGLRenderer {
|
|
|
221
349
|
|
|
222
350
|
let _gl = context;
|
|
223
351
|
|
|
224
|
-
function getContext(
|
|
352
|
+
function getContext( contextName, contextAttributes ) {
|
|
225
353
|
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
const contextName = contextNames[ i ];
|
|
229
|
-
const context = canvas.getContext( contextName, contextAttributes );
|
|
230
|
-
if ( context !== null ) return context;
|
|
231
|
-
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
return null;
|
|
354
|
+
return canvas.getContext( contextName, contextAttributes );
|
|
235
355
|
|
|
236
356
|
}
|
|
237
357
|
|
|
@@ -258,19 +378,13 @@ class WebGLRenderer {
|
|
|
258
378
|
|
|
259
379
|
if ( _gl === null ) {
|
|
260
380
|
|
|
261
|
-
const
|
|
262
|
-
|
|
263
|
-
if ( _this.isWebGL1Renderer === true ) {
|
|
264
|
-
|
|
265
|
-
contextNames.shift();
|
|
381
|
+
const contextName = 'webgl2';
|
|
266
382
|
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
_gl = getContext( contextNames, contextAttributes );
|
|
383
|
+
_gl = getContext( contextName, contextAttributes );
|
|
270
384
|
|
|
271
385
|
if ( _gl === null ) {
|
|
272
386
|
|
|
273
|
-
if ( getContext(
|
|
387
|
+
if ( getContext( contextName ) ) {
|
|
274
388
|
|
|
275
389
|
throw new Error( 'Error creating WebGL context with your selected attributes.' );
|
|
276
390
|
|
|
@@ -284,27 +398,9 @@ class WebGLRenderer {
|
|
|
284
398
|
|
|
285
399
|
}
|
|
286
400
|
|
|
287
|
-
if ( typeof WebGLRenderingContext !== 'undefined' && _gl instanceof WebGLRenderingContext ) { // @deprecated, r153
|
|
288
|
-
|
|
289
|
-
console.warn( 'THREE.WebGLRenderer: WebGL 1 support was deprecated in r153 and will be removed in r163.' );
|
|
290
|
-
|
|
291
|
-
}
|
|
292
|
-
|
|
293
|
-
// Some experimental-webgl implementations do not have getShaderPrecisionFormat
|
|
294
|
-
|
|
295
|
-
if ( _gl.getShaderPrecisionFormat === undefined ) {
|
|
296
|
-
|
|
297
|
-
_gl.getShaderPrecisionFormat = function () {
|
|
298
|
-
|
|
299
|
-
return { 'rangeMin': 1, 'rangeMax': 1, 'precision': 1 };
|
|
300
|
-
|
|
301
|
-
};
|
|
302
|
-
|
|
303
|
-
}
|
|
304
|
-
|
|
305
401
|
} catch ( error ) {
|
|
306
402
|
|
|
307
|
-
|
|
403
|
+
error( 'WebGLRenderer: ' + error.message );
|
|
308
404
|
throw error;
|
|
309
405
|
|
|
310
406
|
}
|
|
@@ -320,22 +416,27 @@ class WebGLRenderer {
|
|
|
320
416
|
function initGLContext() {
|
|
321
417
|
|
|
322
418
|
extensions = new WebGLExtensions( _gl );
|
|
419
|
+
extensions.init();
|
|
420
|
+
|
|
421
|
+
utils = new WebGLUtils( _gl, extensions );
|
|
422
|
+
|
|
423
|
+
capabilities = new WebGLCapabilities( _gl, extensions, parameters, utils );
|
|
323
424
|
|
|
324
|
-
|
|
425
|
+
state = new WebGLState( _gl, extensions );
|
|
325
426
|
|
|
326
|
-
|
|
427
|
+
if ( capabilities.reversedDepthBuffer && reversedDepthBuffer ) {
|
|
327
428
|
|
|
328
|
-
|
|
429
|
+
state.buffers.depth.setReversed( true );
|
|
329
430
|
|
|
330
|
-
|
|
431
|
+
}
|
|
331
432
|
|
|
332
433
|
info = new WebGLInfo( _gl );
|
|
333
434
|
properties = new WebGLProperties();
|
|
334
435
|
textures = new WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info );
|
|
335
436
|
cubemaps = new WebGLCubeMaps( _this );
|
|
336
437
|
cubeuvmaps = new WebGLCubeUVMaps( _this );
|
|
337
|
-
attributes = new WebGLAttributes( _gl
|
|
338
|
-
bindingStates = new WebGLBindingStates( _gl,
|
|
438
|
+
attributes = new WebGLAttributes( _gl );
|
|
439
|
+
bindingStates = new WebGLBindingStates( _gl, attributes );
|
|
339
440
|
geometries = new WebGLGeometries( _gl, attributes, info, bindingStates );
|
|
340
441
|
objects = new WebGLObjects( _gl, geometries, attributes, info );
|
|
341
442
|
morphtargets = new WebGLMorphtargets( _gl, capabilities, textures );
|
|
@@ -343,22 +444,89 @@ class WebGLRenderer {
|
|
|
343
444
|
programCache = new WebGLPrograms( _this, cubemaps, cubeuvmaps, extensions, capabilities, bindingStates, clipping );
|
|
344
445
|
materials = new WebGLMaterials( _this, properties );
|
|
345
446
|
renderLists = new WebGLRenderLists();
|
|
346
|
-
renderStates = new WebGLRenderStates( extensions
|
|
447
|
+
renderStates = new WebGLRenderStates( extensions );
|
|
347
448
|
background = new WebGLBackground( _this, cubemaps, cubeuvmaps, state, objects, _alpha, premultipliedAlpha );
|
|
348
449
|
shadowMap = new WebGLShadowMap( _this, objects, capabilities );
|
|
349
450
|
uniformsGroups = new WebGLUniformsGroups( _gl, info, capabilities, state );
|
|
350
451
|
|
|
351
|
-
bufferRenderer = new WebGLBufferRenderer( _gl, extensions, info
|
|
352
|
-
indexedBufferRenderer = new WebGLIndexedBufferRenderer( _gl, extensions, info
|
|
452
|
+
bufferRenderer = new WebGLBufferRenderer( _gl, extensions, info );
|
|
453
|
+
indexedBufferRenderer = new WebGLIndexedBufferRenderer( _gl, extensions, info );
|
|
353
454
|
|
|
354
455
|
info.programs = programCache.programs;
|
|
355
456
|
|
|
457
|
+
/**
|
|
458
|
+
* Holds details about the capabilities of the current rendering context.
|
|
459
|
+
*
|
|
460
|
+
* @name WebGLRenderer#capabilities
|
|
461
|
+
* @type {WebGLRenderer~Capabilities}
|
|
462
|
+
*/
|
|
356
463
|
_this.capabilities = capabilities;
|
|
464
|
+
|
|
465
|
+
/**
|
|
466
|
+
* Provides methods for retrieving and testing WebGL extensions.
|
|
467
|
+
*
|
|
468
|
+
* - `get(extensionName:string)`: Used to check whether a WebGL extension is supported
|
|
469
|
+
* and return the extension object if available.
|
|
470
|
+
* - `has(extensionName:string)`: returns `true` if the extension is supported.
|
|
471
|
+
*
|
|
472
|
+
* @name WebGLRenderer#extensions
|
|
473
|
+
* @type {Object}
|
|
474
|
+
*/
|
|
357
475
|
_this.extensions = extensions;
|
|
476
|
+
|
|
477
|
+
/**
|
|
478
|
+
* Used to track properties of other objects like native WebGL objects.
|
|
479
|
+
*
|
|
480
|
+
* @name WebGLRenderer#properties
|
|
481
|
+
* @type {Object}
|
|
482
|
+
*/
|
|
358
483
|
_this.properties = properties;
|
|
484
|
+
|
|
485
|
+
/**
|
|
486
|
+
* Manages the render lists of the renderer.
|
|
487
|
+
*
|
|
488
|
+
* @name WebGLRenderer#renderLists
|
|
489
|
+
* @type {Object}
|
|
490
|
+
*/
|
|
359
491
|
_this.renderLists = renderLists;
|
|
492
|
+
|
|
493
|
+
|
|
494
|
+
|
|
495
|
+
/**
|
|
496
|
+
* Interface for managing shadows.
|
|
497
|
+
*
|
|
498
|
+
* @name WebGLRenderer#shadowMap
|
|
499
|
+
* @type {WebGLRenderer~ShadowMap}
|
|
500
|
+
*/
|
|
360
501
|
_this.shadowMap = shadowMap;
|
|
502
|
+
|
|
503
|
+
/**
|
|
504
|
+
* Interface for managing the WebGL state.
|
|
505
|
+
*
|
|
506
|
+
* @name WebGLRenderer#state
|
|
507
|
+
* @type {Object}
|
|
508
|
+
*/
|
|
361
509
|
_this.state = state;
|
|
510
|
+
|
|
511
|
+
/**
|
|
512
|
+
* Holds a series of statistical information about the GPU memory
|
|
513
|
+
* and the rendering process. Useful for debugging and monitoring.
|
|
514
|
+
*
|
|
515
|
+
* By default these data are reset at each render call but when having
|
|
516
|
+
* multiple render passes per frame (e.g. when using post processing) it can
|
|
517
|
+
* be preferred to reset with a custom pattern. First, set `autoReset` to
|
|
518
|
+
* `false`.
|
|
519
|
+
* ```js
|
|
520
|
+
* renderer.info.autoReset = false;
|
|
521
|
+
* ```
|
|
522
|
+
* Call `reset()` whenever you have finished to render a single frame.
|
|
523
|
+
* ```js
|
|
524
|
+
* renderer.info.reset();
|
|
525
|
+
* ```
|
|
526
|
+
*
|
|
527
|
+
* @name WebGLRenderer#info
|
|
528
|
+
* @type {WebGLRenderer~Info}
|
|
529
|
+
*/
|
|
362
530
|
_this.info = info;
|
|
363
531
|
|
|
364
532
|
}
|
|
@@ -369,22 +537,38 @@ class WebGLRenderer {
|
|
|
369
537
|
|
|
370
538
|
const xr = new WebXRManager( _this, _gl );
|
|
371
539
|
|
|
540
|
+
/**
|
|
541
|
+
* A reference to the XR manager.
|
|
542
|
+
*
|
|
543
|
+
* @type {WebXRManager}
|
|
544
|
+
*/
|
|
372
545
|
this.xr = xr;
|
|
373
546
|
|
|
374
|
-
|
|
375
|
-
|
|
547
|
+
/**
|
|
548
|
+
* Returns the rendering context.
|
|
549
|
+
*
|
|
550
|
+
* @return {WebGL2RenderingContext} The rendering context.
|
|
551
|
+
*/
|
|
376
552
|
this.getContext = function () {
|
|
377
553
|
|
|
378
554
|
return _gl;
|
|
379
555
|
|
|
380
556
|
};
|
|
381
557
|
|
|
558
|
+
/**
|
|
559
|
+
* Returns the rendering context attributes.
|
|
560
|
+
*
|
|
561
|
+
* @return {WebGLContextAttributes} The rendering context attributes.
|
|
562
|
+
*/
|
|
382
563
|
this.getContextAttributes = function () {
|
|
383
564
|
|
|
384
565
|
return _gl.getContextAttributes();
|
|
385
566
|
|
|
386
567
|
};
|
|
387
568
|
|
|
569
|
+
/**
|
|
570
|
+
* Simulates a loss of the WebGL context. This requires support for the `WEBGL_lose_context` extension.
|
|
571
|
+
*/
|
|
388
572
|
this.forceContextLoss = function () {
|
|
389
573
|
|
|
390
574
|
const extension = extensions.get( 'WEBGL_lose_context' );
|
|
@@ -392,6 +576,9 @@ class WebGLRenderer {
|
|
|
392
576
|
|
|
393
577
|
};
|
|
394
578
|
|
|
579
|
+
/**
|
|
580
|
+
* Simulates a restore of the WebGL context. This requires support for the `WEBGL_lose_context` extension.
|
|
581
|
+
*/
|
|
395
582
|
this.forceContextRestore = function () {
|
|
396
583
|
|
|
397
584
|
const extension = extensions.get( 'WEBGL_lose_context' );
|
|
@@ -399,12 +586,22 @@ class WebGLRenderer {
|
|
|
399
586
|
|
|
400
587
|
};
|
|
401
588
|
|
|
589
|
+
/**
|
|
590
|
+
* Returns the pixel ratio.
|
|
591
|
+
*
|
|
592
|
+
* @return {number} The pixel ratio.
|
|
593
|
+
*/
|
|
402
594
|
this.getPixelRatio = function () {
|
|
403
595
|
|
|
404
596
|
return _pixelRatio;
|
|
405
597
|
|
|
406
598
|
};
|
|
407
599
|
|
|
600
|
+
/**
|
|
601
|
+
* Sets the given pixel ratio and resizes the canvas if necessary.
|
|
602
|
+
*
|
|
603
|
+
* @param {number} value - The pixel ratio.
|
|
604
|
+
*/
|
|
408
605
|
this.setPixelRatio = function ( value ) {
|
|
409
606
|
|
|
410
607
|
if ( value === undefined ) return;
|
|
@@ -415,17 +612,32 @@ class WebGLRenderer {
|
|
|
415
612
|
|
|
416
613
|
};
|
|
417
614
|
|
|
615
|
+
/**
|
|
616
|
+
* Returns the renderer's size in logical pixels. This method does not honor the pixel ratio.
|
|
617
|
+
*
|
|
618
|
+
* @param {Vector2} target - The method writes the result in this target object.
|
|
619
|
+
* @return {Vector2} The renderer's size in logical pixels.
|
|
620
|
+
*/
|
|
418
621
|
this.getSize = function ( target ) {
|
|
419
622
|
|
|
420
623
|
return target.set( _width, _height );
|
|
421
624
|
|
|
422
625
|
};
|
|
423
626
|
|
|
627
|
+
/**
|
|
628
|
+
* Resizes the output canvas to (width, height) with device pixel ratio taken
|
|
629
|
+
* into account, and also sets the viewport to fit that size, starting in (0,
|
|
630
|
+
* 0). Setting `updateStyle` to false prevents any style changes to the output canvas.
|
|
631
|
+
*
|
|
632
|
+
* @param {number} width - The width in logical pixels.
|
|
633
|
+
* @param {number} height - The height in logical pixels.
|
|
634
|
+
* @param {boolean} [updateStyle=true] - Whether to update the `style` attribute of the canvas or not.
|
|
635
|
+
*/
|
|
424
636
|
this.setSize = function ( width, height, updateStyle = true ) {
|
|
425
637
|
|
|
426
638
|
if ( xr.isPresenting ) {
|
|
427
639
|
|
|
428
|
-
|
|
640
|
+
warn( 'WebGLRenderer: Can\'t change size while VR device is presenting.' );
|
|
429
641
|
return;
|
|
430
642
|
|
|
431
643
|
}
|
|
@@ -447,12 +659,31 @@ class WebGLRenderer {
|
|
|
447
659
|
|
|
448
660
|
};
|
|
449
661
|
|
|
662
|
+
/**
|
|
663
|
+
* Returns the drawing buffer size in physical pixels. This method honors the pixel ratio.
|
|
664
|
+
*
|
|
665
|
+
* @param {Vector2} target - The method writes the result in this target object.
|
|
666
|
+
* @return {Vector2} The drawing buffer size.
|
|
667
|
+
*/
|
|
450
668
|
this.getDrawingBufferSize = function ( target ) {
|
|
451
669
|
|
|
452
670
|
return target.set( _width * _pixelRatio, _height * _pixelRatio ).floor();
|
|
453
671
|
|
|
454
672
|
};
|
|
455
673
|
|
|
674
|
+
/**
|
|
675
|
+
* This method allows to define the drawing buffer size by specifying
|
|
676
|
+
* width, height and pixel ratio all at once. The size of the drawing
|
|
677
|
+
* buffer is computed with this formula:
|
|
678
|
+
* ```js
|
|
679
|
+
* size.x = width * pixelRatio;
|
|
680
|
+
* size.y = height * pixelRatio;
|
|
681
|
+
* ```
|
|
682
|
+
*
|
|
683
|
+
* @param {number} width - The width in logical pixels.
|
|
684
|
+
* @param {number} height - The height in logical pixels.
|
|
685
|
+
* @param {number} pixelRatio - The pixel ratio.
|
|
686
|
+
*/
|
|
456
687
|
this.setDrawingBufferSize = function ( width, height, pixelRatio ) {
|
|
457
688
|
|
|
458
689
|
_width = width;
|
|
@@ -467,18 +698,39 @@ class WebGLRenderer {
|
|
|
467
698
|
|
|
468
699
|
};
|
|
469
700
|
|
|
701
|
+
/**
|
|
702
|
+
* Returns the current viewport definition.
|
|
703
|
+
*
|
|
704
|
+
* @param {Vector2} target - The method writes the result in this target object.
|
|
705
|
+
* @return {Vector2} The current viewport definition.
|
|
706
|
+
*/
|
|
470
707
|
this.getCurrentViewport = function ( target ) {
|
|
471
708
|
|
|
472
709
|
return target.copy( _currentViewport );
|
|
473
710
|
|
|
474
711
|
};
|
|
475
712
|
|
|
713
|
+
/**
|
|
714
|
+
* Returns the viewport definition.
|
|
715
|
+
*
|
|
716
|
+
* @param {Vector4} target - The method writes the result in this target object.
|
|
717
|
+
* @return {Vector4} The viewport definition.
|
|
718
|
+
*/
|
|
476
719
|
this.getViewport = function ( target ) {
|
|
477
720
|
|
|
478
721
|
return target.copy( _viewport );
|
|
479
722
|
|
|
480
723
|
};
|
|
481
724
|
|
|
725
|
+
/**
|
|
726
|
+
* Sets the viewport to render from `(x, y)` to `(x + width, y + height)`.
|
|
727
|
+
*
|
|
728
|
+
* @param {number | Vector4} x - The horizontal coordinate for the lower left corner of the viewport origin in logical pixel unit.
|
|
729
|
+
* Or alternatively a four-component vector specifying all the parameters of the viewport.
|
|
730
|
+
* @param {number} y - The vertical coordinate for the lower left corner of the viewport origin in logical pixel unit.
|
|
731
|
+
* @param {number} width - The width of the viewport in logical pixel unit.
|
|
732
|
+
* @param {number} height - The height of the viewport in logical pixel unit.
|
|
733
|
+
*/
|
|
482
734
|
this.setViewport = function ( x, y, width, height ) {
|
|
483
735
|
|
|
484
736
|
if ( x.isVector4 ) {
|
|
@@ -491,16 +743,31 @@ class WebGLRenderer {
|
|
|
491
743
|
|
|
492
744
|
}
|
|
493
745
|
|
|
494
|
-
state.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).
|
|
746
|
+
state.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).round() );
|
|
495
747
|
|
|
496
748
|
};
|
|
497
749
|
|
|
750
|
+
/**
|
|
751
|
+
* Returns the scissor region.
|
|
752
|
+
*
|
|
753
|
+
* @param {Vector4} target - The method writes the result in this target object.
|
|
754
|
+
* @return {Vector4} The scissor region.
|
|
755
|
+
*/
|
|
498
756
|
this.getScissor = function ( target ) {
|
|
499
757
|
|
|
500
758
|
return target.copy( _scissor );
|
|
501
759
|
|
|
502
760
|
};
|
|
503
761
|
|
|
762
|
+
/**
|
|
763
|
+
* Sets the scissor region to render from `(x, y)` to `(x + width, y + height)`.
|
|
764
|
+
*
|
|
765
|
+
* @param {number | Vector4} x - The horizontal coordinate for the lower left corner of the scissor region origin in logical pixel unit.
|
|
766
|
+
* Or alternatively a four-component vector specifying all the parameters of the scissor region.
|
|
767
|
+
* @param {number} y - The vertical coordinate for the lower left corner of the scissor region origin in logical pixel unit.
|
|
768
|
+
* @param {number} width - The width of the scissor region in logical pixel unit.
|
|
769
|
+
* @param {number} height - The height of the scissor region in logical pixel unit.
|
|
770
|
+
*/
|
|
504
771
|
this.setScissor = function ( x, y, width, height ) {
|
|
505
772
|
|
|
506
773
|
if ( x.isVector4 ) {
|
|
@@ -513,28 +780,52 @@ class WebGLRenderer {
|
|
|
513
780
|
|
|
514
781
|
}
|
|
515
782
|
|
|
516
|
-
state.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).
|
|
783
|
+
state.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).round() );
|
|
517
784
|
|
|
518
785
|
};
|
|
519
786
|
|
|
787
|
+
/**
|
|
788
|
+
* Returns `true` if the scissor test is enabled.
|
|
789
|
+
*
|
|
790
|
+
* @return {boolean} Whether the scissor test is enabled or not.
|
|
791
|
+
*/
|
|
520
792
|
this.getScissorTest = function () {
|
|
521
793
|
|
|
522
794
|
return _scissorTest;
|
|
523
795
|
|
|
524
796
|
};
|
|
525
797
|
|
|
798
|
+
/**
|
|
799
|
+
* Enable or disable the scissor test. When this is enabled, only the pixels
|
|
800
|
+
* within the defined scissor area will be affected by further renderer
|
|
801
|
+
* actions.
|
|
802
|
+
*
|
|
803
|
+
* @param {boolean} boolean - Whether the scissor test is enabled or not.
|
|
804
|
+
*/
|
|
526
805
|
this.setScissorTest = function ( boolean ) {
|
|
527
806
|
|
|
528
807
|
state.setScissorTest( _scissorTest = boolean );
|
|
529
808
|
|
|
530
809
|
};
|
|
531
810
|
|
|
811
|
+
/**
|
|
812
|
+
* Sets a custom opaque sort function for the render lists. Pass `null`
|
|
813
|
+
* to use the default `painterSortStable` function.
|
|
814
|
+
*
|
|
815
|
+
* @param {?Function} method - The opaque sort function.
|
|
816
|
+
*/
|
|
532
817
|
this.setOpaqueSort = function ( method ) {
|
|
533
818
|
|
|
534
819
|
_opaqueSort = method;
|
|
535
820
|
|
|
536
821
|
};
|
|
537
822
|
|
|
823
|
+
/**
|
|
824
|
+
* Sets a custom transparent sort function for the render lists. Pass `null`
|
|
825
|
+
* to use the default `reversePainterSortStable` function.
|
|
826
|
+
*
|
|
827
|
+
* @param {?Function} method - The opaque sort function.
|
|
828
|
+
*/
|
|
538
829
|
this.setTransparentSort = function ( method ) {
|
|
539
830
|
|
|
540
831
|
_transparentSort = method;
|
|
@@ -543,30 +834,60 @@ class WebGLRenderer {
|
|
|
543
834
|
|
|
544
835
|
// Clearing
|
|
545
836
|
|
|
837
|
+
/**
|
|
838
|
+
* Returns the clear color.
|
|
839
|
+
*
|
|
840
|
+
* @param {Color} target - The method writes the result in this target object.
|
|
841
|
+
* @return {Color} The clear color.
|
|
842
|
+
*/
|
|
546
843
|
this.getClearColor = function ( target ) {
|
|
547
844
|
|
|
548
845
|
return target.copy( background.getClearColor() );
|
|
549
846
|
|
|
550
847
|
};
|
|
551
848
|
|
|
849
|
+
/**
|
|
850
|
+
* Sets the clear color and alpha.
|
|
851
|
+
*
|
|
852
|
+
* @param {Color} color - The clear color.
|
|
853
|
+
* @param {number} [alpha=1] - The clear alpha.
|
|
854
|
+
*/
|
|
552
855
|
this.setClearColor = function () {
|
|
553
856
|
|
|
554
|
-
background.setClearColor
|
|
857
|
+
background.setClearColor( ...arguments );
|
|
555
858
|
|
|
556
859
|
};
|
|
557
860
|
|
|
861
|
+
/**
|
|
862
|
+
* Returns the clear alpha. Ranges within `[0,1]`.
|
|
863
|
+
*
|
|
864
|
+
* @return {number} The clear alpha.
|
|
865
|
+
*/
|
|
558
866
|
this.getClearAlpha = function () {
|
|
559
867
|
|
|
560
868
|
return background.getClearAlpha();
|
|
561
869
|
|
|
562
870
|
};
|
|
563
871
|
|
|
872
|
+
/**
|
|
873
|
+
* Sets the clear alpha.
|
|
874
|
+
*
|
|
875
|
+
* @param {number} alpha - The clear alpha.
|
|
876
|
+
*/
|
|
564
877
|
this.setClearAlpha = function () {
|
|
565
878
|
|
|
566
|
-
background.setClearAlpha
|
|
879
|
+
background.setClearAlpha( ...arguments );
|
|
567
880
|
|
|
568
881
|
};
|
|
569
882
|
|
|
883
|
+
/**
|
|
884
|
+
* Tells the renderer to clear its color, depth or stencil drawing buffer(s).
|
|
885
|
+
* This method initializes the buffers to the current clear color values.
|
|
886
|
+
*
|
|
887
|
+
* @param {boolean} [color=true] - Whether the color buffer should be cleared or not.
|
|
888
|
+
* @param {boolean} [depth=true] - Whether the depth buffer should be cleared or not.
|
|
889
|
+
* @param {boolean} [stencil=true] - Whether the stencil buffer should be cleared or not.
|
|
890
|
+
*/
|
|
570
891
|
this.clear = function ( color = true, depth = true, stencil = true ) {
|
|
571
892
|
|
|
572
893
|
let bits = 0;
|
|
@@ -578,9 +899,7 @@ class WebGLRenderer {
|
|
|
578
899
|
if ( _currentRenderTarget !== null ) {
|
|
579
900
|
|
|
580
901
|
const targetFormat = _currentRenderTarget.texture.format;
|
|
581
|
-
isIntegerFormat = targetFormat
|
|
582
|
-
targetFormat === RGIntegerFormat ||
|
|
583
|
-
targetFormat === RedIntegerFormat;
|
|
902
|
+
isIntegerFormat = INTEGER_FORMATS.has( targetFormat );
|
|
584
903
|
|
|
585
904
|
}
|
|
586
905
|
|
|
@@ -589,12 +908,7 @@ class WebGLRenderer {
|
|
|
589
908
|
if ( isIntegerFormat ) {
|
|
590
909
|
|
|
591
910
|
const targetType = _currentRenderTarget.texture.type;
|
|
592
|
-
const isUnsignedType = targetType
|
|
593
|
-
targetType === UnsignedIntType ||
|
|
594
|
-
targetType === UnsignedShortType ||
|
|
595
|
-
targetType === UnsignedInt248Type ||
|
|
596
|
-
targetType === UnsignedShort4444Type ||
|
|
597
|
-
targetType === UnsignedShort5551Type;
|
|
911
|
+
const isUnsignedType = UNSIGNED_TYPES.has( targetType );
|
|
598
912
|
|
|
599
913
|
const clearColor = background.getClearColor();
|
|
600
914
|
const a = background.getClearAlpha();
|
|
@@ -628,7 +942,12 @@ class WebGLRenderer {
|
|
|
628
942
|
|
|
629
943
|
}
|
|
630
944
|
|
|
631
|
-
if ( depth )
|
|
945
|
+
if ( depth ) {
|
|
946
|
+
|
|
947
|
+
bits |= _gl.DEPTH_BUFFER_BIT;
|
|
948
|
+
|
|
949
|
+
}
|
|
950
|
+
|
|
632
951
|
if ( stencil ) {
|
|
633
952
|
|
|
634
953
|
bits |= _gl.STENCIL_BUFFER_BIT;
|
|
@@ -640,32 +959,44 @@ class WebGLRenderer {
|
|
|
640
959
|
|
|
641
960
|
};
|
|
642
961
|
|
|
962
|
+
/**
|
|
963
|
+
* Clears the color buffer. Equivalent to calling `renderer.clear( true, false, false )`.
|
|
964
|
+
*/
|
|
643
965
|
this.clearColor = function () {
|
|
644
966
|
|
|
645
967
|
this.clear( true, false, false );
|
|
646
968
|
|
|
647
969
|
};
|
|
648
970
|
|
|
971
|
+
/**
|
|
972
|
+
* Clears the depth buffer. Equivalent to calling `renderer.clear( false, true, false )`.
|
|
973
|
+
*/
|
|
649
974
|
this.clearDepth = function () {
|
|
650
975
|
|
|
651
976
|
this.clear( false, true, false );
|
|
652
977
|
|
|
653
978
|
};
|
|
654
979
|
|
|
980
|
+
/**
|
|
981
|
+
* Clears the stencil buffer. Equivalent to calling `renderer.clear( false, false, true )`.
|
|
982
|
+
*/
|
|
655
983
|
this.clearStencil = function () {
|
|
656
984
|
|
|
657
985
|
this.clear( false, false, true );
|
|
658
986
|
|
|
659
987
|
};
|
|
660
988
|
|
|
661
|
-
|
|
662
|
-
|
|
989
|
+
/**
|
|
990
|
+
* Frees the GPU-related resources allocated by this instance. Call this
|
|
991
|
+
* method whenever this instance is no longer used in your app.
|
|
992
|
+
*/
|
|
663
993
|
this.dispose = function () {
|
|
664
994
|
|
|
665
995
|
canvas.removeEventListener( 'webglcontextlost', onContextLost, false );
|
|
666
996
|
canvas.removeEventListener( 'webglcontextrestored', onContextRestore, false );
|
|
667
997
|
canvas.removeEventListener( 'webglcontextcreationerror', onContextCreationError, false );
|
|
668
998
|
|
|
999
|
+
background.dispose();
|
|
669
1000
|
renderLists.dispose();
|
|
670
1001
|
renderStates.dispose();
|
|
671
1002
|
properties.dispose();
|
|
@@ -681,13 +1012,6 @@ class WebGLRenderer {
|
|
|
681
1012
|
xr.removeEventListener( 'sessionstart', onXRSessionStart );
|
|
682
1013
|
xr.removeEventListener( 'sessionend', onXRSessionEnd );
|
|
683
1014
|
|
|
684
|
-
if ( _transmissionRenderTarget ) {
|
|
685
|
-
|
|
686
|
-
_transmissionRenderTarget.dispose();
|
|
687
|
-
_transmissionRenderTarget = null;
|
|
688
|
-
|
|
689
|
-
}
|
|
690
|
-
|
|
691
1015
|
animation.stop();
|
|
692
1016
|
|
|
693
1017
|
};
|
|
@@ -698,7 +1022,7 @@ class WebGLRenderer {
|
|
|
698
1022
|
|
|
699
1023
|
event.preventDefault();
|
|
700
1024
|
|
|
701
|
-
|
|
1025
|
+
log( 'WebGLRenderer: Context Lost.' );
|
|
702
1026
|
|
|
703
1027
|
_isContextLost = true;
|
|
704
1028
|
|
|
@@ -706,7 +1030,7 @@ class WebGLRenderer {
|
|
|
706
1030
|
|
|
707
1031
|
function onContextRestore( /* event */ ) {
|
|
708
1032
|
|
|
709
|
-
|
|
1033
|
+
log( 'WebGLRenderer: Context Restored.' );
|
|
710
1034
|
|
|
711
1035
|
_isContextLost = false;
|
|
712
1036
|
|
|
@@ -728,7 +1052,7 @@ class WebGLRenderer {
|
|
|
728
1052
|
|
|
729
1053
|
function onContextCreationError( event ) {
|
|
730
1054
|
|
|
731
|
-
|
|
1055
|
+
error( 'WebGLRenderer: A WebGL context could not be created. Reason: ', event.statusMessage );
|
|
732
1056
|
|
|
733
1057
|
}
|
|
734
1058
|
|
|
@@ -898,7 +1222,35 @@ class WebGLRenderer {
|
|
|
898
1222
|
|
|
899
1223
|
if ( object.isBatchedMesh ) {
|
|
900
1224
|
|
|
901
|
-
|
|
1225
|
+
if ( object._multiDrawInstances !== null ) {
|
|
1226
|
+
|
|
1227
|
+
// @deprecated, r174
|
|
1228
|
+
warnOnce( 'WebGLRenderer: renderMultiDrawInstances has been deprecated and will be removed in r184. Append to renderMultiDraw arguments and use indirection.' );
|
|
1229
|
+
renderer.renderMultiDrawInstances( object._multiDrawStarts, object._multiDrawCounts, object._multiDrawCount, object._multiDrawInstances );
|
|
1230
|
+
|
|
1231
|
+
} else {
|
|
1232
|
+
|
|
1233
|
+
if ( ! extensions.get( 'WEBGL_multi_draw' ) ) {
|
|
1234
|
+
|
|
1235
|
+
const starts = object._multiDrawStarts;
|
|
1236
|
+
const counts = object._multiDrawCounts;
|
|
1237
|
+
const drawCount = object._multiDrawCount;
|
|
1238
|
+
const bytesPerElement = index ? attributes.get( index ).bytesPerElement : 1;
|
|
1239
|
+
const uniforms = properties.get( material ).currentProgram.getUniforms();
|
|
1240
|
+
for ( let i = 0; i < drawCount; i ++ ) {
|
|
1241
|
+
|
|
1242
|
+
uniforms.setValue( _gl, '_gl_DrawID', i );
|
|
1243
|
+
renderer.render( starts[ i ] / bytesPerElement, counts[ i ] );
|
|
1244
|
+
|
|
1245
|
+
}
|
|
1246
|
+
|
|
1247
|
+
} else {
|
|
1248
|
+
|
|
1249
|
+
renderer.renderMultiDraw( object._multiDrawStarts, object._multiDrawCounts, object._multiDrawCount );
|
|
1250
|
+
|
|
1251
|
+
}
|
|
1252
|
+
|
|
1253
|
+
}
|
|
902
1254
|
|
|
903
1255
|
} else if ( object.isInstancedMesh ) {
|
|
904
1256
|
|
|
@@ -943,12 +1295,24 @@ class WebGLRenderer {
|
|
|
943
1295
|
|
|
944
1296
|
}
|
|
945
1297
|
|
|
1298
|
+
/**
|
|
1299
|
+
* Compiles all materials in the scene with the camera. This is useful to precompile shaders
|
|
1300
|
+
* before the first rendering. If you want to add a 3D object to an existing scene, use the third
|
|
1301
|
+
* optional parameter for applying the target scene.
|
|
1302
|
+
*
|
|
1303
|
+
* Note that the (target) scene's lighting and environment must be configured before calling this method.
|
|
1304
|
+
*
|
|
1305
|
+
* @param {Object3D} scene - The scene or another type of 3D object to precompile.
|
|
1306
|
+
* @param {Camera} camera - The camera.
|
|
1307
|
+
* @param {?Scene} [targetScene=null] - The target scene.
|
|
1308
|
+
* @return {Set<Material>} The precompiled materials.
|
|
1309
|
+
*/
|
|
946
1310
|
this.compile = function ( scene, camera, targetScene = null ) {
|
|
947
1311
|
|
|
948
1312
|
if ( targetScene === null ) targetScene = scene;
|
|
949
1313
|
|
|
950
1314
|
currentRenderState = renderStates.get( targetScene );
|
|
951
|
-
currentRenderState.init();
|
|
1315
|
+
currentRenderState.init( camera );
|
|
952
1316
|
|
|
953
1317
|
renderStateStack.push( currentRenderState );
|
|
954
1318
|
|
|
@@ -990,7 +1354,7 @@ class WebGLRenderer {
|
|
|
990
1354
|
|
|
991
1355
|
}
|
|
992
1356
|
|
|
993
|
-
currentRenderState.setupLights(
|
|
1357
|
+
currentRenderState.setupLights();
|
|
994
1358
|
|
|
995
1359
|
// Only initialize materials in the new scene, not the targetScene.
|
|
996
1360
|
|
|
@@ -998,6 +1362,12 @@ class WebGLRenderer {
|
|
|
998
1362
|
|
|
999
1363
|
scene.traverse( function ( object ) {
|
|
1000
1364
|
|
|
1365
|
+
if ( ! ( object.isMesh || object.isPoints || object.isLine || object.isSprite ) ) {
|
|
1366
|
+
|
|
1367
|
+
return;
|
|
1368
|
+
|
|
1369
|
+
}
|
|
1370
|
+
|
|
1001
1371
|
const material = object.material;
|
|
1002
1372
|
|
|
1003
1373
|
if ( material ) {
|
|
@@ -1024,8 +1394,7 @@ class WebGLRenderer {
|
|
|
1024
1394
|
|
|
1025
1395
|
} );
|
|
1026
1396
|
|
|
1027
|
-
renderStateStack.pop();
|
|
1028
|
-
currentRenderState = null;
|
|
1397
|
+
currentRenderState = renderStateStack.pop();
|
|
1029
1398
|
|
|
1030
1399
|
return materials;
|
|
1031
1400
|
|
|
@@ -1033,6 +1402,18 @@ class WebGLRenderer {
|
|
|
1033
1402
|
|
|
1034
1403
|
// compileAsync
|
|
1035
1404
|
|
|
1405
|
+
/**
|
|
1406
|
+
* Asynchronous version of {@link WebGLRenderer#compile}.
|
|
1407
|
+
*
|
|
1408
|
+
* This method makes use of the `KHR_parallel_shader_compile` WebGL extension. Hence,
|
|
1409
|
+
* it is recommended to use this version of `compile()` whenever possible.
|
|
1410
|
+
*
|
|
1411
|
+
* @async
|
|
1412
|
+
* @param {Object3D} scene - The scene or another type of 3D object to precompile.
|
|
1413
|
+
* @param {Camera} camera - The camera.
|
|
1414
|
+
* @param {?Scene} [targetScene=null] - The target scene.
|
|
1415
|
+
* @return {Promise} A Promise that resolves when the given scene can be rendered without unnecessary stalling due to shader compilation.
|
|
1416
|
+
*/
|
|
1036
1417
|
this.compileAsync = function ( scene, camera, targetScene = null ) {
|
|
1037
1418
|
|
|
1038
1419
|
const materials = this.compile( scene, camera, targetScene );
|
|
@@ -1120,6 +1501,13 @@ class WebGLRenderer {
|
|
|
1120
1501
|
|
|
1121
1502
|
if ( typeof self !== 'undefined' ) animation.setContext( self );
|
|
1122
1503
|
|
|
1504
|
+
/**
|
|
1505
|
+
* Applications are advised to always define the animation loop
|
|
1506
|
+
* with this method and not manually with `requestAnimationFrame()`
|
|
1507
|
+
* for best compatibility.
|
|
1508
|
+
*
|
|
1509
|
+
* @param {?onAnimationCallback} callback - The application's animation loop.
|
|
1510
|
+
*/
|
|
1123
1511
|
this.setAnimationLoop = function ( callback ) {
|
|
1124
1512
|
|
|
1125
1513
|
onAnimationFrameCallback = callback;
|
|
@@ -1134,11 +1522,25 @@ class WebGLRenderer {
|
|
|
1134
1522
|
|
|
1135
1523
|
// Rendering
|
|
1136
1524
|
|
|
1525
|
+
/**
|
|
1526
|
+
* Renders the given scene (or other type of 3D object) using the given camera.
|
|
1527
|
+
*
|
|
1528
|
+
* The render is done to a previously specified render target set by calling {@link WebGLRenderer#setRenderTarget}
|
|
1529
|
+
* or to the canvas as usual.
|
|
1530
|
+
*
|
|
1531
|
+
* By default render buffers are cleared before rendering but you can prevent
|
|
1532
|
+
* this by setting the property `autoClear` to `false`. If you want to prevent
|
|
1533
|
+
* only certain buffers being cleared you can `autoClearColor`, `autoClearDepth`
|
|
1534
|
+
* or `autoClearStencil` to `false`. To force a clear, use {@link WebGLRenderer#clear}.
|
|
1535
|
+
*
|
|
1536
|
+
* @param {Object3D} scene - The scene to render.
|
|
1537
|
+
* @param {Camera} camera - The camera.
|
|
1538
|
+
*/
|
|
1137
1539
|
this.render = function ( scene, camera ) {
|
|
1138
1540
|
|
|
1139
1541
|
if ( camera !== undefined && camera.isCamera !== true ) {
|
|
1140
1542
|
|
|
1141
|
-
|
|
1543
|
+
error( 'WebGLRenderer.render: camera is not an instance of THREE.Camera.' );
|
|
1142
1544
|
return;
|
|
1143
1545
|
|
|
1144
1546
|
}
|
|
@@ -1165,12 +1567,12 @@ class WebGLRenderer {
|
|
|
1165
1567
|
if ( scene.isScene === true ) scene.onBeforeRender( _this, scene, camera, _currentRenderTarget );
|
|
1166
1568
|
|
|
1167
1569
|
currentRenderState = renderStates.get( scene, renderStateStack.length );
|
|
1168
|
-
currentRenderState.init();
|
|
1570
|
+
currentRenderState.init( camera );
|
|
1169
1571
|
|
|
1170
1572
|
renderStateStack.push( currentRenderState );
|
|
1171
1573
|
|
|
1172
1574
|
_projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );
|
|
1173
|
-
_frustum.setFromProjectionMatrix( _projScreenMatrix );
|
|
1575
|
+
_frustum.setFromProjectionMatrix( _projScreenMatrix, WebGLCoordinateSystem, camera.reversedDepth );
|
|
1174
1576
|
|
|
1175
1577
|
_localClippingEnabled = this.localClippingEnabled;
|
|
1176
1578
|
_clippingEnabled = clipping.init( this.clippingPlanes, _localClippingEnabled );
|
|
@@ -1180,6 +1582,18 @@ class WebGLRenderer {
|
|
|
1180
1582
|
|
|
1181
1583
|
renderListStack.push( currentRenderList );
|
|
1182
1584
|
|
|
1585
|
+
if ( xr.enabled === true && xr.isPresenting === true ) {
|
|
1586
|
+
|
|
1587
|
+
const depthSensingMesh = _this.xr.getDepthSensingMesh();
|
|
1588
|
+
|
|
1589
|
+
if ( depthSensingMesh !== null ) {
|
|
1590
|
+
|
|
1591
|
+
projectObject( depthSensingMesh, camera, - Infinity, _this.sortObjects );
|
|
1592
|
+
|
|
1593
|
+
}
|
|
1594
|
+
|
|
1595
|
+
}
|
|
1596
|
+
|
|
1183
1597
|
projectObject( scene, camera, 0, _this.sortObjects );
|
|
1184
1598
|
|
|
1185
1599
|
currentRenderList.finish();
|
|
@@ -1190,6 +1604,13 @@ class WebGLRenderer {
|
|
|
1190
1604
|
|
|
1191
1605
|
}
|
|
1192
1606
|
|
|
1607
|
+
_renderBackground = xr.enabled === false || xr.isPresenting === false || xr.hasDepthSensing() === false;
|
|
1608
|
+
if ( _renderBackground ) {
|
|
1609
|
+
|
|
1610
|
+
background.addToRenderList( currentRenderList, scene );
|
|
1611
|
+
|
|
1612
|
+
}
|
|
1613
|
+
|
|
1193
1614
|
//
|
|
1194
1615
|
|
|
1195
1616
|
this.info.render.frame ++;
|
|
@@ -1206,22 +1627,30 @@ class WebGLRenderer {
|
|
|
1206
1627
|
|
|
1207
1628
|
if ( this.info.autoReset === true ) this.info.reset();
|
|
1208
1629
|
|
|
1630
|
+
// render scene
|
|
1209
1631
|
|
|
1210
|
-
|
|
1632
|
+
const opaqueObjects = currentRenderList.opaque;
|
|
1633
|
+
const transmissiveObjects = currentRenderList.transmissive;
|
|
1211
1634
|
|
|
1212
|
-
|
|
1635
|
+
currentRenderState.setupLights();
|
|
1213
1636
|
|
|
1214
|
-
|
|
1637
|
+
if ( camera.isArrayCamera ) {
|
|
1215
1638
|
|
|
1216
|
-
|
|
1639
|
+
const cameras = camera.cameras;
|
|
1217
1640
|
|
|
1218
|
-
|
|
1641
|
+
if ( transmissiveObjects.length > 0 ) {
|
|
1219
1642
|
|
|
1220
|
-
|
|
1643
|
+
for ( let i = 0, l = cameras.length; i < l; i ++ ) {
|
|
1221
1644
|
|
|
1222
|
-
|
|
1645
|
+
const camera2 = cameras[ i ];
|
|
1223
1646
|
|
|
1224
|
-
|
|
1647
|
+
renderTransmissionPass( opaqueObjects, transmissiveObjects, scene, camera2 );
|
|
1648
|
+
|
|
1649
|
+
}
|
|
1650
|
+
|
|
1651
|
+
}
|
|
1652
|
+
|
|
1653
|
+
if ( _renderBackground ) background.render( scene );
|
|
1225
1654
|
|
|
1226
1655
|
for ( let i = 0, l = cameras.length; i < l; i ++ ) {
|
|
1227
1656
|
|
|
@@ -1233,13 +1662,17 @@ class WebGLRenderer {
|
|
|
1233
1662
|
|
|
1234
1663
|
} else {
|
|
1235
1664
|
|
|
1665
|
+
if ( transmissiveObjects.length > 0 ) renderTransmissionPass( opaqueObjects, transmissiveObjects, scene, camera );
|
|
1666
|
+
|
|
1667
|
+
if ( _renderBackground ) background.render( scene );
|
|
1668
|
+
|
|
1236
1669
|
renderScene( currentRenderList, scene, camera );
|
|
1237
1670
|
|
|
1238
1671
|
}
|
|
1239
1672
|
|
|
1240
1673
|
//
|
|
1241
1674
|
|
|
1242
|
-
if ( _currentRenderTarget !== null ) {
|
|
1675
|
+
if ( _currentRenderTarget !== null && _currentActiveMipmapLevel === 0 ) {
|
|
1243
1676
|
|
|
1244
1677
|
// resolve multisample renderbuffers to a single-sample texture if necessary
|
|
1245
1678
|
|
|
@@ -1267,6 +1700,8 @@ class WebGLRenderer {
|
|
|
1267
1700
|
|
|
1268
1701
|
currentRenderState = renderStateStack[ renderStateStack.length - 1 ];
|
|
1269
1702
|
|
|
1703
|
+
if ( _clippingEnabled === true ) clipping.setGlobalState( _this.clippingPlanes, currentRenderState.state.camera );
|
|
1704
|
+
|
|
1270
1705
|
} else {
|
|
1271
1706
|
|
|
1272
1707
|
currentRenderState = null;
|
|
@@ -1319,7 +1754,7 @@ class WebGLRenderer {
|
|
|
1319
1754
|
|
|
1320
1755
|
if ( sortObjects ) {
|
|
1321
1756
|
|
|
1322
|
-
|
|
1757
|
+
_vector4.setFromMatrixPosition( object.matrixWorld )
|
|
1323
1758
|
.applyMatrix4( _projScreenMatrix );
|
|
1324
1759
|
|
|
1325
1760
|
}
|
|
@@ -1329,7 +1764,7 @@ class WebGLRenderer {
|
|
|
1329
1764
|
|
|
1330
1765
|
if ( material.visible ) {
|
|
1331
1766
|
|
|
1332
|
-
currentRenderList.push( object, geometry, material, groupOrder,
|
|
1767
|
+
currentRenderList.push( object, geometry, material, groupOrder, _vector4.z, null );
|
|
1333
1768
|
|
|
1334
1769
|
}
|
|
1335
1770
|
|
|
@@ -1347,16 +1782,16 @@ class WebGLRenderer {
|
|
|
1347
1782
|
if ( object.boundingSphere !== undefined ) {
|
|
1348
1783
|
|
|
1349
1784
|
if ( object.boundingSphere === null ) object.computeBoundingSphere();
|
|
1350
|
-
|
|
1785
|
+
_vector4.copy( object.boundingSphere.center );
|
|
1351
1786
|
|
|
1352
1787
|
} else {
|
|
1353
1788
|
|
|
1354
1789
|
if ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();
|
|
1355
|
-
|
|
1790
|
+
_vector4.copy( geometry.boundingSphere.center );
|
|
1356
1791
|
|
|
1357
1792
|
}
|
|
1358
1793
|
|
|
1359
|
-
|
|
1794
|
+
_vector4
|
|
1360
1795
|
.applyMatrix4( object.matrixWorld )
|
|
1361
1796
|
.applyMatrix4( _projScreenMatrix );
|
|
1362
1797
|
|
|
@@ -1373,7 +1808,7 @@ class WebGLRenderer {
|
|
|
1373
1808
|
|
|
1374
1809
|
if ( groupMaterial && groupMaterial.visible ) {
|
|
1375
1810
|
|
|
1376
|
-
currentRenderList.push( object, geometry, groupMaterial, groupOrder,
|
|
1811
|
+
currentRenderList.push( object, geometry, groupMaterial, groupOrder, _vector4.z, group );
|
|
1377
1812
|
|
|
1378
1813
|
}
|
|
1379
1814
|
|
|
@@ -1381,7 +1816,7 @@ class WebGLRenderer {
|
|
|
1381
1816
|
|
|
1382
1817
|
} else if ( material.visible ) {
|
|
1383
1818
|
|
|
1384
|
-
currentRenderList.push( object, geometry, material, groupOrder,
|
|
1819
|
+
currentRenderList.push( object, geometry, material, groupOrder, _vector4.z, null );
|
|
1385
1820
|
|
|
1386
1821
|
}
|
|
1387
1822
|
|
|
@@ -1403,16 +1838,12 @@ class WebGLRenderer {
|
|
|
1403
1838
|
|
|
1404
1839
|
function renderScene( currentRenderList, scene, camera, viewport ) {
|
|
1405
1840
|
|
|
1406
|
-
const opaqueObjects = currentRenderList
|
|
1407
|
-
const transmissiveObjects = currentRenderList.transmissive;
|
|
1408
|
-
const transparentObjects = currentRenderList.transparent;
|
|
1841
|
+
const { opaque: opaqueObjects, transmissive: transmissiveObjects, transparent: transparentObjects } = currentRenderList;
|
|
1409
1842
|
|
|
1410
1843
|
currentRenderState.setupLightsView( camera );
|
|
1411
1844
|
|
|
1412
1845
|
if ( _clippingEnabled === true ) clipping.setGlobalState( _this.clippingPlanes, camera );
|
|
1413
1846
|
|
|
1414
|
-
if ( transmissiveObjects.length > 0 ) renderTransmissionPass( opaqueObjects, transmissiveObjects, scene, camera );
|
|
1415
|
-
|
|
1416
1847
|
if ( viewport ) state.viewport( _currentViewport.copy( viewport ) );
|
|
1417
1848
|
|
|
1418
1849
|
if ( opaqueObjects.length > 0 ) renderObjects( opaqueObjects, scene, camera );
|
|
@@ -1439,15 +1870,17 @@ class WebGLRenderer {
|
|
|
1439
1870
|
|
|
1440
1871
|
}
|
|
1441
1872
|
|
|
1442
|
-
|
|
1443
|
-
|
|
1444
|
-
if ( _transmissionRenderTarget === null ) {
|
|
1873
|
+
if ( currentRenderState.state.transmissionRenderTarget[ camera.id ] === undefined ) {
|
|
1445
1874
|
|
|
1446
|
-
|
|
1875
|
+
currentRenderState.state.transmissionRenderTarget[ camera.id ] = new WebGLRenderTarget( 1, 1, {
|
|
1447
1876
|
generateMipmaps: true,
|
|
1448
|
-
type: extensions.has( 'EXT_color_buffer_half_float' ) ? HalfFloatType : UnsignedByteType,
|
|
1877
|
+
type: ( extensions.has( 'EXT_color_buffer_half_float' ) || extensions.has( 'EXT_color_buffer_float' ) ) ? HalfFloatType : UnsignedByteType,
|
|
1449
1878
|
minFilter: LinearMipmapLinearFilter,
|
|
1450
|
-
samples:
|
|
1879
|
+
samples: 4,
|
|
1880
|
+
stencilBuffer: stencil,
|
|
1881
|
+
resolveDepthBuffer: false,
|
|
1882
|
+
resolveStencilBuffer: false,
|
|
1883
|
+
colorSpace: ColorManagement.workingColorSpace,
|
|
1451
1884
|
} );
|
|
1452
1885
|
|
|
1453
1886
|
// debug
|
|
@@ -1462,22 +1895,18 @@ class WebGLRenderer {
|
|
|
1462
1895
|
|
|
1463
1896
|
}
|
|
1464
1897
|
|
|
1465
|
-
|
|
1898
|
+
const transmissionRenderTarget = currentRenderState.state.transmissionRenderTarget[ camera.id ];
|
|
1466
1899
|
|
|
1467
|
-
|
|
1468
|
-
|
|
1469
|
-
_transmissionRenderTarget.setSize( _vector2.x, _vector2.y );
|
|
1470
|
-
|
|
1471
|
-
} else {
|
|
1472
|
-
|
|
1473
|
-
_transmissionRenderTarget.setSize( floorPowerOfTwo( _vector2.x ), floorPowerOfTwo( _vector2.y ) );
|
|
1474
|
-
|
|
1475
|
-
}
|
|
1900
|
+
const activeViewport = camera.viewport || _currentViewport;
|
|
1901
|
+
transmissionRenderTarget.setSize( activeViewport.z * _this.transmissionResolutionScale, activeViewport.w * _this.transmissionResolutionScale );
|
|
1476
1902
|
|
|
1477
1903
|
//
|
|
1478
1904
|
|
|
1479
1905
|
const currentRenderTarget = _this.getRenderTarget();
|
|
1480
|
-
_this.
|
|
1906
|
+
const currentActiveCubeFace = _this.getActiveCubeFace();
|
|
1907
|
+
const currentActiveMipmapLevel = _this.getActiveMipmapLevel();
|
|
1908
|
+
|
|
1909
|
+
_this.setRenderTarget( transmissionRenderTarget );
|
|
1481
1910
|
|
|
1482
1911
|
_this.getClearColor( _currentClearColor );
|
|
1483
1912
|
_currentClearAlpha = _this.getClearAlpha();
|
|
@@ -1485,56 +1914,70 @@ class WebGLRenderer {
|
|
|
1485
1914
|
|
|
1486
1915
|
_this.clear();
|
|
1487
1916
|
|
|
1917
|
+
if ( _renderBackground ) background.render( scene );
|
|
1918
|
+
|
|
1488
1919
|
// Turn off the features which can affect the frag color for opaque objects pass.
|
|
1489
1920
|
// Otherwise they are applied twice in opaque objects pass and transmission objects pass.
|
|
1490
1921
|
const currentToneMapping = _this.toneMapping;
|
|
1491
1922
|
_this.toneMapping = NoToneMapping;
|
|
1492
1923
|
|
|
1924
|
+
// Remove viewport from camera to avoid nested render calls resetting viewport to it (e.g Reflector).
|
|
1925
|
+
// Transmission render pass requires viewport to match the transmissionRenderTarget.
|
|
1926
|
+
const currentCameraViewport = camera.viewport;
|
|
1927
|
+
if ( camera.viewport !== undefined ) camera.viewport = undefined;
|
|
1928
|
+
|
|
1929
|
+
currentRenderState.setupLightsView( camera );
|
|
1930
|
+
|
|
1931
|
+
if ( _clippingEnabled === true ) clipping.setGlobalState( _this.clippingPlanes, camera );
|
|
1932
|
+
|
|
1493
1933
|
renderObjects( opaqueObjects, scene, camera );
|
|
1494
1934
|
|
|
1495
|
-
textures.updateMultisampleRenderTarget(
|
|
1496
|
-
textures.updateRenderTargetMipmap(
|
|
1935
|
+
textures.updateMultisampleRenderTarget( transmissionRenderTarget );
|
|
1936
|
+
textures.updateRenderTargetMipmap( transmissionRenderTarget );
|
|
1497
1937
|
|
|
1498
|
-
|
|
1938
|
+
if ( extensions.has( 'WEBGL_multisampled_render_to_texture' ) === false ) { // see #28131
|
|
1499
1939
|
|
|
1500
|
-
|
|
1940
|
+
let renderTargetNeedsUpdate = false;
|
|
1501
1941
|
|
|
1502
|
-
|
|
1942
|
+
for ( let i = 0, l = transmissiveObjects.length; i < l; i ++ ) {
|
|
1503
1943
|
|
|
1504
|
-
|
|
1505
|
-
const geometry = renderItem.geometry;
|
|
1506
|
-
const material = renderItem.material;
|
|
1507
|
-
const group = renderItem.group;
|
|
1944
|
+
const renderItem = transmissiveObjects[ i ];
|
|
1508
1945
|
|
|
1509
|
-
|
|
1946
|
+
const { object, geometry, material, group } = renderItem;
|
|
1510
1947
|
|
|
1511
|
-
|
|
1948
|
+
if ( material.side === DoubleSide && object.layers.test( camera.layers ) ) {
|
|
1512
1949
|
|
|
1513
|
-
|
|
1514
|
-
material.needsUpdate = true;
|
|
1950
|
+
const currentSide = material.side;
|
|
1515
1951
|
|
|
1516
|
-
|
|
1952
|
+
material.side = BackSide;
|
|
1953
|
+
material.needsUpdate = true;
|
|
1954
|
+
|
|
1955
|
+
renderObject( object, scene, camera, geometry, material, group );
|
|
1517
1956
|
|
|
1518
|
-
|
|
1519
|
-
|
|
1957
|
+
material.side = currentSide;
|
|
1958
|
+
material.needsUpdate = true;
|
|
1520
1959
|
|
|
1521
|
-
|
|
1960
|
+
renderTargetNeedsUpdate = true;
|
|
1961
|
+
|
|
1962
|
+
}
|
|
1522
1963
|
|
|
1523
1964
|
}
|
|
1524
1965
|
|
|
1525
|
-
|
|
1966
|
+
if ( renderTargetNeedsUpdate === true ) {
|
|
1526
1967
|
|
|
1527
|
-
|
|
1968
|
+
textures.updateMultisampleRenderTarget( transmissionRenderTarget );
|
|
1969
|
+
textures.updateRenderTargetMipmap( transmissionRenderTarget );
|
|
1528
1970
|
|
|
1529
|
-
|
|
1530
|
-
textures.updateRenderTargetMipmap( _transmissionRenderTarget );
|
|
1971
|
+
}
|
|
1531
1972
|
|
|
1532
1973
|
}
|
|
1533
1974
|
|
|
1534
|
-
_this.setRenderTarget( currentRenderTarget );
|
|
1975
|
+
_this.setRenderTarget( currentRenderTarget, currentActiveCubeFace, currentActiveMipmapLevel );
|
|
1535
1976
|
|
|
1536
1977
|
_this.setClearColor( _currentClearColor, _currentClearAlpha );
|
|
1537
1978
|
|
|
1979
|
+
if ( currentCameraViewport !== undefined ) camera.viewport = currentCameraViewport;
|
|
1980
|
+
|
|
1538
1981
|
_this.toneMapping = currentToneMapping;
|
|
1539
1982
|
|
|
1540
1983
|
}
|
|
@@ -1547,10 +1990,14 @@ class WebGLRenderer {
|
|
|
1547
1990
|
|
|
1548
1991
|
const renderItem = renderList[ i ];
|
|
1549
1992
|
|
|
1550
|
-
const object = renderItem
|
|
1551
|
-
|
|
1552
|
-
|
|
1553
|
-
|
|
1993
|
+
const { object, geometry, group } = renderItem;
|
|
1994
|
+
let material = renderItem.material;
|
|
1995
|
+
|
|
1996
|
+
if ( material.allowOverride === true && overrideMaterial !== null ) {
|
|
1997
|
+
|
|
1998
|
+
material = overrideMaterial;
|
|
1999
|
+
|
|
2000
|
+
}
|
|
1554
2001
|
|
|
1555
2002
|
if ( object.layers.test( camera.layers ) ) {
|
|
1556
2003
|
|
|
@@ -1614,6 +2061,7 @@ class WebGLRenderer {
|
|
|
1614
2061
|
materialProperties.environment = material.isMeshStandardMaterial ? scene.environment : null;
|
|
1615
2062
|
materialProperties.fog = scene.fog;
|
|
1616
2063
|
materialProperties.envMap = ( material.isMeshStandardMaterial ? cubeuvmaps : cubemaps ).get( material.envMap || materialProperties.environment );
|
|
2064
|
+
materialProperties.envMapRotation = ( materialProperties.environment !== null && material.envMap === null ) ? scene.environmentRotation : material.envMapRotation;
|
|
1617
2065
|
|
|
1618
2066
|
if ( programs === undefined ) {
|
|
1619
2067
|
|
|
@@ -1644,8 +2092,6 @@ class WebGLRenderer {
|
|
|
1644
2092
|
|
|
1645
2093
|
parameters.uniforms = programCache.getUniforms( material );
|
|
1646
2094
|
|
|
1647
|
-
material.onBuild( object, parameters, _this );
|
|
1648
|
-
|
|
1649
2095
|
material.onBeforeCompile( parameters, _this );
|
|
1650
2096
|
|
|
1651
2097
|
program = programCache.acquireProgram( parameters, programCacheKey );
|
|
@@ -1724,8 +2170,10 @@ class WebGLRenderer {
|
|
|
1724
2170
|
|
|
1725
2171
|
materialProperties.outputColorSpace = parameters.outputColorSpace;
|
|
1726
2172
|
materialProperties.batching = parameters.batching;
|
|
2173
|
+
materialProperties.batchingColor = parameters.batchingColor;
|
|
1727
2174
|
materialProperties.instancing = parameters.instancing;
|
|
1728
2175
|
materialProperties.instancingColor = parameters.instancingColor;
|
|
2176
|
+
materialProperties.instancingMorph = parameters.instancingMorph;
|
|
1729
2177
|
materialProperties.skinning = parameters.skinning;
|
|
1730
2178
|
materialProperties.morphTargets = parameters.morphTargets;
|
|
1731
2179
|
materialProperties.morphNormals = parameters.morphNormals;
|
|
@@ -1812,6 +2260,14 @@ class WebGLRenderer {
|
|
|
1812
2260
|
|
|
1813
2261
|
needsProgramChange = true;
|
|
1814
2262
|
|
|
2263
|
+
} else if ( object.isBatchedMesh && materialProperties.batchingColor === true && object.colorTexture === null ) {
|
|
2264
|
+
|
|
2265
|
+
needsProgramChange = true;
|
|
2266
|
+
|
|
2267
|
+
} else if ( object.isBatchedMesh && materialProperties.batchingColor === false && object.colorTexture !== null ) {
|
|
2268
|
+
|
|
2269
|
+
needsProgramChange = true;
|
|
2270
|
+
|
|
1815
2271
|
} else if ( object.isInstancedMesh && materialProperties.instancing === false ) {
|
|
1816
2272
|
|
|
1817
2273
|
needsProgramChange = true;
|
|
@@ -1836,6 +2292,14 @@ class WebGLRenderer {
|
|
|
1836
2292
|
|
|
1837
2293
|
needsProgramChange = true;
|
|
1838
2294
|
|
|
2295
|
+
} else if ( object.isInstancedMesh && materialProperties.instancingMorph === true && object.morphTexture === null ) {
|
|
2296
|
+
|
|
2297
|
+
needsProgramChange = true;
|
|
2298
|
+
|
|
2299
|
+
} else if ( object.isInstancedMesh && materialProperties.instancingMorph === false && object.morphTexture !== null ) {
|
|
2300
|
+
|
|
2301
|
+
needsProgramChange = true;
|
|
2302
|
+
|
|
1839
2303
|
} else if ( materialProperties.envMap !== envMap ) {
|
|
1840
2304
|
|
|
1841
2305
|
needsProgramChange = true;
|
|
@@ -1874,7 +2338,7 @@ class WebGLRenderer {
|
|
|
1874
2338
|
|
|
1875
2339
|
needsProgramChange = true;
|
|
1876
2340
|
|
|
1877
|
-
} else if (
|
|
2341
|
+
} else if ( materialProperties.morphTargetsCount !== morphTargetsCount ) {
|
|
1878
2342
|
|
|
1879
2343
|
needsProgramChange = true;
|
|
1880
2344
|
|
|
@@ -1924,7 +2388,17 @@ class WebGLRenderer {
|
|
|
1924
2388
|
|
|
1925
2389
|
// common camera uniforms
|
|
1926
2390
|
|
|
2391
|
+
const reversedDepthBuffer = state.buffers.depth.getReversed();
|
|
2392
|
+
|
|
2393
|
+
if ( reversedDepthBuffer && camera.reversedDepth !== true ) {
|
|
2394
|
+
|
|
2395
|
+
camera._reversedDepth = true;
|
|
2396
|
+
camera.updateProjectionMatrix();
|
|
2397
|
+
|
|
2398
|
+
}
|
|
2399
|
+
|
|
1927
2400
|
p_uniforms.setValue( _gl, 'projectionMatrix', camera.projectionMatrix );
|
|
2401
|
+
|
|
1928
2402
|
p_uniforms.setValue( _gl, 'viewMatrix', camera.matrixWorldInverse );
|
|
1929
2403
|
|
|
1930
2404
|
const uCamPos = p_uniforms.map.cameraPosition;
|
|
@@ -1983,17 +2457,9 @@ class WebGLRenderer {
|
|
|
1983
2457
|
|
|
1984
2458
|
if ( skeleton ) {
|
|
1985
2459
|
|
|
1986
|
-
if (
|
|
1987
|
-
|
|
1988
|
-
if ( skeleton.boneTexture === null ) skeleton.computeBoneTexture();
|
|
1989
|
-
|
|
1990
|
-
p_uniforms.setValue( _gl, 'boneTexture', skeleton.boneTexture, textures );
|
|
1991
|
-
|
|
1992
|
-
} else {
|
|
1993
|
-
|
|
1994
|
-
console.warn( 'THREE.WebGLRenderer: SkinnedMesh can only be used with WebGL 2. With WebGL 1 OES_texture_float and vertex textures support is required.' );
|
|
2460
|
+
if ( skeleton.boneTexture === null ) skeleton.computeBoneTexture();
|
|
1995
2461
|
|
|
1996
|
-
|
|
2462
|
+
p_uniforms.setValue( _gl, 'boneTexture', skeleton.boneTexture, textures );
|
|
1997
2463
|
|
|
1998
2464
|
}
|
|
1999
2465
|
|
|
@@ -2004,11 +2470,21 @@ class WebGLRenderer {
|
|
|
2004
2470
|
p_uniforms.setOptional( _gl, object, 'batchingTexture' );
|
|
2005
2471
|
p_uniforms.setValue( _gl, 'batchingTexture', object._matricesTexture, textures );
|
|
2006
2472
|
|
|
2473
|
+
p_uniforms.setOptional( _gl, object, 'batchingIdTexture' );
|
|
2474
|
+
p_uniforms.setValue( _gl, 'batchingIdTexture', object._indirectTexture, textures );
|
|
2475
|
+
|
|
2476
|
+
p_uniforms.setOptional( _gl, object, 'batchingColorTexture' );
|
|
2477
|
+
if ( object._colorsTexture !== null ) {
|
|
2478
|
+
|
|
2479
|
+
p_uniforms.setValue( _gl, 'batchingColorTexture', object._colorsTexture, textures );
|
|
2480
|
+
|
|
2481
|
+
}
|
|
2482
|
+
|
|
2007
2483
|
}
|
|
2008
2484
|
|
|
2009
2485
|
const morphAttributes = geometry.morphAttributes;
|
|
2010
2486
|
|
|
2011
|
-
if ( morphAttributes.position !== undefined || morphAttributes.normal !== undefined || ( morphAttributes.color !== undefined
|
|
2487
|
+
if ( morphAttributes.position !== undefined || morphAttributes.normal !== undefined || ( morphAttributes.color !== undefined ) ) {
|
|
2012
2488
|
|
|
2013
2489
|
morphtargets.update( object, geometry, program );
|
|
2014
2490
|
|
|
@@ -2031,6 +2507,19 @@ class WebGLRenderer {
|
|
|
2031
2507
|
|
|
2032
2508
|
}
|
|
2033
2509
|
|
|
2510
|
+
if ( material.isMeshStandardMaterial && material.envMap === null && scene.environment !== null ) {
|
|
2511
|
+
|
|
2512
|
+
m_uniforms.envMapIntensity.value = scene.environmentIntensity;
|
|
2513
|
+
|
|
2514
|
+
}
|
|
2515
|
+
|
|
2516
|
+
// Set DFG LUT for physically-based materials
|
|
2517
|
+
if ( m_uniforms.dfgLUT !== undefined ) {
|
|
2518
|
+
|
|
2519
|
+
m_uniforms.dfgLUT.value = getDFGLUT();
|
|
2520
|
+
|
|
2521
|
+
}
|
|
2522
|
+
|
|
2034
2523
|
if ( refreshMaterial ) {
|
|
2035
2524
|
|
|
2036
2525
|
p_uniforms.setValue( _gl, 'toneMappingExposure', _this.toneMappingExposure );
|
|
@@ -2058,7 +2547,7 @@ class WebGLRenderer {
|
|
|
2058
2547
|
|
|
2059
2548
|
}
|
|
2060
2549
|
|
|
2061
|
-
materials.refreshMaterialUniforms( m_uniforms, material, _pixelRatio, _height,
|
|
2550
|
+
materials.refreshMaterialUniforms( m_uniforms, material, _pixelRatio, _height, currentRenderState.state.transmissionRenderTarget[ camera.id ] );
|
|
2062
2551
|
|
|
2063
2552
|
WebGLUniforms.upload( _gl, getUniformList( materialProperties ), m_uniforms, textures );
|
|
2064
2553
|
|
|
@@ -2091,18 +2580,10 @@ class WebGLRenderer {
|
|
|
2091
2580
|
|
|
2092
2581
|
for ( let i = 0, l = groups.length; i < l; i ++ ) {
|
|
2093
2582
|
|
|
2094
|
-
|
|
2583
|
+
const group = groups[ i ];
|
|
2095
2584
|
|
|
2096
|
-
|
|
2097
|
-
|
|
2098
|
-
uniformsGroups.update( group, program );
|
|
2099
|
-
uniformsGroups.bind( group, program );
|
|
2100
|
-
|
|
2101
|
-
} else {
|
|
2102
|
-
|
|
2103
|
-
console.warn( 'THREE.WebGLRenderer: Uniform Buffer Objects can only be used with WebGL 2.' );
|
|
2104
|
-
|
|
2105
|
-
}
|
|
2585
|
+
uniformsGroups.update( group, program );
|
|
2586
|
+
uniformsGroups.bind( group, program );
|
|
2106
2587
|
|
|
2107
2588
|
}
|
|
2108
2589
|
|
|
@@ -2138,18 +2619,34 @@ class WebGLRenderer {
|
|
|
2138
2619
|
|
|
2139
2620
|
}
|
|
2140
2621
|
|
|
2622
|
+
/**
|
|
2623
|
+
* Returns the active cube face.
|
|
2624
|
+
*
|
|
2625
|
+
* @return {number} The active cube face.
|
|
2626
|
+
*/
|
|
2141
2627
|
this.getActiveCubeFace = function () {
|
|
2142
2628
|
|
|
2143
2629
|
return _currentActiveCubeFace;
|
|
2144
2630
|
|
|
2145
2631
|
};
|
|
2146
2632
|
|
|
2633
|
+
/**
|
|
2634
|
+
* Returns the active mipmap level.
|
|
2635
|
+
*
|
|
2636
|
+
* @return {number} The active mipmap level.
|
|
2637
|
+
*/
|
|
2147
2638
|
this.getActiveMipmapLevel = function () {
|
|
2148
2639
|
|
|
2149
2640
|
return _currentActiveMipmapLevel;
|
|
2150
2641
|
|
|
2151
2642
|
};
|
|
2152
2643
|
|
|
2644
|
+
/**
|
|
2645
|
+
* Returns the active render target.
|
|
2646
|
+
*
|
|
2647
|
+
* @return {?WebGLRenderTarget} The active render target. Returns `null` if no render target
|
|
2648
|
+
* is currently set.
|
|
2649
|
+
*/
|
|
2153
2650
|
this.getRenderTarget = function () {
|
|
2154
2651
|
|
|
2155
2652
|
return _currentRenderTarget;
|
|
@@ -2158,30 +2655,21 @@ class WebGLRenderer {
|
|
|
2158
2655
|
|
|
2159
2656
|
this.setRenderTargetTextures = function ( renderTarget, colorTexture, depthTexture ) {
|
|
2160
2657
|
|
|
2161
|
-
properties.get( renderTarget.texture ).__webglTexture = colorTexture;
|
|
2162
|
-
properties.get( renderTarget.depthTexture ).__webglTexture = depthTexture;
|
|
2163
|
-
|
|
2164
2658
|
const renderTargetProperties = properties.get( renderTarget );
|
|
2165
|
-
renderTargetProperties.__hasExternalTextures = true;
|
|
2166
|
-
|
|
2167
|
-
if ( renderTargetProperties.__hasExternalTextures ) {
|
|
2168
|
-
|
|
2169
|
-
renderTargetProperties.__autoAllocateDepthBuffer = depthTexture === undefined;
|
|
2170
2659
|
|
|
2171
|
-
|
|
2660
|
+
renderTargetProperties.__autoAllocateDepthBuffer = renderTarget.resolveDepthBuffer === false;
|
|
2661
|
+
if ( renderTargetProperties.__autoAllocateDepthBuffer === false ) {
|
|
2172
2662
|
|
|
2173
|
-
|
|
2174
|
-
|
|
2175
|
-
|
|
2663
|
+
// The multisample_render_to_texture extension doesn't work properly if there
|
|
2664
|
+
// are midframe flushes and an external depth buffer. Disable use of the extension.
|
|
2665
|
+
renderTargetProperties.__useRenderToTexture = false;
|
|
2176
2666
|
|
|
2177
|
-
|
|
2178
|
-
renderTargetProperties.__useRenderToTexture = false;
|
|
2179
|
-
|
|
2180
|
-
}
|
|
2667
|
+
}
|
|
2181
2668
|
|
|
2182
|
-
|
|
2669
|
+
properties.get( renderTarget.texture ).__webglTexture = colorTexture;
|
|
2670
|
+
properties.get( renderTarget.depthTexture ).__webglTexture = renderTargetProperties.__autoAllocateDepthBuffer ? undefined : depthTexture;
|
|
2183
2671
|
|
|
2184
|
-
|
|
2672
|
+
renderTargetProperties.__hasExternalTextures = true;
|
|
2185
2673
|
|
|
2186
2674
|
};
|
|
2187
2675
|
|
|
@@ -2193,6 +2681,17 @@ class WebGLRenderer {
|
|
|
2193
2681
|
|
|
2194
2682
|
};
|
|
2195
2683
|
|
|
2684
|
+
const _scratchFrameBuffer = _gl.createFramebuffer();
|
|
2685
|
+
|
|
2686
|
+
/**
|
|
2687
|
+
* Sets the active rendertarget.
|
|
2688
|
+
*
|
|
2689
|
+
* @param {?WebGLRenderTarget} renderTarget - The render target to set. When `null` is given,
|
|
2690
|
+
* the canvas is set as the active render target instead.
|
|
2691
|
+
* @param {number} [activeCubeFace=0] - The active cube face when using a cube render target.
|
|
2692
|
+
* Indicates the z layer to render in to when using 3D or array render targets.
|
|
2693
|
+
* @param {number} [activeMipmapLevel=0] - The active mipmap level.
|
|
2694
|
+
*/
|
|
2196
2695
|
this.setRenderTarget = function ( renderTarget, activeCubeFace = 0, activeMipmapLevel = 0 ) {
|
|
2197
2696
|
|
|
2198
2697
|
_currentRenderTarget = renderTarget;
|
|
@@ -2223,6 +2722,28 @@ class WebGLRenderer {
|
|
|
2223
2722
|
// Color and depth texture must be rebound in order for the swapchain to update.
|
|
2224
2723
|
textures.rebindTextures( renderTarget, properties.get( renderTarget.texture ).__webglTexture, properties.get( renderTarget.depthTexture ).__webglTexture );
|
|
2225
2724
|
|
|
2725
|
+
} else if ( renderTarget.depthBuffer ) {
|
|
2726
|
+
|
|
2727
|
+
// check if the depth texture is already bound to the frame buffer and that it's been initialized
|
|
2728
|
+
const depthTexture = renderTarget.depthTexture;
|
|
2729
|
+
if ( renderTargetProperties.__boundDepthTexture !== depthTexture ) {
|
|
2730
|
+
|
|
2731
|
+
// check if the depth texture is compatible
|
|
2732
|
+
if (
|
|
2733
|
+
depthTexture !== null &&
|
|
2734
|
+
properties.has( depthTexture ) &&
|
|
2735
|
+
( renderTarget.width !== depthTexture.image.width || renderTarget.height !== depthTexture.image.height )
|
|
2736
|
+
) {
|
|
2737
|
+
|
|
2738
|
+
throw new Error( 'WebGLRenderTarget: Attached DepthTexture is initialized to the incorrect size.' );
|
|
2739
|
+
|
|
2740
|
+
}
|
|
2741
|
+
|
|
2742
|
+
// Swap the depth buffer to the currently attached one
|
|
2743
|
+
textures.setupDepthRenderbuffer( renderTarget );
|
|
2744
|
+
|
|
2745
|
+
}
|
|
2746
|
+
|
|
2226
2747
|
}
|
|
2227
2748
|
|
|
2228
2749
|
const texture = renderTarget.texture;
|
|
@@ -2249,7 +2770,7 @@ class WebGLRenderer {
|
|
|
2249
2770
|
|
|
2250
2771
|
isCube = true;
|
|
2251
2772
|
|
|
2252
|
-
} else if ( (
|
|
2773
|
+
} else if ( ( renderTarget.samples > 0 ) && textures.useMultisampledRTT( renderTarget ) === false ) {
|
|
2253
2774
|
|
|
2254
2775
|
framebuffer = properties.get( renderTarget ).__webglMultisampledFramebuffer;
|
|
2255
2776
|
|
|
@@ -2279,9 +2800,17 @@ class WebGLRenderer {
|
|
|
2279
2800
|
|
|
2280
2801
|
}
|
|
2281
2802
|
|
|
2803
|
+
// Use a scratch frame buffer if rendering to a mip level to avoid depth buffers
|
|
2804
|
+
// being bound that are different sizes.
|
|
2805
|
+
if ( activeMipmapLevel !== 0 ) {
|
|
2806
|
+
|
|
2807
|
+
framebuffer = _scratchFrameBuffer;
|
|
2808
|
+
|
|
2809
|
+
}
|
|
2810
|
+
|
|
2282
2811
|
const framebufferBound = state.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );
|
|
2283
2812
|
|
|
2284
|
-
if ( framebufferBound &&
|
|
2813
|
+
if ( framebufferBound && useDefaultFramebuffer ) {
|
|
2285
2814
|
|
|
2286
2815
|
state.drawBuffers( renderTarget, framebuffer );
|
|
2287
2816
|
|
|
@@ -2298,9 +2827,22 @@ class WebGLRenderer {
|
|
|
2298
2827
|
|
|
2299
2828
|
} else if ( isRenderTarget3D ) {
|
|
2300
2829
|
|
|
2830
|
+
const layer = activeCubeFace;
|
|
2831
|
+
|
|
2832
|
+
for ( let i = 0; i < renderTarget.textures.length; i ++ ) {
|
|
2833
|
+
|
|
2834
|
+
const textureProperties = properties.get( renderTarget.textures[ i ] );
|
|
2835
|
+
|
|
2836
|
+
_gl.framebufferTextureLayer( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i, textureProperties.__webglTexture, activeMipmapLevel, layer );
|
|
2837
|
+
|
|
2838
|
+
}
|
|
2839
|
+
|
|
2840
|
+
} else if ( renderTarget !== null && activeMipmapLevel !== 0 ) {
|
|
2841
|
+
|
|
2842
|
+
// Only bind the frame buffer if we are using a scratch frame buffer to render to a mipmap.
|
|
2843
|
+
// If we rebind the texture when using a multi sample buffer then an error about inconsistent samples will be thrown.
|
|
2301
2844
|
const textureProperties = properties.get( renderTarget.texture );
|
|
2302
|
-
|
|
2303
|
-
_gl.framebufferTextureLayer( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, textureProperties.__webglTexture, activeMipmapLevel || 0, layer );
|
|
2845
|
+
_gl.framebufferTexture2D( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_2D, textureProperties.__webglTexture, activeMipmapLevel );
|
|
2304
2846
|
|
|
2305
2847
|
}
|
|
2306
2848
|
|
|
@@ -2308,11 +2850,23 @@ class WebGLRenderer {
|
|
|
2308
2850
|
|
|
2309
2851
|
};
|
|
2310
2852
|
|
|
2311
|
-
|
|
2853
|
+
/**
|
|
2854
|
+
* Reads the pixel data from the given render target into the given buffer.
|
|
2855
|
+
*
|
|
2856
|
+
* @param {WebGLRenderTarget} renderTarget - The render target to read from.
|
|
2857
|
+
* @param {number} x - The `x` coordinate of the copy region's origin.
|
|
2858
|
+
* @param {number} y - The `y` coordinate of the copy region's origin.
|
|
2859
|
+
* @param {number} width - The width of the copy region.
|
|
2860
|
+
* @param {number} height - The height of the copy region.
|
|
2861
|
+
* @param {TypedArray} buffer - The result buffer.
|
|
2862
|
+
* @param {number} [activeCubeFaceIndex] - The active cube face index.
|
|
2863
|
+
* @param {number} [textureIndex=0] - The texture index of an MRT render target.
|
|
2864
|
+
*/
|
|
2865
|
+
this.readRenderTargetPixels = function ( renderTarget, x, y, width, height, buffer, activeCubeFaceIndex, textureIndex = 0 ) {
|
|
2312
2866
|
|
|
2313
2867
|
if ( ! ( renderTarget && renderTarget.isWebGLRenderTarget ) ) {
|
|
2314
2868
|
|
|
2315
|
-
|
|
2869
|
+
error( 'WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.' );
|
|
2316
2870
|
return;
|
|
2317
2871
|
|
|
2318
2872
|
}
|
|
@@ -2331,24 +2885,20 @@ class WebGLRenderer {
|
|
|
2331
2885
|
|
|
2332
2886
|
try {
|
|
2333
2887
|
|
|
2334
|
-
const texture = renderTarget.
|
|
2888
|
+
const texture = renderTarget.textures[ textureIndex ];
|
|
2335
2889
|
const textureFormat = texture.format;
|
|
2336
2890
|
const textureType = texture.type;
|
|
2337
2891
|
|
|
2338
|
-
if (
|
|
2892
|
+
if ( ! capabilities.textureFormatReadable( textureFormat ) ) {
|
|
2339
2893
|
|
|
2340
|
-
|
|
2894
|
+
error( 'WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.' );
|
|
2341
2895
|
return;
|
|
2342
2896
|
|
|
2343
2897
|
}
|
|
2344
2898
|
|
|
2345
|
-
|
|
2899
|
+
if ( ! capabilities.textureTypeReadable( textureType ) ) {
|
|
2346
2900
|
|
|
2347
|
-
|
|
2348
|
-
! ( textureType === FloatType && ( capabilities.isWebGL2 || extensions.has( 'OES_texture_float' ) || extensions.has( 'WEBGL_color_buffer_float' ) ) ) && // Chrome Mac >= 52 and Firefox
|
|
2349
|
-
! halfFloatSupportedByExt ) {
|
|
2350
|
-
|
|
2351
|
-
console.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.' );
|
|
2901
|
+
error( 'WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.' );
|
|
2352
2902
|
return;
|
|
2353
2903
|
|
|
2354
2904
|
}
|
|
@@ -2357,6 +2907,10 @@ class WebGLRenderer {
|
|
|
2357
2907
|
|
|
2358
2908
|
if ( ( x >= 0 && x <= ( renderTarget.width - width ) ) && ( y >= 0 && y <= ( renderTarget.height - height ) ) ) {
|
|
2359
2909
|
|
|
2910
|
+
// when using MRT, select the correct color buffer for the subsequent read command
|
|
2911
|
+
|
|
2912
|
+
if ( renderTarget.textures.length > 1 ) _gl.readBuffer( _gl.COLOR_ATTACHMENT0 + textureIndex );
|
|
2913
|
+
|
|
2360
2914
|
_gl.readPixels( x, y, width, height, utils.convert( textureFormat ), utils.convert( textureType ), buffer );
|
|
2361
2915
|
|
|
2362
2916
|
}
|
|
@@ -2374,72 +2928,213 @@ class WebGLRenderer {
|
|
|
2374
2928
|
|
|
2375
2929
|
};
|
|
2376
2930
|
|
|
2377
|
-
|
|
2931
|
+
/**
|
|
2932
|
+
* Asynchronous, non-blocking version of {@link WebGLRenderer#readRenderTargetPixels}.
|
|
2933
|
+
*
|
|
2934
|
+
* It is recommended to use this version of `readRenderTargetPixels()` whenever possible.
|
|
2935
|
+
*
|
|
2936
|
+
* @async
|
|
2937
|
+
* @param {WebGLRenderTarget} renderTarget - The render target to read from.
|
|
2938
|
+
* @param {number} x - The `x` coordinate of the copy region's origin.
|
|
2939
|
+
* @param {number} y - The `y` coordinate of the copy region's origin.
|
|
2940
|
+
* @param {number} width - The width of the copy region.
|
|
2941
|
+
* @param {number} height - The height of the copy region.
|
|
2942
|
+
* @param {TypedArray} buffer - The result buffer.
|
|
2943
|
+
* @param {number} [activeCubeFaceIndex] - The active cube face index.
|
|
2944
|
+
* @param {number} [textureIndex=0] - The texture index of an MRT render target.
|
|
2945
|
+
* @return {Promise<TypedArray>} A Promise that resolves when the read has been finished. The resolve provides the read data as a typed array.
|
|
2946
|
+
*/
|
|
2947
|
+
this.readRenderTargetPixelsAsync = async function ( renderTarget, x, y, width, height, buffer, activeCubeFaceIndex, textureIndex = 0 ) {
|
|
2948
|
+
|
|
2949
|
+
if ( ! ( renderTarget && renderTarget.isWebGLRenderTarget ) ) {
|
|
2950
|
+
|
|
2951
|
+
throw new Error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.' );
|
|
2952
|
+
|
|
2953
|
+
}
|
|
2954
|
+
|
|
2955
|
+
let framebuffer = properties.get( renderTarget ).__webglFramebuffer;
|
|
2956
|
+
if ( renderTarget.isWebGLCubeRenderTarget && activeCubeFaceIndex !== undefined ) {
|
|
2957
|
+
|
|
2958
|
+
framebuffer = framebuffer[ activeCubeFaceIndex ];
|
|
2959
|
+
|
|
2960
|
+
}
|
|
2961
|
+
|
|
2962
|
+
if ( framebuffer ) {
|
|
2963
|
+
|
|
2964
|
+
// the following if statement ensures valid read requests (no out-of-bounds pixels, see #8604)
|
|
2965
|
+
if ( ( x >= 0 && x <= ( renderTarget.width - width ) ) && ( y >= 0 && y <= ( renderTarget.height - height ) ) ) {
|
|
2966
|
+
|
|
2967
|
+
// set the active frame buffer to the one we want to read
|
|
2968
|
+
state.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );
|
|
2969
|
+
|
|
2970
|
+
const texture = renderTarget.textures[ textureIndex ];
|
|
2971
|
+
const textureFormat = texture.format;
|
|
2972
|
+
const textureType = texture.type;
|
|
2973
|
+
|
|
2974
|
+
if ( ! capabilities.textureFormatReadable( textureFormat ) ) {
|
|
2975
|
+
|
|
2976
|
+
throw new Error( 'THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in RGBA or implementation defined format.' );
|
|
2977
|
+
|
|
2978
|
+
}
|
|
2979
|
+
|
|
2980
|
+
if ( ! capabilities.textureTypeReadable( textureType ) ) {
|
|
2981
|
+
|
|
2982
|
+
throw new Error( 'THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in UnsignedByteType or implementation defined type.' );
|
|
2983
|
+
|
|
2984
|
+
}
|
|
2985
|
+
|
|
2986
|
+
const glBuffer = _gl.createBuffer();
|
|
2987
|
+
_gl.bindBuffer( _gl.PIXEL_PACK_BUFFER, glBuffer );
|
|
2988
|
+
_gl.bufferData( _gl.PIXEL_PACK_BUFFER, buffer.byteLength, _gl.STREAM_READ );
|
|
2989
|
+
|
|
2990
|
+
// when using MRT, select the correct color buffer for the subsequent read command
|
|
2991
|
+
|
|
2992
|
+
if ( renderTarget.textures.length > 1 ) _gl.readBuffer( _gl.COLOR_ATTACHMENT0 + textureIndex );
|
|
2993
|
+
|
|
2994
|
+
_gl.readPixels( x, y, width, height, utils.convert( textureFormat ), utils.convert( textureType ), 0 );
|
|
2995
|
+
|
|
2996
|
+
// reset the frame buffer to the currently set buffer before waiting
|
|
2997
|
+
const currFramebuffer = _currentRenderTarget !== null ? properties.get( _currentRenderTarget ).__webglFramebuffer : null;
|
|
2998
|
+
state.bindFramebuffer( _gl.FRAMEBUFFER, currFramebuffer );
|
|
2999
|
+
|
|
3000
|
+
// check if the commands have finished every 8 ms
|
|
3001
|
+
const sync = _gl.fenceSync( _gl.SYNC_GPU_COMMANDS_COMPLETE, 0 );
|
|
3002
|
+
|
|
3003
|
+
_gl.flush();
|
|
3004
|
+
|
|
3005
|
+
await probeAsync( _gl, sync, 4 );
|
|
3006
|
+
|
|
3007
|
+
// read the data and delete the buffer
|
|
3008
|
+
_gl.bindBuffer( _gl.PIXEL_PACK_BUFFER, glBuffer );
|
|
3009
|
+
_gl.getBufferSubData( _gl.PIXEL_PACK_BUFFER, 0, buffer );
|
|
3010
|
+
_gl.deleteBuffer( glBuffer );
|
|
3011
|
+
_gl.deleteSync( sync );
|
|
3012
|
+
|
|
3013
|
+
return buffer;
|
|
3014
|
+
|
|
3015
|
+
} else {
|
|
3016
|
+
|
|
3017
|
+
throw new Error( 'THREE.WebGLRenderer.readRenderTargetPixelsAsync: requested read bounds are out of range.' );
|
|
3018
|
+
|
|
3019
|
+
}
|
|
3020
|
+
|
|
3021
|
+
}
|
|
3022
|
+
|
|
3023
|
+
};
|
|
3024
|
+
|
|
3025
|
+
/**
|
|
3026
|
+
* Copies pixels from the current bound framebuffer into the given texture.
|
|
3027
|
+
*
|
|
3028
|
+
* @param {FramebufferTexture} texture - The texture.
|
|
3029
|
+
* @param {?Vector2} [position=null] - The start position of the copy operation.
|
|
3030
|
+
* @param {number} [level=0] - The mip level. The default represents the base mip.
|
|
3031
|
+
*/
|
|
3032
|
+
this.copyFramebufferToTexture = function ( texture, position = null, level = 0 ) {
|
|
2378
3033
|
|
|
2379
3034
|
const levelScale = Math.pow( 2, - level );
|
|
2380
3035
|
const width = Math.floor( texture.image.width * levelScale );
|
|
2381
3036
|
const height = Math.floor( texture.image.height * levelScale );
|
|
2382
3037
|
|
|
3038
|
+
const x = position !== null ? position.x : 0;
|
|
3039
|
+
const y = position !== null ? position.y : 0;
|
|
3040
|
+
|
|
2383
3041
|
textures.setTexture2D( texture, 0 );
|
|
2384
3042
|
|
|
2385
|
-
_gl.copyTexSubImage2D( _gl.TEXTURE_2D, level, 0, 0,
|
|
3043
|
+
_gl.copyTexSubImage2D( _gl.TEXTURE_2D, level, 0, 0, x, y, width, height );
|
|
2386
3044
|
|
|
2387
3045
|
state.unbindTexture();
|
|
2388
3046
|
|
|
2389
3047
|
};
|
|
2390
3048
|
|
|
2391
|
-
|
|
3049
|
+
const _srcFramebuffer = _gl.createFramebuffer();
|
|
3050
|
+
const _dstFramebuffer = _gl.createFramebuffer();
|
|
3051
|
+
|
|
3052
|
+
/**
|
|
3053
|
+
* Copies data of the given source texture into a destination texture.
|
|
3054
|
+
*
|
|
3055
|
+
* When using render target textures as `srcTexture` and `dstTexture`, you must make sure both render targets are initialized
|
|
3056
|
+
* {@link WebGLRenderer#initRenderTarget}.
|
|
3057
|
+
*
|
|
3058
|
+
* @param {Texture} srcTexture - The source texture.
|
|
3059
|
+
* @param {Texture} dstTexture - The destination texture.
|
|
3060
|
+
* @param {?(Box2|Box3)} [srcRegion=null] - A bounding box which describes the source region. Can be two or three-dimensional.
|
|
3061
|
+
* @param {?(Vector2|Vector3)} [dstPosition=null] - A vector that represents the origin of the destination region. Can be two or three-dimensional.
|
|
3062
|
+
* @param {number} [srcLevel=0] - The source mipmap level to copy.
|
|
3063
|
+
* @param {?number} [dstLevel=null] - The destination mipmap level.
|
|
3064
|
+
*/
|
|
3065
|
+
this.copyTextureToTexture = function ( srcTexture, dstTexture, srcRegion = null, dstPosition = null, srcLevel = 0, dstLevel = null ) {
|
|
3066
|
+
|
|
3067
|
+
// support the previous signature with just a single dst mipmap level
|
|
3068
|
+
if ( dstLevel === null ) {
|
|
3069
|
+
|
|
3070
|
+
if ( srcLevel !== 0 ) {
|
|
3071
|
+
|
|
3072
|
+
// @deprecated, r171
|
|
3073
|
+
warnOnce( 'WebGLRenderer: copyTextureToTexture function signature has changed to support src and dst mipmap levels.' );
|
|
3074
|
+
dstLevel = srcLevel;
|
|
3075
|
+
srcLevel = 0;
|
|
2392
3076
|
|
|
2393
|
-
|
|
2394
|
-
const height = srcTexture.image.height;
|
|
2395
|
-
const glFormat = utils.convert( dstTexture.format );
|
|
2396
|
-
const glType = utils.convert( dstTexture.type );
|
|
3077
|
+
} else {
|
|
2397
3078
|
|
|
2398
|
-
|
|
3079
|
+
dstLevel = 0;
|
|
2399
3080
|
|
|
2400
|
-
|
|
2401
|
-
|
|
2402
|
-
|
|
2403
|
-
_gl.pixelStorei( _gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, dstTexture.premultiplyAlpha );
|
|
2404
|
-
_gl.pixelStorei( _gl.UNPACK_ALIGNMENT, dstTexture.unpackAlignment );
|
|
3081
|
+
}
|
|
3082
|
+
|
|
3083
|
+
}
|
|
2405
3084
|
|
|
2406
|
-
|
|
3085
|
+
// gather the necessary dimensions to copy
|
|
3086
|
+
let width, height, depth, minX, minY, minZ;
|
|
3087
|
+
let dstX, dstY, dstZ;
|
|
3088
|
+
const image = srcTexture.isCompressedTexture ? srcTexture.mipmaps[ dstLevel ] : srcTexture.image;
|
|
3089
|
+
if ( srcRegion !== null ) {
|
|
2407
3090
|
|
|
2408
|
-
|
|
3091
|
+
width = srcRegion.max.x - srcRegion.min.x;
|
|
3092
|
+
height = srcRegion.max.y - srcRegion.min.y;
|
|
3093
|
+
depth = srcRegion.isBox3 ? srcRegion.max.z - srcRegion.min.z : 1;
|
|
3094
|
+
minX = srcRegion.min.x;
|
|
3095
|
+
minY = srcRegion.min.y;
|
|
3096
|
+
minZ = srcRegion.isBox3 ? srcRegion.min.z : 0;
|
|
2409
3097
|
|
|
2410
3098
|
} else {
|
|
2411
3099
|
|
|
2412
|
-
|
|
3100
|
+
const levelScale = Math.pow( 2, - srcLevel );
|
|
3101
|
+
width = Math.floor( image.width * levelScale );
|
|
3102
|
+
height = Math.floor( image.height * levelScale );
|
|
3103
|
+
if ( srcTexture.isDataArrayTexture ) {
|
|
2413
3104
|
|
|
2414
|
-
|
|
3105
|
+
depth = image.depth;
|
|
3106
|
+
|
|
3107
|
+
} else if ( srcTexture.isData3DTexture ) {
|
|
3108
|
+
|
|
3109
|
+
depth = Math.floor( image.depth * levelScale );
|
|
2415
3110
|
|
|
2416
3111
|
} else {
|
|
2417
3112
|
|
|
2418
|
-
|
|
3113
|
+
depth = 1;
|
|
2419
3114
|
|
|
2420
3115
|
}
|
|
2421
3116
|
|
|
2422
|
-
|
|
3117
|
+
minX = 0;
|
|
3118
|
+
minY = 0;
|
|
3119
|
+
minZ = 0;
|
|
2423
3120
|
|
|
2424
|
-
|
|
2425
|
-
if ( level === 0 && dstTexture.generateMipmaps ) _gl.generateMipmap( _gl.TEXTURE_2D );
|
|
3121
|
+
}
|
|
2426
3122
|
|
|
2427
|
-
|
|
3123
|
+
if ( dstPosition !== null ) {
|
|
2428
3124
|
|
|
2429
|
-
|
|
3125
|
+
dstX = dstPosition.x;
|
|
3126
|
+
dstY = dstPosition.y;
|
|
3127
|
+
dstZ = dstPosition.z;
|
|
2430
3128
|
|
|
2431
|
-
|
|
3129
|
+
} else {
|
|
2432
3130
|
|
|
2433
|
-
|
|
2434
|
-
|
|
2435
|
-
|
|
2436
|
-
return;
|
|
3131
|
+
dstX = 0;
|
|
3132
|
+
dstY = 0;
|
|
3133
|
+
dstZ = 0;
|
|
2437
3134
|
|
|
2438
3135
|
}
|
|
2439
3136
|
|
|
2440
|
-
|
|
2441
|
-
const height = sourceBox.max.y - sourceBox.min.y + 1;
|
|
2442
|
-
const depth = sourceBox.max.z - sourceBox.min.z + 1;
|
|
3137
|
+
// Set up the destination target
|
|
2443
3138
|
const glFormat = utils.convert( dstTexture.format );
|
|
2444
3139
|
const glType = utils.convert( dstTexture.type );
|
|
2445
3140
|
let glTarget;
|
|
@@ -2456,8 +3151,8 @@ class WebGLRenderer {
|
|
|
2456
3151
|
|
|
2457
3152
|
} else {
|
|
2458
3153
|
|
|
2459
|
-
|
|
2460
|
-
|
|
3154
|
+
textures.setTexture2D( dstTexture, 0 );
|
|
3155
|
+
glTarget = _gl.TEXTURE_2D;
|
|
2461
3156
|
|
|
2462
3157
|
}
|
|
2463
3158
|
|
|
@@ -2465,52 +3160,183 @@ class WebGLRenderer {
|
|
|
2465
3160
|
_gl.pixelStorei( _gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, dstTexture.premultiplyAlpha );
|
|
2466
3161
|
_gl.pixelStorei( _gl.UNPACK_ALIGNMENT, dstTexture.unpackAlignment );
|
|
2467
3162
|
|
|
2468
|
-
|
|
2469
|
-
const
|
|
2470
|
-
const
|
|
2471
|
-
const
|
|
2472
|
-
const
|
|
2473
|
-
|
|
2474
|
-
const image = srcTexture.isCompressedTexture ? srcTexture.mipmaps[ level ] : srcTexture.image;
|
|
3163
|
+
// used for copying data from cpu
|
|
3164
|
+
const currentUnpackRowLen = _gl.getParameter( _gl.UNPACK_ROW_LENGTH );
|
|
3165
|
+
const currentUnpackImageHeight = _gl.getParameter( _gl.UNPACK_IMAGE_HEIGHT );
|
|
3166
|
+
const currentUnpackSkipPixels = _gl.getParameter( _gl.UNPACK_SKIP_PIXELS );
|
|
3167
|
+
const currentUnpackSkipRows = _gl.getParameter( _gl.UNPACK_SKIP_ROWS );
|
|
3168
|
+
const currentUnpackSkipImages = _gl.getParameter( _gl.UNPACK_SKIP_IMAGES );
|
|
2475
3169
|
|
|
2476
3170
|
_gl.pixelStorei( _gl.UNPACK_ROW_LENGTH, image.width );
|
|
2477
3171
|
_gl.pixelStorei( _gl.UNPACK_IMAGE_HEIGHT, image.height );
|
|
2478
|
-
_gl.pixelStorei( _gl.UNPACK_SKIP_PIXELS,
|
|
2479
|
-
_gl.pixelStorei( _gl.UNPACK_SKIP_ROWS,
|
|
2480
|
-
_gl.pixelStorei( _gl.UNPACK_SKIP_IMAGES,
|
|
3172
|
+
_gl.pixelStorei( _gl.UNPACK_SKIP_PIXELS, minX );
|
|
3173
|
+
_gl.pixelStorei( _gl.UNPACK_SKIP_ROWS, minY );
|
|
3174
|
+
_gl.pixelStorei( _gl.UNPACK_SKIP_IMAGES, minZ );
|
|
3175
|
+
|
|
3176
|
+
// set up the src texture
|
|
3177
|
+
const isSrc3D = srcTexture.isDataArrayTexture || srcTexture.isData3DTexture;
|
|
3178
|
+
const isDst3D = dstTexture.isDataArrayTexture || dstTexture.isData3DTexture;
|
|
3179
|
+
if ( srcTexture.isDepthTexture ) {
|
|
3180
|
+
|
|
3181
|
+
const srcTextureProperties = properties.get( srcTexture );
|
|
3182
|
+
const dstTextureProperties = properties.get( dstTexture );
|
|
3183
|
+
const srcRenderTargetProperties = properties.get( srcTextureProperties.__renderTarget );
|
|
3184
|
+
const dstRenderTargetProperties = properties.get( dstTextureProperties.__renderTarget );
|
|
3185
|
+
state.bindFramebuffer( _gl.READ_FRAMEBUFFER, srcRenderTargetProperties.__webglFramebuffer );
|
|
3186
|
+
state.bindFramebuffer( _gl.DRAW_FRAMEBUFFER, dstRenderTargetProperties.__webglFramebuffer );
|
|
3187
|
+
|
|
3188
|
+
for ( let i = 0; i < depth; i ++ ) {
|
|
2481
3189
|
|
|
2482
|
-
|
|
3190
|
+
// if the source or destination are a 3d target then a layer needs to be bound
|
|
3191
|
+
if ( isSrc3D ) {
|
|
3192
|
+
|
|
3193
|
+
_gl.framebufferTextureLayer( _gl.READ_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, properties.get( srcTexture ).__webglTexture, srcLevel, minZ + i );
|
|
3194
|
+
_gl.framebufferTextureLayer( _gl.DRAW_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, properties.get( dstTexture ).__webglTexture, dstLevel, dstZ + i );
|
|
3195
|
+
|
|
3196
|
+
}
|
|
3197
|
+
|
|
3198
|
+
_gl.blitFramebuffer( minX, minY, width, height, dstX, dstY, width, height, _gl.DEPTH_BUFFER_BIT, _gl.NEAREST );
|
|
3199
|
+
|
|
3200
|
+
}
|
|
2483
3201
|
|
|
2484
|
-
|
|
3202
|
+
state.bindFramebuffer( _gl.READ_FRAMEBUFFER, null );
|
|
3203
|
+
state.bindFramebuffer( _gl.DRAW_FRAMEBUFFER, null );
|
|
3204
|
+
|
|
3205
|
+
} else if ( srcLevel !== 0 || srcTexture.isRenderTargetTexture || properties.has( srcTexture ) ) {
|
|
3206
|
+
|
|
3207
|
+
// get the appropriate frame buffers
|
|
3208
|
+
const srcTextureProperties = properties.get( srcTexture );
|
|
3209
|
+
const dstTextureProperties = properties.get( dstTexture );
|
|
3210
|
+
|
|
3211
|
+
// bind the frame buffer targets
|
|
3212
|
+
state.bindFramebuffer( _gl.READ_FRAMEBUFFER, _srcFramebuffer );
|
|
3213
|
+
state.bindFramebuffer( _gl.DRAW_FRAMEBUFFER, _dstFramebuffer );
|
|
3214
|
+
|
|
3215
|
+
for ( let i = 0; i < depth; i ++ ) {
|
|
3216
|
+
|
|
3217
|
+
// assign the correct layers and mip maps to the frame buffers
|
|
3218
|
+
if ( isSrc3D ) {
|
|
3219
|
+
|
|
3220
|
+
_gl.framebufferTextureLayer( _gl.READ_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, srcTextureProperties.__webglTexture, srcLevel, minZ + i );
|
|
3221
|
+
|
|
3222
|
+
} else {
|
|
3223
|
+
|
|
3224
|
+
_gl.framebufferTexture2D( _gl.READ_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_2D, srcTextureProperties.__webglTexture, srcLevel );
|
|
3225
|
+
|
|
3226
|
+
}
|
|
3227
|
+
|
|
3228
|
+
if ( isDst3D ) {
|
|
3229
|
+
|
|
3230
|
+
_gl.framebufferTextureLayer( _gl.DRAW_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, dstTextureProperties.__webglTexture, dstLevel, dstZ + i );
|
|
3231
|
+
|
|
3232
|
+
} else {
|
|
3233
|
+
|
|
3234
|
+
_gl.framebufferTexture2D( _gl.DRAW_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_2D, dstTextureProperties.__webglTexture, dstLevel );
|
|
3235
|
+
|
|
3236
|
+
}
|
|
3237
|
+
|
|
3238
|
+
// copy the data using the fastest function that can achieve the copy
|
|
3239
|
+
if ( srcLevel !== 0 ) {
|
|
3240
|
+
|
|
3241
|
+
_gl.blitFramebuffer( minX, minY, width, height, dstX, dstY, width, height, _gl.COLOR_BUFFER_BIT, _gl.NEAREST );
|
|
3242
|
+
|
|
3243
|
+
} else if ( isDst3D ) {
|
|
3244
|
+
|
|
3245
|
+
_gl.copyTexSubImage3D( glTarget, dstLevel, dstX, dstY, dstZ + i, minX, minY, width, height );
|
|
3246
|
+
|
|
3247
|
+
} else {
|
|
3248
|
+
|
|
3249
|
+
_gl.copyTexSubImage2D( glTarget, dstLevel, dstX, dstY, minX, minY, width, height );
|
|
3250
|
+
|
|
3251
|
+
}
|
|
3252
|
+
|
|
3253
|
+
}
|
|
3254
|
+
|
|
3255
|
+
// unbind read, draw buffers
|
|
3256
|
+
state.bindFramebuffer( _gl.READ_FRAMEBUFFER, null );
|
|
3257
|
+
state.bindFramebuffer( _gl.DRAW_FRAMEBUFFER, null );
|
|
2485
3258
|
|
|
2486
3259
|
} else {
|
|
2487
3260
|
|
|
2488
|
-
if (
|
|
3261
|
+
if ( isDst3D ) {
|
|
3262
|
+
|
|
3263
|
+
// copy data into the 3d texture
|
|
3264
|
+
if ( srcTexture.isDataTexture || srcTexture.isData3DTexture ) {
|
|
3265
|
+
|
|
3266
|
+
_gl.texSubImage3D( glTarget, dstLevel, dstX, dstY, dstZ, width, height, depth, glFormat, glType, image.data );
|
|
3267
|
+
|
|
3268
|
+
} else if ( dstTexture.isCompressedArrayTexture ) {
|
|
3269
|
+
|
|
3270
|
+
_gl.compressedTexSubImage3D( glTarget, dstLevel, dstX, dstY, dstZ, width, height, depth, glFormat, image.data );
|
|
3271
|
+
|
|
3272
|
+
} else {
|
|
3273
|
+
|
|
3274
|
+
_gl.texSubImage3D( glTarget, dstLevel, dstX, dstY, dstZ, width, height, depth, glFormat, glType, image );
|
|
2489
3275
|
|
|
2490
|
-
|
|
2491
|
-
_gl.compressedTexSubImage3D( glTarget, level, position.x, position.y, position.z, width, height, depth, glFormat, image.data );
|
|
3276
|
+
}
|
|
2492
3277
|
|
|
2493
3278
|
} else {
|
|
2494
3279
|
|
|
2495
|
-
|
|
3280
|
+
// copy data into the 2d texture
|
|
3281
|
+
if ( srcTexture.isDataTexture ) {
|
|
3282
|
+
|
|
3283
|
+
_gl.texSubImage2D( _gl.TEXTURE_2D, dstLevel, dstX, dstY, width, height, glFormat, glType, image.data );
|
|
3284
|
+
|
|
3285
|
+
} else if ( srcTexture.isCompressedTexture ) {
|
|
3286
|
+
|
|
3287
|
+
_gl.compressedTexSubImage2D( _gl.TEXTURE_2D, dstLevel, dstX, dstY, image.width, image.height, glFormat, image.data );
|
|
3288
|
+
|
|
3289
|
+
} else {
|
|
3290
|
+
|
|
3291
|
+
_gl.texSubImage2D( _gl.TEXTURE_2D, dstLevel, dstX, dstY, width, height, glFormat, glType, image );
|
|
3292
|
+
|
|
3293
|
+
}
|
|
2496
3294
|
|
|
2497
3295
|
}
|
|
2498
3296
|
|
|
2499
3297
|
}
|
|
2500
3298
|
|
|
2501
|
-
|
|
2502
|
-
_gl.pixelStorei( _gl.
|
|
2503
|
-
_gl.pixelStorei( _gl.
|
|
2504
|
-
_gl.pixelStorei( _gl.
|
|
2505
|
-
_gl.pixelStorei( _gl.
|
|
3299
|
+
// reset values
|
|
3300
|
+
_gl.pixelStorei( _gl.UNPACK_ROW_LENGTH, currentUnpackRowLen );
|
|
3301
|
+
_gl.pixelStorei( _gl.UNPACK_IMAGE_HEIGHT, currentUnpackImageHeight );
|
|
3302
|
+
_gl.pixelStorei( _gl.UNPACK_SKIP_PIXELS, currentUnpackSkipPixels );
|
|
3303
|
+
_gl.pixelStorei( _gl.UNPACK_SKIP_ROWS, currentUnpackSkipRows );
|
|
3304
|
+
_gl.pixelStorei( _gl.UNPACK_SKIP_IMAGES, currentUnpackSkipImages );
|
|
2506
3305
|
|
|
2507
3306
|
// Generate mipmaps only when copying level 0
|
|
2508
|
-
if (
|
|
3307
|
+
if ( dstLevel === 0 && dstTexture.generateMipmaps ) {
|
|
3308
|
+
|
|
3309
|
+
_gl.generateMipmap( glTarget );
|
|
3310
|
+
|
|
3311
|
+
}
|
|
2509
3312
|
|
|
2510
3313
|
state.unbindTexture();
|
|
2511
3314
|
|
|
2512
3315
|
};
|
|
2513
3316
|
|
|
3317
|
+
/**
|
|
3318
|
+
* Initializes the given WebGLRenderTarget memory. Useful for initializing a render target so data
|
|
3319
|
+
* can be copied into it using {@link WebGLRenderer#copyTextureToTexture} before it has been
|
|
3320
|
+
* rendered to.
|
|
3321
|
+
*
|
|
3322
|
+
* @param {WebGLRenderTarget} target - The render target.
|
|
3323
|
+
*/
|
|
3324
|
+
this.initRenderTarget = function ( target ) {
|
|
3325
|
+
|
|
3326
|
+
if ( properties.get( target ).__webglFramebuffer === undefined ) {
|
|
3327
|
+
|
|
3328
|
+
textures.setupRenderTarget( target );
|
|
3329
|
+
|
|
3330
|
+
}
|
|
3331
|
+
|
|
3332
|
+
};
|
|
3333
|
+
|
|
3334
|
+
/**
|
|
3335
|
+
* Initializes the given texture. Useful for preloading a texture rather than waiting until first
|
|
3336
|
+
* render (which can cause noticeable lags due to decode and GPU upload overhead).
|
|
3337
|
+
*
|
|
3338
|
+
* @param {Texture} texture - The texture.
|
|
3339
|
+
*/
|
|
2514
3340
|
this.initTexture = function ( texture ) {
|
|
2515
3341
|
|
|
2516
3342
|
if ( texture.isCubeTexture ) {
|
|
@@ -2535,6 +3361,11 @@ class WebGLRenderer {
|
|
|
2535
3361
|
|
|
2536
3362
|
};
|
|
2537
3363
|
|
|
3364
|
+
/**
|
|
3365
|
+
* Can be used to reset the internal WebGL state. This method is mostly
|
|
3366
|
+
* relevant for applications which share a single WebGL context across
|
|
3367
|
+
* multiple WebGL libraries.
|
|
3368
|
+
*/
|
|
2538
3369
|
this.resetState = function () {
|
|
2539
3370
|
|
|
2540
3371
|
_currentActiveCubeFace = 0;
|
|
@@ -2554,12 +3385,27 @@ class WebGLRenderer {
|
|
|
2554
3385
|
|
|
2555
3386
|
}
|
|
2556
3387
|
|
|
3388
|
+
/**
|
|
3389
|
+
* Defines the coordinate system of the renderer.
|
|
3390
|
+
*
|
|
3391
|
+
* In `WebGLRenderer`, the value is always `WebGLCoordinateSystem`.
|
|
3392
|
+
*
|
|
3393
|
+
* @type {WebGLCoordinateSystem|WebGPUCoordinateSystem}
|
|
3394
|
+
* @default WebGLCoordinateSystem
|
|
3395
|
+
* @readonly
|
|
3396
|
+
*/
|
|
2557
3397
|
get coordinateSystem() {
|
|
2558
3398
|
|
|
2559
3399
|
return WebGLCoordinateSystem;
|
|
2560
3400
|
|
|
2561
3401
|
}
|
|
2562
3402
|
|
|
3403
|
+
/**
|
|
3404
|
+
* Defines the output color space of the renderer.
|
|
3405
|
+
*
|
|
3406
|
+
* @type {SRGBColorSpace|LinearSRGBColorSpace}
|
|
3407
|
+
* @default SRGBColorSpace
|
|
3408
|
+
*/
|
|
2563
3409
|
get outputColorSpace() {
|
|
2564
3410
|
|
|
2565
3411
|
return this._outputColorSpace;
|
|
@@ -2571,40 +3417,98 @@ class WebGLRenderer {
|
|
|
2571
3417
|
this._outputColorSpace = colorSpace;
|
|
2572
3418
|
|
|
2573
3419
|
const gl = this.getContext();
|
|
2574
|
-
gl.drawingBufferColorSpace = colorSpace
|
|
2575
|
-
gl.unpackColorSpace = ColorManagement.
|
|
2576
|
-
|
|
2577
|
-
}
|
|
2578
|
-
|
|
2579
|
-
get outputEncoding() { // @deprecated, r152
|
|
2580
|
-
|
|
2581
|
-
console.warn( 'THREE.WebGLRenderer: Property .outputEncoding has been removed. Use .outputColorSpace instead.' );
|
|
2582
|
-
return this.outputColorSpace === SRGBColorSpace ? sRGBEncoding : LinearEncoding;
|
|
2583
|
-
|
|
2584
|
-
}
|
|
2585
|
-
|
|
2586
|
-
set outputEncoding( encoding ) { // @deprecated, r152
|
|
2587
|
-
|
|
2588
|
-
console.warn( 'THREE.WebGLRenderer: Property .outputEncoding has been removed. Use .outputColorSpace instead.' );
|
|
2589
|
-
this.outputColorSpace = encoding === sRGBEncoding ? SRGBColorSpace : LinearSRGBColorSpace;
|
|
2590
|
-
|
|
2591
|
-
}
|
|
2592
|
-
|
|
2593
|
-
get useLegacyLights() { // @deprecated, r155
|
|
2594
|
-
|
|
2595
|
-
console.warn( 'THREE.WebGLRenderer: The property .useLegacyLights has been deprecated. Migrate your lighting according to the following guide: https://discourse.threejs.org/t/updates-to-lighting-in-three-js-r155/53733.' );
|
|
2596
|
-
return this._useLegacyLights;
|
|
2597
|
-
|
|
2598
|
-
}
|
|
2599
|
-
|
|
2600
|
-
set useLegacyLights( value ) { // @deprecated, r155
|
|
2601
|
-
|
|
2602
|
-
console.warn( 'THREE.WebGLRenderer: The property .useLegacyLights has been deprecated. Migrate your lighting according to the following guide: https://discourse.threejs.org/t/updates-to-lighting-in-three-js-r155/53733.' );
|
|
2603
|
-
this._useLegacyLights = value;
|
|
3420
|
+
gl.drawingBufferColorSpace = ColorManagement._getDrawingBufferColorSpace( colorSpace );
|
|
3421
|
+
gl.unpackColorSpace = ColorManagement._getUnpackColorSpace();
|
|
2604
3422
|
|
|
2605
3423
|
}
|
|
2606
3424
|
|
|
2607
3425
|
}
|
|
2608
3426
|
|
|
3427
|
+
// JSDoc
|
|
3428
|
+
|
|
3429
|
+
/**
|
|
3430
|
+
* WebGLRenderer options.
|
|
3431
|
+
*
|
|
3432
|
+
* @typedef {Object} WebGLRenderer~Options
|
|
3433
|
+
* @property {HTMLCanvasElement|OffscreenCanvas} [canvas=null] - A canvas element where the renderer draws its output. If not passed in here, a new canvas element will be created by the renderer.
|
|
3434
|
+
* @property {WebGL2RenderingContext} [context=null] - Can be used to attach an existing rendering context to this renderer.
|
|
3435
|
+
* @property {('highp'|'mediump'|'lowp')} [precision='highp'] - The default shader precision. Uses `highp` if supported by the device.
|
|
3436
|
+
* @property {boolean} [alpha=false] - Controls the default clear alpha value. When set to`true`, the value is `0`. Otherwise it's `1`.
|
|
3437
|
+
* @property {boolean} [premultipliedAlpha=true] Whether the renderer will assume colors have premultiplied alpha or not.
|
|
3438
|
+
* @property {boolean} [antialias=false] Whether to use the default MSAA or not.
|
|
3439
|
+
* @property {boolean} [stencil=false] Whether the drawing buffer has a stencil buffer of at least 8 bits or not.
|
|
3440
|
+
* @property {boolean} [preserveDrawingBuffer=false] Whether to preserve the buffer until manually cleared or overwritten.
|
|
3441
|
+
* @property {('default'|'low-power'|'high-performance')} [powerPreference='default'] Provides a hint to the user agent indicating what configuration of GPU is suitable for this WebGL context.
|
|
3442
|
+
* @property {boolean} [failIfMajorPerformanceCaveat=false] Whether the renderer creation will fail upon low performance is detected.
|
|
3443
|
+
* @property {boolean} [depth=true] Whether the drawing buffer has a depth buffer of at least 16 bits.
|
|
3444
|
+
* @property {boolean} [logarithmicDepthBuffer=false] Whether to use a logarithmic depth buffer. It may be necessary to use this if dealing with huge differences in scale in a single scene.
|
|
3445
|
+
* Note that this setting uses `gl_FragDepth` if available which disables the Early Fragment Test optimization and can cause a decrease in performance.
|
|
3446
|
+
* @property {boolean} [reversedDepthBuffer=false] Whether to use a reverse depth buffer. Requires the `EXT_clip_control` extension.
|
|
3447
|
+
* This is a more faster and accurate version than logarithmic depth buffer.
|
|
3448
|
+
**/
|
|
3449
|
+
|
|
3450
|
+
/**
|
|
3451
|
+
* WebGLRenderer Capabilities.
|
|
3452
|
+
*
|
|
3453
|
+
* @typedef {Object} WebGLRenderer~Capabilities
|
|
3454
|
+
* @property {Function} getMaxAnisotropy - Returns the maximum available anisotropy.
|
|
3455
|
+
* @property {Function} getMaxPrecision - Returns the maximum available precision for vertex and fragment shaders.
|
|
3456
|
+
* @property {boolean} logarithmicDepthBuffer - `true` if `logarithmicDepthBuffer` was set to `true` in the constructor.
|
|
3457
|
+
* @property {number} maxAttributes - The number of shader attributes that can be used by the vertex shader.
|
|
3458
|
+
* @property {number} maxCubemapSize - Maximum height * width of cube map textures that a shader can use.
|
|
3459
|
+
* @property {number} maxFragmentUniforms - The number of uniforms that can be used by a fragment shader.
|
|
3460
|
+
* @property {number} maxSamples - Maximum number of samples in context of Multisample anti-aliasing (MSAA).
|
|
3461
|
+
* @property {number} maxTextures - The maximum number of textures that can be used by a shader.
|
|
3462
|
+
* @property {number} maxTextureSize - Maximum height * width of a texture that a shader use.
|
|
3463
|
+
* @property {number} maxVaryings - The number of varying vectors that can used by shaders.
|
|
3464
|
+
* @property {number} maxVertexTextures - The number of textures that can be used in a vertex shader.
|
|
3465
|
+
* @property {number} maxVertexUniforms - The maximum number of uniforms that can be used in a vertex shader.
|
|
3466
|
+
* @property {string} precision - The shader precision currently being used by the renderer.
|
|
3467
|
+
* @property {boolean} reversedDepthBuffer - `true` if `reversedDepthBuffer` was set to `true` in the constructor
|
|
3468
|
+
* and the rendering context supports `EXT_clip_control`.
|
|
3469
|
+
* @property {boolean} vertexTextures - `true` if vertex textures can be used.
|
|
3470
|
+
**/
|
|
3471
|
+
|
|
3472
|
+
/**
|
|
3473
|
+
* WebGLRenderer Info Memory
|
|
3474
|
+
*
|
|
3475
|
+
* @typedef {Object} WebGLRenderer~InfoMemory
|
|
3476
|
+
* @property {number} geometries - The number of active geometries.
|
|
3477
|
+
* @property {number} textures - The number of active textures.
|
|
3478
|
+
**/
|
|
3479
|
+
|
|
3480
|
+
/**
|
|
3481
|
+
* WebGLRenderer Info Render
|
|
3482
|
+
*
|
|
3483
|
+
* @typedef {Object} WebGLRenderer~InfoRender
|
|
3484
|
+
* @property {number} frame - The frame ID.
|
|
3485
|
+
* @property {number} calls - The number of draw calls per frame.
|
|
3486
|
+
* @property {number} triangles - The number of rendered triangles primitives per frame.
|
|
3487
|
+
* @property {number} points - The number of rendered points primitives per frame.
|
|
3488
|
+
* @property {number} lines - The number of rendered lines primitives per frame.
|
|
3489
|
+
**/
|
|
3490
|
+
|
|
3491
|
+
/**
|
|
3492
|
+
* WebGLRenderer Info
|
|
3493
|
+
*
|
|
3494
|
+
* @typedef {Object} WebGLRenderer~Info
|
|
3495
|
+
* @property {boolean} [autoReset=true] - Whether to automatically reset the info by the renderer or not.
|
|
3496
|
+
* @property {WebGLRenderer~InfoMemory} memory - Information about allocated objects.
|
|
3497
|
+
* @property {WebGLRenderer~InfoRender} render - Information about rendered objects.
|
|
3498
|
+
* @property {?Array<WebGLProgram>} programs - An array `WebGLProgram`s used for rendering.
|
|
3499
|
+
* @property {Function} reset - Resets the info object for the next frame.
|
|
3500
|
+
**/
|
|
3501
|
+
|
|
3502
|
+
/**
|
|
3503
|
+
* WebGLRenderer Shadow Map.
|
|
3504
|
+
*
|
|
3505
|
+
* @typedef {Object} WebGLRenderer~ShadowMap
|
|
3506
|
+
* @property {boolean} [enabled=false] - If set to `true`, use shadow maps in the scene.
|
|
3507
|
+
* @property {boolean} [autoUpdate=true] - Enables automatic updates to the shadows in the scene.
|
|
3508
|
+
* If you do not require dynamic lighting / shadows, you may set this to `false`.
|
|
3509
|
+
* @property {boolean} [needsUpdate=false] - When set to `true`, shadow maps in the scene
|
|
3510
|
+
* will be updated in the next `render` call.
|
|
3511
|
+
* @property {(BasicShadowMap|PCFShadowMap|PCFSoftShadowMap|VSMShadowMap)} [type=PCFShadowMap] - Defines the shadow map type.
|
|
3512
|
+
**/
|
|
2609
3513
|
|
|
2610
3514
|
export { WebGLRenderer };
|