@lampdotdev/lamp 0.0.0-stage → 0.35.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 +21 -0
- package/README.md +357 -2
- package/Resources/Devices/roku.json +410 -0
- package/Resources/Devices/xbox-one.json +367 -0
- package/Resources/GameKit/NOTICE.md +63 -0
- package/Resources/GameKit/apple/LampPage.swift +1646 -0
- package/Resources/GameKit/apple/LampPlayer.swift +46 -0
- package/Resources/GameKit/apple/LampWebApp.swift +63 -0
- package/Resources/GameKit/apple/LampWebGame.swift +87 -0
- package/Resources/GameKit/apple/Native.swift +12 -0
- package/Resources/GameKit/build.sh +55 -0
- package/Resources/GameKit/lamp_game.h +116 -0
- package/Resources/GameKit/lamp_host.h +19 -0
- package/Resources/GameKit/lamp_kit.cpp +61 -0
- package/Resources/GameKit/lamp_sound.cpp +455 -0
- package/Resources/GameKit/lamp_xbox.cpp +374 -0
- package/Resources/GameKit/libraries/HandmadeMath.h +3940 -0
- package/Resources/GameKit/libraries/cgltf.h +7240 -0
- package/Resources/GameKit/libraries/dr_mp3.h +5430 -0
- package/Resources/GameKit/libraries/dr_wav.h +9209 -0
- package/Resources/GameKit/libraries/sokol_debugtext.h +4754 -0
- package/Resources/GameKit/libraries/sokol_gfx.h +29558 -0
- package/Resources/GameKit/libraries/sokol_gl.h +4538 -0
- package/Resources/GameKit/libraries/sokol_log.h +335 -0
- package/Resources/GameKit/libraries/sokol_shape.h +1531 -0
- package/Resources/GameKit/libraries/stb_image.h +7988 -0
- package/Resources/GameKit/libraries/stb_vorbis.c +5584 -0
- package/Resources/GameKit/scaffold/Game/game.cpp +142 -0
- package/Resources/GameKit/scaffold/Game/scene.glsl +49 -0
- package/Resources/GameKit/scaffold-web/Web/game.js +31 -0
- package/Resources/GameKit/scaffold-web/Web/index.html +13 -0
- package/Resources/GameKit/scaffold-web/Web/making.js +33 -0
- package/Resources/GameKit/scaffold-web/Web/world.js +33 -0
- package/Resources/GameKit/web/lamp-game.js +3036 -0
- package/Resources/GameKit/web/lamp-phaser.js +128 -0
- package/Resources/WebHost/App.exe +0 -0
- package/Resources/WebHost/Microsoft.Web.WebView2.Core.dll +0 -0
- package/Resources/WebHost/WebView2-LICENSE.txt +27 -0
- package/Resources/WebHost/lamp_controllers.h +1506 -0
- package/Resources/WebHost/lamp_web_host.cpp +1173 -0
- package/Resources/WebLibraries/earlier.txt +318 -0
- package/Resources/WebLibraries/phaser/LICENSE.md +20 -0
- package/Resources/WebLibraries/phaser/NOTICE.md +2 -0
- package/Resources/WebLibraries/phaser/phaser.esm.min.js +1 -0
- package/Resources/WebLibraries/qrcode/LICENSE +21 -0
- package/Resources/WebLibraries/qrcode/NOTICE.md +4 -0
- package/Resources/WebLibraries/qrcode/qrcode.js +2297 -0
- package/Resources/WebLibraries/rapier/LICENSE +201 -0
- package/Resources/WebLibraries/rapier/NOTICE.md +3 -0
- package/Resources/WebLibraries/rapier/rapier.js +2 -0
- package/Resources/WebLibraries/three/LICENSE +21 -0
- package/Resources/WebLibraries/three/NOTICE.md +4 -0
- package/Resources/WebLibraries/three/addons/animation/AnimationClipCreator.js +168 -0
- package/Resources/WebLibraries/three/addons/animation/CCDIKSolver.js +607 -0
- package/Resources/WebLibraries/three/addons/controls/ArcballControls.js +3543 -0
- package/Resources/WebLibraries/three/addons/controls/DragControls.js +452 -0
- package/Resources/WebLibraries/three/addons/controls/FirstPersonControls.js +512 -0
- package/Resources/WebLibraries/three/addons/controls/FlyControls.js +384 -0
- package/Resources/WebLibraries/three/addons/controls/MapControls.js +116 -0
- package/Resources/WebLibraries/three/addons/controls/OrbitControls.js +1985 -0
- package/Resources/WebLibraries/three/addons/controls/PointerLockControls.js +264 -0
- package/Resources/WebLibraries/three/addons/controls/TrackballControls.js +1106 -0
- package/Resources/WebLibraries/three/addons/controls/TransformControls.js +2003 -0
- package/Resources/WebLibraries/three/addons/curves/CurveExtras.js +694 -0
- package/Resources/WebLibraries/three/addons/curves/NURBSCurve.js +169 -0
- package/Resources/WebLibraries/three/addons/curves/NURBSSurface.js +98 -0
- package/Resources/WebLibraries/three/addons/curves/NURBSUtils.js +532 -0
- package/Resources/WebLibraries/three/addons/curves/NURBSVolume.js +82 -0
- package/Resources/WebLibraries/three/addons/effects/AnaglyphEffect.js +274 -0
- package/Resources/WebLibraries/three/addons/effects/AsciiEffect.js +323 -0
- package/Resources/WebLibraries/three/addons/effects/OutlineEffect.js +489 -0
- package/Resources/WebLibraries/three/addons/effects/ParallaxBarrierEffect.js +155 -0
- package/Resources/WebLibraries/three/addons/effects/StereoEffect.js +91 -0
- package/Resources/WebLibraries/three/addons/environments/ColorEnvironment.js +59 -0
- package/Resources/WebLibraries/three/addons/environments/DebugEnvironment.js +102 -0
- package/Resources/WebLibraries/three/addons/environments/RoomEnvironment.js +185 -0
- package/Resources/WebLibraries/three/addons/geometries/BoxLineGeometry.js +92 -0
- package/Resources/WebLibraries/three/addons/geometries/ConvexGeometry.js +72 -0
- package/Resources/WebLibraries/three/addons/geometries/DecalGeometry.js +420 -0
- package/Resources/WebLibraries/three/addons/geometries/LoftGeometry.js +355 -0
- package/Resources/WebLibraries/three/addons/geometries/ParametricFunctions.js +100 -0
- package/Resources/WebLibraries/three/addons/geometries/ParametricGeometry.js +172 -0
- package/Resources/WebLibraries/three/addons/geometries/RoundedBoxGeometry.js +216 -0
- package/Resources/WebLibraries/three/addons/geometries/TeapotGeometry.js +689 -0
- package/Resources/WebLibraries/three/addons/geometries/TextGeometry.js +102 -0
- package/Resources/WebLibraries/three/addons/helpers/AnimationPathHelper.js +302 -0
- package/Resources/WebLibraries/three/addons/helpers/LightProbeGridHelper.js +166 -0
- package/Resources/WebLibraries/three/addons/helpers/LightProbeGridHelperWebGL.js +221 -0
- package/Resources/WebLibraries/three/addons/helpers/LightProbeHelper.js +166 -0
- package/Resources/WebLibraries/three/addons/helpers/LightProbeHelperGPU.js +102 -0
- package/Resources/WebLibraries/three/addons/helpers/OctreeHelper.js +109 -0
- package/Resources/WebLibraries/three/addons/helpers/PositionalAudioHelper.js +169 -0
- package/Resources/WebLibraries/three/addons/helpers/RapierHelper.js +59 -0
- package/Resources/WebLibraries/three/addons/helpers/RectAreaLightHelper.js +118 -0
- package/Resources/WebLibraries/three/addons/helpers/TextureHelper.js +265 -0
- package/Resources/WebLibraries/three/addons/helpers/TextureHelperGPU.js +214 -0
- package/Resources/WebLibraries/three/addons/helpers/VertexNormalsHelper.js +155 -0
- package/Resources/WebLibraries/three/addons/helpers/VertexTangentsHelper.js +133 -0
- package/Resources/WebLibraries/three/addons/helpers/ViewHelper.js +529 -0
- package/Resources/WebLibraries/three/addons/interactive/HTMLMesh.js +617 -0
- package/Resources/WebLibraries/three/addons/interactive/InteractiveGroup.js +224 -0
- package/Resources/WebLibraries/three/addons/interactive/SelectionBox.js +324 -0
- package/Resources/WebLibraries/three/addons/interactive/SelectionHelper.js +150 -0
- package/Resources/WebLibraries/three/addons/libs/fflate.module.js +2699 -0
- package/Resources/WebLibraries/three/addons/libs/lil-gui.module.min.js +8 -0
- package/Resources/WebLibraries/three/addons/libs/meshopt_decoder.module.js +196 -0
- package/Resources/WebLibraries/three/addons/libs/potpack.module.js +125 -0
- package/Resources/WebLibraries/three/addons/libs/stats.module.js +167 -0
- package/Resources/WebLibraries/three/addons/libs/tween.module.js +876 -0
- package/Resources/WebLibraries/three/addons/lighting/ClusteredLighting.js +153 -0
- package/Resources/WebLibraries/three/addons/lighting/DynamicLighting.js +82 -0
- package/Resources/WebLibraries/three/addons/lighting/LightMapper.js +295 -0
- package/Resources/WebLibraries/three/addons/lighting/LightProbeGrid.js +923 -0
- package/Resources/WebLibraries/three/addons/lighting/LightProbeGridUtils.js +107 -0
- package/Resources/WebLibraries/three/addons/lighting/LightProbeGridWebGL.js +846 -0
- package/Resources/WebLibraries/three/addons/lighting/vxgi/VXGIConeTracer.js +243 -0
- package/Resources/WebLibraries/three/addons/lighting/vxgi/VXGIIrradiance.js +43 -0
- package/Resources/WebLibraries/three/addons/lighting/vxgi/VXGINode.js +617 -0
- package/Resources/WebLibraries/three/addons/lighting/vxgi/VXGISceneCollector.js +793 -0
- package/Resources/WebLibraries/three/addons/lighting/vxgi/VXGIVolume.js +1440 -0
- package/Resources/WebLibraries/three/addons/lights/LightProbeGenerator.js +337 -0
- package/Resources/WebLibraries/three/addons/lights/RectAreaLightTexturesLib.js +127 -0
- package/Resources/WebLibraries/three/addons/lights/RectAreaLightUniformsLib.js +40 -0
- package/Resources/WebLibraries/three/addons/lights/SunLight.js +100 -0
- package/Resources/WebLibraries/three/addons/lights/SunLightNode.js +56 -0
- package/Resources/WebLibraries/three/addons/lights/SunLightShadow.js +319 -0
- package/Resources/WebLibraries/three/addons/lights/SunShadowNode.js +312 -0
- package/Resources/WebLibraries/three/addons/lines/Line2.js +56 -0
- package/Resources/WebLibraries/three/addons/lines/LineGeometry.js +157 -0
- package/Resources/WebLibraries/three/addons/lines/LineMaterial.js +742 -0
- package/Resources/WebLibraries/three/addons/lines/LineSegments2.js +434 -0
- package/Resources/WebLibraries/three/addons/lines/LineSegmentsGeometry.js +298 -0
- package/Resources/WebLibraries/three/addons/lines/Wireframe.js +108 -0
- package/Resources/WebLibraries/three/addons/lines/WireframeGeometry2.js +49 -0
- package/Resources/WebLibraries/three/addons/lines/webgpu/Line2.js +46 -0
- package/Resources/WebLibraries/three/addons/lines/webgpu/LineSegments2.js +419 -0
- package/Resources/WebLibraries/three/addons/lines/webgpu/Wireframe.js +86 -0
- package/Resources/WebLibraries/three/addons/loaders/EXRLoader.js +3411 -0
- package/Resources/WebLibraries/three/addons/loaders/FBXLoader.js +4660 -0
- package/Resources/WebLibraries/three/addons/loaders/FontLoader.js +262 -0
- package/Resources/WebLibraries/three/addons/loaders/GLTFLoader.js +5006 -0
- package/Resources/WebLibraries/three/addons/loaders/HDRLoader.js +463 -0
- package/Resources/WebLibraries/three/addons/loaders/MTLLoader.js +601 -0
- package/Resources/WebLibraries/three/addons/loaders/OBJLoader.js +961 -0
- package/Resources/WebLibraries/three/addons/loaders/PLYLoader.js +992 -0
- package/Resources/WebLibraries/three/addons/loaders/RGBELoader.js +18 -0
- package/Resources/WebLibraries/three/addons/loaders/STLLoader.js +423 -0
- package/Resources/WebLibraries/three/addons/loaders/SVGLoader.js +3297 -0
- package/Resources/WebLibraries/three/addons/loaders/TGALoader.js +539 -0
- package/Resources/WebLibraries/three/addons/loaders/UltraHDRLoader.js +757 -0
- package/Resources/WebLibraries/three/addons/math/Capsule.js +159 -0
- package/Resources/WebLibraries/three/addons/math/ColorConverter.js +62 -0
- package/Resources/WebLibraries/three/addons/math/ColorSpaces.js +147 -0
- package/Resources/WebLibraries/three/addons/math/ConvexHull.js +1695 -0
- package/Resources/WebLibraries/three/addons/math/ImprovedNoise.js +88 -0
- package/Resources/WebLibraries/three/addons/math/Lut.js +317 -0
- package/Resources/WebLibraries/three/addons/math/MeshSurfaceSampler.js +315 -0
- package/Resources/WebLibraries/three/addons/math/OBB.js +535 -0
- package/Resources/WebLibraries/three/addons/math/Octree.js +825 -0
- package/Resources/WebLibraries/three/addons/math/SimplexNoise.js +470 -0
- package/Resources/WebLibraries/three/addons/misc/ConvexObjectBreaker.js +539 -0
- package/Resources/WebLibraries/three/addons/misc/GPUComputationRenderer.js +508 -0
- package/Resources/WebLibraries/three/addons/misc/Gyroscope.js +78 -0
- package/Resources/WebLibraries/three/addons/misc/MorphAnimMesh.js +119 -0
- package/Resources/WebLibraries/three/addons/misc/MorphBlendMesh.js +425 -0
- package/Resources/WebLibraries/three/addons/misc/ProgressiveLightMap.js +370 -0
- package/Resources/WebLibraries/three/addons/misc/ProgressiveLightMapGPU.js +322 -0
- package/Resources/WebLibraries/three/addons/misc/RollerCoaster.js +661 -0
- package/Resources/WebLibraries/three/addons/misc/Sculptor.js +1679 -0
- package/Resources/WebLibraries/three/addons/misc/SculptorMesh.js +1504 -0
- package/Resources/WebLibraries/three/addons/misc/SculptorTools.js +1180 -0
- package/Resources/WebLibraries/three/addons/misc/SculptorUtils.js +345 -0
- package/Resources/WebLibraries/three/addons/misc/TileCreasedNormalsPlugin.js +270 -0
- package/Resources/WebLibraries/three/addons/misc/TubePainter.js +611 -0
- package/Resources/WebLibraries/three/addons/misc/Volume.js +520 -0
- package/Resources/WebLibraries/three/addons/misc/VolumeSlice.js +275 -0
- package/Resources/WebLibraries/three/addons/modifiers/CurveModifier.js +374 -0
- package/Resources/WebLibraries/three/addons/modifiers/CurveModifierGPU.js +256 -0
- package/Resources/WebLibraries/three/addons/modifiers/EdgeSplitModifier.js +299 -0
- package/Resources/WebLibraries/three/addons/modifiers/TessellateModifier.js +340 -0
- package/Resources/WebLibraries/three/addons/objects/GroundedSkybox.js +69 -0
- package/Resources/WebLibraries/three/addons/objects/Lensflare.js +489 -0
- package/Resources/WebLibraries/three/addons/objects/LensflareMesh.js +376 -0
- package/Resources/WebLibraries/three/addons/objects/MarchingCubes.js +1261 -0
- package/Resources/WebLibraries/three/addons/objects/Reflector.js +390 -0
- package/Resources/WebLibraries/three/addons/objects/ReflectorForSSRPass.js +393 -0
- package/Resources/WebLibraries/three/addons/objects/Refractor.js +389 -0
- package/Resources/WebLibraries/three/addons/objects/ShadowMesh.js +130 -0
- package/Resources/WebLibraries/three/addons/objects/Sky.js +342 -0
- package/Resources/WebLibraries/three/addons/objects/SkyMesh.js +403 -0
- package/Resources/WebLibraries/three/addons/objects/Water.js +374 -0
- package/Resources/WebLibraries/three/addons/objects/Water2.js +403 -0
- package/Resources/WebLibraries/three/addons/objects/Water2Mesh.js +199 -0
- package/Resources/WebLibraries/three/addons/objects/WaterMesh.js +194 -0
- package/Resources/WebLibraries/three/addons/postprocessing/AfterimagePass.js +187 -0
- package/Resources/WebLibraries/three/addons/postprocessing/BloomPass.js +274 -0
- package/Resources/WebLibraries/three/addons/postprocessing/BokehPass.js +218 -0
- package/Resources/WebLibraries/three/addons/postprocessing/ClearPass.js +97 -0
- package/Resources/WebLibraries/three/addons/postprocessing/CubeTexturePass.js +146 -0
- package/Resources/WebLibraries/three/addons/postprocessing/DotScreenPass.js +114 -0
- package/Resources/WebLibraries/three/addons/postprocessing/EffectComposer.js +365 -0
- package/Resources/WebLibraries/three/addons/postprocessing/FXAAPass.js +40 -0
- package/Resources/WebLibraries/three/addons/postprocessing/FilmPass.js +113 -0
- package/Resources/WebLibraries/three/addons/postprocessing/GTAOPass.js +735 -0
- package/Resources/WebLibraries/three/addons/postprocessing/GlitchPass.js +177 -0
- package/Resources/WebLibraries/three/addons/postprocessing/HalftonePass.js +134 -0
- package/Resources/WebLibraries/three/addons/postprocessing/LUTPass.js +138 -0
- package/Resources/WebLibraries/three/addons/postprocessing/MaskPass.js +195 -0
- package/Resources/WebLibraries/three/addons/postprocessing/OutlinePass.js +776 -0
- package/Resources/WebLibraries/three/addons/postprocessing/OutputPass.js +148 -0
- package/Resources/WebLibraries/three/addons/postprocessing/Pass.js +191 -0
- package/Resources/WebLibraries/three/addons/postprocessing/RenderPass.js +193 -0
- package/Resources/WebLibraries/three/addons/postprocessing/RenderPixelatedPass.js +314 -0
- package/Resources/WebLibraries/three/addons/postprocessing/RenderTransitionPass.js +267 -0
- package/Resources/WebLibraries/three/addons/postprocessing/SAOPass.js +407 -0
- package/Resources/WebLibraries/three/addons/postprocessing/SMAAPass.js +230 -0
- package/Resources/WebLibraries/three/addons/postprocessing/SSAARenderPass.js +313 -0
- package/Resources/WebLibraries/three/addons/postprocessing/SSAOPass.js +527 -0
- package/Resources/WebLibraries/three/addons/postprocessing/SSRPass.js +858 -0
- package/Resources/WebLibraries/three/addons/postprocessing/SavePass.js +132 -0
- package/Resources/WebLibraries/three/addons/postprocessing/ShaderPass.js +135 -0
- package/Resources/WebLibraries/three/addons/postprocessing/TAARenderPass.js +243 -0
- package/Resources/WebLibraries/three/addons/postprocessing/TexturePass.js +131 -0
- package/Resources/WebLibraries/three/addons/postprocessing/UnrealBloomPass.js +541 -0
- package/Resources/WebLibraries/three/addons/shaders/ACESFilmicToneMappingShader.js +96 -0
- package/Resources/WebLibraries/three/addons/shaders/AfterimageShader.js +63 -0
- package/Resources/WebLibraries/three/addons/shaders/BasicShader.js +36 -0
- package/Resources/WebLibraries/three/addons/shaders/BleachBypassShader.js +68 -0
- package/Resources/WebLibraries/three/addons/shaders/BlendShader.js +56 -0
- package/Resources/WebLibraries/three/addons/shaders/BokehShader.js +151 -0
- package/Resources/WebLibraries/three/addons/shaders/BokehShader2.js +404 -0
- package/Resources/WebLibraries/three/addons/shaders/BrightnessContrastShader.js +62 -0
- package/Resources/WebLibraries/three/addons/shaders/ColorCorrectionShader.js +59 -0
- package/Resources/WebLibraries/three/addons/shaders/ColorifyShader.js +57 -0
- package/Resources/WebLibraries/three/addons/shaders/ConvolutionShader.js +74 -0
- package/Resources/WebLibraries/three/addons/shaders/CopyShader.js +52 -0
- package/Resources/WebLibraries/three/addons/shaders/DOFMipMapShader.js +63 -0
- package/Resources/WebLibraries/three/addons/shaders/DepthLimitedBlurShader.js +183 -0
- package/Resources/WebLibraries/three/addons/shaders/DigitalGlitch.js +104 -0
- package/Resources/WebLibraries/three/addons/shaders/DotScreenShader.js +75 -0
- package/Resources/WebLibraries/three/addons/shaders/ExposureShader.js +51 -0
- package/Resources/WebLibraries/three/addons/shaders/FXAAShader.js +298 -0
- package/Resources/WebLibraries/three/addons/shaders/FilmShader.js +73 -0
- package/Resources/WebLibraries/three/addons/shaders/FocusShader.js +94 -0
- package/Resources/WebLibraries/three/addons/shaders/FreiChenShader.js +103 -0
- package/Resources/WebLibraries/three/addons/shaders/GTAOShader.js +437 -0
- package/Resources/WebLibraries/three/addons/shaders/GammaCorrectionShader.js +52 -0
- package/Resources/WebLibraries/three/addons/shaders/HalftoneShader.js +332 -0
- package/Resources/WebLibraries/three/addons/shaders/HorizontalBlurShader.js +68 -0
- package/Resources/WebLibraries/three/addons/shaders/HorizontalTiltShiftShader.js +70 -0
- package/Resources/WebLibraries/three/addons/shaders/HueSaturationShader.js +74 -0
- package/Resources/WebLibraries/three/addons/shaders/KaleidoShader.js +65 -0
- package/Resources/WebLibraries/three/addons/shaders/LuminosityHighPassShader.js +68 -0
- package/Resources/WebLibraries/three/addons/shaders/LuminosityShader.js +54 -0
- package/Resources/WebLibraries/three/addons/shaders/MirrorShader.js +62 -0
- package/Resources/WebLibraries/three/addons/shaders/NormalMapShader.js +60 -0
- package/Resources/WebLibraries/three/addons/shaders/OutputShader.js +103 -0
- package/Resources/WebLibraries/three/addons/shaders/PoissonDenoiseShader.js +230 -0
- package/Resources/WebLibraries/three/addons/shaders/RGBShiftShader.js +61 -0
- package/Resources/WebLibraries/three/addons/shaders/SAOShader.js +201 -0
- package/Resources/WebLibraries/three/addons/shaders/SMAAShader.js +489 -0
- package/Resources/WebLibraries/three/addons/shaders/SSAOShader.js +331 -0
- package/Resources/WebLibraries/three/addons/shaders/SSRShader.js +396 -0
- package/Resources/WebLibraries/three/addons/shaders/SepiaShader.js +57 -0
- package/Resources/WebLibraries/three/addons/shaders/SobelOperatorShader.js +98 -0
- package/Resources/WebLibraries/three/addons/shaders/SubsurfaceScatteringShader.js +95 -0
- package/Resources/WebLibraries/three/addons/shaders/TechnicolorShader.js +51 -0
- package/Resources/WebLibraries/three/addons/shaders/ToonShader.js +349 -0
- package/Resources/WebLibraries/three/addons/shaders/TriangleBlurShader.js +79 -0
- package/Resources/WebLibraries/three/addons/shaders/UnpackDepthRGBAShader.js +60 -0
- package/Resources/WebLibraries/three/addons/shaders/VelocityShader.js +137 -0
- package/Resources/WebLibraries/three/addons/shaders/VerticalBlurShader.js +66 -0
- package/Resources/WebLibraries/three/addons/shaders/VerticalTiltShiftShader.js +70 -0
- package/Resources/WebLibraries/three/addons/shaders/VignetteShader.js +56 -0
- package/Resources/WebLibraries/three/addons/shaders/VolumeShader.js +285 -0
- package/Resources/WebLibraries/three/addons/shaders/WaterRefractionShader.js +106 -0
- package/Resources/WebLibraries/three/addons/textures/FlakesTexture.js +54 -0
- package/Resources/WebLibraries/three/addons/tsl/WebGLNodesHandler.js +607 -0
- package/Resources/WebLibraries/three/addons/tsl/display/AfterImageNode.js +256 -0
- package/Resources/WebLibraries/three/addons/tsl/display/AnaglyphPassNode.js +550 -0
- package/Resources/WebLibraries/three/addons/tsl/display/BilateralBlurNode.js +377 -0
- package/Resources/WebLibraries/three/addons/tsl/display/BleachBypass.js +33 -0
- package/Resources/WebLibraries/three/addons/tsl/display/BloomNode.js +599 -0
- package/Resources/WebLibraries/three/addons/tsl/display/CRT.js +150 -0
- package/Resources/WebLibraries/three/addons/tsl/display/ChromaticAberrationNode.js +163 -0
- package/Resources/WebLibraries/three/addons/tsl/display/DenoiseNode.js +354 -0
- package/Resources/WebLibraries/three/addons/tsl/display/DepthOfFieldNode.js +572 -0
- package/Resources/WebLibraries/three/addons/tsl/display/DotScreenNode.js +104 -0
- package/Resources/WebLibraries/three/addons/tsl/display/FSR1Node.js +481 -0
- package/Resources/WebLibraries/three/addons/tsl/display/FXAANode.js +357 -0
- package/Resources/WebLibraries/three/addons/tsl/display/FilmNode.js +101 -0
- package/Resources/WebLibraries/three/addons/tsl/display/GTAONode.js +727 -0
- package/Resources/WebLibraries/three/addons/tsl/display/GaussianBlurNode.js +412 -0
- package/Resources/WebLibraries/three/addons/tsl/display/GodraysNode.js +604 -0
- package/Resources/WebLibraries/three/addons/tsl/display/ImportanceSampledEnvironment.js +564 -0
- package/Resources/WebLibraries/three/addons/tsl/display/LensflareNode.js +282 -0
- package/Resources/WebLibraries/three/addons/tsl/display/Lut3DNode.js +109 -0
- package/Resources/WebLibraries/three/addons/tsl/display/MotionBlur.js +33 -0
- package/Resources/WebLibraries/three/addons/tsl/display/OITPassNode.js +341 -0
- package/Resources/WebLibraries/three/addons/tsl/display/OutlineNode.js +916 -0
- package/Resources/WebLibraries/three/addons/tsl/display/ParallaxBarrierPassNode.js +90 -0
- package/Resources/WebLibraries/three/addons/tsl/display/PixelationPassNode.js +227 -0
- package/Resources/WebLibraries/three/addons/tsl/display/RGBShiftNode.js +96 -0
- package/Resources/WebLibraries/three/addons/tsl/display/RecurrentDenoiseNode.js +812 -0
- package/Resources/WebLibraries/three/addons/tsl/display/RetroPassNode.js +263 -0
- package/Resources/WebLibraries/three/addons/tsl/display/SMAANode.js +729 -0
- package/Resources/WebLibraries/three/addons/tsl/display/SSAAPassNode.js +344 -0
- package/Resources/WebLibraries/three/addons/tsl/display/SSAONode.js +422 -0
- package/Resources/WebLibraries/three/addons/tsl/display/SSGINode.js +698 -0
- package/Resources/WebLibraries/three/addons/tsl/display/SSRNode.js +1430 -0
- package/Resources/WebLibraries/three/addons/tsl/display/SSSNode.js +479 -0
- package/Resources/WebLibraries/three/addons/tsl/display/Sepia.js +24 -0
- package/Resources/WebLibraries/three/addons/tsl/display/Shape.js +29 -0
- package/Resources/WebLibraries/three/addons/tsl/display/SharpenNode.js +284 -0
- package/Resources/WebLibraries/three/addons/tsl/display/SobelOperatorNode.js +168 -0
- package/Resources/WebLibraries/three/addons/tsl/display/StereoCompositePassNode.js +190 -0
- package/Resources/WebLibraries/three/addons/tsl/display/StereoPassNode.js +117 -0
- package/Resources/WebLibraries/three/addons/tsl/display/TAAUNode.js +700 -0
- package/Resources/WebLibraries/three/addons/tsl/display/TRAANode.js +609 -0
- package/Resources/WebLibraries/three/addons/tsl/display/TemporalReprojectNode.js +1024 -0
- package/Resources/WebLibraries/three/addons/tsl/display/TransitionNode.js +141 -0
- package/Resources/WebLibraries/three/addons/tsl/display/boxBlur.js +65 -0
- package/Resources/WebLibraries/three/addons/tsl/display/depthAwareBlend.js +80 -0
- package/Resources/WebLibraries/three/addons/tsl/display/depthAwareBlur.js +63 -0
- package/Resources/WebLibraries/three/addons/tsl/display/hashBlur.js +55 -0
- package/Resources/WebLibraries/three/addons/tsl/display/lensDirt.js +30 -0
- package/Resources/WebLibraries/three/addons/tsl/display/radialBlur.js +68 -0
- package/Resources/WebLibraries/three/addons/tsl/lighting/ClusteredLightsNode.js +994 -0
- package/Resources/WebLibraries/three/addons/tsl/lighting/DynamicLightsNode.js +201 -0
- package/Resources/WebLibraries/three/addons/tsl/lighting/LightProbeGridNode.js +183 -0
- package/Resources/WebLibraries/three/addons/tsl/lighting/data/AmbientLightDataNode.js +67 -0
- package/Resources/WebLibraries/three/addons/tsl/lighting/data/DirectionalLightDataNode.js +117 -0
- package/Resources/WebLibraries/three/addons/tsl/lighting/data/HemisphereLightDataNode.js +105 -0
- package/Resources/WebLibraries/three/addons/tsl/lighting/data/PointLightDataNode.js +140 -0
- package/Resources/WebLibraries/three/addons/tsl/lighting/data/SpotLightDataNode.js +167 -0
- package/Resources/WebLibraries/three/addons/tsl/math/Bayer.js +84 -0
- package/Resources/WebLibraries/three/addons/tsl/math/curlNoise.js +107 -0
- package/Resources/WebLibraries/three/addons/tsl/math/voronoiNoise.js +112 -0
- package/Resources/WebLibraries/three/addons/tsl/shadows/TileShadowNode.js +542 -0
- package/Resources/WebLibraries/three/addons/tsl/shadows/TileShadowNodeHelper.js +212 -0
- package/Resources/WebLibraries/three/addons/tsl/utils/GroundedSkybox.js +62 -0
- package/Resources/WebLibraries/three/addons/tsl/utils/RNoise.js +51 -0
- package/Resources/WebLibraries/three/addons/tsl/utils/Raymarching.js +70 -0
- package/Resources/WebLibraries/three/addons/tsl/utils/SoftParticles.js +53 -0
- package/Resources/WebLibraries/three/addons/tsl/utils/SpecularHelpers.js +302 -0
- package/Resources/WebLibraries/three/addons/tsl/utils/TAAUtils.js +184 -0
- package/Resources/WebLibraries/three/addons/utils/BufferGeometryUtils.js +1523 -0
- package/Resources/WebLibraries/three/addons/utils/CameraUtils.js +82 -0
- package/Resources/WebLibraries/three/addons/utils/ColorUtils.js +76 -0
- package/Resources/WebLibraries/three/addons/utils/GaussianSplatUtils.js +229 -0
- package/Resources/WebLibraries/three/addons/utils/GeometryCompressionUtils.js +547 -0
- package/Resources/WebLibraries/three/addons/utils/GeometryUtils.js +226 -0
- package/Resources/WebLibraries/three/addons/utils/LDrawUtils.js +211 -0
- package/Resources/WebLibraries/three/addons/utils/SceneOptimizer.js +459 -0
- package/Resources/WebLibraries/three/addons/utils/SceneUtils.js +363 -0
- package/Resources/WebLibraries/three/addons/utils/ShadowMapViewer.js +244 -0
- package/Resources/WebLibraries/three/addons/utils/ShadowMapViewerGPU.js +233 -0
- package/Resources/WebLibraries/three/addons/utils/SkeletonUtils.js +496 -0
- package/Resources/WebLibraries/three/addons/utils/SortUtils.js +175 -0
- package/Resources/WebLibraries/three/addons/utils/UVsDebug.js +173 -0
- package/Resources/WebLibraries/three/addons/utils/WebGLTextureUtils.js +115 -0
- package/Resources/WebLibraries/three/addons/utils/WebGPUTextureUtils.js +81 -0
- package/Resources/WebLibraries/three/addons/utils/WorkerPool.js +167 -0
- package/Resources/WebLibraries/three/addons/utils/unwrapUVs.js +865 -0
- package/Resources/WebLibraries/three/three.core.js +61162 -0
- package/Resources/WebLibraries/three/three.module.js +19537 -0
- package/Resources/WebLibraries/three/three.tsl.js +41903 -0
- package/Resources/WebLibraries/three/three.webgpu.js +53714 -0
- package/Resources/skills/2d-game/SKILL.md +305 -0
- package/Resources/skills/3d-game/SKILL.md +274 -0
- package/Resources/skills/accounts/SKILL.md +41 -0
- package/Resources/skills/android-design/SKILL.md +159 -0
- package/Resources/skills/app-ai/SKILL.md +154 -0
- package/Resources/skills/app-intents/SKILL.md +31 -0
- package/Resources/skills/app-kinds/SKILL.md +122 -0
- package/Resources/skills/apple-watch/SKILL.md +43 -0
- package/Resources/skills/assets/SKILL.md +183 -0
- package/Resources/skills/building-blocks/SKILL.md +97 -0
- package/Resources/skills/device-control/SKILL.md +56 -0
- package/Resources/skills/device-integrations/SKILL.md +278 -0
- package/Resources/skills/finder-files/SKILL.md +19 -0
- package/Resources/skills/game/SKILL.md +414 -0
- package/Resources/skills/game-3d/SKILL.md +12 -0
- package/Resources/skills/game-art/SKILL.md +11 -0
- package/Resources/skills/game-feel/SKILL.md +13 -0
- package/Resources/skills/game-levels/SKILL.md +12 -0
- package/Resources/skills/game-live/SKILL.md +12 -0
- package/Resources/skills/game-physics/SKILL.md +13 -0
- package/Resources/skills/game-playtest/SKILL.md +26 -0
- package/Resources/skills/game-ui/SKILL.md +278 -0
- package/Resources/skills/github-projects/SKILL.md +59 -0
- package/Resources/skills/icloud-sync/SKILL.md +30 -0
- package/Resources/skills/iphone-hardware/SKILL.md +57 -0
- package/Resources/skills/iphone-widgets/SKILL.md +53 -0
- package/Resources/skills/lg-developer-mode/SKILL.md +152 -0
- package/Resources/skills/mac-widgets/SKILL.md +60 -0
- package/Resources/skills/maps/SKILL.md +8 -0
- package/Resources/skills/menu-bar/SKILL.md +36 -0
- package/Resources/skills/more-apps/SKILL.md +53 -0
- package/Resources/skills/phone-controllers/SKILL.md +79 -0
- package/Resources/skills/phone-pages/SKILL.md +173 -0
- package/Resources/skills/roku-developer-mode/SKILL.md +106 -0
- package/Resources/skills/scene-3d/SKILL.md +27 -0
- package/Resources/skills/scripting/SKILL.md +17 -0
- package/Resources/skills/share-extension/SKILL.md +22 -0
- package/Resources/skills/tv-design/SKILL.md +72 -0
- package/Resources/skills/web-app/SKILL.md +136 -0
- package/Resources/skills/web-game/SKILL.md +95 -0
- package/Resources/skills/web-or-native/SKILL.md +103 -0
- package/Resources/skills/wish-links/SKILL.md +156 -0
- package/THIRD_PARTY_NOTICES.md +170 -0
- package/cli/android.mjs +941 -0
- package/cli/browser.mjs +268 -0
- package/cli/calls.mjs +390 -0
- package/cli/dev.mjs +773 -0
- package/cli/devices.mjs +984 -0
- package/cli/lamp.mjs +1016 -0
- package/cli/lampapp.mjs +332 -0
- package/cli/lamps/android-host/LampPageGateway.kt +345 -0
- package/cli/lamps/android-host/app/build.gradle.kts +40 -0
- package/cli/lamps/android-host/build.gradle.kts +4 -0
- package/cli/lamps/android-host/game/AndroidManifest.xml +33 -0
- package/cli/lamps/android-host/game/MainActivity.kt +173 -0
- package/cli/lamps/android-host/gradle/libs.versions.toml +39 -0
- package/cli/lamps/android-host/gradle.properties +8 -0
- package/cli/lamps/android-host/page/AndroidManifest.xml +35 -0
- package/cli/lamps/android-host/page/MainActivity.kt +193 -0
- package/cli/lamps/android-host/settings.gradle.kts +30 -0
- package/cli/lamps/android-host/tools.json +43 -0
- package/cli/lamps/lamp-controllers.js +2 -0
- package/cli/lamps/lamp-for-games.js +6863 -0
- package/cli/lamps/lamp.js +7023 -0
- package/cli/lamps/mac-starter/.lamp/meta.json +1 -0
- package/cli/lamps/mac-starter/APP.md +12 -0
- package/cli/lamps/mac-starter/Package.swift +8 -0
- package/cli/lamps/mac-starter/Sources/App.swift +11 -0
- package/cli/lamps/mac-starter/Sources/ContentView.swift +17 -0
- package/cli/lamps/mac-starter/Sources/LampSupport.swift +18097 -0
- package/cli/lamps/mac-starter/build.sh +336 -0
- package/cli/lamps/mac-starter/gitignore +3 -0
- package/cli/lamps/mac-starter/lamp-starter.json +6 -0
- package/cli/lamps/web-starter/APP.md +8 -0
- package/cli/lamps/web-starter/app.js +1 -0
- package/cli/lamps/web-starter/index.html +17 -0
- package/cli/lamps/web-starter/lamp-starter.json +5 -0
- package/cli/lamps/web-starter/lamp.js +7023 -0
- package/cli/lamps/web-starter/style.css +25 -0
- package/cli/link.mjs +138 -0
- package/cli/mac.mjs +621 -0
- package/cli/mdns.mjs +205 -0
- package/cli/msix.mjs +413 -0
- package/cli/network.mjs +209 -0
- package/cli/outside.mjs +140 -0
- package/cli/page.js +165 -0
- package/cli/place.mjs +298 -0
- package/cli/png.mjs +184 -0
- package/cli/share.mjs +202 -0
- package/cli/skill/SKILL.md +255 -0
- package/cli/skills.mjs +71 -0
- package/cli/state.mjs +173 -0
- package/cli/update.mjs +57 -0
- package/package.json +20 -4
- package/site/lib/quota.js +59 -0
- package/site/lib/shared-wishes.js +996 -0
|
@@ -0,0 +1,609 @@
|
|
|
1
|
+
import { HalfFloatType, Vector2, RenderTarget, RendererUtils, QuadMesh, NodeMaterial, Node, NodeUpdateType, Matrix4, DepthTexture } from 'three/webgpu';
|
|
2
|
+
import { float, Fn, max, texture, uniform, uv, vec2, convertToTexture, passTexture, velocity, ivec2, mix, context, OnBeforeRenderPipeline, OnAfterRenderPipeline } from 'three/tsl';
|
|
3
|
+
import { clipAABB, computeHaltonOffsets, flickerReduction, sampleCurrentDepth, samplePreviousDepth } from '../utils/TAAUtils.js';
|
|
4
|
+
|
|
5
|
+
const _quadMesh = /*@__PURE__*/ new QuadMesh();
|
|
6
|
+
const _size = /*@__PURE__*/ new Vector2();
|
|
7
|
+
|
|
8
|
+
let _rendererState;
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* A special node that applies TRAA (Temporal Reprojection Anti-Aliasing).
|
|
13
|
+
*
|
|
14
|
+
* References:
|
|
15
|
+
* - {@link https://alextardif.com/TAA.html}
|
|
16
|
+
* - {@link https://www.elopezr.com/temporal-aa-and-the-quest-for-the-holy-trail/}
|
|
17
|
+
*
|
|
18
|
+
* Note: MSAA must be disabled when TRAA is in use.
|
|
19
|
+
*
|
|
20
|
+
* @augments Node
|
|
21
|
+
* @three_import import { traa } from 'three/addons/tsl/display/TRAANode.js';
|
|
22
|
+
*/
|
|
23
|
+
class TRAANode extends Node {
|
|
24
|
+
|
|
25
|
+
static get type() {
|
|
26
|
+
|
|
27
|
+
return 'TRAANode';
|
|
28
|
+
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Constructs a new TRAA node.
|
|
33
|
+
*
|
|
34
|
+
* @param {TextureNode} beautyNode - The texture node that represents the input of the effect.
|
|
35
|
+
* @param {TextureNode} depthNode - A node that represents the scene's depth.
|
|
36
|
+
* @param {TextureNode} velocityNode - A node that represents the scene's velocity.
|
|
37
|
+
* @param {Camera} camera - The camera the scene is rendered with.
|
|
38
|
+
*/
|
|
39
|
+
constructor( beautyNode, depthNode, velocityNode, camera ) {
|
|
40
|
+
|
|
41
|
+
super( 'vec4' );
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* This flag can be used for type testing.
|
|
45
|
+
*
|
|
46
|
+
* @type {boolean}
|
|
47
|
+
* @readonly
|
|
48
|
+
* @default true
|
|
49
|
+
*/
|
|
50
|
+
this.isTRAANode = true;
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* The `updateBeforeType` is set to `NodeUpdateType.FRAME` since the node renders
|
|
54
|
+
* its effect once per frame in `updateBefore()`.
|
|
55
|
+
*
|
|
56
|
+
* @type {string}
|
|
57
|
+
* @default 'frame'
|
|
58
|
+
*/
|
|
59
|
+
this.updateBeforeType = NodeUpdateType.FRAME;
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* The texture node that represents the input of the effect.
|
|
63
|
+
*
|
|
64
|
+
* @type {TextureNode}
|
|
65
|
+
*/
|
|
66
|
+
this.beautyNode = beautyNode;
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* A node that represents the scene's velocity.
|
|
70
|
+
*
|
|
71
|
+
* @type {TextureNode}
|
|
72
|
+
*/
|
|
73
|
+
this.depthNode = depthNode;
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* A node that represents the scene's velocity.
|
|
77
|
+
*
|
|
78
|
+
* @type {TextureNode}
|
|
79
|
+
*/
|
|
80
|
+
this.velocityNode = velocityNode;
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* The camera the scene is rendered with.
|
|
84
|
+
*
|
|
85
|
+
* @type {Camera}
|
|
86
|
+
*/
|
|
87
|
+
this.camera = camera;
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* When the difference between the current and previous depth goes above this threshold,
|
|
91
|
+
* the history is considered invalid.
|
|
92
|
+
*
|
|
93
|
+
* @type {number}
|
|
94
|
+
* @default 0.0005
|
|
95
|
+
*/
|
|
96
|
+
this.depthThreshold = 0.0005;
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* The depth difference within the 3×3 neighborhood to consider a pixel as an edge.
|
|
100
|
+
*
|
|
101
|
+
* @type {number}
|
|
102
|
+
* @default 0.001
|
|
103
|
+
*/
|
|
104
|
+
this.edgeDepthDiff = 0.001;
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* The history becomes invalid as the pixel length of the velocity approaches this value.
|
|
108
|
+
*
|
|
109
|
+
* @type {number}
|
|
110
|
+
* @default 128
|
|
111
|
+
*/
|
|
112
|
+
this.maxVelocityLength = 128;
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* Whether to decrease the weight on the current frame when the velocity is more subpixel.
|
|
116
|
+
* This reduces blurriness under motion, but can introduce a square pattern artifact.
|
|
117
|
+
*
|
|
118
|
+
* @type {boolean}
|
|
119
|
+
* @default true
|
|
120
|
+
*/
|
|
121
|
+
this.useSubpixelCorrection = true;
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* The jitter index selects the current camera offset value.
|
|
125
|
+
*
|
|
126
|
+
* @private
|
|
127
|
+
* @type {number}
|
|
128
|
+
* @default 0
|
|
129
|
+
*/
|
|
130
|
+
this._jitterIndex = 0;
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* A uniform node holding the inverse resolution value.
|
|
134
|
+
*
|
|
135
|
+
* @private
|
|
136
|
+
* @type {UniformNode<vec2>}
|
|
137
|
+
*/
|
|
138
|
+
this._invSize = uniform( new Vector2() );
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* The render target that represents the history of frame data.
|
|
142
|
+
*
|
|
143
|
+
* @private
|
|
144
|
+
* @type {?RenderTarget}
|
|
145
|
+
*/
|
|
146
|
+
this._historyRenderTarget = new RenderTarget( 1, 1, { depthBuffer: false, type: HalfFloatType, depthTexture: new DepthTexture() } );
|
|
147
|
+
this._historyRenderTarget.texture.name = 'TRAANode.history';
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* The render target for the resolve.
|
|
151
|
+
*
|
|
152
|
+
* @private
|
|
153
|
+
* @type {?RenderTarget}
|
|
154
|
+
*/
|
|
155
|
+
this._resolveRenderTarget = new RenderTarget( 1, 1, { depthBuffer: false, type: HalfFloatType } );
|
|
156
|
+
this._resolveRenderTarget.texture.name = 'TRAANode.resolve';
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* Material used for the resolve step.
|
|
160
|
+
*
|
|
161
|
+
* @private
|
|
162
|
+
* @type {NodeMaterial}
|
|
163
|
+
*/
|
|
164
|
+
this._resolveMaterial = new NodeMaterial();
|
|
165
|
+
this._resolveMaterial.name = 'TRAA.resolve';
|
|
166
|
+
|
|
167
|
+
/**
|
|
168
|
+
* The result of the effect is represented as a separate texture node.
|
|
169
|
+
*
|
|
170
|
+
* @private
|
|
171
|
+
* @type {PassTextureNode}
|
|
172
|
+
*/
|
|
173
|
+
this._textureNode = passTexture( this, this._resolveRenderTarget.texture );
|
|
174
|
+
|
|
175
|
+
/**
|
|
176
|
+
* Used to save the original/unjittered projection matrix.
|
|
177
|
+
*
|
|
178
|
+
* @private
|
|
179
|
+
* @type {Matrix4}
|
|
180
|
+
*/
|
|
181
|
+
this._originalProjectionMatrix = new Matrix4();
|
|
182
|
+
|
|
183
|
+
/**
|
|
184
|
+
* A uniform node holding the camera's near and far.
|
|
185
|
+
*
|
|
186
|
+
* @private
|
|
187
|
+
* @type {UniformNode<vec2>}
|
|
188
|
+
*/
|
|
189
|
+
this._cameraNearFar = uniform( new Vector2() );
|
|
190
|
+
|
|
191
|
+
/**
|
|
192
|
+
* A uniform node holding the camera world matrix.
|
|
193
|
+
*
|
|
194
|
+
* @private
|
|
195
|
+
* @type {UniformNode<mat4>}
|
|
196
|
+
*/
|
|
197
|
+
this._cameraWorldMatrix = uniform( new Matrix4() );
|
|
198
|
+
|
|
199
|
+
/**
|
|
200
|
+
* A uniform node holding the camera world matrix inverse.
|
|
201
|
+
*
|
|
202
|
+
* @private
|
|
203
|
+
* @type {UniformNode<mat4>}
|
|
204
|
+
*/
|
|
205
|
+
this._cameraWorldMatrixInverse = uniform( new Matrix4() );
|
|
206
|
+
|
|
207
|
+
/**
|
|
208
|
+
* A uniform node holding the camera projection matrix inverse.
|
|
209
|
+
*
|
|
210
|
+
* @private
|
|
211
|
+
* @type {UniformNode<mat4>}
|
|
212
|
+
*/
|
|
213
|
+
this._cameraProjectionMatrixInverse = uniform( new Matrix4() );
|
|
214
|
+
|
|
215
|
+
/**
|
|
216
|
+
* A uniform node holding the previous frame's view matrix.
|
|
217
|
+
*
|
|
218
|
+
* @private
|
|
219
|
+
* @type {UniformNode<mat4>}
|
|
220
|
+
*/
|
|
221
|
+
this._previousCameraWorldMatrix = uniform( new Matrix4() );
|
|
222
|
+
|
|
223
|
+
/**
|
|
224
|
+
* A uniform node holding the previous frame's projection matrix inverse.
|
|
225
|
+
*
|
|
226
|
+
* @private
|
|
227
|
+
* @type {UniformNode<mat4>}
|
|
228
|
+
*/
|
|
229
|
+
this._previousCameraProjectionMatrixInverse = uniform( new Matrix4() );
|
|
230
|
+
|
|
231
|
+
/**
|
|
232
|
+
* A texture node for the previous depth buffer.
|
|
233
|
+
*
|
|
234
|
+
* @private
|
|
235
|
+
* @type {TextureNode}
|
|
236
|
+
*/
|
|
237
|
+
this._previousDepthNode = texture( this._historyRenderTarget.depthTexture );
|
|
238
|
+
|
|
239
|
+
/**
|
|
240
|
+
* The node used to render the scene's velocity.
|
|
241
|
+
*
|
|
242
|
+
* @private
|
|
243
|
+
* @type {?VelocityNode}
|
|
244
|
+
*/
|
|
245
|
+
this._velocityNode = null;
|
|
246
|
+
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
/**
|
|
250
|
+
* Returns the result of the effect as a texture node.
|
|
251
|
+
*
|
|
252
|
+
* @return {PassTextureNode} A texture node that represents the result of the effect.
|
|
253
|
+
*/
|
|
254
|
+
getTextureNode() {
|
|
255
|
+
|
|
256
|
+
return this._textureNode;
|
|
257
|
+
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
/**
|
|
261
|
+
* Sets the size of the effect.
|
|
262
|
+
*
|
|
263
|
+
* @param {number} width - The width of the effect.
|
|
264
|
+
* @param {number} height - The height of the effect.
|
|
265
|
+
*/
|
|
266
|
+
setSize( width, height ) {
|
|
267
|
+
|
|
268
|
+
this._historyRenderTarget.setSize( width, height );
|
|
269
|
+
this._resolveRenderTarget.setSize( width, height );
|
|
270
|
+
|
|
271
|
+
this._invSize.value.set( 1 / width, 1 / height );
|
|
272
|
+
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
/**
|
|
276
|
+
* Defines the TRAA's current jitter as a view offset
|
|
277
|
+
* to the scene's camera.
|
|
278
|
+
*
|
|
279
|
+
* @param {number} width - The width of the effect.
|
|
280
|
+
* @param {number} height - The height of the effect.
|
|
281
|
+
*/
|
|
282
|
+
setViewOffset( width, height ) {
|
|
283
|
+
|
|
284
|
+
// save original/unjittered projection matrix for velocity pass
|
|
285
|
+
|
|
286
|
+
this.camera.updateProjectionMatrix();
|
|
287
|
+
this._originalProjectionMatrix.copy( this.camera.projectionMatrix );
|
|
288
|
+
|
|
289
|
+
this._velocityNode.setProjectionMatrix( this._originalProjectionMatrix );
|
|
290
|
+
|
|
291
|
+
//
|
|
292
|
+
|
|
293
|
+
const viewOffset = {
|
|
294
|
+
|
|
295
|
+
fullWidth: width,
|
|
296
|
+
fullHeight: height,
|
|
297
|
+
offsetX: 0,
|
|
298
|
+
offsetY: 0,
|
|
299
|
+
width: width,
|
|
300
|
+
height: height
|
|
301
|
+
|
|
302
|
+
};
|
|
303
|
+
|
|
304
|
+
const jitterOffset = _haltonOffsets[ this._jitterIndex ];
|
|
305
|
+
|
|
306
|
+
this.camera.setViewOffset(
|
|
307
|
+
|
|
308
|
+
viewOffset.fullWidth, viewOffset.fullHeight,
|
|
309
|
+
|
|
310
|
+
viewOffset.offsetX + jitterOffset[ 0 ] - 0.5, viewOffset.offsetY + jitterOffset[ 1 ] - 0.5,
|
|
311
|
+
|
|
312
|
+
viewOffset.width, viewOffset.height
|
|
313
|
+
|
|
314
|
+
);
|
|
315
|
+
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
/**
|
|
319
|
+
* Clears the view offset from the scene's camera.
|
|
320
|
+
*/
|
|
321
|
+
clearViewOffset() {
|
|
322
|
+
|
|
323
|
+
this.camera.clearViewOffset();
|
|
324
|
+
|
|
325
|
+
this._velocityNode.setProjectionMatrix( null );
|
|
326
|
+
|
|
327
|
+
// update jitter index
|
|
328
|
+
|
|
329
|
+
this._jitterIndex ++;
|
|
330
|
+
this._jitterIndex = this._jitterIndex % _haltonOffsets.length;
|
|
331
|
+
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
/**
|
|
335
|
+
* This method is used to render the effect once per frame.
|
|
336
|
+
*
|
|
337
|
+
* @param {NodeFrame} frame - The current node frame.
|
|
338
|
+
*/
|
|
339
|
+
updateBefore( frame ) {
|
|
340
|
+
|
|
341
|
+
const { renderer } = frame;
|
|
342
|
+
|
|
343
|
+
// store previous frame matrices before updating current ones
|
|
344
|
+
|
|
345
|
+
this._previousCameraWorldMatrix.value.copy( this._cameraWorldMatrix.value );
|
|
346
|
+
this._previousCameraProjectionMatrixInverse.value.copy( this._cameraProjectionMatrixInverse.value );
|
|
347
|
+
|
|
348
|
+
// update camera matrices uniforms
|
|
349
|
+
|
|
350
|
+
this._cameraNearFar.value.set( this.camera.near, this.camera.far );
|
|
351
|
+
this._cameraWorldMatrix.value.copy( this.camera.matrixWorld );
|
|
352
|
+
this._cameraWorldMatrixInverse.value.copy( this.camera.matrixWorldInverse );
|
|
353
|
+
this._cameraProjectionMatrixInverse.value.copy( this.camera.projectionMatrixInverse );
|
|
354
|
+
|
|
355
|
+
// keep the TRAA in sync with the dimensions of the beauty node
|
|
356
|
+
|
|
357
|
+
const beautyRenderTarget = ( this.beautyNode.isRTTNode ) ? this.beautyNode.renderTarget : this.beautyNode.passNode.renderTarget;
|
|
358
|
+
|
|
359
|
+
const width = beautyRenderTarget.texture.width;
|
|
360
|
+
const height = beautyRenderTarget.texture.height;
|
|
361
|
+
|
|
362
|
+
_rendererState = RendererUtils.resetRendererState( renderer, _rendererState );
|
|
363
|
+
|
|
364
|
+
//
|
|
365
|
+
|
|
366
|
+
const needsRestart = this._historyRenderTarget.width !== width || this._historyRenderTarget.height !== height;
|
|
367
|
+
this.setSize( width, height );
|
|
368
|
+
|
|
369
|
+
// every time when the dimensions change we need fresh history data
|
|
370
|
+
|
|
371
|
+
if ( needsRestart === true ) {
|
|
372
|
+
|
|
373
|
+
// make sure to reset the history with the contents of the beauty buffer otherwise subsequent frames after the
|
|
374
|
+
// resize will fade from a darker color to the correct one because the history was cleared with black.
|
|
375
|
+
|
|
376
|
+
renderer.copyTextureToTexture( beautyRenderTarget.texture, this._historyRenderTarget.texture );
|
|
377
|
+
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
// resolve
|
|
381
|
+
|
|
382
|
+
renderer.setRenderTarget( this._resolveRenderTarget );
|
|
383
|
+
_quadMesh.material = this._resolveMaterial;
|
|
384
|
+
_quadMesh.name = 'TRAA';
|
|
385
|
+
_quadMesh.render( renderer );
|
|
386
|
+
renderer.setRenderTarget( null );
|
|
387
|
+
|
|
388
|
+
// update history
|
|
389
|
+
|
|
390
|
+
renderer.copyTextureToTexture( this._resolveRenderTarget.texture, this._historyRenderTarget.texture );
|
|
391
|
+
|
|
392
|
+
// Copy current depth to previous depth buffer
|
|
393
|
+
|
|
394
|
+
const size = renderer.getDrawingBufferSize( _size );
|
|
395
|
+
|
|
396
|
+
// only allow the depth copy if the dimensions of the history render target match with the drawing
|
|
397
|
+
// render buffer and thus the depth texture of the scene. For some reasons, there are timing issues
|
|
398
|
+
// with WebGPU resulting in different size of the drawing buffer and the beauty render target when
|
|
399
|
+
// resizing the browser window. This does not happen with the WebGL backend
|
|
400
|
+
|
|
401
|
+
if ( this._historyRenderTarget.height === size.height && this._historyRenderTarget.width === size.width ) {
|
|
402
|
+
|
|
403
|
+
const currentDepth = this.depthNode.value;
|
|
404
|
+
renderer.copyTextureToTexture( currentDepth, this._historyRenderTarget.depthTexture );
|
|
405
|
+
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
// restore
|
|
409
|
+
|
|
410
|
+
RendererUtils.restoreRendererState( renderer, _rendererState );
|
|
411
|
+
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
/**
|
|
415
|
+
* This method is used to setup the effect's render targets and TSL code.
|
|
416
|
+
*
|
|
417
|
+
* @param {NodeBuilder} builder - The current node builder.
|
|
418
|
+
* @return {PassTextureNode}
|
|
419
|
+
*/
|
|
420
|
+
setup( builder ) {
|
|
421
|
+
|
|
422
|
+
this.depthNode.build( builder );
|
|
423
|
+
this.velocityNode.build( builder );
|
|
424
|
+
this.beautyNode.build( builder );
|
|
425
|
+
|
|
426
|
+
if ( builder.renderPipeline && ! builder.context.renderPipelineState.viewOffsetOwner ) {
|
|
427
|
+
|
|
428
|
+
builder.context.renderPipelineState.viewOffsetOwner = this;
|
|
429
|
+
|
|
430
|
+
OnBeforeRenderPipeline( () => {
|
|
431
|
+
|
|
432
|
+
const size = builder.renderer.getDrawingBufferSize( _size );
|
|
433
|
+
this.setViewOffset( size.width, size.height );
|
|
434
|
+
|
|
435
|
+
} );
|
|
436
|
+
|
|
437
|
+
OnAfterRenderPipeline( () => {
|
|
438
|
+
|
|
439
|
+
this.clearViewOffset();
|
|
440
|
+
|
|
441
|
+
} );
|
|
442
|
+
|
|
443
|
+
}
|
|
444
|
+
|
|
445
|
+
this._historyRenderTarget.depthTexture.format = this.depthNode.value.format;
|
|
446
|
+
this._historyRenderTarget.depthTexture.type = this.depthNode.value.type;
|
|
447
|
+
|
|
448
|
+
if ( builder.context.velocity !== undefined ) {
|
|
449
|
+
|
|
450
|
+
this._velocityNode = builder.context.velocity;
|
|
451
|
+
|
|
452
|
+
} else {
|
|
453
|
+
|
|
454
|
+
this._velocityNode = velocity;
|
|
455
|
+
|
|
456
|
+
}
|
|
457
|
+
|
|
458
|
+
// Performs variance clipping.
|
|
459
|
+
// See: https://developer.download.nvidia.com/gameworks/events/GDC2016/msalvi_temporal_supersampling.pdf
|
|
460
|
+
const varianceClipping = Fn( ( [ positionTexel, currentColor, historyColor, gamma ] ) => {
|
|
461
|
+
|
|
462
|
+
const offsets = [
|
|
463
|
+
[ - 1, - 1 ],
|
|
464
|
+
[ - 1, 1 ],
|
|
465
|
+
[ 1, - 1 ],
|
|
466
|
+
[ 1, 1 ],
|
|
467
|
+
[ 1, 0 ],
|
|
468
|
+
[ 0, - 1 ],
|
|
469
|
+
[ 0, 1 ],
|
|
470
|
+
[ - 1, 0 ]
|
|
471
|
+
];
|
|
472
|
+
|
|
473
|
+
const moment1 = currentColor.toVar();
|
|
474
|
+
const moment2 = currentColor.pow2().toVar();
|
|
475
|
+
|
|
476
|
+
for ( const [ x, y ] of offsets ) {
|
|
477
|
+
|
|
478
|
+
// Use max() to prevent NaN values from propagating.
|
|
479
|
+
const neighbor = this.beautyNode.offset( ivec2( x, y ) ).load( positionTexel ).max( 0 );
|
|
480
|
+
moment1.addAssign( neighbor );
|
|
481
|
+
moment2.addAssign( neighbor.pow2() );
|
|
482
|
+
|
|
483
|
+
}
|
|
484
|
+
|
|
485
|
+
const N = float( offsets.length + 1 );
|
|
486
|
+
const mean = moment1.div( N );
|
|
487
|
+
const variance = moment2.div( N ).sub( mean.pow2() ).max( 0 ).sqrt().mul( gamma );
|
|
488
|
+
const minColor = mean.sub( variance );
|
|
489
|
+
const maxColor = mean.add( variance );
|
|
490
|
+
|
|
491
|
+
return clipAABB( mean.clamp( minColor, maxColor ), historyColor, minColor, maxColor );
|
|
492
|
+
|
|
493
|
+
} );
|
|
494
|
+
|
|
495
|
+
// Returns the amount of subpixel (expressed within [0, 1]) in the velocity.
|
|
496
|
+
const subpixelCorrection = Fn( ( [ velocityUV, textureSize ] ) => {
|
|
497
|
+
|
|
498
|
+
const velocityTexel = velocityUV.mul( textureSize );
|
|
499
|
+
const phase = velocityTexel.fract().abs();
|
|
500
|
+
const weight = max( phase, phase.oneMinus() );
|
|
501
|
+
return weight.x.mul( weight.y ).oneMinus().div( 0.75 );
|
|
502
|
+
|
|
503
|
+
}, { velocityUV: 'vec2', textureSize: 'ivec2', return: 'float' } );
|
|
504
|
+
|
|
505
|
+
const historyNode = texture( this._historyRenderTarget.texture );
|
|
506
|
+
|
|
507
|
+
const resolve = Fn( () => {
|
|
508
|
+
|
|
509
|
+
const uvNode = uv();
|
|
510
|
+
const textureSize = this.beautyNode.size(); // Assumes all the buffers share the same size.
|
|
511
|
+
const positionTexel = uvNode.mul( textureSize );
|
|
512
|
+
|
|
513
|
+
// sample the closest and farthest depths in the current buffer
|
|
514
|
+
|
|
515
|
+
const currentDepth = sampleCurrentDepth( this.depthNode, positionTexel, this._cameraNearFar );
|
|
516
|
+
const closestDepth = currentDepth.get( 'closestDepth' );
|
|
517
|
+
const closestPositionTexel = currentDepth.get( 'closestPositionTexel' );
|
|
518
|
+
const farthestDepth = currentDepth.get( 'farthestDepth' );
|
|
519
|
+
|
|
520
|
+
// convert the NDC offset to UV offset
|
|
521
|
+
|
|
522
|
+
const offsetUV = this.velocityNode.load( closestPositionTexel ).xy.mul( vec2( 0.5, - 0.5 ) );
|
|
523
|
+
|
|
524
|
+
// sample the previous depth
|
|
525
|
+
|
|
526
|
+
const historyUV = uvNode.sub( offsetUV );
|
|
527
|
+
const previousDepth = samplePreviousDepth( this._previousDepthNode, historyUV, this._previousCameraProjectionMatrixInverse, this._previousCameraWorldMatrix, this._cameraWorldMatrixInverse, this._cameraNearFar, this.camera );
|
|
528
|
+
|
|
529
|
+
// history is considered valid when the UV is in range and there's no disocclusion except on edges
|
|
530
|
+
|
|
531
|
+
const isValidUV = historyUV.greaterThanEqual( 0 ).all().and( historyUV.lessThanEqual( 1 ).all() );
|
|
532
|
+
const isEdge = farthestDepth.sub( closestDepth ).greaterThan( this.edgeDepthDiff );
|
|
533
|
+
const isDisocclusion = closestDepth.sub( previousDepth ).greaterThan( this.depthThreshold );
|
|
534
|
+
const hasValidHistory = isValidUV.and( isEdge.or( isDisocclusion.not() ) );
|
|
535
|
+
|
|
536
|
+
// sample the current and previous colors
|
|
537
|
+
|
|
538
|
+
const currentColor = this.beautyNode.sample( uvNode );
|
|
539
|
+
const historyColor = historyNode.sample( historyUV );
|
|
540
|
+
|
|
541
|
+
// increase the weight towards the current frame under motion
|
|
542
|
+
|
|
543
|
+
const motionFactor = uvNode.sub( historyUV ).mul( textureSize ).length().div( this.maxVelocityLength ).saturate();
|
|
544
|
+
const currentWeight = float( 0.05 ).toVar(); // A minimum weight
|
|
545
|
+
|
|
546
|
+
if ( this.useSubpixelCorrection ) {
|
|
547
|
+
|
|
548
|
+
// Increase the minimum weight towards the current frame when the velocity is more subpixel.
|
|
549
|
+
currentWeight.addAssign( subpixelCorrection( offsetUV, textureSize ).mul( 0.25 ) );
|
|
550
|
+
|
|
551
|
+
}
|
|
552
|
+
|
|
553
|
+
currentWeight.assign( hasValidHistory.select( currentWeight.add( motionFactor ).saturate(), 1 ) );
|
|
554
|
+
|
|
555
|
+
// Perform neighborhood clipping/clamping. We use variance clipping here.
|
|
556
|
+
|
|
557
|
+
const varianceGamma = mix( 0.5, 1, motionFactor.oneMinus().pow2() ); // Reasonable gamma range is [0.75, 2]
|
|
558
|
+
const clippedHistoryColor = varianceClipping( positionTexel, currentColor, historyColor, varianceGamma );
|
|
559
|
+
|
|
560
|
+
// flicker reduction based on luminance weighing
|
|
561
|
+
|
|
562
|
+
const output = flickerReduction( currentColor, clippedHistoryColor, currentWeight );
|
|
563
|
+
|
|
564
|
+
return output;
|
|
565
|
+
|
|
566
|
+
} );
|
|
567
|
+
|
|
568
|
+
// materials
|
|
569
|
+
|
|
570
|
+
this._resolveMaterial.contextNode = context( builder.getSharedContext() );
|
|
571
|
+
this._resolveMaterial.colorNode = resolve();
|
|
572
|
+
|
|
573
|
+
return this._textureNode;
|
|
574
|
+
|
|
575
|
+
}
|
|
576
|
+
|
|
577
|
+
/**
|
|
578
|
+
* Frees internal resources. This method should be called
|
|
579
|
+
* when the effect is no longer required.
|
|
580
|
+
*/
|
|
581
|
+
dispose() {
|
|
582
|
+
|
|
583
|
+
super.dispose();
|
|
584
|
+
|
|
585
|
+
this._historyRenderTarget.dispose();
|
|
586
|
+
this._resolveRenderTarget.dispose();
|
|
587
|
+
|
|
588
|
+
this._resolveMaterial.dispose();
|
|
589
|
+
|
|
590
|
+
}
|
|
591
|
+
|
|
592
|
+
}
|
|
593
|
+
|
|
594
|
+
export default TRAANode;
|
|
595
|
+
|
|
596
|
+
const _haltonOffsets = /*@__PURE__*/ computeHaltonOffsets( 32 );
|
|
597
|
+
|
|
598
|
+
/**
|
|
599
|
+
* TSL function for creating a TRAA node for Temporal Reprojection Anti-Aliasing.
|
|
600
|
+
*
|
|
601
|
+
* @tsl
|
|
602
|
+
* @function
|
|
603
|
+
* @param {TextureNode} beautyNode - The texture node that represents the input of the effect.
|
|
604
|
+
* @param {TextureNode} depthNode - A node that represents the scene's depth.
|
|
605
|
+
* @param {TextureNode} velocityNode - A node that represents the scene's velocity.
|
|
606
|
+
* @param {Camera} camera - The camera the scene is rendered with.
|
|
607
|
+
* @returns {TRAANode}
|
|
608
|
+
*/
|
|
609
|
+
export const traa = ( beautyNode, depthNode, velocityNode, camera ) => new TRAANode( convertToTexture( beautyNode ), depthNode, velocityNode, camera );
|