@driftengine/core 3.61.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +202 -0
- package/NOTICE +9 -0
- package/README.md +9 -0
- package/dist/behavior/behaviorTree.d.ts +140 -0
- package/dist/behavior/behaviorTree.js +289 -0
- package/dist/build/shaderComments.d.ts +64 -0
- package/dist/build/shaderComments.js +0 -0
- package/dist/cinematic/player.d.ts +80 -0
- package/dist/cinematic/player.js +184 -0
- package/dist/cinematic/script.d.ts +63 -0
- package/dist/cinematic/script.js +141 -0
- package/dist/core/bootGate.d.ts +37 -0
- package/dist/core/bootGate.js +47 -0
- package/dist/core/loadTracker.d.ts +78 -0
- package/dist/core/loadTracker.js +106 -0
- package/dist/core/loop.d.ts +118 -0
- package/dist/core/loop.js +84 -0
- package/dist/core/messageQueue.d.ts +61 -0
- package/dist/core/messageQueue.js +104 -0
- package/dist/core/onceSet.d.ts +27 -0
- package/dist/core/onceSet.js +62 -0
- package/dist/core/preferences.d.ts +47 -0
- package/dist/core/preferences.js +140 -0
- package/dist/core/remoteSave.d.ts +154 -0
- package/dist/core/remoteSave.js +249 -0
- package/dist/core/rng.d.ts +64 -0
- package/dist/core/rng.js +72 -0
- package/dist/core/stepBudget.d.ts +91 -0
- package/dist/core/stepBudget.js +105 -0
- package/dist/core/storage.d.ts +52 -0
- package/dist/core/storage.js +85 -0
- package/dist/core/tickTrace.d.ts +72 -0
- package/dist/core/tickTrace.js +102 -0
- package/dist/core/timeCurve.d.ts +83 -0
- package/dist/core/timeCurve.js +107 -0
- package/dist/core/withDefaults.d.ts +21 -0
- package/dist/core/withDefaults.js +29 -0
- package/dist/dev/contactProbe.d.ts +41 -0
- package/dist/dev/contactProbe.js +58 -0
- package/dist/dev/fpsMeter.d.ts +45 -0
- package/dist/dev/fpsMeter.js +86 -0
- package/dist/environment/celestialClock.d.ts +141 -0
- package/dist/environment/celestialClock.js +262 -0
- package/dist/geometry/decal.d.ts +61 -0
- package/dist/geometry/decal.js +178 -0
- package/dist/geometry/filmPatch.d.ts +35 -0
- package/dist/geometry/filmPatch.js +112 -0
- package/dist/geometry/growable.d.ts +70 -0
- package/dist/geometry/growable.js +167 -0
- package/dist/geometry/lightVolume.d.ts +76 -0
- package/dist/geometry/lightVolume.js +65 -0
- package/dist/geometry/meshBuilder.d.ts +426 -0
- package/dist/geometry/meshBuilder.js +1184 -0
- package/dist/geometry/pixelFont.d.ts +59 -0
- package/dist/geometry/pixelFont.js +179 -0
- package/dist/geometry/ribbon.d.ts +101 -0
- package/dist/geometry/ribbon.js +546 -0
- package/dist/geometry/shellFill.d.ts +101 -0
- package/dist/geometry/shellFill.js +203 -0
- package/dist/geometry/spline.d.ts +162 -0
- package/dist/geometry/spline.js +527 -0
- package/dist/geometry/tangents.d.ts +30 -0
- package/dist/geometry/tangents.js +142 -0
- package/dist/geometry/textMesh.d.ts +51 -0
- package/dist/geometry/textMesh.js +57 -0
- package/dist/geometry/treeBuilder.d.ts +37 -0
- package/dist/geometry/treeBuilder.js +56 -0
- package/dist/host/display.d.ts +135 -0
- package/dist/host/display.js +114 -0
- package/dist/host/files.d.ts +25 -0
- package/dist/host/files.js +44 -0
- package/dist/host/lifecycle.d.ts +45 -0
- package/dist/host/lifecycle.js +28 -0
- package/dist/host/platformServices.d.ts +23 -0
- package/dist/host/platformServices.js +1 -0
- package/dist/host/screen.d.ts +49 -0
- package/dist/host/screen.js +90 -0
- package/dist/index.d.ts +289 -0
- package/dist/index.js +320 -0
- package/dist/input/actionMap.d.ts +181 -0
- package/dist/input/actionMap.js +314 -0
- package/dist/input/activeDevice.d.ts +55 -0
- package/dist/input/activeDevice.js +83 -0
- package/dist/input/gamepadIdentity.d.ts +43 -0
- package/dist/input/gamepadIdentity.js +108 -0
- package/dist/input/gamepadMapping.d.ts +56 -0
- package/dist/input/gamepadMapping.js +91 -0
- package/dist/input/input.d.ts +281 -0
- package/dist/input/input.js +703 -0
- package/dist/input/inputHarness.d.ts +42 -0
- package/dist/input/inputHarness.js +193 -0
- package/dist/input/rightGesture.d.ts +57 -0
- package/dist/input/rightGesture.js +49 -0
- package/dist/input/rumble.d.ts +71 -0
- package/dist/input/rumble.js +119 -0
- package/dist/input/touchControls.d.ts +138 -0
- package/dist/input/touchControls.js +352 -0
- package/dist/input/typingTarget.d.ts +6 -0
- package/dist/input/typingTarget.js +27 -0
- package/dist/math/bounds.d.ts +61 -0
- package/dist/math/bounds.js +121 -0
- package/dist/math/color.d.ts +8 -0
- package/dist/math/color.js +35 -0
- package/dist/math/exact.d.ts +66 -0
- package/dist/math/exact.js +262 -0
- package/dist/math/frustum.d.ts +44 -0
- package/dist/math/frustum.js +90 -0
- package/dist/math/intersect.d.ts +76 -0
- package/dist/math/intersect.js +185 -0
- package/dist/math/scalar.d.ts +51 -0
- package/dist/math/scalar.js +99 -0
- package/dist/math/spring.d.ts +59 -0
- package/dist/math/spring.js +88 -0
- package/dist/nav/navGraph.d.ts +71 -0
- package/dist/nav/navGraph.js +111 -0
- package/dist/nav/navPath.d.ts +93 -0
- package/dist/nav/navPath.js +162 -0
- package/dist/nav/navSearch.d.ts +74 -0
- package/dist/nav/navSearch.js +198 -0
- package/dist/physics/boxSurface.d.ts +48 -0
- package/dist/physics/boxSurface.js +73 -0
- package/dist/physics/colliderSurface.d.ts +46 -0
- package/dist/physics/colliderSurface.js +146 -0
- package/dist/physics/compositeSurface.d.ts +33 -0
- package/dist/physics/compositeSurface.js +108 -0
- package/dist/physics/heightSurface.d.ts +103 -0
- package/dist/physics/heightSurface.js +153 -0
- package/dist/physics/ribbonSurface.d.ts +239 -0
- package/dist/physics/ribbonSurface.js +522 -0
- package/dist/render/ambientOcclusionPass.d.ts +53 -0
- package/dist/render/ambientOcclusionPass.js +179 -0
- package/dist/render/areaLights.d.ts +116 -0
- package/dist/render/areaLights.js +91 -0
- package/dist/render/areaShadowSet.d.ts +184 -0
- package/dist/render/areaShadowSet.js +277 -0
- package/dist/render/atmosphere.d.ts +94 -0
- package/dist/render/atmosphere.js +91 -0
- package/dist/render/backend/api.d.ts +496 -0
- package/dist/render/backend/api.js +1 -0
- package/dist/render/backend/budget.d.ts +82 -0
- package/dist/render/backend/budget.js +99 -0
- package/dist/render/backend/createRenderer.d.ts +135 -0
- package/dist/render/backend/createRenderer.js +201 -0
- package/dist/render/backend/deadline.d.ts +24 -0
- package/dist/render/backend/deadline.js +38 -0
- package/dist/render/backend/probe.d.ts +30 -0
- package/dist/render/backend/probe.js +129 -0
- package/dist/render/backend/select.d.ts +70 -0
- package/dist/render/backend/select.js +249 -0
- package/dist/render/backend/timer.d.ts +50 -0
- package/dist/render/backend/timer.js +1 -0
- package/dist/render/backend/webgl2/instanced.d.ts +21 -0
- package/dist/render/backend/webgl2/instanced.js +42 -0
- package/dist/render/backend/webgl2/morphTexture.d.ts +21 -0
- package/dist/render/backend/webgl2/morphTexture.js +55 -0
- package/dist/render/backend/webgl2/renderer.d.ts +3027 -0
- package/dist/render/backend/webgl2/renderer.js +6041 -0
- package/dist/render/backend/webgl2/skinPaletteTexture.d.ts +32 -0
- package/dist/render/backend/webgl2/skinPaletteTexture.js +68 -0
- package/dist/render/backend/webgpu/boltPass.d.ts +42 -0
- package/dist/render/backend/webgpu/boltPass.js +160 -0
- package/dist/render/backend/webgpu/buffers.d.ts +159 -0
- package/dist/render/backend/webgpu/buffers.js +402 -0
- package/dist/render/backend/webgpu/causticsPass.d.ts +36 -0
- package/dist/render/backend/webgpu/causticsPass.js +138 -0
- package/dist/render/backend/webgpu/clusterBinner.d.ts +51 -0
- package/dist/render/backend/webgpu/clusterBinner.js +206 -0
- package/dist/render/backend/webgpu/depthPass.d.ts +114 -0
- package/dist/render/backend/webgpu/depthPass.js +228 -0
- package/dist/render/backend/webgpu/device.d.ts +52 -0
- package/dist/render/backend/webgpu/device.js +121 -0
- package/dist/render/backend/webgpu/drawCommand.d.ts +43 -0
- package/dist/render/backend/webgpu/drawCommand.js +54 -0
- package/dist/render/backend/webgpu/environmentTexels.d.ts +28 -0
- package/dist/render/backend/webgpu/environmentTexels.js +79 -0
- package/dist/render/backend/webgpu/filmPass.d.ts +29 -0
- package/dist/render/backend/webgpu/filmPass.js +97 -0
- package/dist/render/backend/webgpu/flatPass.d.ts +213 -0
- package/dist/render/backend/webgpu/flatPass.js +482 -0
- package/dist/render/backend/webgpu/flockPass.d.ts +34 -0
- package/dist/render/backend/webgpu/flockPass.js +129 -0
- package/dist/render/backend/webgpu/gpuTimestamps.d.ts +94 -0
- package/dist/render/backend/webgpu/gpuTimestamps.js +213 -0
- package/dist/render/backend/webgpu/insetPass.d.ts +19 -0
- package/dist/render/backend/webgpu/insetPass.js +108 -0
- package/dist/render/backend/webgpu/instanced.d.ts +27 -0
- package/dist/render/backend/webgpu/instanced.js +49 -0
- package/dist/render/backend/webgpu/lightVolumePass.d.ts +75 -0
- package/dist/render/backend/webgpu/lightVolumePass.js +154 -0
- package/dist/render/backend/webgpu/linePass.d.ts +90 -0
- package/dist/render/backend/webgpu/linePass.js +220 -0
- package/dist/render/backend/webgpu/morphTexture.d.ts +18 -0
- package/dist/render/backend/webgpu/morphTexture.js +51 -0
- package/dist/render/backend/webgpu/panelPass.d.ts +37 -0
- package/dist/render/backend/webgpu/panelPass.js +114 -0
- package/dist/render/backend/webgpu/particlePass.d.ts +89 -0
- package/dist/render/backend/webgpu/particlePass.js +280 -0
- package/dist/render/backend/webgpu/pipelineCache.d.ts +93 -0
- package/dist/render/backend/webgpu/pipelineCache.js +140 -0
- package/dist/render/backend/webgpu/plumePass.d.ts +69 -0
- package/dist/render/backend/webgpu/plumePass.js +213 -0
- package/dist/render/backend/webgpu/pointShadowPass.d.ts +88 -0
- package/dist/render/backend/webgpu/pointShadowPass.js +280 -0
- package/dist/render/backend/webgpu/postPass.d.ts +342 -0
- package/dist/render/backend/webgpu/postPass.js +366 -0
- package/dist/render/backend/webgpu/probePass.d.ts +108 -0
- package/dist/render/backend/webgpu/probePass.js +188 -0
- package/dist/render/backend/webgpu/reflectionPass.d.ts +29 -0
- package/dist/render/backend/webgpu/reflectionPass.js +87 -0
- package/dist/render/backend/webgpu/renderer.d.ts +3082 -0
- package/dist/render/backend/webgpu/renderer.js +10911 -0
- package/dist/render/backend/webgpu/scatterPass.d.ts +95 -0
- package/dist/render/backend/webgpu/scatterPass.js +266 -0
- package/dist/render/backend/webgpu/sdfTextPass.d.ts +86 -0
- package/dist/render/backend/webgpu/sdfTextPass.js +190 -0
- package/dist/render/backend/webgpu/shaderModules.d.ts +9 -0
- package/dist/render/backend/webgpu/shaderModules.js +45 -0
- package/dist/render/backend/webgpu/shaders/clusterBin.wgsl.d.ts +23 -0
- package/dist/render/backend/webgpu/shaders/clusterBin.wgsl.js +208 -0
- package/dist/render/backend/webgpu/skinPaletteRing.d.ts +67 -0
- package/dist/render/backend/webgpu/skinPaletteRing.js +97 -0
- package/dist/render/backend/webgpu/skinPaletteTexture.d.ts +17 -0
- package/dist/render/backend/webgpu/skinPaletteTexture.js +68 -0
- package/dist/render/backend/webgpu/skyPass.d.ts +102 -0
- package/dist/render/backend/webgpu/skyPass.js +70 -0
- package/dist/render/backend/webgpu/surfaceTexturePass.d.ts +41 -0
- package/dist/render/backend/webgpu/surfaceTexturePass.js +228 -0
- package/dist/render/backend/webgpu/textPass.d.ts +73 -0
- package/dist/render/backend/webgpu/textPass.js +190 -0
- package/dist/render/backend/webgpu/uniformRing.d.ts +133 -0
- package/dist/render/backend/webgpu/uniformRing.js +208 -0
- package/dist/render/backend/webgpu/waterPass.d.ts +73 -0
- package/dist/render/backend/webgpu/waterPass.js +160 -0
- package/dist/render/backend/webgpu/windStreakPass.d.ts +46 -0
- package/dist/render/backend/webgpu/windStreakPass.js +153 -0
- package/dist/render/billboard.d.ts +27 -0
- package/dist/render/billboard.js +79 -0
- package/dist/render/bloomChain.d.ts +66 -0
- package/dist/render/bloomChain.js +83 -0
- package/dist/render/bloomPass.d.ts +54 -0
- package/dist/render/bloomPass.js +219 -0
- package/dist/render/boltBatch.d.ts +39 -0
- package/dist/render/boltBatch.js +121 -0
- package/dist/render/boltPool.d.ts +135 -0
- package/dist/render/boltPool.js +259 -0
- package/dist/render/boom.d.ts +46 -0
- package/dist/render/boom.js +81 -0
- package/dist/render/camera.d.ts +119 -0
- package/dist/render/camera.js +304 -0
- package/dist/render/causticsRenderer.d.ts +63 -0
- package/dist/render/causticsRenderer.js +119 -0
- package/dist/render/cinematicCamera.d.ts +102 -0
- package/dist/render/cinematicCamera.js +227 -0
- package/dist/render/clusteredLights.d.ts +260 -0
- package/dist/render/clusteredLights.js +479 -0
- package/dist/render/colourGrade.d.ts +62 -0
- package/dist/render/colourGrade.js +91 -0
- package/dist/render/compute.d.ts +74 -0
- package/dist/render/compute.js +8 -0
- package/dist/render/contextLoss.d.ts +32 -0
- package/dist/render/contextLoss.js +46 -0
- package/dist/render/debugLines.d.ts +75 -0
- package/dist/render/debugLines.js +281 -0
- package/dist/render/decalPass.d.ts +34 -0
- package/dist/render/decalPass.js +103 -0
- package/dist/render/decalProjector.d.ts +140 -0
- package/dist/render/decalProjector.js +282 -0
- package/dist/render/decalQueue.d.ts +53 -0
- package/dist/render/decalQueue.js +87 -0
- package/dist/render/depthConvention.d.ts +314 -0
- package/dist/render/depthConvention.js +346 -0
- package/dist/render/drawingBuffer.d.ts +52 -0
- package/dist/render/drawingBuffer.js +67 -0
- package/dist/render/emptyTexture.d.ts +60 -0
- package/dist/render/emptyTexture.js +103 -0
- package/dist/render/envProbeArray.d.ts +85 -0
- package/dist/render/envProbeArray.js +164 -0
- package/dist/render/equirectToCube.d.ts +54 -0
- package/dist/render/equirectToCube.js +123 -0
- package/dist/render/flockGeometry.d.ts +23 -0
- package/dist/render/flockGeometry.js +43 -0
- package/dist/render/flockRenderer.d.ts +37 -0
- package/dist/render/flockRenderer.js +70 -0
- package/dist/render/frame/arena.d.ts +32 -0
- package/dist/render/frame/arena.js +65 -0
- package/dist/render/frame/index.d.ts +18 -0
- package/dist/render/frame/index.js +4 -0
- package/dist/render/frame/replay.d.ts +34 -0
- package/dist/render/frame/replay.js +48 -0
- package/dist/render/frame/resources.d.ts +25 -0
- package/dist/render/frame/resources.js +55 -0
- package/dist/render/frame/schedule.d.ts +37 -0
- package/dist/render/frame/schedule.js +61 -0
- package/dist/render/frameView.d.ts +19 -0
- package/dist/render/frameView.js +1 -0
- package/dist/render/gizmo.d.ts +236 -0
- package/dist/render/gizmo.js +727 -0
- package/dist/render/globalMedium.d.ts +124 -0
- package/dist/render/globalMedium.js +100 -0
- package/dist/render/globalMediumPass.d.ts +101 -0
- package/dist/render/globalMediumPass.js +250 -0
- package/dist/render/gpuCapability.d.ts +111 -0
- package/dist/render/gpuCapability.js +194 -0
- package/dist/render/gpuTimer.d.ts +87 -0
- package/dist/render/gpuTimer.js +145 -0
- package/dist/render/halfFloat.d.ts +4 -0
- package/dist/render/halfFloat.js +38 -0
- package/dist/render/handleRegistry.d.ts +54 -0
- package/dist/render/handleRegistry.js +84 -0
- package/dist/render/iesProfile.d.ts +64 -0
- package/dist/render/iesProfile.js +179 -0
- package/dist/render/imageTexels.d.ts +50 -0
- package/dist/render/imageTexels.js +91 -0
- package/dist/render/instancedMesh.d.ts +48 -0
- package/dist/render/instancedMesh.js +127 -0
- package/dist/render/instances.d.ts +69 -0
- package/dist/render/instances.js +52 -0
- package/dist/render/lightBudget.d.ts +397 -0
- package/dist/render/lightBudget.js +524 -0
- package/dist/render/lightMatrix.d.ts +3 -0
- package/dist/render/lightMatrix.js +45 -0
- package/dist/render/lightVolumeDraw.d.ts +132 -0
- package/dist/render/lightVolumeDraw.js +181 -0
- package/dist/render/lineBatch.d.ts +60 -0
- package/dist/render/lineBatch.js +160 -0
- package/dist/render/linePoints.d.ts +33 -0
- package/dist/render/linePoints.js +46 -0
- package/dist/render/livePointShadowSet.d.ts +72 -0
- package/dist/render/livePointShadowSet.js +258 -0
- package/dist/render/lod.d.ts +35 -0
- package/dist/render/lod.js +65 -0
- package/dist/render/mesh.d.ts +177 -0
- package/dist/render/mesh.js +466 -0
- package/dist/render/occlusion.d.ts +81 -0
- package/dist/render/occlusion.js +378 -0
- package/dist/render/oitPass.d.ts +67 -0
- package/dist/render/oitPass.js +213 -0
- package/dist/render/orderIndependent.d.ts +92 -0
- package/dist/render/orderIndependent.js +108 -0
- package/dist/render/particleBatch.d.ts +140 -0
- package/dist/render/particleBatch.js +186 -0
- package/dist/render/particleMaterial.d.ts +54 -0
- package/dist/render/particleMaterial.js +42 -0
- package/dist/render/particlePool.d.ts +124 -0
- package/dist/render/particlePool.js +182 -0
- package/dist/render/pass.d.ts +195 -0
- package/dist/render/pass.js +9 -0
- package/dist/render/passTarget.d.ts +86 -0
- package/dist/render/passTarget.js +121 -0
- package/dist/render/pickable.d.ts +31 -0
- package/dist/render/pickable.js +172 -0
- package/dist/render/planarReflection.d.ts +59 -0
- package/dist/render/planarReflection.js +194 -0
- package/dist/render/planarReflectionDraw.d.ts +31 -0
- package/dist/render/planarReflectionDraw.js +65 -0
- package/dist/render/plumeGeometry.d.ts +25 -0
- package/dist/render/plumeGeometry.js +61 -0
- package/dist/render/plumeMaterial.d.ts +31 -0
- package/dist/render/plumeMaterial.js +64 -0
- package/dist/render/plumeRenderer.d.ts +96 -0
- package/dist/render/plumeRenderer.js +185 -0
- package/dist/render/pointLightSelection.d.ts +175 -0
- package/dist/render/pointLightSelection.js +301 -0
- package/dist/render/pointShadowArray.d.ts +95 -0
- package/dist/render/pointShadowArray.js +219 -0
- package/dist/render/pointShadowBudget.d.ts +118 -0
- package/dist/render/pointShadowBudget.js +221 -0
- package/dist/render/pointShadowImage.d.ts +265 -0
- package/dist/render/pointShadowImage.js +339 -0
- package/dist/render/pointShadowMap.d.ts +93 -0
- package/dist/render/pointShadowMap.js +167 -0
- package/dist/render/pointShadowSystem.d.ts +195 -0
- package/dist/render/pointShadowSystem.js +336 -0
- package/dist/render/prefilterEnvMap.d.ts +124 -0
- package/dist/render/prefilterEnvMap.js +146 -0
- package/dist/render/prefilterPass.d.ts +44 -0
- package/dist/render/prefilterPass.js +98 -0
- package/dist/render/probeGrid.d.ts +122 -0
- package/dist/render/probeGrid.js +174 -0
- package/dist/render/rainField.d.ts +99 -0
- package/dist/render/rainField.js +168 -0
- package/dist/render/reflectionProbe.d.ts +188 -0
- package/dist/render/reflectionProbe.js +437 -0
- package/dist/render/renderQuality.d.ts +699 -0
- package/dist/render/renderQuality.js +293 -0
- package/dist/render/rendererHarness.d.ts +39 -0
- package/dist/render/rendererHarness.js +185 -0
- package/dist/render/resolutionGovernor.d.ts +107 -0
- package/dist/render/resolutionGovernor.js +144 -0
- package/dist/render/scatterDeform.d.ts +17 -0
- package/dist/render/scatterDeform.js +46 -0
- package/dist/render/sceneTarget.d.ts +288 -0
- package/dist/render/sceneTarget.js +856 -0
- package/dist/render/screenSpaceReflection.d.ts +233 -0
- package/dist/render/screenSpaceReflection.js +415 -0
- package/dist/render/sdfFont.d.ts +77 -0
- package/dist/render/sdfFont.js +86 -0
- package/dist/render/sdfTextLayout.d.ts +46 -0
- package/dist/render/sdfTextLayout.js +145 -0
- package/dist/render/sdfTextRenderer.d.ts +75 -0
- package/dist/render/sdfTextRenderer.js +194 -0
- package/dist/render/seaState.d.ts +25 -0
- package/dist/render/seaState.js +34 -0
- package/dist/render/segmentQuads.d.ts +29 -0
- package/dist/render/segmentQuads.js +75 -0
- package/dist/render/shader.d.ts +5 -0
- package/dist/render/shader.js +172 -0
- package/dist/render/shaders/ambientOcclusion.d.ts +45 -0
- package/dist/render/shaders/ambientOcclusion.js +352 -0
- package/dist/render/shaders/arcane.d.ts +19 -0
- package/dist/render/shaders/arcane.js +102 -0
- package/dist/render/shaders/bloom.d.ts +70 -0
- package/dist/render/shaders/bloom.js +227 -0
- package/dist/render/shaders/bolt.d.ts +17 -0
- package/dist/render/shaders/bolt.js +161 -0
- package/dist/render/shaders/caustics.d.ts +38 -0
- package/dist/render/shaders/caustics.js +167 -0
- package/dist/render/shaders/conditionals.d.ts +21 -0
- package/dist/render/shaders/conditionals.js +55 -0
- package/dist/render/shaders/decalProject.d.ts +25 -0
- package/dist/render/shaders/decalProject.js +125 -0
- package/dist/render/shaders/depth.d.ts +14 -0
- package/dist/render/shaders/depth.js +114 -0
- package/dist/render/shaders/depthOfField.d.ts +41 -0
- package/dist/render/shaders/depthOfField.js +139 -0
- package/dist/render/shaders/film.d.ts +15 -0
- package/dist/render/shaders/film.js +283 -0
- package/dist/render/shaders/fire.d.ts +12 -0
- package/dist/render/shaders/fire.js +178 -0
- package/dist/render/shaders/flat/directionalShadow.d.ts +1 -0
- package/dist/render/shaders/flat/directionalShadow.js +195 -0
- package/dist/render/shaders/flat/index.d.ts +135 -0
- package/dist/render/shaders/flat/index.js +387 -0
- package/dist/render/shaders/flat/lobes.d.ts +1 -0
- package/dist/render/shaders/flat/lobes.js +398 -0
- package/dist/render/shaders/flat/main.d.ts +2 -0
- package/dist/render/shaders/flat/main.js +1630 -0
- package/dist/render/shaders/flat/pointShadow.d.ts +1 -0
- package/dist/render/shaders/flat/pointShadow.js +322 -0
- package/dist/render/shaders/flat/preamble.d.ts +15 -0
- package/dist/render/shaders/flat/preamble.js +864 -0
- package/dist/render/shaders/flat/probeGrid.d.ts +21 -0
- package/dist/render/shaders/flat/probeGrid.js +151 -0
- package/dist/render/shaders/flat/surface.d.ts +2 -0
- package/dist/render/shaders/flat/surface.js +40 -0
- package/dist/render/shaders/flock.d.ts +11 -0
- package/dist/render/shaders/flock.js +102 -0
- package/dist/render/shaders/fog.d.ts +37 -0
- package/dist/render/shaders/fog.js +98 -0
- package/dist/render/shaders/fullscreen.d.ts +16 -0
- package/dist/render/shaders/fullscreen.js +27 -0
- package/dist/render/shaders/generated/ambientOcclusion.wgsl.d.ts +65 -0
- package/dist/render/shaders/generated/ambientOcclusion.wgsl.js +71 -0
- package/dist/render/shaders/generated/arcane.wgsl.d.ts +90 -0
- package/dist/render/shaders/generated/arcane.wgsl.js +96 -0
- package/dist/render/shaders/generated/bloom.wgsl.d.ts +69 -0
- package/dist/render/shaders/generated/bloom.wgsl.js +75 -0
- package/dist/render/shaders/generated/bolt.wgsl.d.ts +118 -0
- package/dist/render/shaders/generated/bolt.wgsl.js +124 -0
- package/dist/render/shaders/generated/caustics.wgsl.d.ts +118 -0
- package/dist/render/shaders/generated/caustics.wgsl.js +124 -0
- package/dist/render/shaders/generated/decalProject.wgsl.d.ts +61 -0
- package/dist/render/shaders/generated/decalProject.wgsl.js +67 -0
- package/dist/render/shaders/generated/depth.wgsl.d.ts +131 -0
- package/dist/render/shaders/generated/depth.wgsl.js +137 -0
- package/dist/render/shaders/generated/film.wgsl.d.ts +134 -0
- package/dist/render/shaders/generated/film.wgsl.js +140 -0
- package/dist/render/shaders/generated/fire.wgsl.d.ts +128 -0
- package/dist/render/shaders/generated/fire.wgsl.js +134 -0
- package/dist/render/shaders/generated/flat.wgsl.d.ts +9163 -0
- package/dist/render/shaders/generated/flat.wgsl.js +9192 -0
- package/dist/render/shaders/generated/flock.wgsl.d.ts +73 -0
- package/dist/render/shaders/generated/flock.wgsl.js +79 -0
- package/dist/render/shaders/generated/fullscreen.wgsl.d.ts +12 -0
- package/dist/render/shaders/generated/fullscreen.wgsl.js +18 -0
- package/dist/render/shaders/generated/globalMedium.wgsl.d.ts +130 -0
- package/dist/render/shaders/generated/globalMedium.wgsl.js +136 -0
- package/dist/render/shaders/generated/lightVolume.wgsl.d.ts +230 -0
- package/dist/render/shaders/generated/lightVolume.wgsl.js +239 -0
- package/dist/render/shaders/generated/line.wgsl.d.ts +128 -0
- package/dist/render/shaders/generated/line.wgsl.js +134 -0
- package/dist/render/shaders/generated/octahedralResolve.wgsl.d.ts +51 -0
- package/dist/render/shaders/generated/octahedralResolve.wgsl.js +57 -0
- package/dist/render/shaders/generated/oitResolve.wgsl.d.ts +23 -0
- package/dist/render/shaders/generated/oitResolve.wgsl.js +29 -0
- package/dist/render/shaders/generated/panel.wgsl.d.ts +48 -0
- package/dist/render/shaders/generated/panel.wgsl.js +54 -0
- package/dist/render/shaders/generated/particle.wgsl.d.ts +332 -0
- package/dist/render/shaders/generated/particle.wgsl.js +338 -0
- package/dist/render/shaders/generated/prefilter.wgsl.d.ts +61 -0
- package/dist/render/shaders/generated/prefilter.wgsl.js +67 -0
- package/dist/render/shaders/generated/rush.wgsl.d.ts +131 -0
- package/dist/render/shaders/generated/rush.wgsl.js +137 -0
- package/dist/render/shaders/generated/scatter.wgsl.d.ts +195 -0
- package/dist/render/shaders/generated/scatter.wgsl.js +201 -0
- package/dist/render/shaders/generated/sdfText.wgsl.d.ts +69 -0
- package/dist/render/shaders/generated/sdfText.wgsl.js +75 -0
- package/dist/render/shaders/generated/sky.wgsl.d.ts +100 -0
- package/dist/render/shaders/generated/sky.wgsl.js +106 -0
- package/dist/render/shaders/generated/smoke.wgsl.d.ts +85 -0
- package/dist/render/shaders/generated/smoke.wgsl.js +91 -0
- package/dist/render/shaders/generated/ssrResolve.wgsl.d.ts +18 -0
- package/dist/render/shaders/generated/ssrResolve.wgsl.js +24 -0
- package/dist/render/shaders/generated/ssrTrace.wgsl.d.ts +86 -0
- package/dist/render/shaders/generated/ssrTrace.wgsl.js +92 -0
- package/dist/render/shaders/generated/temporalResolve.wgsl.d.ts +46 -0
- package/dist/render/shaders/generated/temporalResolve.wgsl.js +52 -0
- package/dist/render/shaders/generated/text.wgsl.d.ts +98 -0
- package/dist/render/shaders/generated/text.wgsl.js +104 -0
- package/dist/render/shaders/generated/water.wgsl.d.ts +247 -0
- package/dist/render/shaders/generated/water.wgsl.js +253 -0
- package/dist/render/shaders/generated/windStreaks.wgsl.d.ts +73 -0
- package/dist/render/shaders/generated/windStreaks.wgsl.js +79 -0
- package/dist/render/shaders/gerstner.d.ts +21 -0
- package/dist/render/shaders/gerstner.js +110 -0
- package/dist/render/shaders/globalMedium.d.ts +56 -0
- package/dist/render/shaders/globalMedium.js +393 -0
- package/dist/render/shaders/lightVolume.d.ts +61 -0
- package/dist/render/shaders/lightVolume.js +527 -0
- package/dist/render/shaders/line.d.ts +18 -0
- package/dist/render/shaders/line.js +122 -0
- package/dist/render/shaders/morph.d.ts +26 -0
- package/dist/render/shaders/morph.js +61 -0
- package/dist/render/shaders/octahedral.d.ts +76 -0
- package/dist/render/shaders/octahedral.js +161 -0
- package/dist/render/shaders/octahedralResolve.d.ts +25 -0
- package/dist/render/shaders/octahedralResolve.js +81 -0
- package/dist/render/shaders/oitResolve.d.ts +17 -0
- package/dist/render/shaders/oitResolve.js +42 -0
- package/dist/render/shaders/outputTransform.d.ts +37 -0
- package/dist/render/shaders/outputTransform.js +106 -0
- package/dist/render/shaders/panel.d.ts +17 -0
- package/dist/render/shaders/panel.js +50 -0
- package/dist/render/shaders/particle.d.ts +82 -0
- package/dist/render/shaders/particle.js +431 -0
- package/dist/render/shaders/prefilter.d.ts +37 -0
- package/dist/render/shaders/prefilter.js +276 -0
- package/dist/render/shaders/rush.d.ts +21 -0
- package/dist/render/shaders/rush.js +355 -0
- package/dist/render/shaders/scatter.d.ts +14 -0
- package/dist/render/shaders/scatter.js +206 -0
- package/dist/render/shaders/sdfText.d.ts +9 -0
- package/dist/render/shaders/sdfText.js +65 -0
- package/dist/render/shaders/skinning.d.ts +17 -0
- package/dist/render/shaders/skinning.js +59 -0
- package/dist/render/shaders/sky.d.ts +10 -0
- package/dist/render/shaders/sky.js +242 -0
- package/dist/render/shaders/smoke.d.ts +8 -0
- package/dist/render/shaders/smoke.js +88 -0
- package/dist/render/shaders/ssrResolve.d.ts +15 -0
- package/dist/render/shaders/ssrResolve.js +28 -0
- package/dist/render/shaders/ssrTrace.d.ts +22 -0
- package/dist/render/shaders/ssrTrace.js +230 -0
- package/dist/render/shaders/tangentFrame.d.ts +17 -0
- package/dist/render/shaders/tangentFrame.js +70 -0
- package/dist/render/shaders/temporalResolve.d.ts +1 -0
- package/dist/render/shaders/temporalResolve.js +150 -0
- package/dist/render/shaders/text.d.ts +17 -0
- package/dist/render/shaders/text.js +155 -0
- package/dist/render/shaders/vertexChannel.d.ts +39 -0
- package/dist/render/shaders/vertexChannel.js +69 -0
- package/dist/render/shaders/water.d.ts +18 -0
- package/dist/render/shaders/water.js +354 -0
- package/dist/render/shaders/windStreaks.d.ts +14 -0
- package/dist/render/shaders/windStreaks.js +129 -0
- package/dist/render/shadowCasters.d.ts +107 -0
- package/dist/render/shadowCasters.js +1 -0
- package/dist/render/shadowMap.d.ts +10 -0
- package/dist/render/shadowMap.js +80 -0
- package/dist/render/shotPlacement.d.ts +80 -0
- package/dist/render/shotPlacement.js +183 -0
- package/dist/render/skinPalette.d.ts +90 -0
- package/dist/render/skinPalette.js +136 -0
- package/dist/render/ssrPass.d.ts +59 -0
- package/dist/render/ssrPass.js +196 -0
- package/dist/render/surfaceSheet.d.ts +52 -0
- package/dist/render/surfaceSheet.js +99 -0
- package/dist/render/surfaceTexture.d.ts +197 -0
- package/dist/render/surfaceTexture.js +116 -0
- package/dist/render/temporalAa.d.ts +104 -0
- package/dist/render/temporalAa.js +194 -0
- package/dist/render/temporalPass.d.ts +54 -0
- package/dist/render/temporalPass.js +135 -0
- package/dist/render/textLayout.d.ts +88 -0
- package/dist/render/textLayout.js +201 -0
- package/dist/render/textRenderer.d.ts +32 -0
- package/dist/render/textRenderer.js +176 -0
- package/dist/render/thirdPersonCamera.d.ts +272 -0
- package/dist/render/thirdPersonCamera.js +479 -0
- package/dist/render/trample.d.ts +57 -0
- package/dist/render/trample.js +134 -0
- package/dist/render/translucentQueue.d.ts +76 -0
- package/dist/render/translucentQueue.js +90 -0
- package/dist/render/uniformVectorBudget.d.ts +105 -0
- package/dist/render/uniformVectorBudget.js +201 -0
- package/dist/render/uploadStep.d.ts +14 -0
- package/dist/render/uploadStep.js +14 -0
- package/dist/render/vertexDefaults.d.ts +48 -0
- package/dist/render/vertexDefaults.js +111 -0
- package/dist/render/visibility.d.ts +22 -0
- package/dist/render/visibility.js +47 -0
- package/dist/render/waterDraw.d.ts +57 -0
- package/dist/render/waterDraw.js +102 -0
- package/dist/render/waterGrid.d.ts +62 -0
- package/dist/render/waterGrid.js +151 -0
- package/dist/render/waterRenderer.d.ts +163 -0
- package/dist/render/waterRenderer.js +165 -0
- package/dist/render/wind.d.ts +45 -0
- package/dist/render/wind.js +32 -0
- package/dist/render/windField.d.ts +34 -0
- package/dist/render/windField.js +13 -0
- package/dist/render/windStreakDraw.d.ts +73 -0
- package/dist/render/windStreakDraw.js +86 -0
- package/dist/render/windStreakRenderer.d.ts +37 -0
- package/dist/render/windStreakRenderer.js +86 -0
- package/dist/scene/node.d.ts +128 -0
- package/dist/scene/node.js +319 -0
- package/dist/scene/visit.d.ts +38 -0
- package/dist/scene/visit.js +43 -0
- package/dist/ui/clipMime.d.ts +46 -0
- package/dist/ui/clipMime.js +88 -0
- package/dist/ui/exportTarget.d.ts +305 -0
- package/dist/ui/exportTarget.js +368 -0
- package/dist/ui/frameOverlay.d.ts +59 -0
- package/dist/ui/frameOverlay.js +76 -0
- package/dist/ui/framePacer.d.ts +142 -0
- package/dist/ui/framePacer.js +284 -0
- package/dist/ui/frameRecorder.d.ts +188 -0
- package/dist/ui/frameRecorder.js +221 -0
- package/dist/ui/fullscreen.d.ts +72 -0
- package/dist/ui/fullscreen.js +92 -0
- package/dist/ui/pixelCursor.d.ts +28 -0
- package/dist/ui/pixelCursor.js +66 -0
- package/dist/ui/splash.d.ts +86 -0
- package/dist/ui/splash.js +300 -0
- package/dist/ui/stillFrame.d.ts +22 -0
- package/dist/ui/stillFrame.js +40 -0
- package/package.json +60 -0
- package/src/behavior/behaviorTree.ts +346 -0
- package/src/build/shaderComments.ts +0 -0
- package/src/cinematic/player.ts +209 -0
- package/src/cinematic/script.ts +231 -0
- package/src/core/bootGate.ts +49 -0
- package/src/core/loadTracker.ts +144 -0
- package/src/core/loop.ts +211 -0
- package/src/core/messageQueue.ts +145 -0
- package/src/core/onceSet.ts +65 -0
- package/src/core/preferences.ts +177 -0
- package/src/core/remoteSave.ts +347 -0
- package/src/core/rng.ts +101 -0
- package/src/core/stepBudget.ts +136 -0
- package/src/core/storage.ts +114 -0
- package/src/core/tickTrace.ts +129 -0
- package/src/core/timeCurve.ts +175 -0
- package/src/core/withDefaults.ts +28 -0
- package/src/dev/contactProbe.ts +115 -0
- package/src/dev/fpsMeter.ts +101 -0
- package/src/environment/celestialClock.ts +385 -0
- package/src/geometry/decal.ts +260 -0
- package/src/geometry/filmPatch.ts +158 -0
- package/src/geometry/growable.ts +165 -0
- package/src/geometry/lightVolume.ts +161 -0
- package/src/geometry/meshBuilder.ts +1397 -0
- package/src/geometry/pixelFont.ts +189 -0
- package/src/geometry/ribbon.ts +790 -0
- package/src/geometry/shellFill.ts +265 -0
- package/src/geometry/spline.ts +659 -0
- package/src/geometry/tangents.ts +173 -0
- package/src/geometry/textMesh.ts +96 -0
- package/src/geometry/treeBuilder.ts +114 -0
- package/src/host/display.ts +180 -0
- package/src/host/files.ts +77 -0
- package/src/host/lifecycle.ts +63 -0
- package/src/host/platformServices.ts +23 -0
- package/src/host/screen.ts +134 -0
- package/src/index.ts +730 -0
- package/src/input/actionMap.ts +377 -0
- package/src/input/activeDevice.ts +86 -0
- package/src/input/gamepadIdentity.ts +131 -0
- package/src/input/gamepadMapping.ts +121 -0
- package/src/input/input.ts +872 -0
- package/src/input/inputHarness.ts +226 -0
- package/src/input/rightGesture.ts +76 -0
- package/src/input/rumble.ts +138 -0
- package/src/input/touchControls.ts +451 -0
- package/src/input/typingTarget.ts +26 -0
- package/src/math/bounds.ts +153 -0
- package/src/math/color.ts +37 -0
- package/src/math/exact.ts +274 -0
- package/src/math/frustum.ts +115 -0
- package/src/math/intersect.ts +228 -0
- package/src/math/scalar.ts +109 -0
- package/src/math/spring.ts +106 -0
- package/src/nav/navGraph.ts +168 -0
- package/src/nav/navPath.ts +217 -0
- package/src/nav/navSearch.ts +200 -0
- package/src/physics/boxSurface.ts +96 -0
- package/src/physics/colliderSurface.ts +213 -0
- package/src/physics/compositeSurface.ts +111 -0
- package/src/physics/heightSurface.ts +234 -0
- package/src/physics/ribbonSurface.ts +642 -0
- package/src/render/ambientOcclusionPass.ts +200 -0
- package/src/render/areaLights.ts +194 -0
- package/src/render/areaShadowSet.ts +405 -0
- package/src/render/atmosphere.ts +186 -0
- package/src/render/backend/api.ts +802 -0
- package/src/render/backend/budget.ts +139 -0
- package/src/render/backend/createRenderer.ts +343 -0
- package/src/render/backend/deadline.ts +37 -0
- package/src/render/backend/probe.ts +152 -0
- package/src/render/backend/select.ts +288 -0
- package/src/render/backend/timer.ts +59 -0
- package/src/render/backend/webgl2/instanced.ts +46 -0
- package/src/render/backend/webgl2/morphTexture.ts +58 -0
- package/src/render/backend/webgl2/renderer.ts +7484 -0
- package/src/render/backend/webgl2/skinPaletteTexture.ts +70 -0
- package/src/render/backend/webgpu/boltPass.ts +205 -0
- package/src/render/backend/webgpu/buffers.ts +553 -0
- package/src/render/backend/webgpu/causticsPass.ts +174 -0
- package/src/render/backend/webgpu/clusterBinner.ts +259 -0
- package/src/render/backend/webgpu/depthPass.ts +261 -0
- package/src/render/backend/webgpu/device.ts +148 -0
- package/src/render/backend/webgpu/drawCommand.ts +79 -0
- package/src/render/backend/webgpu/environmentTexels.ts +96 -0
- package/src/render/backend/webgpu/filmPass.ts +123 -0
- package/src/render/backend/webgpu/flatPass.ts +635 -0
- package/src/render/backend/webgpu/flockPass.ts +163 -0
- package/src/render/backend/webgpu/gpuTimestamps.ts +255 -0
- package/src/render/backend/webgpu/insetPass.ts +123 -0
- package/src/render/backend/webgpu/instanced.ts +55 -0
- package/src/render/backend/webgpu/lightVolumePass.ts +203 -0
- package/src/render/backend/webgpu/linePass.ts +270 -0
- package/src/render/backend/webgpu/morphTexture.ts +61 -0
- package/src/render/backend/webgpu/panelPass.ts +138 -0
- package/src/render/backend/webgpu/particlePass.ts +370 -0
- package/src/render/backend/webgpu/pipelineCache.ts +152 -0
- package/src/render/backend/webgpu/plumePass.ts +292 -0
- package/src/render/backend/webgpu/pointShadowPass.ts +368 -0
- package/src/render/backend/webgpu/postPass.ts +470 -0
- package/src/render/backend/webgpu/probePass.ts +218 -0
- package/src/render/backend/webgpu/reflectionPass.ts +137 -0
- package/src/render/backend/webgpu/renderer.ts +13004 -0
- package/src/render/backend/webgpu/scatterPass.ts +354 -0
- package/src/render/backend/webgpu/sdfTextPass.ts +220 -0
- package/src/render/backend/webgpu/shaderModules.ts +49 -0
- package/src/render/backend/webgpu/shaders/clusterBin.wgsl.ts +219 -0
- package/src/render/backend/webgpu/skinPaletteRing.ts +105 -0
- package/src/render/backend/webgpu/skinPaletteTexture.ts +79 -0
- package/src/render/backend/webgpu/skyPass.ts +85 -0
- package/src/render/backend/webgpu/surfaceTexturePass.ts +257 -0
- package/src/render/backend/webgpu/textPass.ts +224 -0
- package/src/render/backend/webgpu/uniformRing.ts +228 -0
- package/src/render/backend/webgpu/waterPass.ts +211 -0
- package/src/render/backend/webgpu/windStreakPass.ts +196 -0
- package/src/render/billboard.ts +108 -0
- package/src/render/bloomChain.ts +101 -0
- package/src/render/bloomPass.ts +256 -0
- package/src/render/boltBatch.ts +141 -0
- package/src/render/boltPool.ts +360 -0
- package/src/render/boom.ts +123 -0
- package/src/render/camera.ts +348 -0
- package/src/render/causticsRenderer.ts +171 -0
- package/src/render/cinematicCamera.ts +278 -0
- package/src/render/clusteredLights.ts +598 -0
- package/src/render/colourGrade.ts +109 -0
- package/src/render/compute.ts +83 -0
- package/src/render/contextLoss.ts +50 -0
- package/src/render/debugLines.ts +411 -0
- package/src/render/decalPass.ts +124 -0
- package/src/render/decalProjector.ts +390 -0
- package/src/render/decalQueue.ts +110 -0
- package/src/render/depthConvention.ts +383 -0
- package/src/render/drawingBuffer.ts +89 -0
- package/src/render/emptyTexture.ts +130 -0
- package/src/render/envProbeArray.ts +201 -0
- package/src/render/equirectToCube.ts +160 -0
- package/src/render/flockGeometry.ts +53 -0
- package/src/render/flockRenderer.ts +111 -0
- package/src/render/frame/arena.ts +93 -0
- package/src/render/frame/index.ts +29 -0
- package/src/render/frame/replay.ts +50 -0
- package/src/render/frame/resources.ts +61 -0
- package/src/render/frame/schedule.ts +85 -0
- package/src/render/frameView.ts +20 -0
- package/src/render/gizmo.ts +923 -0
- package/src/render/globalMedium.ts +154 -0
- package/src/render/globalMediumPass.ts +323 -0
- package/src/render/gpuCapability.ts +244 -0
- package/src/render/gpuTimer.ts +182 -0
- package/src/render/halfFloat.ts +39 -0
- package/src/render/handleRegistry.ts +96 -0
- package/src/render/iesProfile.ts +215 -0
- package/src/render/imageTexels.ts +109 -0
- package/src/render/instancedMesh.ts +187 -0
- package/src/render/instances.ts +92 -0
- package/src/render/lightBudget.ts +655 -0
- package/src/render/lightMatrix.ts +69 -0
- package/src/render/lightVolumeDraw.ts +216 -0
- package/src/render/lineBatch.ts +180 -0
- package/src/render/linePoints.ts +61 -0
- package/src/render/livePointShadowSet.ts +285 -0
- package/src/render/lod.ts +86 -0
- package/src/render/mesh.ts +536 -0
- package/src/render/occlusion.ts +406 -0
- package/src/render/oitPass.ts +230 -0
- package/src/render/orderIndependent.ts +136 -0
- package/src/render/particleBatch.ts +299 -0
- package/src/render/particleMaterial.ts +84 -0
- package/src/render/particlePool.ts +291 -0
- package/src/render/pass.ts +203 -0
- package/src/render/passTarget.ts +225 -0
- package/src/render/pickable.ts +222 -0
- package/src/render/planarReflection.ts +233 -0
- package/src/render/planarReflectionDraw.ts +87 -0
- package/src/render/plumeGeometry.ts +75 -0
- package/src/render/plumeMaterial.ts +99 -0
- package/src/render/plumeRenderer.ts +272 -0
- package/src/render/pointLightSelection.ts +447 -0
- package/src/render/pointShadowArray.ts +276 -0
- package/src/render/pointShadowBudget.ts +305 -0
- package/src/render/pointShadowImage.ts +470 -0
- package/src/render/pointShadowMap.ts +228 -0
- package/src/render/pointShadowSystem.ts +408 -0
- package/src/render/prefilterEnvMap.ts +162 -0
- package/src/render/prefilterPass.ts +115 -0
- package/src/render/probeGrid.ts +248 -0
- package/src/render/rainField.ts +240 -0
- package/src/render/reflectionProbe.ts +530 -0
- package/src/render/renderQuality.ts +1054 -0
- package/src/render/rendererHarness.ts +214 -0
- package/src/render/resolutionGovernor.ts +189 -0
- package/src/render/scatterDeform.ts +72 -0
- package/src/render/sceneTarget.ts +1032 -0
- package/src/render/screenSpaceReflection.ts +524 -0
- package/src/render/sdfFont.ts +157 -0
- package/src/render/sdfTextLayout.ts +206 -0
- package/src/render/sdfTextRenderer.ts +233 -0
- package/src/render/seaState.ts +55 -0
- package/src/render/segmentQuads.ts +92 -0
- package/src/render/shader.ts +190 -0
- package/src/render/shaders/ambientOcclusion.ts +354 -0
- package/src/render/shaders/arcane.ts +103 -0
- package/src/render/shaders/bloom.ts +232 -0
- package/src/render/shaders/bolt.ts +164 -0
- package/src/render/shaders/caustics.ts +169 -0
- package/src/render/shaders/conditionals.ts +58 -0
- package/src/render/shaders/decalProject.ts +127 -0
- package/src/render/shaders/depth.ts +131 -0
- package/src/render/shaders/depthOfField.ts +141 -0
- package/src/render/shaders/film.ts +285 -0
- package/src/render/shaders/fire.ts +180 -0
- package/src/render/shaders/flat/directionalShadow.ts +196 -0
- package/src/render/shaders/flat/index.ts +502 -0
- package/src/render/shaders/flat/lobes.ts +399 -0
- package/src/render/shaders/flat/main.ts +1631 -0
- package/src/render/shaders/flat/pointShadow.ts +323 -0
- package/src/render/shaders/flat/preamble.ts +875 -0
- package/src/render/shaders/flat/probeGrid.ts +152 -0
- package/src/render/shaders/flat/surface.ts +41 -0
- package/src/render/shaders/flock.ts +103 -0
- package/src/render/shaders/fog.ts +99 -0
- package/src/render/shaders/fullscreen.ts +28 -0
- package/src/render/shaders/generated/ambientOcclusion.wgsl.ts +74 -0
- package/src/render/shaders/generated/arcane.wgsl.ts +98 -0
- package/src/render/shaders/generated/bloom.wgsl.ts +79 -0
- package/src/render/shaders/generated/bolt.wgsl.ts +127 -0
- package/src/render/shaders/generated/caustics.wgsl.ts +127 -0
- package/src/render/shaders/generated/decalProject.wgsl.ts +69 -0
- package/src/render/shaders/generated/depth.wgsl.ts +142 -0
- package/src/render/shaders/generated/film.wgsl.ts +143 -0
- package/src/render/shaders/generated/fire.wgsl.ts +137 -0
- package/src/render/shaders/generated/flat.wgsl.ts +9195 -0
- package/src/render/shaders/generated/flock.wgsl.ts +82 -0
- package/src/render/shaders/generated/fullscreen.wgsl.ts +20 -0
- package/src/render/shaders/generated/globalMedium.wgsl.ts +139 -0
- package/src/render/shaders/generated/lightVolume.wgsl.ts +242 -0
- package/src/render/shaders/generated/line.wgsl.ts +137 -0
- package/src/render/shaders/generated/octahedralResolve.wgsl.ts +60 -0
- package/src/render/shaders/generated/oitResolve.wgsl.ts +31 -0
- package/src/render/shaders/generated/panel.wgsl.ts +57 -0
- package/src/render/shaders/generated/particle.wgsl.ts +343 -0
- package/src/render/shaders/generated/prefilter.wgsl.ts +69 -0
- package/src/render/shaders/generated/rush.wgsl.ts +139 -0
- package/src/render/shaders/generated/scatter.wgsl.ts +205 -0
- package/src/render/shaders/generated/sdfText.wgsl.ts +78 -0
- package/src/render/shaders/generated/sky.wgsl.ts +109 -0
- package/src/render/shaders/generated/smoke.wgsl.ts +93 -0
- package/src/render/shaders/generated/ssrResolve.wgsl.ts +26 -0
- package/src/render/shaders/generated/ssrTrace.wgsl.ts +94 -0
- package/src/render/shaders/generated/temporalResolve.wgsl.ts +54 -0
- package/src/render/shaders/generated/text.wgsl.ts +107 -0
- package/src/render/shaders/generated/water.wgsl.ts +256 -0
- package/src/render/shaders/generated/windStreaks.wgsl.ts +82 -0
- package/src/render/shaders/gerstner.ts +110 -0
- package/src/render/shaders/globalMedium.ts +396 -0
- package/src/render/shaders/lightVolume.ts +546 -0
- package/src/render/shaders/line.ts +125 -0
- package/src/render/shaders/morph.ts +62 -0
- package/src/render/shaders/octahedral.ts +170 -0
- package/src/render/shaders/octahedralResolve.ts +83 -0
- package/src/render/shaders/oitResolve.ts +42 -0
- package/src/render/shaders/outputTransform.ts +107 -0
- package/src/render/shaders/panel.ts +51 -0
- package/src/render/shaders/particle.ts +438 -0
- package/src/render/shaders/prefilter.ts +278 -0
- package/src/render/shaders/rush.ts +357 -0
- package/src/render/shaders/scatter.ts +211 -0
- package/src/render/shaders/sdfText.ts +68 -0
- package/src/render/shaders/skinning.ts +59 -0
- package/src/render/shaders/sky.ts +243 -0
- package/src/render/shaders/smoke.ts +89 -0
- package/src/render/shaders/ssrResolve.ts +28 -0
- package/src/render/shaders/ssrTrace.ts +233 -0
- package/src/render/shaders/tangentFrame.ts +70 -0
- package/src/render/shaders/temporalResolve.ts +151 -0
- package/src/render/shaders/text.ts +156 -0
- package/src/render/shaders/vertexChannel.ts +71 -0
- package/src/render/shaders/water.ts +356 -0
- package/src/render/shaders/windStreaks.ts +130 -0
- package/src/render/shadowCasters.ts +124 -0
- package/src/render/shadowMap.ts +89 -0
- package/src/render/shotPlacement.ts +266 -0
- package/src/render/skinPalette.ts +157 -0
- package/src/render/ssrPass.ts +241 -0
- package/src/render/surfaceSheet.ts +158 -0
- package/src/render/surfaceTexture.ts +310 -0
- package/src/render/temporalAa.ts +221 -0
- package/src/render/temporalPass.ts +153 -0
- package/src/render/textLayout.ts +239 -0
- package/src/render/textRenderer.ts +201 -0
- package/src/render/thirdPersonCamera.ts +578 -0
- package/src/render/trample.ts +140 -0
- package/src/render/translucentQueue.ts +161 -0
- package/src/render/uniformVectorBudget.ts +246 -0
- package/src/render/uploadStep.ts +14 -0
- package/src/render/vertexDefaults.ts +115 -0
- package/src/render/visibility.ts +56 -0
- package/src/render/waterDraw.ts +167 -0
- package/src/render/waterGrid.ts +180 -0
- package/src/render/waterRenderer.ts +352 -0
- package/src/render/wind.ts +79 -0
- package/src/render/windField.ts +50 -0
- package/src/render/windStreakDraw.ts +131 -0
- package/src/render/windStreakRenderer.ts +130 -0
- package/src/scene/node.ts +336 -0
- package/src/scene/visit.ts +82 -0
- package/src/ui/clipMime.ts +109 -0
- package/src/ui/exportTarget.ts +491 -0
- package/src/ui/frameOverlay.ts +159 -0
- package/src/ui/framePacer.ts +351 -0
- package/src/ui/frameRecorder.ts +333 -0
- package/src/ui/fullscreen.ts +113 -0
- package/src/ui/pixelCursor.ts +99 -0
- package/src/ui/splash.ts +347 -0
- package/src/ui/stillFrame.ts +44 -0
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
import { mat3 } from 'gl-matrix';
|
|
2
|
+
import { LIVE_POINT_SHADOW_MAPS, POINT_SHADOW_POOL } from '../../lightBudget.js';
|
|
3
|
+
import { OCTAHEDRAL_EDGE } from '../../pointShadowArray.js';
|
|
4
|
+
import { createFaceRange, DEFAULT_SOURCE_RADIUS, FACE_COUNT, POINT_SHADOW_NEAR, PointShadowImage, pointShadowFaceRotation, pointShadowFaceViewProj, } from '../../pointShadowImage.js';
|
|
5
|
+
import { OCTAHEDRAL_RESOLVE_FRAG_WGSL, OCTAHEDRAL_RESOLVE_VERT_WGSL, } from '../../shaders/generated/octahedralResolve.wgsl.js';
|
|
6
|
+
import { SHADOW_FORMAT } from './depthPass.js';
|
|
7
|
+
import { UniformRing } from './uniformRing.js';
|
|
8
|
+
/**
|
|
9
|
+
* A point light's shadow on this device: one octahedral layer, filled a face at a time.
|
|
10
|
+
*
|
|
11
|
+
* **The state is `PointShadowImage`'s and so is every decision in it**, which is what makes
|
|
12
|
+
* this file short: a cube texture, six single-layer views to attach, one cube view to sample,
|
|
13
|
+
* and a loop that opens a pass per face. Six shipped bug fixes come with the image rather than
|
|
14
|
+
* being re-earned here — see that module.
|
|
15
|
+
*
|
|
16
|
+
* **Six passes, not six draws into one.** WebGPU attaches exactly one texture subresource to a
|
|
17
|
+
* depth attachment, so a face is a render pass of its own; the clear that the GL path gets from
|
|
18
|
+
* `gl.clear` is the pass's own `depthClearValue`. The cost is the same either way — the caster
|
|
19
|
+
* set is walked once per face — which is why `pointShadowBudget.ts` exists on both backends.
|
|
20
|
+
*/
|
|
21
|
+
const USAGE_RENDER_ATTACHMENT = 0x10;
|
|
22
|
+
const USAGE_TEXTURE_BINDING = 0x4;
|
|
23
|
+
const USAGE_UNIFORM_DST = 0x40 | 0x8; // UNIFORM | COPY_DST
|
|
24
|
+
const VISIBILITY_FRAGMENT = 0x2;
|
|
25
|
+
/**
|
|
26
|
+
* Slots for one frame's resolves: every pool layer's six faces, which no budget ever reaches.
|
|
27
|
+
*
|
|
28
|
+
* At 256 bytes a slot that is 24 KB of staging for a ceiling nothing approaches — the face
|
|
29
|
+
* budget is a handful a frame — and the alternative is `allocate` returning null and a face
|
|
30
|
+
* silently not landing in its layer.
|
|
31
|
+
*/
|
|
32
|
+
const RESOLVE_SLOTS = (POINT_SHADOW_POOL + LIVE_POINT_SHADOW_MAPS) * FACE_COUNT;
|
|
33
|
+
/** `mat3x3<f32>` then four scalars, at std140's sixteen-byte columns: see the generated struct. */
|
|
34
|
+
const RESOLVE_UNIFORM_SIZE = 64;
|
|
35
|
+
/** Filled per resolved face, at module scope, because a bake runs inside the frame's budget. */
|
|
36
|
+
const faceRotation = mat3.create();
|
|
37
|
+
/** One mat3x3 column, staged so `writeFloats` takes an array without allocating one. */
|
|
38
|
+
const rotationColumn = new Float32Array(3);
|
|
39
|
+
/**
|
|
40
|
+
* Every point light's shadow as one array texture, and the scratch that fills it.
|
|
41
|
+
*
|
|
42
|
+
* The WebGPU half of `pointShadowArray.ts`; the reasoning lives there, and this is one texture,
|
|
43
|
+
* one scratch and a pipeline. **The scratch is a separate texture on this backend too**, and not
|
|
44
|
+
* for WebGL2's reason: WebGPU rejects a pass outright for holding a texture it is also sampling,
|
|
45
|
+
* where WebGL2 raises `INVALID_OPERATION` at the draw. Two ways of saying the same thing, and
|
|
46
|
+
* both say the resolve reads the scratch.
|
|
47
|
+
*/
|
|
48
|
+
export class GpuPointShadowArray {
|
|
49
|
+
/** The array, as the shader samples it. */
|
|
50
|
+
view;
|
|
51
|
+
layers;
|
|
52
|
+
/** Where a face is rendered before it is resolved. One, shared by every light. */
|
|
53
|
+
scratchView;
|
|
54
|
+
texture;
|
|
55
|
+
scratch;
|
|
56
|
+
layerViews = [];
|
|
57
|
+
pipeline;
|
|
58
|
+
bindGroup;
|
|
59
|
+
/**
|
|
60
|
+
* A slot per resolved face, not one buffer written six times.
|
|
61
|
+
*
|
|
62
|
+
* **`queue.writeBuffer` does not interleave with encoded commands.** Writes are ordered on
|
|
63
|
+
* the queue timeline and the encoder is submitted afterwards, so six writes between six
|
|
64
|
+
* passes give all six passes the *last* face's rotation and index — and five of them then
|
|
65
|
+
* discard every fragment, because `uFaceIndex` does not match. The layer stays empty and the
|
|
66
|
+
* light stops casting, which reads as a lighting change rather than as a missing upload.
|
|
67
|
+
*
|
|
68
|
+
* That is the failure `UniformRing` exists for, described in its own header, and this file
|
|
69
|
+
* reproduced it exactly. Found by capturing: WebGPU diverged from WebGL2 by seven times and
|
|
70
|
+
* came out *brighter*, and flipping a coordinate in the resolve changed the frame by not one
|
|
71
|
+
* pixel — which is what an empty map looks like.
|
|
72
|
+
*/
|
|
73
|
+
ring;
|
|
74
|
+
constructor(device, faceSize, lightCount,
|
|
75
|
+
/** Layers above the point pool, for a world's casting rectangles. See `pointShadowArray.ts`. */
|
|
76
|
+
extraLayers = 0) {
|
|
77
|
+
this.layers =
|
|
78
|
+
Math.min(lightCount, POINT_SHADOW_POOL) + LIVE_POINT_SHADOW_MAPS + Math.max(0, extraLayers);
|
|
79
|
+
this.texture = device.createTexture({
|
|
80
|
+
label: 'pointShadow.array',
|
|
81
|
+
size: [OCTAHEDRAL_EDGE, OCTAHEDRAL_EDGE, this.layers],
|
|
82
|
+
format: SHADOW_FORMAT,
|
|
83
|
+
usage: USAGE_RENDER_ATTACHMENT | USAGE_TEXTURE_BINDING,
|
|
84
|
+
});
|
|
85
|
+
this.view = this.texture.createView({ dimension: '2d-array' });
|
|
86
|
+
for (let layer = 0; layer < this.layers; layer++) {
|
|
87
|
+
this.layerViews.push(this.texture.createView({
|
|
88
|
+
label: `pointShadow.layer${layer}`,
|
|
89
|
+
dimension: '2d',
|
|
90
|
+
baseArrayLayer: layer,
|
|
91
|
+
arrayLayerCount: 1,
|
|
92
|
+
}));
|
|
93
|
+
}
|
|
94
|
+
this.scratch = device.createTexture({
|
|
95
|
+
label: 'pointShadow.scratch',
|
|
96
|
+
size: [faceSize, faceSize],
|
|
97
|
+
format: SHADOW_FORMAT,
|
|
98
|
+
usage: USAGE_RENDER_ATTACHMENT | USAGE_TEXTURE_BINDING,
|
|
99
|
+
});
|
|
100
|
+
this.scratchView = this.scratch.createView();
|
|
101
|
+
this.ring = new UniformRing(device, RESOLVE_UNIFORM_SIZE, RESOLVE_SLOTS, USAGE_UNIFORM_DST, 'pointShadow.resolve.uniforms');
|
|
102
|
+
/*
|
|
103
|
+
* `non-filtering` and `unfilterable-float`, matching `flatPass.ts`: the scratch is a depth
|
|
104
|
+
* format, whose supported sample types are UnfilterableFloat and Depth and never plain
|
|
105
|
+
* Float, and nothing here asks the hardware to filter.
|
|
106
|
+
*/
|
|
107
|
+
const layout = device.createBindGroupLayout({
|
|
108
|
+
label: 'pointShadow.resolve.layout',
|
|
109
|
+
entries: [
|
|
110
|
+
{
|
|
111
|
+
binding: 1,
|
|
112
|
+
visibility: VISIBILITY_FRAGMENT,
|
|
113
|
+
buffer: {
|
|
114
|
+
type: 'uniform',
|
|
115
|
+
hasDynamicOffset: true,
|
|
116
|
+
minBindingSize: RESOLVE_UNIFORM_SIZE,
|
|
117
|
+
},
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
binding: 32,
|
|
121
|
+
visibility: VISIBILITY_FRAGMENT,
|
|
122
|
+
texture: { sampleType: 'unfilterable-float' },
|
|
123
|
+
},
|
|
124
|
+
{ binding: 33, visibility: VISIBILITY_FRAGMENT, sampler: { type: 'non-filtering' } },
|
|
125
|
+
],
|
|
126
|
+
});
|
|
127
|
+
this.bindGroup = device.createBindGroup({
|
|
128
|
+
label: 'pointShadow.resolve',
|
|
129
|
+
layout,
|
|
130
|
+
entries: [
|
|
131
|
+
{ binding: 1, resource: { buffer: this.ring.buffer, size: RESOLVE_UNIFORM_SIZE } },
|
|
132
|
+
{ binding: 32, resource: this.scratchView },
|
|
133
|
+
{ binding: 33, resource: device.createSampler({ label: 'pointShadow.resolve.sampler' }) },
|
|
134
|
+
],
|
|
135
|
+
});
|
|
136
|
+
this.pipeline = device.createRenderPipeline({
|
|
137
|
+
label: 'pointShadow.resolve',
|
|
138
|
+
layout: device.createPipelineLayout({ bindGroupLayouts: [layout] }),
|
|
139
|
+
vertex: {
|
|
140
|
+
module: device.createShaderModule({ code: OCTAHEDRAL_RESOLVE_VERT_WGSL }),
|
|
141
|
+
entryPoint: 'main',
|
|
142
|
+
},
|
|
143
|
+
fragment: {
|
|
144
|
+
module: device.createShaderModule({ code: OCTAHEDRAL_RESOLVE_FRAG_WGSL }),
|
|
145
|
+
entryPoint: 'main',
|
|
146
|
+
targets: [],
|
|
147
|
+
},
|
|
148
|
+
primitive: { topology: 'triangle-list' },
|
|
149
|
+
/*
|
|
150
|
+
* `always`, because this is a copy and not a render: the layer holds whatever the previous
|
|
151
|
+
* bake of this light left, and a fragment that lost a comparison would leave half of one
|
|
152
|
+
* image and half of another.
|
|
153
|
+
*/
|
|
154
|
+
depthStencil: { format: SHADOW_FORMAT, depthWriteEnabled: true, depthCompare: 'always' },
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Write the scratch's contents into `layer`'s region for `face`.
|
|
159
|
+
*
|
|
160
|
+
* A pass of its own on the caller's encoder, with `load` rather than `clear`: the other five
|
|
161
|
+
* faces of this layer are already there and must survive. `discard` in the shader is what
|
|
162
|
+
* keeps this face to its own region.
|
|
163
|
+
*/
|
|
164
|
+
resolve(encoder, layer, face, far, near) {
|
|
165
|
+
const view = this.layerViews[layer];
|
|
166
|
+
if (view === undefined)
|
|
167
|
+
return;
|
|
168
|
+
const slot = this.ring.allocate();
|
|
169
|
+
if (slot === null)
|
|
170
|
+
return;
|
|
171
|
+
pointShadowFaceRotation(face, faceRotation);
|
|
172
|
+
/* WGSL pads a mat3x3 to three four-float columns; the generated struct expects that. */
|
|
173
|
+
for (let column = 0; column < 3; column++) {
|
|
174
|
+
rotationColumn[0] = faceRotation[column * 3];
|
|
175
|
+
rotationColumn[1] = faceRotation[column * 3 + 1];
|
|
176
|
+
rotationColumn[2] = faceRotation[column * 3 + 2];
|
|
177
|
+
this.ring.writeFloats(slot, column * 16, rotationColumn);
|
|
178
|
+
}
|
|
179
|
+
this.ring.writeInt(slot, 48, face);
|
|
180
|
+
this.ring.writeFloat(slot, 52, far);
|
|
181
|
+
this.ring.writeFloat(slot, 56, near);
|
|
182
|
+
this.ring.writeFloat(slot, 60, OCTAHEDRAL_EDGE);
|
|
183
|
+
const pass = encoder.beginRenderPass({
|
|
184
|
+
label: 'pointShadow.resolve',
|
|
185
|
+
colorAttachments: [],
|
|
186
|
+
depthStencilAttachment: {
|
|
187
|
+
view,
|
|
188
|
+
depthLoadOp: 'load',
|
|
189
|
+
depthStoreOp: 'store',
|
|
190
|
+
},
|
|
191
|
+
});
|
|
192
|
+
pass.setPipeline(this.pipeline);
|
|
193
|
+
pass.setBindGroup(0, this.bindGroup, [slot]);
|
|
194
|
+
pass.draw(3);
|
|
195
|
+
pass.end();
|
|
196
|
+
}
|
|
197
|
+
/** Start a frame's bakes. See the ring: slots are reused and nothing is freed. */
|
|
198
|
+
beginFrame() {
|
|
199
|
+
this.ring.reset();
|
|
200
|
+
}
|
|
201
|
+
/** Upload every slot this frame's resolves took, in one write, before the encoder is submitted. */
|
|
202
|
+
flush() {
|
|
203
|
+
this.ring.flush();
|
|
204
|
+
}
|
|
205
|
+
dispose() {
|
|
206
|
+
this.texture.destroy();
|
|
207
|
+
this.scratch.destroy();
|
|
208
|
+
this.ring.dispose();
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
export class GpuPointShadowMap {
|
|
212
|
+
size;
|
|
213
|
+
/** Which layer of the shared array this map's image lives in. See `pointShadowMap.ts`. */
|
|
214
|
+
layer;
|
|
215
|
+
array;
|
|
216
|
+
image = new PointShadowImage();
|
|
217
|
+
range = createFaceRange();
|
|
218
|
+
constructor(array, layer, size) {
|
|
219
|
+
this.array = array;
|
|
220
|
+
this.layer = layer;
|
|
221
|
+
this.size = size;
|
|
222
|
+
}
|
|
223
|
+
get far() {
|
|
224
|
+
return this.image.far;
|
|
225
|
+
}
|
|
226
|
+
get near() {
|
|
227
|
+
return this.image.near;
|
|
228
|
+
}
|
|
229
|
+
get sourceRadius() {
|
|
230
|
+
return this.image.sourceRadius;
|
|
231
|
+
}
|
|
232
|
+
get hasBaked() {
|
|
233
|
+
return this.image.hasBaked;
|
|
234
|
+
}
|
|
235
|
+
get presence() {
|
|
236
|
+
return this.image.presence;
|
|
237
|
+
}
|
|
238
|
+
matchesSource(x, y, z, range, near, sourceRadius = DEFAULT_SOURCE_RADIUS, tolerance = 0) {
|
|
239
|
+
return this.image.matchesSource(x, y, z, range, near, sourceRadius, tolerance);
|
|
240
|
+
}
|
|
241
|
+
advance(dt) {
|
|
242
|
+
this.image.advance(dt);
|
|
243
|
+
}
|
|
244
|
+
forget() {
|
|
245
|
+
this.image.forget();
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Render up to `maxFaces` of the six, resuming a bake already under way.
|
|
249
|
+
*
|
|
250
|
+
* Returns how many faces were rendered. `renderFace` is handed the attachment and the face's
|
|
251
|
+
* view-projection and is expected to open a pass and draw the casters into it — the renderer
|
|
252
|
+
* owns the encoder and the pipelines, so it owns the pass.
|
|
253
|
+
*
|
|
254
|
+
* The scratch matrix is the caller's for the same reason `pointShadowFaceViewProj` takes one:
|
|
255
|
+
* this runs once per face of every bake and `AGENTS.md` allows no allocation there.
|
|
256
|
+
*/
|
|
257
|
+
bake(x, y, z, range, renderFace, resolveFace, scratch, near = POINT_SHADOW_NEAR, sourceRadius = DEFAULT_SOURCE_RADIUS, maxFaces = FACE_COUNT) {
|
|
258
|
+
/*
|
|
259
|
+
* What to render now, **and what to render it for**. A bake in flight owns the parameters
|
|
260
|
+
* it started with; the arguments here only propose one that is not already under way. See
|
|
261
|
+
* `planBake` for the permanent artefact reading them unconditionally left in a moving
|
|
262
|
+
* light's map, and `pointShadowMap.ts` for the other backend making the identical call.
|
|
263
|
+
*/
|
|
264
|
+
const plan = this.image.planBake(x, y, z, range, near, sourceRadius, maxFaces, this.range);
|
|
265
|
+
const { first, last } = plan;
|
|
266
|
+
if (last <= first)
|
|
267
|
+
return 0;
|
|
268
|
+
const array = this.array();
|
|
269
|
+
if (array === null)
|
|
270
|
+
return 0;
|
|
271
|
+
for (let face = first; face < last; face++) {
|
|
272
|
+
renderFace(array.scratchView, pointShadowFaceViewProj(face, plan.x, plan.y, plan.z, plan.near, plan.range, scratch));
|
|
273
|
+
resolveFace(this.layer, face, plan.range, plan.near);
|
|
274
|
+
}
|
|
275
|
+
this.image.completeBake(last, plan.x, plan.y, plan.z, plan.range, plan.near, plan.sourceRadius);
|
|
276
|
+
return last - first;
|
|
277
|
+
}
|
|
278
|
+
/** Nothing to free: every GPU object belongs to `GpuPointShadowArray` now. */
|
|
279
|
+
dispose() { }
|
|
280
|
+
}
|
|
@@ -0,0 +1,342 @@
|
|
|
1
|
+
import { RUSH_FRAG_WGSL } from '../../shaders/generated/rush.wgsl.ts';
|
|
2
|
+
import { BLOOM_DOWNSAMPLE_FRAG_WGSL, BLOOM_PREFILTER_FRAG_WGSL, BLOOM_UPSAMPLE_FRAG_WGSL } from '../../shaders/generated/bloom.wgsl.ts';
|
|
3
|
+
import { AO_BLUR_FRAG_WGSL, AO_FRAG_WGSL } from '../../shaders/generated/ambientOcclusion.wgsl.ts';
|
|
4
|
+
import { TEMPORAL_RESOLVE_FRAG_WGSL } from '../../shaders/generated/temporalResolve.wgsl.ts';
|
|
5
|
+
import { OIT_RESOLVE_FRAG_WGSL } from '../../shaders/generated/oitResolve.wgsl.ts';
|
|
6
|
+
import { DECAL_PROJECT_FRAG_WGSL } from '../../shaders/generated/decalProject.wgsl.ts';
|
|
7
|
+
import { SSR_TRACE_FRAG_WGSL } from '../../shaders/generated/ssrTrace.wgsl.ts';
|
|
8
|
+
import { SSR_RESOLVE_FRAG_WGSL } from '../../shaders/generated/ssrResolve.wgsl.ts';
|
|
9
|
+
import { MEDIUM_FRAG_WGSL, MEDIUM_UPSAMPLE_FRAG_WGSL } from '../../shaders/generated/globalMedium.wgsl.ts';
|
|
10
|
+
import type { UniformFields } from './scatterPass.ts';
|
|
11
|
+
import type { PipelineCache } from './pipelineCache.ts';
|
|
12
|
+
/**
|
|
13
|
+
* The composite: everything that happens to the frame after the world is drawn.
|
|
14
|
+
*
|
|
15
|
+
* **The scene lands off-screen and one pass puts it on the canvas.** That pass is `rush.ts`, and
|
|
16
|
+
* it is one shader rather than four because every one of these effects reads the same resolved
|
|
17
|
+
* image: the speed blur, the camera motion blur, the occlusion it multiplies in, the bloom it
|
|
18
|
+
* adds and the tone curve it ends on. `sceneTarget.ts` makes the same argument on the other
|
|
19
|
+
* backend, and both are why `bindMeshPass` grades in the mesh pass *only* when there is no
|
|
20
|
+
* composite to grade in.
|
|
21
|
+
*
|
|
22
|
+
* **What differs here is depth.** WebGL2 resolves a multisampled depth buffer with
|
|
23
|
+
* `blitFramebuffer` and reads it back; WebGPU has no multisample depth resolve at all. So a
|
|
24
|
+
* frame that wants occlusion or motion blur gets a resolve of its own, written below, which
|
|
25
|
+
* reads sample zero through `texture_depth_multisampled_2d` and writes it to a single-sample
|
|
26
|
+
* float target the generated shaders can sample as an ordinary texture.
|
|
27
|
+
*/
|
|
28
|
+
export declare const RUSH_FRAG_FIELDS: UniformFields;
|
|
29
|
+
export declare const RUSH_FRAG_SIZE: 160;
|
|
30
|
+
declare const RUSH_UNIFORMS: 1;
|
|
31
|
+
declare const RUSH_TEXTURES: {
|
|
32
|
+
readonly uScene: {
|
|
33
|
+
readonly texture: 32;
|
|
34
|
+
readonly sampler: 33;
|
|
35
|
+
readonly type: "sampler2D";
|
|
36
|
+
};
|
|
37
|
+
readonly uDepth: {
|
|
38
|
+
readonly texture: 34;
|
|
39
|
+
readonly sampler: 35;
|
|
40
|
+
readonly type: "sampler2D";
|
|
41
|
+
};
|
|
42
|
+
readonly uAo: {
|
|
43
|
+
readonly texture: 36;
|
|
44
|
+
readonly sampler: 37;
|
|
45
|
+
readonly type: "sampler2D";
|
|
46
|
+
};
|
|
47
|
+
readonly uBloom: {
|
|
48
|
+
readonly texture: 38;
|
|
49
|
+
readonly sampler: 39;
|
|
50
|
+
readonly type: "sampler2D";
|
|
51
|
+
};
|
|
52
|
+
readonly uGradeLut: {
|
|
53
|
+
readonly texture: 40;
|
|
54
|
+
readonly sampler: 41;
|
|
55
|
+
readonly type: "sampler3D";
|
|
56
|
+
};
|
|
57
|
+
};
|
|
58
|
+
export declare const AO_FRAG_FIELDS: UniformFields;
|
|
59
|
+
export declare const AO_FRAG_SIZE: 96;
|
|
60
|
+
export declare const AO_BLUR_FIELDS: UniformFields;
|
|
61
|
+
export declare const AO_BLUR_SIZE: 32;
|
|
62
|
+
export declare const MEDIUM_FRAG_FIELDS: UniformFields;
|
|
63
|
+
export declare const MEDIUM_FRAG_SIZE: 240;
|
|
64
|
+
export declare const MEDIUM_UPSAMPLE_FIELDS: UniformFields;
|
|
65
|
+
export declare const MEDIUM_UPSAMPLE_SIZE: 32;
|
|
66
|
+
export declare const BLOOM_PREFILTER_FIELDS: UniformFields;
|
|
67
|
+
/**
|
|
68
|
+
* The other two stages' blocks, read by name like every other block here.
|
|
69
|
+
*
|
|
70
|
+
* **Named rather than assumed to be the prefilter's**, because they are not: the downsample has
|
|
71
|
+
* a texel and no threshold, and the upsample has neither — it has a radius. All three happen to
|
|
72
|
+
* be sixteen bytes, which is exactly the coincidence that would let a wrong offset go unnoticed.
|
|
73
|
+
* `postField` throws on a name a block does not have, and that is the point of asking.
|
|
74
|
+
*/
|
|
75
|
+
export declare const BLOOM_DOWNSAMPLE_FIELDS: UniformFields;
|
|
76
|
+
export declare const BLOOM_UPSAMPLE_FIELDS: UniformFields;
|
|
77
|
+
/** The widest of the three, so one slot shape holds any stage's block. */
|
|
78
|
+
export declare const BLOOM_STAGE_SIZE: number;
|
|
79
|
+
/**
|
|
80
|
+
* What the scene is drawn into when the composite exists.
|
|
81
|
+
*
|
|
82
|
+
* `rgba16float` where the profile asks for an HDR scene, because that is the whole point of one:
|
|
83
|
+
* a bright pixel keeps its range until the tone curve, instead of being clipped at 1 by the mesh
|
|
84
|
+
* pass and then tone-mapped from a value that has already lost the information. `renderer.ts`
|
|
85
|
+
* calls the same option `hdrScene` and `keepsRange` for the same reason — a bloom threshold in
|
|
86
|
+
* scene units means nothing against a clamped buffer.
|
|
87
|
+
*/
|
|
88
|
+
export declare function sceneColorFormat(hdr: boolean): GPUTextureFormat;
|
|
89
|
+
/** A single-sample depth the generated shaders can sample. See the module comment. */
|
|
90
|
+
export declare const RESOLVED_DEPTH_FORMAT: GPUTextureFormat;
|
|
91
|
+
export declare function createDepthResolveLayout(device: GPUDevice, multisampled: boolean): GPUBindGroupLayout;
|
|
92
|
+
export declare function depthResolvePipeline(cache: PipelineCache, device: GPUDevice, layout: GPUBindGroupLayout, multisampled: boolean): GPURenderPipeline;
|
|
93
|
+
/**
|
|
94
|
+
* One texture, one sampler, one uniform block: the shape every stage of this chain has.
|
|
95
|
+
*
|
|
96
|
+
* The bloom stages and the occlusion blur all read a source and a size, so they share a layout
|
|
97
|
+
* builder rather than three copies of the same six lines.
|
|
98
|
+
*/
|
|
99
|
+
export declare function createPostStageLayout(device: GPUDevice, uniformBinding: number, uniformSize: number, textures: readonly {
|
|
100
|
+
binding: {
|
|
101
|
+
texture: number;
|
|
102
|
+
sampler: number;
|
|
103
|
+
};
|
|
104
|
+
filterable?: boolean;
|
|
105
|
+
/**
|
|
106
|
+
* `'2d'` unless said otherwise, because every post input but one is a screen-sized target.
|
|
107
|
+
*
|
|
108
|
+
* The exception is the colour grade's lookup table, which is a cube of display values and
|
|
109
|
+
* declares `texture_3d<f32>` in the generated WGSL. A layout that left this at `'2d'` is
|
|
110
|
+
* rejected at bind-group creation rather than at draw — which is the *good* case, and is
|
|
111
|
+
* only good because it is stated: a dimension is a property of the texture and never of the
|
|
112
|
+
* pass reading it, which is the lesson `filterable` above records twice already.
|
|
113
|
+
*/
|
|
114
|
+
dimension?: GPUTextureViewDimension;
|
|
115
|
+
}[]): GPUBindGroupLayout;
|
|
116
|
+
/**
|
|
117
|
+
* Additive, for the way back up the bloom pyramid.
|
|
118
|
+
*
|
|
119
|
+
* Each level is added *into* the one above it rather than replacing it, so level 0 ends up
|
|
120
|
+
* holding every octave at once — which is what makes the falloff the sum of the octaves rather
|
|
121
|
+
* than one kernel's. `bloomPass.ts` reaches the same place with `blendFunc(ONE, ONE)` and a
|
|
122
|
+
* `loadOp` of `load` is the other half of it here: a cleared attachment would discard the
|
|
123
|
+
* level the downsample just wrote and add the octave to nothing.
|
|
124
|
+
*/
|
|
125
|
+
/**
|
|
126
|
+
* What composites the order-independent buffers over the finished scene.
|
|
127
|
+
*
|
|
128
|
+
* Against a fragment carrying the average colour and the revealage, this computes
|
|
129
|
+
* `average * (1 - reveal) + scene * reveal` — which is the resolve. Doing it in the blend rather
|
|
130
|
+
* than by sampling means the pass never reads the target it writes.
|
|
131
|
+
*/
|
|
132
|
+
export declare const OIT_COMPOSITE_BLEND: GPUBlendState;
|
|
133
|
+
/**
|
|
134
|
+
* What a drawn decal does to the pixel under it: `dst * src`.
|
|
135
|
+
*
|
|
136
|
+
* White is the identity, so a fragment the projector missed changes nothing and the shader needs
|
|
137
|
+
* no branch and no discard. It multiplies the *lit* pixel, which is the whole reason a mark placed
|
|
138
|
+
* this late still takes the receiver's lighting — `decalProject.ts` argues that where it is
|
|
139
|
+
* written, and `decalPass.ts` sets the same pair on the other backend.
|
|
140
|
+
*/
|
|
141
|
+
/**
|
|
142
|
+
* What a global medium does to the pixel under it: `dst * transmittance + inscatter`.
|
|
143
|
+
*
|
|
144
|
+
* **The transfer equation for one segment, written as a blend state.** The march puts scattered
|
|
145
|
+
* light in `rgb` and how much of the frame survives the journey in `a`, so `(one, src-alpha)` is
|
|
146
|
+
* exactly the integral — and the composite therefore never samples the colour it is modifying,
|
|
147
|
+
* which is the read both backends are entitled to call undefined.
|
|
148
|
+
*
|
|
149
|
+
* Alpha is `(zero, one)`: the frame's own alpha is not the medium's to spend. The scene target
|
|
150
|
+
* carries it to the canvas, and a medium that wrote there would make a foggy frame translucent.
|
|
151
|
+
*/
|
|
152
|
+
export declare const MEDIUM_TRANSMIT_BLEND: GPUBlendState;
|
|
153
|
+
export declare const DECAL_MULTIPLY_BLEND: GPUBlendState;
|
|
154
|
+
/**
|
|
155
|
+
* `over`, against colour a pass has already multiplied by its own coverage.
|
|
156
|
+
*
|
|
157
|
+
* What the screen-space reflection writes and what composites it: the trace multiplies what it
|
|
158
|
+
* found by how much of it lands, so two reflective surfaces overlapping layer the way two blended
|
|
159
|
+
* surfaces do rather than the way two independent guesses do — and the resolve then never has to
|
|
160
|
+
* sample the colour it is compositing onto.
|
|
161
|
+
*/
|
|
162
|
+
export declare const PREMULTIPLIED_OVER_BLEND: GPUBlendState;
|
|
163
|
+
export declare const ADDITIVE_BLEND: GPUBlendState;
|
|
164
|
+
/** A fullscreen pass over one or more inputs, writing to one colour target. */
|
|
165
|
+
export declare function postPipeline(cache: PipelineCache, device: GPUDevice, layout: GPUBindGroupLayout, key: string, fragment: string, format: GPUTextureFormat, blend?: GPUBlendState): GPURenderPipeline;
|
|
166
|
+
/**
|
|
167
|
+
* The temporal resolve's block and its three inputs.
|
|
168
|
+
*
|
|
169
|
+
* Named like the occlusion's beside it, and for the same reason `BLOOM_DOWNSAMPLE_FIELDS` is: a
|
|
170
|
+
* block read by assumption rather than by name is a uniform written to the wrong offset, which
|
|
171
|
+
* draws a plausible picture.
|
|
172
|
+
*/
|
|
173
|
+
export declare const TAA_FRAG_FIELDS: UniformFields;
|
|
174
|
+
export declare const TAA_FRAG_SIZE: 80;
|
|
175
|
+
export declare const TAA_UNIFORMS: 1;
|
|
176
|
+
export declare const TAA_TEXTURES: {
|
|
177
|
+
readonly uScene: {
|
|
178
|
+
readonly texture: 32;
|
|
179
|
+
readonly sampler: 33;
|
|
180
|
+
readonly type: "sampler2D";
|
|
181
|
+
};
|
|
182
|
+
readonly uHistory: {
|
|
183
|
+
readonly texture: 34;
|
|
184
|
+
readonly sampler: 35;
|
|
185
|
+
readonly type: "sampler2D";
|
|
186
|
+
};
|
|
187
|
+
readonly uDepth: {
|
|
188
|
+
readonly texture: 36;
|
|
189
|
+
readonly sampler: 37;
|
|
190
|
+
readonly type: "sampler2D";
|
|
191
|
+
};
|
|
192
|
+
};
|
|
193
|
+
/**
|
|
194
|
+
* The order-independent resolve's inputs. It has no uniform block of its own — the whole pass is
|
|
195
|
+
* two texture fetches and a divide — so only the textures are named here.
|
|
196
|
+
*/
|
|
197
|
+
export declare const OIT_TEXTURES: {
|
|
198
|
+
readonly uOitAccum: {
|
|
199
|
+
readonly texture: 32;
|
|
200
|
+
readonly sampler: 33;
|
|
201
|
+
readonly type: "sampler2D";
|
|
202
|
+
};
|
|
203
|
+
readonly uOitReveal: {
|
|
204
|
+
readonly texture: 34;
|
|
205
|
+
readonly sampler: 35;
|
|
206
|
+
readonly type: "sampler2D";
|
|
207
|
+
};
|
|
208
|
+
};
|
|
209
|
+
/**
|
|
210
|
+
* A drawn decal's block and the one texture it reads.
|
|
211
|
+
*
|
|
212
|
+
* One block per mark and a frame may draw many, so the buffer holds an aligned slot each and the
|
|
213
|
+
* pass binds by dynamic offset — the arrangement the bloom chain already uses, and for the same
|
|
214
|
+
* reason: `queue.writeBuffer` does not interleave with recorded commands, so one block rewritten
|
|
215
|
+
* between two passes gives both passes the last write.
|
|
216
|
+
*/
|
|
217
|
+
export declare const DECAL_FRAG_FIELDS: UniformFields;
|
|
218
|
+
export declare const DECAL_FRAG_SIZE: 192;
|
|
219
|
+
export declare const DECAL_UNIFORMS: 1;
|
|
220
|
+
export declare const DECAL_TEXTURES: {
|
|
221
|
+
readonly uDecalDepth: {
|
|
222
|
+
readonly texture: 32;
|
|
223
|
+
readonly sampler: 33;
|
|
224
|
+
readonly type: "sampler2D";
|
|
225
|
+
};
|
|
226
|
+
};
|
|
227
|
+
/**
|
|
228
|
+
* The reflection trace's block and its two inputs, and the resolve's one.
|
|
229
|
+
*
|
|
230
|
+
* One block per surface and a frame may draw several, so the buffer holds an aligned slot each and
|
|
231
|
+
* the pass binds by dynamic offset — the arrangement the bloom chain and the decals already use,
|
|
232
|
+
* and for the reason `bloomStaging` states: `queue.writeBuffer` does not interleave with recorded
|
|
233
|
+
* commands, so one block rewritten between two passes gives both passes the last write.
|
|
234
|
+
*/
|
|
235
|
+
export declare const SSR_FRAG_FIELDS: UniformFields;
|
|
236
|
+
export declare const SSR_FRAG_SIZE: 272;
|
|
237
|
+
export declare const SSR_UNIFORMS: 1;
|
|
238
|
+
export declare const SSR_TEXTURES: {
|
|
239
|
+
readonly uSsrDepth: {
|
|
240
|
+
readonly texture: 32;
|
|
241
|
+
readonly sampler: 33;
|
|
242
|
+
readonly type: "sampler2D";
|
|
243
|
+
};
|
|
244
|
+
readonly uSsrScene: {
|
|
245
|
+
readonly texture: 34;
|
|
246
|
+
readonly sampler: 35;
|
|
247
|
+
readonly type: "sampler2D";
|
|
248
|
+
};
|
|
249
|
+
};
|
|
250
|
+
export declare const SSR_RESOLVE_TEXTURES: {
|
|
251
|
+
readonly uSsrReflection: {
|
|
252
|
+
readonly texture: 32;
|
|
253
|
+
readonly sampler: 33;
|
|
254
|
+
readonly type: "sampler2D";
|
|
255
|
+
};
|
|
256
|
+
};
|
|
257
|
+
/**
|
|
258
|
+
* The resolve's layout: one texture and no uniform block.
|
|
259
|
+
*
|
|
260
|
+
* `createPostStageLayout` cannot express this — it makes a block mandatory, every other stage in
|
|
261
|
+
* the chain having one — and this pass has nothing to parameterise: it fetches a texel and hands it
|
|
262
|
+
* to the blend state. A buffer allocated, bound and never read is worse than a second builder.
|
|
263
|
+
*/
|
|
264
|
+
export declare function createSsrResolveLayout(device: GPUDevice): GPUBindGroupLayout;
|
|
265
|
+
/**
|
|
266
|
+
* The resolve's layout: two textures and no uniform block.
|
|
267
|
+
*
|
|
268
|
+
* **`createPostStageLayout` cannot express this**, because every other pass in the chain has a
|
|
269
|
+
* block and it makes one mandatory. This pass has nothing to parameterise — it fetches the two
|
|
270
|
+
* buffers, divides and hands the result to the blend state — so a layout with a uniform binding
|
|
271
|
+
* nothing writes would be a buffer allocated, bound and never read.
|
|
272
|
+
*/
|
|
273
|
+
export declare function createOitResolveLayout(device: GPUDevice): GPUBindGroupLayout;
|
|
274
|
+
export { MEDIUM_FRAG_WGSL, MEDIUM_UPSAMPLE_FRAG_WGSL };
|
|
275
|
+
export declare const MEDIUM_UNIFORMS: 1;
|
|
276
|
+
export declare const MEDIUM_TEXTURES: {
|
|
277
|
+
readonly uDepth: {
|
|
278
|
+
readonly texture: 32;
|
|
279
|
+
readonly sampler: 33;
|
|
280
|
+
readonly type: "sampler2D";
|
|
281
|
+
};
|
|
282
|
+
readonly uStaticShadowMap: {
|
|
283
|
+
readonly texture: 34;
|
|
284
|
+
readonly sampler: 35;
|
|
285
|
+
readonly type: "sampler2D";
|
|
286
|
+
};
|
|
287
|
+
readonly uPeeledShadowMap: {
|
|
288
|
+
readonly texture: 36;
|
|
289
|
+
readonly sampler: 37;
|
|
290
|
+
readonly type: "sampler2D";
|
|
291
|
+
};
|
|
292
|
+
readonly uDynamicShadowMap: {
|
|
293
|
+
readonly texture: 38;
|
|
294
|
+
readonly sampler: 39;
|
|
295
|
+
readonly type: "sampler2D";
|
|
296
|
+
};
|
|
297
|
+
};
|
|
298
|
+
export declare const MEDIUM_UPSAMPLE_UNIFORMS: 1;
|
|
299
|
+
export declare const MEDIUM_UPSAMPLE_TEXTURES: {
|
|
300
|
+
readonly uMedium: {
|
|
301
|
+
readonly texture: 32;
|
|
302
|
+
readonly sampler: 33;
|
|
303
|
+
readonly type: "sampler2D";
|
|
304
|
+
};
|
|
305
|
+
readonly uDepth: {
|
|
306
|
+
readonly texture: 34;
|
|
307
|
+
readonly sampler: 35;
|
|
308
|
+
readonly type: "sampler2D";
|
|
309
|
+
};
|
|
310
|
+
};
|
|
311
|
+
export { RUSH_FRAG_WGSL, AO_FRAG_WGSL, AO_BLUR_FRAG_WGSL, TEMPORAL_RESOLVE_FRAG_WGSL, OIT_RESOLVE_FRAG_WGSL, DECAL_PROJECT_FRAG_WGSL, SSR_TRACE_FRAG_WGSL, SSR_RESOLVE_FRAG_WGSL, };
|
|
312
|
+
export { BLOOM_PREFILTER_FRAG_WGSL, BLOOM_DOWNSAMPLE_FRAG_WGSL, BLOOM_UPSAMPLE_FRAG_WGSL };
|
|
313
|
+
export { RUSH_UNIFORMS, RUSH_TEXTURES };
|
|
314
|
+
export declare const AO_UNIFORMS: 1;
|
|
315
|
+
export declare const AO_TEXTURES: {
|
|
316
|
+
readonly uDepth: {
|
|
317
|
+
readonly texture: 32;
|
|
318
|
+
readonly sampler: 33;
|
|
319
|
+
readonly type: "sampler2D";
|
|
320
|
+
};
|
|
321
|
+
};
|
|
322
|
+
export declare const AO_BLUR_UNIFORMS: 1;
|
|
323
|
+
export declare const AO_BLUR_TEXTURES: {
|
|
324
|
+
readonly uAo: {
|
|
325
|
+
readonly texture: 32;
|
|
326
|
+
readonly sampler: 33;
|
|
327
|
+
readonly type: "sampler2D";
|
|
328
|
+
};
|
|
329
|
+
readonly uDepth: {
|
|
330
|
+
readonly texture: 34;
|
|
331
|
+
readonly sampler: 35;
|
|
332
|
+
readonly type: "sampler2D";
|
|
333
|
+
};
|
|
334
|
+
};
|
|
335
|
+
export declare const BLOOM_UNIFORMS: 1;
|
|
336
|
+
export declare const BLOOM_TEXTURES: {
|
|
337
|
+
readonly uSource: {
|
|
338
|
+
readonly texture: 32;
|
|
339
|
+
readonly sampler: 33;
|
|
340
|
+
readonly type: "sampler2D";
|
|
341
|
+
};
|
|
342
|
+
};
|