@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,426 @@
|
|
|
1
|
+
import type { MeshData } from '../render/mesh.ts';
|
|
2
|
+
import type { Vec3 } from '../math/color.ts';
|
|
3
|
+
/** What the finished mesh should carry beyond position, normal, colour and emissive. */
|
|
4
|
+
export interface MeshBuildOptions {
|
|
5
|
+
/**
|
|
6
|
+
* Emit box-projected texture coordinates in metres.
|
|
7
|
+
*
|
|
8
|
+
* Off by default, because most geometry in this engine is coloured rather than
|
|
9
|
+
* textured and two floats a vertex is a real upload for a world that will never
|
|
10
|
+
* sample them. On, for a mesh that will be drawn with a `SurfaceTexture`.
|
|
11
|
+
*/
|
|
12
|
+
planarUvs?: boolean;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* CPU-side accumulator that merges axis-aligned boxes into one static mesh —
|
|
16
|
+
* the entire grey-box world becomes a single draw call.
|
|
17
|
+
*
|
|
18
|
+
* Faces are generated per-axis with cyclic tangents (a,b,c) so that U×V = N,
|
|
19
|
+
* guaranteeing outward CCW winding for back-face culling.
|
|
20
|
+
*
|
|
21
|
+
* **Long on purpose, and this was measured rather than assumed** (2026-08-24). The file is 1,056
|
|
22
|
+
* lines and the guideline is around 600, so it was examined for a seam and has none worth taking:
|
|
23
|
+
* it is a fluent accumulator whose every method returns `this` and reads class state — 146 reads
|
|
24
|
+
* of `this` across the class — and the genuinely pure code in it comes to 44 lines at the tail
|
|
25
|
+
* (`assertOrthonormal`, `dot`, and the three constants they are made of). Extracting 44 lines
|
|
26
|
+
* would leave the class exactly as long and add a file to follow.
|
|
27
|
+
*
|
|
28
|
+
* Carving the class itself is the alternative and it is worse: `addBox`, `addCapsule`, `addBlob`
|
|
29
|
+
* and `addCylinder` all end in the same `addFace` and `addVertex`, so any cut runs straight
|
|
30
|
+
* through the shared tail and produces modules that only make sense read together. An invented
|
|
31
|
+
* seam costs more readability than the length it relieved, which is the rule
|
|
32
|
+
* the render-graph design states — and this file is the
|
|
33
|
+
* case that rule was written about, named in it by name.
|
|
34
|
+
*
|
|
35
|
+
* **What would make this wrong:** a second builder wanting the same face generation, which would
|
|
36
|
+
* turn the shared tail from an internal detail into an interface. Nothing wants it today.
|
|
37
|
+
*/
|
|
38
|
+
export declare class MeshBuilder {
|
|
39
|
+
private readonly positions;
|
|
40
|
+
private readonly normals;
|
|
41
|
+
private readonly colors;
|
|
42
|
+
private readonly emissive;
|
|
43
|
+
/**
|
|
44
|
+
* Per-vertex specular, accumulated always and emitted only when something asked
|
|
45
|
+
* for it — see `build`. Keeping the array unconditionally costs one push per
|
|
46
|
+
* vertex at build time and keeps every code path below free of a branch.
|
|
47
|
+
*/
|
|
48
|
+
private readonly specular;
|
|
49
|
+
/**
|
|
50
|
+
* Per-vertex emissive *colour*, or the sentinel meaning "whatever this surface is made
|
|
51
|
+
* of". Accumulated always and emitted only when something asked for one, exactly as
|
|
52
|
+
* `specular` is.
|
|
53
|
+
*/
|
|
54
|
+
private readonly emissiveColor;
|
|
55
|
+
/** What `setEmissiveColor` last named, applied to every vertex added after it. */
|
|
56
|
+
private emissiveColorState;
|
|
57
|
+
/** Per-vertex roughness, and what `setRoughness` last named. */
|
|
58
|
+
private readonly roughness;
|
|
59
|
+
private roughnessState;
|
|
60
|
+
/**
|
|
61
|
+
* Per-vertex grain, and what `setGrain` last named. Zero until something asks otherwise,
|
|
62
|
+
* because a surface that never says it is mineral is not mineral.
|
|
63
|
+
*/
|
|
64
|
+
private readonly grain;
|
|
65
|
+
private grainState;
|
|
66
|
+
/**
|
|
67
|
+
* Per-vertex relief, and what `setRelief` last named. Zero until something asks, because a
|
|
68
|
+
* surface that never says it has texture is smooth.
|
|
69
|
+
*/
|
|
70
|
+
private readonly relief;
|
|
71
|
+
private reliefState;
|
|
72
|
+
/**
|
|
73
|
+
* Texture coordinates from anything that has real ones, and empty for geometry that does not.
|
|
74
|
+
*
|
|
75
|
+
* Two sources fill this and they are the same kind of thing: a merged mesh's own coordinates,
|
|
76
|
+
* authored against its own maps, and `addBlob`'s surface parameters, which the primitive walks
|
|
77
|
+
* to place every vertex and used to discard.
|
|
78
|
+
*
|
|
79
|
+
* Separate from `planarUvs()`, which *derives* coordinates from position at build time for a
|
|
80
|
+
* wall or a floor. That derivation is a box projection, and on anything round it is three
|
|
81
|
+
* projections meeting at seams with the poles smeared along an axis, which is why a sphere
|
|
82
|
+
* needs its own and cannot borrow them.
|
|
83
|
+
*/
|
|
84
|
+
private readonly uvs;
|
|
85
|
+
private readonly indices;
|
|
86
|
+
private vertexCount;
|
|
87
|
+
/**
|
|
88
|
+
* Where each rigid joint binding starts, as a vertex index, and which joint it binds to.
|
|
89
|
+
*
|
|
90
|
+
* **Spans expanded at build, not four floats pushed at every vertex site.** Seven separate
|
|
91
|
+
* places in this file push a colour and an emissive, and a binding pushed beside each of them
|
|
92
|
+
* is seven chances for a geometry verb added later to forget one — whose symptom is a short
|
|
93
|
+
* attribute buffer, which some drivers read past the end as zeroes and others answer by
|
|
94
|
+
* dropping the draw, neither raising a GL error. `paddedUvs` already solved the same problem
|
|
95
|
+
* the same way.
|
|
96
|
+
*
|
|
97
|
+
* **What it costs** is that a binding is resolved once per span rather than per vertex, which
|
|
98
|
+
* is cheaper. **What would make it wrong** is a caller wanting two influences on one vertex:
|
|
99
|
+
* this cannot express it, and a rigged import gives them that instead.
|
|
100
|
+
*/
|
|
101
|
+
private readonly jointSpans;
|
|
102
|
+
/** Whether anything was ever bound, so `build` knows to emit at all. */
|
|
103
|
+
private anyJoint;
|
|
104
|
+
/**
|
|
105
|
+
* Merge an existing mesh in at a position and uniform scale.
|
|
106
|
+
*
|
|
107
|
+
* For geometry that is built once and then stamped around the world — a tree
|
|
108
|
+
* trunk, say. Merging keeps it inside the single static draw call rather than
|
|
109
|
+
* adding one per copy, which is the whole reason the world is one mesh.
|
|
110
|
+
*
|
|
111
|
+
* Uniform scale only: a non-uniform one would need normals transformed by the
|
|
112
|
+
* inverse transpose, and nothing here has wanted that yet.
|
|
113
|
+
*/
|
|
114
|
+
addMesh(mesh: MeshData, x: number, y: number, z: number, scale?: number): this;
|
|
115
|
+
/**
|
|
116
|
+
* Merge an existing mesh under an orthonormal basis: rotated, then placed.
|
|
117
|
+
*
|
|
118
|
+
* `addMesh` translates and scales, which is enough for anything whose own
|
|
119
|
+
* axes are the world's — a tree, a rock. It is not enough for anything that
|
|
120
|
+
* has to *agree with a surface*: a marking on a banked deck, a sign facing
|
|
121
|
+
* back along a curve, a letter standing on a slope. Until now the only way to
|
|
122
|
+
* follow a surface was to be a ribbon built from the same curve, which works
|
|
123
|
+
* beautifully for bands across a deck and cannot draw a glyph.
|
|
124
|
+
*
|
|
125
|
+
* The basis is assumed orthonormal and is checked, because that assumption is
|
|
126
|
+
* what lets normals be rotated by the same three vectors as the positions: a
|
|
127
|
+
* non-uniform or skewed basis needs the inverse transpose, and silently
|
|
128
|
+
* getting that wrong produces geometry that is lit as if it were facing
|
|
129
|
+
* somewhere else — which looks like a shading bug, not a maths one.
|
|
130
|
+
*
|
|
131
|
+
* @param scale uniform, applied in the local frame before the basis.
|
|
132
|
+
*/
|
|
133
|
+
addOrientedMesh(mesh: MeshData, origin: Vec3, right: Vec3, up: Vec3, forward: Vec3, scale?: number): this;
|
|
134
|
+
/**
|
|
135
|
+
* @param specular 0–1: how sharply this box takes a sun highlight. Zero, and
|
|
136
|
+
* therefore free, for everything that is not meant to shine.
|
|
137
|
+
*/
|
|
138
|
+
/**
|
|
139
|
+
* What colour the following geometry emits, or `null` for its own albedo.
|
|
140
|
+
*
|
|
141
|
+
* State rather than a parameter, because `emissive` already reaches a dozen signatures
|
|
142
|
+
* and a thirteenth argument on each of them is where a builder stops being readable.
|
|
143
|
+
* It is also the honest shape: an emissive colour belongs to a *material*, and a
|
|
144
|
+
* material covers many calls.
|
|
145
|
+
*
|
|
146
|
+
* The default — `null` — is the behaviour this builder has always had: the emissive term
|
|
147
|
+
* is the surface's own colour scaled by its emissive amount, which is right for anything
|
|
148
|
+
* that glows because it is hot or lit from within. It is wrong for a surface whose glow
|
|
149
|
+
* is a different colour from its paint, and that is not a corner case: a ceiling tile
|
|
150
|
+
* emitting a dull warm haze over a pale panel is how a strip-lit interior reads, and
|
|
151
|
+
* approximating it by scaling the panel's own colour gets the brightness right and the
|
|
152
|
+
* hue wrong every time.
|
|
153
|
+
*/
|
|
154
|
+
/**
|
|
155
|
+
* How rough the following geometry is, 0–1, or `null` for the engine's default.
|
|
156
|
+
*
|
|
157
|
+
* State for the same reason `setEmissiveColor` is, and it answers a different question
|
|
158
|
+
* from `specular`: that one is how much light comes back, this is over how wide an angle.
|
|
159
|
+
* A polished floor and a matte one can return the same energy and look nothing alike.
|
|
160
|
+
*/
|
|
161
|
+
/**
|
|
162
|
+
* Bind every vertex added from here on to one joint, at full weight, or `null` to stop.
|
|
163
|
+
*
|
|
164
|
+
* Rigid binding: one influence. A mesh assembled from solid pieces — a rig of boxes, a
|
|
165
|
+
* chandelier, a tank's wheels — needs exactly this, and smooth skinning across a joint is a
|
|
166
|
+
* different job belonging to a baker that reads a rigged source.
|
|
167
|
+
*
|
|
168
|
+
* Stopping binds what follows to joint 0 rather than to nothing, for the reason
|
|
169
|
+
* `expandedJoints` gives: a zero-weight vertex collapses onto the origin.
|
|
170
|
+
*/
|
|
171
|
+
setJoint(index: number | null): this;
|
|
172
|
+
setRoughness(roughness: number | null): this;
|
|
173
|
+
/**
|
|
174
|
+
* How much visible mineral structure the following geometry has, 0–1.
|
|
175
|
+
*
|
|
176
|
+
* State beside `setRoughness`, and deliberately **independent** of it. Roughness is how
|
|
177
|
+
* widely a surface scatters a highlight; grain is whether it has structure you can see
|
|
178
|
+
* at arm's length. Painted plaster is rough with no grain and polished granite is smooth
|
|
179
|
+
* with a great deal, so neither can be derived from the other — which is exactly what the
|
|
180
|
+
* two previous versions of this feature tried, first through `specular` and then through
|
|
181
|
+
* `roughness`, and both were wrong in both directions.
|
|
182
|
+
*
|
|
183
|
+
* **Zero is the default and means none.** A scene says which of its surfaces are stone
|
|
184
|
+
* while it is building them, and everything it does not mention stays smooth.
|
|
185
|
+
*/
|
|
186
|
+
setGrain(grain: number): this;
|
|
187
|
+
/**
|
|
188
|
+
* How much microscopic relief the surfaces built after this have, 0 to 1.
|
|
189
|
+
*
|
|
190
|
+
* **What it is for.** A road is not flat and neither is cast concrete, a plaster wall or a
|
|
191
|
+
* hammered tray: each is covered in structure far too small to model and far too large to
|
|
192
|
+
* ignore, and it is what makes them read as material rather than as coloured planes. This is
|
|
193
|
+
* the general capability for that, so a scene states an amount here and the *material* decides
|
|
194
|
+
* how coarse it is and how deep, through `Renderer.setSurfaceRelief`.
|
|
195
|
+
*
|
|
196
|
+
* **Distinct from `setGrain`, and both may apply.** Grain varies how much light a point takes,
|
|
197
|
+
* so it mottles a face that stays flat. Relief varies which way the point faces, so it catches
|
|
198
|
+
* a light from one side and shades on the other, and it survives being seen from a shallow
|
|
199
|
+
* angle where a brightness mottle washes out. Stone wants both. Asphalt wants mostly this.
|
|
200
|
+
*
|
|
201
|
+
* **Zero is the default and means none**, so every surface a scene does not mention is smooth
|
|
202
|
+
* and no world built before this existed moves.
|
|
203
|
+
*/
|
|
204
|
+
setRelief(relief: number): this;
|
|
205
|
+
setEmissiveColor(color: Vec3 | null): this;
|
|
206
|
+
addBox(center: Vec3, halfExtents: Vec3, color: Vec3, emissive?: number, specular?: number): this;
|
|
207
|
+
/**
|
|
208
|
+
* Add a single quad from four corners wound counter-clockwise as seen from the front.
|
|
209
|
+
*
|
|
210
|
+
* The escape hatch from `addBox` for geometry that is a *surface* rather than a solid.
|
|
211
|
+
* Boxing every solid cell of a grid world emits the faces between two adjacent solids
|
|
212
|
+
* as well — buried, invisible, and coplanar with each other, so at the edge where they
|
|
213
|
+
* meet open space they z-fight into thin lines along every cell boundary. Reported as
|
|
214
|
+
* walls that look like "blocks glued together". With this, a caller emits only the
|
|
215
|
+
* faces that border something you can stand in, which removes the interior pairs
|
|
216
|
+
* entirely and costs far fewer vertices than the boxes did.
|
|
217
|
+
*
|
|
218
|
+
* The normal is derived from the winding rather than taken as a parameter, so a quad
|
|
219
|
+
* cannot be lit as if it faced a direction it does not.
|
|
220
|
+
*/
|
|
221
|
+
/**
|
|
222
|
+
* A flat quad, whose normal comes from `b - a` crossed with **`d - a`** rather than `c - a`.
|
|
223
|
+
*
|
|
224
|
+
* **That is not what anybody assumes, and it decides which side the face lights from.** Every
|
|
225
|
+
* other winding convention in graphics walks consecutive vertices, so a horizontal quad wound
|
|
226
|
+
* the obvious way round, `(x0,z0) (x1,z0) (x1,z1) (x0,z1)`, gives `+X` crossed with `+Z`,
|
|
227
|
+
* which points at the floor. Reported from outside after every ground in an application faced
|
|
228
|
+
* downward for four scenarios: they were lit by lamps near the floor, where a flipped normal
|
|
229
|
+
* is a dimmer surface rather than an absent one, and it only became visible on the fifth world
|
|
230
|
+
* when a directional lit it and the ground took nothing from the sun at all.
|
|
231
|
+
*
|
|
232
|
+
* Reverse the last two corners to flip it, or wind anticlockwise seen from the side the face
|
|
233
|
+
* should light from.
|
|
234
|
+
*
|
|
235
|
+
* The normal is per *face*, so anything assembled from these is flat-shaded by construction.
|
|
236
|
+
* A surface that has to be both curved and varied wants `addBlob`.
|
|
237
|
+
*/
|
|
238
|
+
addQuad(a: Vec3, b: Vec3, c: Vec3, d: Vec3, color: Vec3, emissive?: number, specular?: number): this;
|
|
239
|
+
/**
|
|
240
|
+
* A quad that faces **up**, whatever order its corners arrive in.
|
|
241
|
+
*
|
|
242
|
+
* **`addQuad`'s winding rule is the single most expensive trap in this class**, and its own note
|
|
243
|
+
* says why: the normal is `(b − a) × (d − a)`, which is not the order a person walks around a
|
|
244
|
+
* rectangle. Reading that note is not the same as remembering it at four in the morning. It cost
|
|
245
|
+
* five scenes in one application before anybody saw it, and then four separate bugs in one
|
|
246
|
+
* afternoon in another — one of which was every building in a village lit inside out, because a
|
|
247
|
+
* wall is a quad too.
|
|
248
|
+
*
|
|
249
|
+
* So: a ground, a floor, a road, a tabletop, a roof plane seen from above. Pass the corners in
|
|
250
|
+
* whichever order reads naturally and the face lights from the sky. What it costs is one cross
|
|
251
|
+
* product and one comparison, at build time, once.
|
|
252
|
+
*
|
|
253
|
+
* A quad standing exactly vertical has no up and is refused rather than guessed at — a wall
|
|
254
|
+
* passed to this by mistake is a caller error worth hearing about, and `addWallQuad` is the one
|
|
255
|
+
* that wanted it.
|
|
256
|
+
*/
|
|
257
|
+
addGroundQuad(a: Vec3, b: Vec3, c: Vec3, d: Vec3, color: Vec3, emissive?: number, specular?: number): this;
|
|
258
|
+
/**
|
|
259
|
+
* A quad that faces **away from a point**, whatever order its corners arrive in.
|
|
260
|
+
*
|
|
261
|
+
* The other nine-tenths of what a consumer wants from `addQuad`: the outside of a wall, of a
|
|
262
|
+
* chimney, of a crate, of anything hollow built from surfaces. `awayFrom` is usually the centre
|
|
263
|
+
* of the room or the solid the face belongs to, and it need not be exact — only on the correct
|
|
264
|
+
* side, which is a thing a caller knows without thinking. That is the whole difference from
|
|
265
|
+
* winding, which is a thing a caller has to look up.
|
|
266
|
+
*
|
|
267
|
+
* A face whose centre *is* the reference point has no outward side, and that is refused: it means
|
|
268
|
+
* the two were mixed up, and picking one silently is how a building ends up lighting its interior
|
|
269
|
+
* while the outside takes nothing from the sun.
|
|
270
|
+
*/
|
|
271
|
+
addWallQuad(a: Vec3, b: Vec3, c: Vec3, d: Vec3, awayFrom: Vec3, color: Vec3, emissive?: number, specular?: number): this;
|
|
272
|
+
/**
|
|
273
|
+
* A box turned to lie along a direction, rather than square to the world axes.
|
|
274
|
+
*
|
|
275
|
+
* **`addBox` is world-axis only, and that is visible the moment anything follows a boundary.** A
|
|
276
|
+
* hedge along a property line built from `addBox` is a row of detached slabs each facing a
|
|
277
|
+
* different way; a window sill is square in plan and pokes out of three walls it does not belong
|
|
278
|
+
* to. Both of those shipped in a consumer's world and both were reported by eye, and the wrapper
|
|
279
|
+
* they wrote to fix it is this method.
|
|
280
|
+
*
|
|
281
|
+
* `halfExtents` are measured **along the box's own axes**: `x` across, `y` up, `z` along
|
|
282
|
+
* `forward`. The other two axes are derived from world up, which is what makes this one argument
|
|
283
|
+
* rather than three: a box that also has to tilt or roll wants `addOrientedMesh`, which takes the
|
|
284
|
+
* full basis and is the reason this does not.
|
|
285
|
+
*
|
|
286
|
+
* Every face is emitted through `addWallQuad` against the box's own centre, so the six outward
|
|
287
|
+
* normals are one argument rather than six windings to get right.
|
|
288
|
+
*/
|
|
289
|
+
addOrientedBox(center: Vec3, halfExtents: Vec3, forward: Vec3, color: Vec3, emissive?: number, specular?: number): this;
|
|
290
|
+
/**
|
|
291
|
+
* A capsule aligned to Y: a cylindrical shaft with a hemispherical cap at each end.
|
|
292
|
+
*
|
|
293
|
+
* The shape almost every organic silhouette is roughed out with — a limb, a torso, a
|
|
294
|
+
* creature seen through fog. A stack of boxes stands in for it badly: the corners read
|
|
295
|
+
* as a *machine* at any distance, which is the wrong instinct entirely for something
|
|
296
|
+
* meant to look alive. Reported as an entity looking "SQUARED".
|
|
297
|
+
*
|
|
298
|
+
* `halfLength` measures the cylindrical part only, so total height is
|
|
299
|
+
* `2 * (halfLength + radius)` and a capsule with `halfLength` 0 is a sphere.
|
|
300
|
+
*/
|
|
301
|
+
addCapsule(center: Vec3, radius: number, halfLength: number, color: Vec3, emissive?: number, segments?: number, rings?: number, specular?: number): this;
|
|
302
|
+
/**
|
|
303
|
+
* A smooth irregular solid: a sphere whose radius and colour are both asked for per point.
|
|
304
|
+
*
|
|
305
|
+
* **The gap this fills is "curved *and* varied", which nothing here could express.** Every
|
|
306
|
+
* other generator takes one colour for the whole call, and the one primitive that could vary
|
|
307
|
+
* it, `addQuad`, computes a *face* normal from its winding, so anything assembled from quads
|
|
308
|
+
* is flat by construction. A consumer wanting a planet with latitude bands therefore had a
|
|
309
|
+
* choice between a texture, in an engine whose whole argument is not needing images, and
|
|
310
|
+
* geometry stuck onto a sphere. And a consumer wanting a rock went through four attempts,
|
|
311
|
+
* each failing on a property of the primitive rather than on the shape: boxes gave right
|
|
312
|
+
* angles, overlapping spheres gave cusps at every intersection and read as foam, a quad grid
|
|
313
|
+
* gave a correct silhouette made of eighty flat plates, and a tube gave a water-worn pebble
|
|
314
|
+
* because its cross-section is always a circle.
|
|
315
|
+
*
|
|
316
|
+
* `radiusAt` and `color` both take the surface parameters, `u` around and `v` from pole to
|
|
317
|
+
* pole, each 0 to 1. A constant radius is `addSphere`; a few low-frequency waves is a boulder;
|
|
318
|
+
* a signed step is a fracture; a constant radius with a varying colour is a banded planet.
|
|
319
|
+
*
|
|
320
|
+
* **A `radiusAt` built as a `min` of constraints has to place them inside the base radius.** A
|
|
321
|
+
* cut plane at or above it removes nothing, so a set of them scattered around the radius
|
|
322
|
+
* leaves a shape that is nearly round more often than not. Reported from outside, where nine
|
|
323
|
+
* planes between 0.34 and 0.50 of a 0.5 radius gave a sphere about one seed in three.
|
|
324
|
+
*
|
|
325
|
+
* **The normal is derived from the surface rather than from the radius**, which is the part
|
|
326
|
+
* that matters and the part a radial normal gets wrong. Where the radius varies, the surface
|
|
327
|
+
* no longer faces along its own radius, so a radial normal lights a boulder as though it were
|
|
328
|
+
* a sphere: the silhouette is lumpy and the shading is not. Each vertex takes the cross
|
|
329
|
+
* product of the two parametric tangents, measured from the same callback, so a smooth radius
|
|
330
|
+
* gives smooth shading and an abrupt one gives a genuine hard edge. That is what lets one
|
|
331
|
+
* primitive be both a pebble and a fracture.
|
|
332
|
+
*/
|
|
333
|
+
addBlob(center: Vec3, radiusAt: (u: number, v: number) => number, color: Vec3 | ((u: number, v: number) => Vec3), emissive?: number, segments?: number, rings?: number, specular?: number): this;
|
|
334
|
+
/** A sphere, which is a capsule with no shaft. */
|
|
335
|
+
addSphere(center: Vec3, radius: number, color: Vec3, emissive?: number, segments?: number, rings?: number): this;
|
|
336
|
+
/** Add a faceted cylinder aligned to one principal axis. */
|
|
337
|
+
addCylinder(center: Vec3, radius: number, halfLength: number, axis: 'x' | 'y' | 'z', color: Vec3, emissive?: number, segments?: number, specular?: number): this;
|
|
338
|
+
/**
|
|
339
|
+
* Sweep a round tube of varying radius along an arbitrary path.
|
|
340
|
+
*
|
|
341
|
+
* The primitive a *curve* needs. `addCylinder` is axis-aligned and straight, and a
|
|
342
|
+
* curve chained out of boxes — which is how every beam in this engine's consumers
|
|
343
|
+
* has been built — has hard corners and only six distinct normals, so it reads as
|
|
344
|
+
* a staircase however finely it is stepped. A tube carries a normal per ring
|
|
345
|
+
* vertex, so the flat shader's interpolated `vNormal` shades it as the round thing
|
|
346
|
+
* it is.
|
|
347
|
+
*
|
|
348
|
+
* The frame is **parallel-transported** rather than built from a fixed world up.
|
|
349
|
+
* A frame derived from world up flips through 180 degrees wherever the path turns
|
|
350
|
+
* vertical, which puts a visible twist in the tube at exactly the apex of an arch;
|
|
351
|
+
* carrying the previous ring's frame forward and re-orthogonalising it against the
|
|
352
|
+
* new tangent has no such singularity. It also has no preferred orientation to
|
|
353
|
+
* disagree with, which matters when the path is planar and the plane is arbitrary.
|
|
354
|
+
*
|
|
355
|
+
* @param path Centreline as flattened x, y, z triples. At least two points.
|
|
356
|
+
* @param radii One radius per path point, so a sweep can taper.
|
|
357
|
+
* @param sides Vertices per ring. Eight is round enough to read as a cylinder at
|
|
358
|
+
* the distance a fixture is seen from, and cheap enough to put one on every gate.
|
|
359
|
+
*/
|
|
360
|
+
addTube(path: readonly number[], radii: readonly number[], color: Vec3, emissive?: number, sides?: number): this;
|
|
361
|
+
/**
|
|
362
|
+
* How much geometry is in here so far, without building it.
|
|
363
|
+
*
|
|
364
|
+
* **So a caller batching by size can ask instead of counting.** A consumer streaming a world caps
|
|
365
|
+
* a batch at a triangle count and opens another when it is passed; without this the only way to
|
|
366
|
+
* know was to tally what it had handed over, which means every geometry verb's triangle count
|
|
367
|
+
* duplicated on the caller's side, and a batch that overshoots by whatever the last object was —
|
|
368
|
+
* measured at 47,040 triangles against a cap of 32,000.
|
|
369
|
+
*
|
|
370
|
+
* Both are counters, not scans: asking costs nothing and may be asked between every object.
|
|
371
|
+
*/
|
|
372
|
+
get triangleCount(): number;
|
|
373
|
+
/** Vertices written so far. The other half of the same question, for a memory budget. */
|
|
374
|
+
get vertexCountSoFar(): number;
|
|
375
|
+
build(options?: MeshBuildOptions): MeshData;
|
|
376
|
+
/**
|
|
377
|
+
* Take a merged mesh's own texture coordinates, if it brought any.
|
|
378
|
+
*
|
|
379
|
+
* Padded to this mesh's own start first, because everything built before it — a box, a
|
|
380
|
+
* cylinder, a mesh carrying no coordinates — contributed vertices and no UVs. Without the
|
|
381
|
+
* padding the array is short, and every coordinate after the first gap belongs to the
|
|
382
|
+
* wrong vertex, which draws as a texture sliding across a surface rather than as an error.
|
|
383
|
+
*
|
|
384
|
+
* It is the same defect `roughness` had here, and the reason it is worth stating twice: a
|
|
385
|
+
* short attribute buffer is read past the end as zeroes by some drivers and causes others
|
|
386
|
+
* to drop the draw outright, and neither raises a GL error.
|
|
387
|
+
*/
|
|
388
|
+
private mergeUvs;
|
|
389
|
+
/**
|
|
390
|
+
* The rigid bindings, run out to cover every vertex the builder holds.
|
|
391
|
+
*
|
|
392
|
+
* A vertex before the first `setJoint` answers joint 0 at full weight rather than zero
|
|
393
|
+
* weight, and the distinction is not pedantic: the shader sums four matrices by four
|
|
394
|
+
* weights, so a zero-weight vertex is multiplied to the origin and the geometry reads as
|
|
395
|
+
* exploding toward the rig's root. Following the root is what a rigid mesh under a skeleton
|
|
396
|
+
* does, and it is the answer that degrades to something sensible.
|
|
397
|
+
*/
|
|
398
|
+
private expandedJoints;
|
|
399
|
+
/** One influence at full weight, per vertex. See `expandedJoints`. */
|
|
400
|
+
private expandedWeights;
|
|
401
|
+
/** The merged coordinates, run out to cover every vertex the builder holds. */
|
|
402
|
+
private paddedUvs;
|
|
403
|
+
/**
|
|
404
|
+
* Box-project every vertex onto the plane of the face it belongs to, in metres.
|
|
405
|
+
*
|
|
406
|
+
* Derived here rather than accumulated per vertex, and that is what keeps the cost
|
|
407
|
+
* genuinely opt-in: UVs are a pure function of position and normal, so nothing
|
|
408
|
+
* upstream — not `addBox`, not the cylinder, not a merged mesh — needs a second push
|
|
409
|
+
* site or a branch, and a caller that never asks for UVs allocates nothing anywhere.
|
|
410
|
+
*
|
|
411
|
+
* The projection uses **world position** rather than a per-face 0–1 range, so a
|
|
412
|
+
* surface assembled from many separate boxes tiles continuously across the joins
|
|
413
|
+
* instead of restarting the pattern at each one. That is what a corridor built out of
|
|
414
|
+
* wall segments actually needs, and it is why texture density is a repeats-per-metre
|
|
415
|
+
* number at draw time rather than something baked in here.
|
|
416
|
+
*
|
|
417
|
+
* Axis choice mirrors `addFace`: for a face whose normal is dominant on axis `a`, U
|
|
418
|
+
* runs along `(a+1)%3` and V along `(a+2)%3`. The two agree by construction rather
|
|
419
|
+
* than by coincidence, which is what makes a box's UVs continuous with its
|
|
420
|
+
* neighbours'.
|
|
421
|
+
*/
|
|
422
|
+
private planarUvs;
|
|
423
|
+
private addFace;
|
|
424
|
+
private pushEmissiveColor;
|
|
425
|
+
private addVertex;
|
|
426
|
+
}
|