@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,438 @@
|
|
|
1
|
+
import { FOG_GLSL } from './fog.ts';
|
|
2
|
+
import { OUTPUT_TRANSFORM_GLSL } from './outputTransform.ts';
|
|
3
|
+
import { MAX_POINT_LIGHTS } from '../lightBudget.ts';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Particle materials: soft smoke, hot sparks, and unlit motes.
|
|
7
|
+
*
|
|
8
|
+
* One vertex program, three fragment programs, and the split is the same one the
|
|
9
|
+
* plumes already make — `PLUME_VERT` places a volume and the fragment decides
|
|
10
|
+
* whether it is fire or smoke. Here the vertex program places a particle as a
|
|
11
|
+
* **camera-facing quad**, or as a world-fixed cross of two when a caller asks, and
|
|
12
|
+
* the fragment decides whether it is a puff of grit, an ember, or an unlit point.
|
|
13
|
+
*
|
|
14
|
+
* **The cross was the only option and then the default, and is now neither.** The
|
|
15
|
+
* argument for it is the one `plumeRenderer` records at length, and it is a real
|
|
16
|
+
* one: a billboard has no parallax, so orbiting a plume shows the identical
|
|
17
|
+
* silhouette from every angle and the whole effect swivels as a sheet, where two
|
|
18
|
+
* fixed blades genuinely bring one broadside as the other goes edge-on. What that
|
|
19
|
+
* argument leaves out is what the going-edge-on blade *draws*. It does not fade as
|
|
20
|
+
* it turns; it compresses, and a sprite compressed into a one-pixel column spends
|
|
21
|
+
* its entire brightness in that column. On smoke it hides inside the noise. On an
|
|
22
|
+
* additive spark it is a bright straight line through the middle of every particle,
|
|
23
|
+
* which is how it was finally caught. `uCameraFacing` carries the full account and
|
|
24
|
+
* the terms of the trade for anyone who wants the blades back.
|
|
25
|
+
*
|
|
26
|
+
* **These replace drawing particles through the foliage shader**, which is what
|
|
27
|
+
* every effect built on `ParticlePool` used to do. Grass is opaque, lit
|
|
28
|
+
* two-sided, and has no opacity channel — so a grain of smoke was a solid cube
|
|
29
|
+
* lit like a leaf, and its "fade" was its colour being driven to black — which reads
|
|
30
|
+
* as squared-off smoke that never had a shader of its own, against fire that did.
|
|
31
|
+
* This is that missing quality: a soft body eroded by
|
|
32
|
+
* the same value noise, an honest alpha, and real lighting.
|
|
33
|
+
*/
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Blades in the cross, and the vertices and indices that costs.
|
|
37
|
+
*
|
|
38
|
+
* Still two under `facing: 'camera'`, where the second is collapsed to zero area in the
|
|
39
|
+
* vertex stage rather than dropped here — so one pair of buffers serves both facings and a
|
|
40
|
+
* batch chooses per pool. See `uCameraFacing`.
|
|
41
|
+
*/
|
|
42
|
+
export const PARTICLE_BLADES = 2;
|
|
43
|
+
export const PARTICLE_VERTS = PARTICLE_BLADES * 4;
|
|
44
|
+
export const PARTICLE_INDICES = PARTICLE_BLADES * 6;
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Shared noise. Value noise, two octaves, exactly the construction `SMOKE_FRAG`
|
|
48
|
+
* uses — a particle and a plume standing in the same scene must not be eroded by
|
|
49
|
+
* different mathematics, or the small effect reads as a different material from
|
|
50
|
+
* the large one it is supposed to be a wisp of.
|
|
51
|
+
*/
|
|
52
|
+
const PARTICLE_NOISE = `
|
|
53
|
+
float hash21(vec2 p) {
|
|
54
|
+
return fract(sin(dot(p, vec2(127.1, 311.7))) * 43758.5453123);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
float valueNoise(vec2 p) {
|
|
58
|
+
vec2 i = floor(p);
|
|
59
|
+
vec2 f = fract(p);
|
|
60
|
+
vec2 u = f * f * (3.0 - 2.0 * f);
|
|
61
|
+
return mix(
|
|
62
|
+
mix(hash21(i), hash21(i + vec2(1.0, 0.0)), u.x),
|
|
63
|
+
mix(hash21(i + vec2(0.0, 1.0)), hash21(i + vec2(1.0, 1.0)), u.x),
|
|
64
|
+
u.y
|
|
65
|
+
);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
float billow(vec2 p, float t, int octaves) {
|
|
69
|
+
float v = valueNoise(p * 2.4 + vec2(0.0, -t * 0.5)) * 0.62;
|
|
70
|
+
if (octaves == 1) return v / 0.62;
|
|
71
|
+
v += valueNoise(p * 5.1 + vec2(t * 0.15, -t * 0.8)) * 0.38;
|
|
72
|
+
return v / 1.0;
|
|
73
|
+
}
|
|
74
|
+
`;
|
|
75
|
+
|
|
76
|
+
export const PARTICLE_VERT = `#version 300 es
|
|
77
|
+
/** Per-vertex: the quad corner, and which blade of the cross it belongs to. */
|
|
78
|
+
layout(location = 0) in vec2 aCorner;
|
|
79
|
+
layout(location = 1) in float aBlade;
|
|
80
|
+
/** Per-instance. */
|
|
81
|
+
layout(location = 2) in vec3 aPos;
|
|
82
|
+
layout(location = 3) in float aSize;
|
|
83
|
+
layout(location = 4) in float aSpin;
|
|
84
|
+
layout(location = 5) in vec3 aColor;
|
|
85
|
+
/** Opacity, age as a share of life, and this particle's own seed. */
|
|
86
|
+
layout(location = 6) in float aAlpha;
|
|
87
|
+
layout(location = 7) in float aAge;
|
|
88
|
+
layout(location = 8) in float aSeed;
|
|
89
|
+
layout(location = 9) in vec3 aVelocity;
|
|
90
|
+
|
|
91
|
+
uniform mat4 uViewProj;
|
|
92
|
+
uniform vec3 uCameraPos;
|
|
93
|
+
/**
|
|
94
|
+
* How far a particle is stretched along its own motion, in seconds of travel.
|
|
95
|
+
*
|
|
96
|
+
* Zero for smoke, which has no direction worth seeing. A spark is the opposite
|
|
97
|
+
* case: an ember crossing a metre in a frame drawn as a round dot reads as a
|
|
98
|
+
* floating pixel, and the same ember drawn as a short streak along its velocity
|
|
99
|
+
* reads as a thrown spark. The eye gets its motion cue from the shape.
|
|
100
|
+
*/
|
|
101
|
+
uniform float uStretchSec;
|
|
102
|
+
/**
|
|
103
|
+
* 1 to turn a single quad to face the camera, 0 to draw the world-fixed cross.
|
|
104
|
+
*
|
|
105
|
+
* **Camera-facing is the default, and the cross is the option.** It was the other way
|
|
106
|
+
* round until a caller drew an additive glow with a camera looking down -Z and got a
|
|
107
|
+
* bright straight line through the middle of every sprite. The cross is two blades at
|
|
108
|
+
* right angles in *world* space: blade 0 spans X, blade 1 spans Z. Look down either
|
|
109
|
+
* axis and that blade is edge-on, and a disc squeezed into a one-pixel column does not
|
|
110
|
+
* lose the energy it was drawn with — it puts all of it in that column. Alpha-blended
|
|
111
|
+
* smoke half hides it behind its own noise. Additive has nothing to hide it with.
|
|
112
|
+
*
|
|
113
|
+
* Fading a blade out as it turns edge-on fixes that one case and not the matching one:
|
|
114
|
+
* both blades contain world Y, so a camera looking straight down sees *both* edge-on
|
|
115
|
+
* and the puff is a plus sign of two lines, or nothing at all once they are faded. A
|
|
116
|
+
* camera-facing quad has no angle at which it thins, which is why it is what particle
|
|
117
|
+
* systems generally draw.
|
|
118
|
+
*
|
|
119
|
+
* The cross is still worth keeping. Two blades give real parallax when a camera moves
|
|
120
|
+
* through a puff, and that is a volume cue a single quad cannot fake — worth having in
|
|
121
|
+
* a ground-level world whose camera never looks far off the horizontal, where the
|
|
122
|
+
* edge-on blade stays a thin sliver inside soft smoke rather than a line across a
|
|
123
|
+
* spark. It also costs a brightness that swings with the view: a cross covers one
|
|
124
|
+
* sprite of area seen down an axis and about 1.4 seen from the diagonal, so a puff
|
|
125
|
+
* quietly pulses as the camera orbits it. A camera-facing quad covers the same area
|
|
126
|
+
* from everywhere.
|
|
127
|
+
*/
|
|
128
|
+
uniform float uCameraFacing;
|
|
129
|
+
|
|
130
|
+
out vec2 vUv;
|
|
131
|
+
out vec3 vColor;
|
|
132
|
+
out float vAlpha;
|
|
133
|
+
out float vAge;
|
|
134
|
+
out float vSeed;
|
|
135
|
+
out vec3 vWorldPos;
|
|
136
|
+
out vec3 vNormal;
|
|
137
|
+
|
|
138
|
+
void main() {
|
|
139
|
+
float s = sin(aSpin);
|
|
140
|
+
float c = cos(aSpin);
|
|
141
|
+
// Roll within the blade's own plane, so the two blades never look like one
|
|
142
|
+
// rigid object turning.
|
|
143
|
+
vec2 rolled = vec2(aCorner.x * c - aCorner.y * s, aCorner.x * s + aCorner.y * c);
|
|
144
|
+
|
|
145
|
+
/*
|
|
146
|
+
* The plane the corners are laid out in, built from the particle's centre rather than
|
|
147
|
+
* from the corner being transformed, so all four corners of a quad share one basis and
|
|
148
|
+
* the quad stays planar and rectangular.
|
|
149
|
+
*/
|
|
150
|
+
vec3 across;
|
|
151
|
+
vec3 up;
|
|
152
|
+
float bladeGain;
|
|
153
|
+
if (uCameraFacing > 0.5) {
|
|
154
|
+
vec3 toCamera = normalize(uCameraPos - aPos);
|
|
155
|
+
/* Any reference not parallel to the view. World up serves everywhere except looking
|
|
156
|
+
straight up or down it, where the two are the same line and the cross product
|
|
157
|
+
vanishes; +Z takes over there. */
|
|
158
|
+
vec3 reference = abs(toCamera.y) > 0.999 ? vec3(0.0, 0.0, 1.0) : vec3(0.0, 1.0, 0.0);
|
|
159
|
+
across = normalize(cross(reference, toCamera));
|
|
160
|
+
up = cross(toCamera, across);
|
|
161
|
+
/*
|
|
162
|
+
* One quad, not two. Both blades face the camera here, so they would land on exactly
|
|
163
|
+
* the same pixels and the second would be nothing but the first drawn again: double
|
|
164
|
+
* the fill for double the brightness no caller asked for. Collapsing it to zero area
|
|
165
|
+
* costs nothing — the rasteriser drops a degenerate triangle before it shades — and
|
|
166
|
+
* leaves the vertex and index buffers the shape both backends already build, so a
|
|
167
|
+
* batch picks its facing without either one rebuilding its geometry.
|
|
168
|
+
*/
|
|
169
|
+
bladeGain = aBlade < 0.5 ? 1.0 : 0.0;
|
|
170
|
+
} else {
|
|
171
|
+
across = aBlade < 0.5 ? vec3(1.0, 0.0, 0.0) : vec3(0.0, 0.0, 1.0);
|
|
172
|
+
up = vec3(0.0, 1.0, 0.0);
|
|
173
|
+
bladeGain = 1.0;
|
|
174
|
+
}
|
|
175
|
+
vec3 offset = (across * rolled.x + up * rolled.y) * aSize;
|
|
176
|
+
|
|
177
|
+
/*
|
|
178
|
+
* Stretched along travel. Applied as an extra displacement on the component of
|
|
179
|
+
* the corner that already points along the motion, so a stationary particle is
|
|
180
|
+
* untouched and a fast one lengthens without also getting fatter.
|
|
181
|
+
*/
|
|
182
|
+
if (uStretchSec > 0.0) {
|
|
183
|
+
vec3 travel = aVelocity * uStretchSec;
|
|
184
|
+
float along = dot(normalize(offset + vec3(1e-6)), normalize(travel + vec3(1e-6)));
|
|
185
|
+
offset += travel * along * 0.5;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
/* bladeGain applied here, after the stretch rather than before it, so a dropped blade
|
|
189
|
+
is degenerate whatever the stretch added: all four of its corners land on aPos. */
|
|
190
|
+
vec3 world = aPos + offset * bladeGain;
|
|
191
|
+
vUv = aCorner;
|
|
192
|
+
vColor = aColor;
|
|
193
|
+
vAlpha = aAlpha;
|
|
194
|
+
vAge = aAge;
|
|
195
|
+
vSeed = aSeed;
|
|
196
|
+
vWorldPos = world;
|
|
197
|
+
/*
|
|
198
|
+
* The blade's own facing, flipped toward the viewer. A cross has no meaningful
|
|
199
|
+
* outward normal, and a puff of smoke is not a surface — but it does have to be
|
|
200
|
+
* *lit*, and a normal facing the camera is the standard, honest cheat for a
|
|
201
|
+
* volume approximated by cards: it makes the puff read as a lump catching light
|
|
202
|
+
* from wherever the light is, rather than as a flat panel that goes black at
|
|
203
|
+
* some angles.
|
|
204
|
+
*/
|
|
205
|
+
vec3 face = cross(across, up);
|
|
206
|
+
vec3 toEye = normalize(uCameraPos - world);
|
|
207
|
+
vNormal = dot(face, toEye) < 0.0 ? -face : face;
|
|
208
|
+
|
|
209
|
+
gl_Position = uViewProj * vec4(world, 1.0);
|
|
210
|
+
}
|
|
211
|
+
`;
|
|
212
|
+
|
|
213
|
+
/**
|
|
214
|
+
* Smoke, grit and dust: a soft body eroded by noise, alpha blended, and lit.
|
|
215
|
+
*
|
|
216
|
+
* Lit by the sun, the ambient *and* the nearby point lights, which is the half
|
|
217
|
+
* the foliage path could never do. A drift at night beside a brazier threw grey
|
|
218
|
+
* grit whatever the brazier was doing, because grass has no point-light term —
|
|
219
|
+
* and unlit smoke in a world lit by fires is the tell that gives an effect away
|
|
220
|
+
* fastest. A puff catching a flame's colour is most of what makes it belong.
|
|
221
|
+
*/
|
|
222
|
+
export const PARTICLE_SMOKE_FRAG = `#version 300 es
|
|
223
|
+
precision highp float;
|
|
224
|
+
|
|
225
|
+
in vec2 vUv;
|
|
226
|
+
in vec3 vColor;
|
|
227
|
+
in float vAlpha;
|
|
228
|
+
in float vAge;
|
|
229
|
+
in float vSeed;
|
|
230
|
+
in vec3 vWorldPos;
|
|
231
|
+
in vec3 vNormal;
|
|
232
|
+
|
|
233
|
+
uniform float uTime;
|
|
234
|
+
uniform vec3 uDirectionalDir;
|
|
235
|
+
uniform vec3 uDirectionalColor;
|
|
236
|
+
uniform vec3 uAmbient;
|
|
237
|
+
uniform vec3 uCameraPos;
|
|
238
|
+
uniform int uNoiseOctaves;
|
|
239
|
+
/** How strongly the noise eats into the puff. 0 is a plain soft ball. */
|
|
240
|
+
uniform float uErosion;
|
|
241
|
+
|
|
242
|
+
#define MAX_LIGHTS ${MAX_POINT_LIGHTS}
|
|
243
|
+
uniform int uLightCount;
|
|
244
|
+
uniform vec3 uLightPos[MAX_LIGHTS];
|
|
245
|
+
uniform vec3 uLightColor[MAX_LIGHTS];
|
|
246
|
+
uniform float uLightRadius[MAX_LIGHTS];
|
|
247
|
+
// How present each light is, 0 to 1. See pointLightSelection.ts.
|
|
248
|
+
uniform float uLightWeight[MAX_LIGHTS];
|
|
249
|
+
|
|
250
|
+
${FOG_GLSL}
|
|
251
|
+
${PARTICLE_NOISE}
|
|
252
|
+
|
|
253
|
+
out vec4 outColor;
|
|
254
|
+
${OUTPUT_TRANSFORM_GLSL}
|
|
255
|
+
|
|
256
|
+
void main() {
|
|
257
|
+
/*
|
|
258
|
+
* A round, soft body first. 'smoothstep' rather than a hard disc: the edge is
|
|
259
|
+
* the entire difference between a puff and a sprite, and a cut-off circle reads
|
|
260
|
+
* as a decal however good the noise inside it is.
|
|
261
|
+
*/
|
|
262
|
+
float r = length(vUv);
|
|
263
|
+
float body = 1.0 - smoothstep(0.35, 1.0, r);
|
|
264
|
+
if (body <= 0.0) discard;
|
|
265
|
+
|
|
266
|
+
/*
|
|
267
|
+
* Then eaten into by noise that drifts and coarsens as the puff ages, so it
|
|
268
|
+
* dissipates by *breaking up* rather than by uniformly thinning. Uniform
|
|
269
|
+
* thinning is what a fading sprite does, and it is what the old cube did.
|
|
270
|
+
*/
|
|
271
|
+
float t = uTime * 0.55 + vSeed * 7.31;
|
|
272
|
+
float n = billow(vUv * (0.9 + vAge * 1.4) + vec2(vSeed * 3.7, 0.0), t, uNoiseOctaves);
|
|
273
|
+
float erode = mix(1.0, n, uErosion * (0.35 + vAge * 0.65));
|
|
274
|
+
float mask = clamp(body * erode, 0.0, 1.0);
|
|
275
|
+
// Feather the last of it out rather than letting a noise threshold flicker.
|
|
276
|
+
mask *= smoothstep(0.0, 0.25, mask);
|
|
277
|
+
if (mask <= 0.002) discard;
|
|
278
|
+
|
|
279
|
+
vec3 n3 = normalize(vNormal);
|
|
280
|
+
/*
|
|
281
|
+
* Wrapped diffuse. Smoke transmits as well as reflects, so the terminator on a
|
|
282
|
+
* puff sits well past 90° — a hard 'max(dot, 0)' gives a lump with a black side,
|
|
283
|
+
* which is exactly the "coloured box" failure the fidelity rules name.
|
|
284
|
+
*/
|
|
285
|
+
float ndl = dot(n3, uDirectionalDir) * 0.5 + 0.5;
|
|
286
|
+
vec3 lit = uAmbient + uDirectionalColor * ndl;
|
|
287
|
+
|
|
288
|
+
for (int i = 0; i < MAX_LIGHTS; i++) {
|
|
289
|
+
if (i >= uLightCount) break;
|
|
290
|
+
vec3 toLight = uLightPos[i] - vWorldPos;
|
|
291
|
+
float dist = length(toLight);
|
|
292
|
+
float radius = uLightRadius[i];
|
|
293
|
+
if (radius <= 0.0 || dist >= radius) continue;
|
|
294
|
+
float falloff = 1.0 - dist / radius;
|
|
295
|
+
float wrapped = dot(n3, toLight / max(dist, 1e-4)) * 0.5 + 0.5;
|
|
296
|
+
lit += uLightColor[i] * falloff * falloff * wrapped * uLightWeight[i];
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
vec3 shaded = vColor * lit;
|
|
300
|
+
float fog = mediumFog(distance(vWorldPos, uCameraPos), vWorldPos.y);
|
|
301
|
+
outColor = vec4(applyOutputTransform(mix(shaded, mediumColor(), fog)), mask * vAlpha);
|
|
302
|
+
}
|
|
303
|
+
`;
|
|
304
|
+
|
|
305
|
+
/**
|
|
306
|
+
* Sparks and embers: additive, hot in the middle, and stretched along travel.
|
|
307
|
+
*
|
|
308
|
+
* No lighting at all, deliberately — a spark *is* a light source, and shading it
|
|
309
|
+
* is what turned the first version into a grey cube at night. The core is allowed
|
|
310
|
+
* past white so it reads as incandescent rather than as a pale dot.
|
|
311
|
+
*/
|
|
312
|
+
export const PARTICLE_SPARK_FRAG = `#version 300 es
|
|
313
|
+
precision highp float;
|
|
314
|
+
|
|
315
|
+
in vec2 vUv;
|
|
316
|
+
in vec3 vColor;
|
|
317
|
+
in float vAlpha;
|
|
318
|
+
in float vAge;
|
|
319
|
+
in float vSeed;
|
|
320
|
+
in vec3 vWorldPos;
|
|
321
|
+
in vec3 vNormal;
|
|
322
|
+
|
|
323
|
+
uniform float uTime;
|
|
324
|
+
uniform vec3 uCameraPos;
|
|
325
|
+
/** How far past white the centre may go. */
|
|
326
|
+
uniform float uCoreGain;
|
|
327
|
+
${FOG_GLSL}
|
|
328
|
+
${PARTICLE_NOISE}
|
|
329
|
+
|
|
330
|
+
out vec4 outColor;
|
|
331
|
+
${OUTPUT_TRANSFORM_GLSL}
|
|
332
|
+
|
|
333
|
+
void main() {
|
|
334
|
+
float r = length(vUv);
|
|
335
|
+
if (r > 1.0) discard;
|
|
336
|
+
|
|
337
|
+
/*
|
|
338
|
+
* Two falloffs again — a tight core and a broad halo — because one gives either
|
|
339
|
+
* a hard dot or a soft smudge. The halo is what makes a shower of embers read
|
|
340
|
+
* as glowing air rather than as a scatter of points.
|
|
341
|
+
*/
|
|
342
|
+
float core = pow(1.0 - clamp(r, 0.0, 1.0), 6.0);
|
|
343
|
+
float halo = pow(1.0 - clamp(r, 0.0, 1.0), 1.6);
|
|
344
|
+
|
|
345
|
+
/*
|
|
346
|
+
* Embers flicker as they tumble and cool. Per-particle phase from the seed, so
|
|
347
|
+
* a shower crackles instead of pulsing as one body.
|
|
348
|
+
*/
|
|
349
|
+
float flick = 0.7 + 0.3 * valueNoise(vec2(uTime * 9.0 + vSeed * 13.0, vSeed));
|
|
350
|
+
|
|
351
|
+
// Cooling: the last of a spark's life is dimmer as well as smaller.
|
|
352
|
+
float cool = 1.0 - vAge * vAge;
|
|
353
|
+
float energy = (halo * 0.55 + core * uCoreGain) * flick * cool * vAlpha;
|
|
354
|
+
|
|
355
|
+
float fog = mediumFog(distance(vWorldPos, uCameraPos), vWorldPos.y);
|
|
356
|
+
energy *= 1.0 - fog;
|
|
357
|
+
/*
|
|
358
|
+
* Alpha 1, energy in the colour — see the note in 'bolt.ts'. Additive blending is
|
|
359
|
+
* 'rgb * a', so carrying the energy in both channels squares it and quietly halves
|
|
360
|
+
* every emissive effect in the game.
|
|
361
|
+
*/
|
|
362
|
+
outColor = vec4(applyOutputTransform(vColor * energy), 1.0);
|
|
363
|
+
}
|
|
364
|
+
`;
|
|
365
|
+
|
|
366
|
+
/**
|
|
367
|
+
* Dust motes and drifting glints: unlit, alpha blended, and fogged only when the caller asks.
|
|
368
|
+
*
|
|
369
|
+
* **What neither existing material could draw.** `'spark'` is unlit but additive — its
|
|
370
|
+
* fragment stage folds its whole brightness into colour and always writes alpha 1, because
|
|
371
|
+
* additive blending is `rgb * a` and a real alpha there would double the energy (the note at
|
|
372
|
+
* the end of `PARTICLE_SPARK_FRAG` explains why). `'smoke'` has a real, varying alpha, but pays
|
|
373
|
+
* for it with lighting it can never turn off. A point that is unlit *and* genuinely
|
|
374
|
+
* translucent — what three.js's `PointsMaterial` draws, and what drei's `Sparkles` is built on
|
|
375
|
+
* — was not expressible by either.
|
|
376
|
+
*
|
|
377
|
+
* No noise, no core-and-halo split: a mote is not a body being eroded and it is not
|
|
378
|
+
* incandescent, so borrowing either shape would draw the wrong material behind the right blend
|
|
379
|
+
* state. This is the plainest fragment stage in the file on purpose — a soft round point whose
|
|
380
|
+
* colour is nothing but its own vColor and whose opacity is nothing but its own vAlpha.
|
|
381
|
+
*
|
|
382
|
+
* **Fog is the one thing this material still asks the caller about.** A mote is the one
|
|
383
|
+
* particle a scene legitimately wants both ways: dust caught in a shaft of light recedes into
|
|
384
|
+
* haze exactly like anything else out there, but a field of them meant to read as flat, close
|
|
385
|
+
* atmosphere — the look this exists for — must not. `'spark'` and `'smoke'` take no such
|
|
386
|
+
* option and stay unconditionally fogged, matching every particle drawn before this material
|
|
387
|
+
* existed; see `ParticleBatchOptions.fog`.
|
|
388
|
+
*/
|
|
389
|
+
export const PARTICLE_MOTE_FRAG = `#version 300 es
|
|
390
|
+
precision highp float;
|
|
391
|
+
|
|
392
|
+
in vec2 vUv;
|
|
393
|
+
in vec3 vColor;
|
|
394
|
+
in float vAlpha;
|
|
395
|
+
in float vAge;
|
|
396
|
+
in float vSeed;
|
|
397
|
+
in vec3 vWorldPos;
|
|
398
|
+
in vec3 vNormal;
|
|
399
|
+
|
|
400
|
+
uniform vec3 uCameraPos;
|
|
401
|
+
/**
|
|
402
|
+
* Whether the fragment stage mixes toward the medium's own colour at all. 0 — what a batch
|
|
403
|
+
* gets by leaving ParticleBatchOptions.fog unset — leaves vColor untouched by distance, which
|
|
404
|
+
* is what a caller reaching for this material over 'spark'/'smoke' is usually asking for: an
|
|
405
|
+
* unlit point drawn exactly as its own colour says. 1 mixes toward mediumColor() by
|
|
406
|
+
* mediumFog(), the same medium every other pass in the frame recedes into.
|
|
407
|
+
*/
|
|
408
|
+
uniform int uFogEnabled;
|
|
409
|
+
${FOG_GLSL}
|
|
410
|
+
|
|
411
|
+
out vec4 outColor;
|
|
412
|
+
${OUTPUT_TRANSFORM_GLSL}
|
|
413
|
+
|
|
414
|
+
void main() {
|
|
415
|
+
/*
|
|
416
|
+
* One soft, round falloff — no erosion, no core past white, because this material draws
|
|
417
|
+
* neither a body being eaten by noise nor a light source. Squared rather than linear so the
|
|
418
|
+
* edge feathers instead of ramping, which is what keeps a field of these reading as dust
|
|
419
|
+
* rather than as a scatter of hard-edged discs.
|
|
420
|
+
*/
|
|
421
|
+
float r = length(vUv);
|
|
422
|
+
float body = 1.0 - smoothstep(0.4, 1.0, r);
|
|
423
|
+
if (body <= 0.0) discard;
|
|
424
|
+
float alpha = body * body * vAlpha;
|
|
425
|
+
if (alpha <= 0.002) discard;
|
|
426
|
+
|
|
427
|
+
vec3 color = vColor;
|
|
428
|
+
if (uFogEnabled != 0) {
|
|
429
|
+
float fog = mediumFog(distance(vWorldPos, uCameraPos), vWorldPos.y);
|
|
430
|
+
color = mix(color, mediumColor(), fog);
|
|
431
|
+
}
|
|
432
|
+
/*
|
|
433
|
+
* A real alpha blend (SRC_ALPHA, ONE_MINUS_SRC_ALPHA) rather than spark's energy-in-colour
|
|
434
|
+
* trick: this point genuinely occludes what little is behind it instead of adding light to it.
|
|
435
|
+
*/
|
|
436
|
+
outColor = vec4(applyOutputTransform(color), alpha);
|
|
437
|
+
}
|
|
438
|
+
`;
|