@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,285 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Vector2,
|
|
3
|
+
Vector3
|
|
4
|
+
} from 'three';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* @module VolumeShader
|
|
8
|
+
* @three_import import { VolumeRenderShader1 } from 'three/addons/shaders/VolumeShader.js';
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Shaders to render 3D volumes using raycasting.
|
|
13
|
+
* The applied techniques are based on similar implementations in the Visvis and Vispy projects.
|
|
14
|
+
* This is not the only approach, therefore it's marked 1.
|
|
15
|
+
*
|
|
16
|
+
* @constant
|
|
17
|
+
* @type {ShaderMaterial~Shader}
|
|
18
|
+
*/
|
|
19
|
+
const VolumeRenderShader1 = {
|
|
20
|
+
|
|
21
|
+
name: 'VolumeRenderShader1',
|
|
22
|
+
|
|
23
|
+
uniforms: {
|
|
24
|
+
'u_size': { value: new Vector3( 1, 1, 1 ) },
|
|
25
|
+
'u_renderstyle': { value: 0 },
|
|
26
|
+
'u_renderthreshold': { value: 0.5 },
|
|
27
|
+
'u_clim': { value: new Vector2( 1, 1 ) },
|
|
28
|
+
'u_data': { value: null },
|
|
29
|
+
'u_cmdata': { value: null }
|
|
30
|
+
},
|
|
31
|
+
|
|
32
|
+
vertexShader: /* glsl */`
|
|
33
|
+
|
|
34
|
+
varying vec3 v_position;
|
|
35
|
+
varying vec3 v_cameraInObj;
|
|
36
|
+
varying vec3 v_viewDirInObj;
|
|
37
|
+
|
|
38
|
+
void main() {
|
|
39
|
+
vec4 position4 = vec4(position, 1.0);
|
|
40
|
+
|
|
41
|
+
v_position = position;
|
|
42
|
+
|
|
43
|
+
// Express the camera position and view direction in the object's local
|
|
44
|
+
// space so the fragment shader can build the per-fragment view ray.
|
|
45
|
+
// For perspective cameras, rays converge at v_cameraInObj.
|
|
46
|
+
// For orthographic cameras, rays travel along v_viewDirInObj.
|
|
47
|
+
v_cameraInObj = (inverse(modelMatrix) * vec4(cameraPosition, 1.0)).xyz;
|
|
48
|
+
v_viewDirInObj = (inverse(modelViewMatrix) * vec4(0.0, 0.0, -1.0, 0.0)).xyz;
|
|
49
|
+
|
|
50
|
+
gl_Position = projectionMatrix * modelViewMatrix * position4;
|
|
51
|
+
}`,
|
|
52
|
+
|
|
53
|
+
fragmentShader: /* glsl */`
|
|
54
|
+
|
|
55
|
+
precision highp float;
|
|
56
|
+
precision mediump sampler3D;
|
|
57
|
+
|
|
58
|
+
uniform vec3 u_size;
|
|
59
|
+
uniform int u_renderstyle;
|
|
60
|
+
uniform float u_renderthreshold;
|
|
61
|
+
uniform vec2 u_clim;
|
|
62
|
+
|
|
63
|
+
uniform sampler3D u_data;
|
|
64
|
+
uniform sampler2D u_cmdata;
|
|
65
|
+
|
|
66
|
+
varying vec3 v_position;
|
|
67
|
+
varying vec3 v_cameraInObj;
|
|
68
|
+
varying vec3 v_viewDirInObj;
|
|
69
|
+
|
|
70
|
+
// The maximum distance through our rendering volume is sqrt(3).
|
|
71
|
+
const int MAX_STEPS = 887; // 887 for 512^3, 1774 for 1024^3
|
|
72
|
+
const int REFINEMENT_STEPS = 4;
|
|
73
|
+
const float relative_step_size = 1.0;
|
|
74
|
+
const vec4 ambient_color = vec4(0.2, 0.4, 0.2, 1.0);
|
|
75
|
+
const vec4 diffuse_color = vec4(0.8, 0.2, 0.2, 1.0);
|
|
76
|
+
const vec4 specular_color = vec4(1.0, 1.0, 1.0, 1.0);
|
|
77
|
+
const float shininess = 40.0;
|
|
78
|
+
|
|
79
|
+
void cast_mip(vec3 start_loc, vec3 step, int nsteps, vec3 view_ray);
|
|
80
|
+
void cast_iso(vec3 start_loc, vec3 step, int nsteps, vec3 view_ray);
|
|
81
|
+
|
|
82
|
+
float sample1(vec3 texcoords);
|
|
83
|
+
vec4 apply_colormap(float val);
|
|
84
|
+
vec4 add_lighting(float val, vec3 loc, vec3 step, vec3 view_ray);
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
void main() {
|
|
88
|
+
// Per-fragment ray direction in object space, pointing from the back
|
|
89
|
+
// face toward the camera. For perspective cameras the rays converge
|
|
90
|
+
// at the camera position; for orthographic cameras they are parallel
|
|
91
|
+
// to the view direction.
|
|
92
|
+
vec3 view_ray = isOrthographic
|
|
93
|
+
? normalize(-v_viewDirInObj)
|
|
94
|
+
: normalize(v_cameraInObj - v_position);
|
|
95
|
+
|
|
96
|
+
// Slab-based ray/AABB intersection: v_position lies on the back face
|
|
97
|
+
// of the cuboid, so stepping along view_ray traverses the volume and
|
|
98
|
+
// exits through the front face at t = distance.
|
|
99
|
+
vec3 t1 = (vec3(-0.5) - v_position) / view_ray;
|
|
100
|
+
vec3 t2 = (u_size - vec3(0.5) - v_position) / view_ray;
|
|
101
|
+
vec3 tmax = max(t1, t2);
|
|
102
|
+
float distance = min(min(tmax.x, tmax.y), tmax.z);
|
|
103
|
+
|
|
104
|
+
// Decide how many steps to take
|
|
105
|
+
int nsteps = int(distance / relative_step_size + 0.5);
|
|
106
|
+
if ( nsteps < 1 )
|
|
107
|
+
discard;
|
|
108
|
+
|
|
109
|
+
// Get starting location and step vector in texture coordinates
|
|
110
|
+
vec3 front = v_position + view_ray * distance;
|
|
111
|
+
vec3 step = ((v_position - front) / u_size) / float(nsteps);
|
|
112
|
+
vec3 start_loc = front / u_size;
|
|
113
|
+
|
|
114
|
+
// For testing: show the number of steps. This helps to establish
|
|
115
|
+
// whether the rays are correctly oriented
|
|
116
|
+
//'gl_FragColor = vec4(0.0, float(nsteps) / 1.0 / u_size.x, 1.0, 1.0);
|
|
117
|
+
//'return;
|
|
118
|
+
|
|
119
|
+
if (u_renderstyle == 0)
|
|
120
|
+
cast_mip(start_loc, step, nsteps, view_ray);
|
|
121
|
+
else if (u_renderstyle == 1)
|
|
122
|
+
cast_iso(start_loc, step, nsteps, view_ray);
|
|
123
|
+
|
|
124
|
+
if (gl_FragColor.a < 0.05)
|
|
125
|
+
discard;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
float sample1(vec3 texcoords) {
|
|
130
|
+
/* Sample float value from a 3D texture. Assumes intensity data. */
|
|
131
|
+
return texture(u_data, texcoords.xyz).r;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
vec4 apply_colormap(float val) {
|
|
136
|
+
val = (val - u_clim[0]) / (u_clim[1] - u_clim[0]);
|
|
137
|
+
float n = float(textureSize(u_cmdata, 0).x); // see #33842
|
|
138
|
+
val = (val * (n - 1.0) + 0.5) / n;
|
|
139
|
+
return texture2D(u_cmdata, vec2(val, 0.5));
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
void cast_mip(vec3 start_loc, vec3 step, int nsteps, vec3 view_ray) {
|
|
144
|
+
|
|
145
|
+
float max_val = -1e6;
|
|
146
|
+
int max_i = 100;
|
|
147
|
+
vec3 loc = start_loc;
|
|
148
|
+
|
|
149
|
+
// Enter the raycasting loop. In WebGL 1 the loop index cannot be compared with
|
|
150
|
+
// non-constant expression. So we use a hard-coded max, and an additional condition
|
|
151
|
+
// inside the loop.
|
|
152
|
+
for (int iter=0; iter<MAX_STEPS; iter++) {
|
|
153
|
+
if (iter >= nsteps)
|
|
154
|
+
break;
|
|
155
|
+
// Sample from the 3D texture
|
|
156
|
+
float val = sample1(loc);
|
|
157
|
+
// Apply MIP operation
|
|
158
|
+
if (val > max_val) {
|
|
159
|
+
max_val = val;
|
|
160
|
+
max_i = iter;
|
|
161
|
+
}
|
|
162
|
+
// Advance location deeper into the volume
|
|
163
|
+
loc += step;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
// Refine location, gives crispier images
|
|
167
|
+
vec3 iloc = start_loc + step * (float(max_i) - 0.5);
|
|
168
|
+
vec3 istep = step / float(REFINEMENT_STEPS);
|
|
169
|
+
for (int i=0; i<REFINEMENT_STEPS; i++) {
|
|
170
|
+
max_val = max(max_val, sample1(iloc));
|
|
171
|
+
iloc += istep;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
// Resolve final color
|
|
175
|
+
gl_FragColor = apply_colormap(max_val);
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
|
|
179
|
+
void cast_iso(vec3 start_loc, vec3 step, int nsteps, vec3 view_ray) {
|
|
180
|
+
|
|
181
|
+
gl_FragColor = vec4(0.0); // init transparent
|
|
182
|
+
vec4 color3 = vec4(0.0); // final color
|
|
183
|
+
vec3 dstep = 1.5 / u_size; // step to sample derivative
|
|
184
|
+
vec3 loc = start_loc;
|
|
185
|
+
|
|
186
|
+
float low_threshold = u_renderthreshold - 0.02 * (u_clim[1] - u_clim[0]);
|
|
187
|
+
|
|
188
|
+
// Enter the raycasting loop. In WebGL 1 the loop index cannot be compared with
|
|
189
|
+
// non-constant expression. So we use a hard-coded max, and an additional condition
|
|
190
|
+
// inside the loop.
|
|
191
|
+
for (int iter=0; iter<MAX_STEPS; iter++) {
|
|
192
|
+
if (iter >= nsteps)
|
|
193
|
+
break;
|
|
194
|
+
|
|
195
|
+
// Sample from the 3D texture
|
|
196
|
+
float val = sample1(loc);
|
|
197
|
+
|
|
198
|
+
if (val > low_threshold) {
|
|
199
|
+
// Take the last interval in smaller steps
|
|
200
|
+
vec3 iloc = loc - 0.5 * step;
|
|
201
|
+
vec3 istep = step / float(REFINEMENT_STEPS);
|
|
202
|
+
for (int i=0; i<REFINEMENT_STEPS; i++) {
|
|
203
|
+
val = sample1(iloc);
|
|
204
|
+
if (val > u_renderthreshold) {
|
|
205
|
+
gl_FragColor = add_lighting(val, iloc, dstep, view_ray);
|
|
206
|
+
return;
|
|
207
|
+
}
|
|
208
|
+
iloc += istep;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
// Advance location deeper into the volume
|
|
213
|
+
loc += step;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
vec4 add_lighting(float val, vec3 loc, vec3 step, vec3 view_ray)
|
|
219
|
+
{
|
|
220
|
+
// Calculate color by incorporating lighting
|
|
221
|
+
|
|
222
|
+
// View direction
|
|
223
|
+
vec3 V = normalize(view_ray);
|
|
224
|
+
|
|
225
|
+
// calculate normal vector from gradient
|
|
226
|
+
vec3 N;
|
|
227
|
+
float val1, val2;
|
|
228
|
+
val1 = sample1(loc + vec3(-step[0], 0.0, 0.0));
|
|
229
|
+
val2 = sample1(loc + vec3(+step[0], 0.0, 0.0));
|
|
230
|
+
N[0] = val1 - val2;
|
|
231
|
+
val = max(max(val1, val2), val);
|
|
232
|
+
val1 = sample1(loc + vec3(0.0, -step[1], 0.0));
|
|
233
|
+
val2 = sample1(loc + vec3(0.0, +step[1], 0.0));
|
|
234
|
+
N[1] = val1 - val2;
|
|
235
|
+
val = max(max(val1, val2), val);
|
|
236
|
+
val1 = sample1(loc + vec3(0.0, 0.0, -step[2]));
|
|
237
|
+
val2 = sample1(loc + vec3(0.0, 0.0, +step[2]));
|
|
238
|
+
N[2] = val1 - val2;
|
|
239
|
+
val = max(max(val1, val2), val);
|
|
240
|
+
|
|
241
|
+
float gm = length(N); // gradient magnitude
|
|
242
|
+
N = normalize(N);
|
|
243
|
+
|
|
244
|
+
// Flip normal so it points towards viewer
|
|
245
|
+
float Nselect = float(dot(N, V) > 0.0);
|
|
246
|
+
N = (2.0 * Nselect - 1.0) * N; // == Nselect * N - (1.0-Nselect)*N;
|
|
247
|
+
|
|
248
|
+
// Init colors
|
|
249
|
+
vec4 ambient_color = vec4(0.0, 0.0, 0.0, 0.0);
|
|
250
|
+
vec4 diffuse_color = vec4(0.0, 0.0, 0.0, 0.0);
|
|
251
|
+
vec4 specular_color = vec4(0.0, 0.0, 0.0, 0.0);
|
|
252
|
+
|
|
253
|
+
// note: could allow multiple lights
|
|
254
|
+
for (int i=0; i<1; i++)
|
|
255
|
+
{
|
|
256
|
+
// Get light direction (make sure to prevent zero division)
|
|
257
|
+
vec3 L = normalize(view_ray); //lightDirs[i];
|
|
258
|
+
float lightEnabled = float( length(L) > 0.0 );
|
|
259
|
+
L = normalize(L + (1.0 - lightEnabled));
|
|
260
|
+
|
|
261
|
+
// Calculate lighting properties
|
|
262
|
+
float lambertTerm = clamp(dot(N, L), 0.0, 1.0);
|
|
263
|
+
vec3 H = normalize(L+V); // Halfway vector
|
|
264
|
+
float specularTerm = pow(max(dot(H, N), 0.0), shininess);
|
|
265
|
+
|
|
266
|
+
// Calculate mask
|
|
267
|
+
float mask1 = lightEnabled;
|
|
268
|
+
|
|
269
|
+
// Calculate colors
|
|
270
|
+
ambient_color += mask1 * ambient_color; // * gl_LightSource[i].ambient;
|
|
271
|
+
diffuse_color += mask1 * lambertTerm;
|
|
272
|
+
specular_color += mask1 * specularTerm * specular_color;
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
// Calculate final color by componing different components
|
|
276
|
+
vec4 final_color;
|
|
277
|
+
vec4 color = apply_colormap(val);
|
|
278
|
+
final_color = color * (ambient_color + diffuse_color) + specular_color;
|
|
279
|
+
final_color.a = color.a;
|
|
280
|
+
return final_color;
|
|
281
|
+
}`
|
|
282
|
+
|
|
283
|
+
};
|
|
284
|
+
|
|
285
|
+
export { VolumeRenderShader1 };
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module WaterRefractionShader
|
|
3
|
+
* @three_import import { WaterRefractionShader } from 'three/addons/shaders/WaterRefractionShader.js';
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Basic water refraction shader.
|
|
8
|
+
*
|
|
9
|
+
* @constant
|
|
10
|
+
* @type {ShaderMaterial~Shader}
|
|
11
|
+
*/
|
|
12
|
+
const WaterRefractionShader = {
|
|
13
|
+
|
|
14
|
+
name: 'WaterRefractionShader',
|
|
15
|
+
|
|
16
|
+
uniforms: {
|
|
17
|
+
|
|
18
|
+
'color': {
|
|
19
|
+
value: null
|
|
20
|
+
},
|
|
21
|
+
|
|
22
|
+
'time': {
|
|
23
|
+
value: 0
|
|
24
|
+
},
|
|
25
|
+
|
|
26
|
+
'tDiffuse': {
|
|
27
|
+
value: null
|
|
28
|
+
},
|
|
29
|
+
|
|
30
|
+
'tDudv': {
|
|
31
|
+
value: null
|
|
32
|
+
},
|
|
33
|
+
|
|
34
|
+
'textureMatrix': {
|
|
35
|
+
value: null
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
},
|
|
39
|
+
|
|
40
|
+
vertexShader: /* glsl */`
|
|
41
|
+
|
|
42
|
+
uniform mat4 textureMatrix;
|
|
43
|
+
|
|
44
|
+
varying vec2 vUv;
|
|
45
|
+
varying vec4 vUvRefraction;
|
|
46
|
+
|
|
47
|
+
void main() {
|
|
48
|
+
|
|
49
|
+
vUv = uv;
|
|
50
|
+
|
|
51
|
+
vUvRefraction = textureMatrix * vec4( position, 1.0 );
|
|
52
|
+
|
|
53
|
+
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
|
|
54
|
+
|
|
55
|
+
}`,
|
|
56
|
+
|
|
57
|
+
fragmentShader: /* glsl */`
|
|
58
|
+
|
|
59
|
+
uniform vec3 color;
|
|
60
|
+
uniform float time;
|
|
61
|
+
uniform sampler2D tDiffuse;
|
|
62
|
+
uniform sampler2D tDudv;
|
|
63
|
+
|
|
64
|
+
varying vec2 vUv;
|
|
65
|
+
varying vec4 vUvRefraction;
|
|
66
|
+
|
|
67
|
+
float blendOverlay( float base, float blend ) {
|
|
68
|
+
|
|
69
|
+
return( base < 0.5 ? ( 2.0 * base * blend ) : ( 1.0 - 2.0 * ( 1.0 - base ) * ( 1.0 - blend ) ) );
|
|
70
|
+
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
vec3 blendOverlay( vec3 base, vec3 blend ) {
|
|
74
|
+
|
|
75
|
+
return vec3( blendOverlay( base.r, blend.r ), blendOverlay( base.g, blend.g ),blendOverlay( base.b, blend.b ) );
|
|
76
|
+
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
void main() {
|
|
80
|
+
|
|
81
|
+
float waveStrength = 0.5;
|
|
82
|
+
float waveSpeed = 0.03;
|
|
83
|
+
|
|
84
|
+
// simple distortion (ripple) via dudv map (see https://www.youtube.com/watch?v=6B7IF6GOu7s)
|
|
85
|
+
|
|
86
|
+
vec2 distortedUv = texture2D( tDudv, vec2( vUv.x + time * waveSpeed, vUv.y ) ).rg * waveStrength;
|
|
87
|
+
distortedUv = vUv.xy + vec2( distortedUv.x, distortedUv.y + time * waveSpeed );
|
|
88
|
+
vec2 distortion = ( texture2D( tDudv, distortedUv ).rg * 2.0 - 1.0 ) * waveStrength;
|
|
89
|
+
|
|
90
|
+
// new uv coords
|
|
91
|
+
|
|
92
|
+
vec4 uv = vec4( vUvRefraction );
|
|
93
|
+
uv.xy += distortion;
|
|
94
|
+
|
|
95
|
+
vec4 base = texture2DProj( tDiffuse, uv );
|
|
96
|
+
|
|
97
|
+
gl_FragColor = vec4( blendOverlay( base.rgb, color ), 1.0 );
|
|
98
|
+
|
|
99
|
+
#include <tonemapping_fragment>
|
|
100
|
+
#include <colorspace_fragment>
|
|
101
|
+
|
|
102
|
+
}`
|
|
103
|
+
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
export { WaterRefractionShader };
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utility class for generating a flakes texture image. This image might be used
|
|
3
|
+
* as a normal map to produce a car paint like effect.
|
|
4
|
+
*
|
|
5
|
+
* @three_import import { FlakesTexture } from 'three/addons/textures/FlakesTexture.js';
|
|
6
|
+
*/
|
|
7
|
+
class FlakesTexture {
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Generates a new flakes texture image. The result is a canvas
|
|
11
|
+
* that can be used as an input for {@link CanvasTexture}.
|
|
12
|
+
*
|
|
13
|
+
* @param {number} [width=512] - The width of the image.
|
|
14
|
+
* @param {number} [height=512] - The height of the image.
|
|
15
|
+
* @return {HTMLCanvasElement} The generated image.
|
|
16
|
+
*/
|
|
17
|
+
constructor( width = 512, height = 512 ) {
|
|
18
|
+
|
|
19
|
+
const canvas = document.createElement( 'canvas' );
|
|
20
|
+
canvas.width = width;
|
|
21
|
+
canvas.height = height;
|
|
22
|
+
|
|
23
|
+
const context = canvas.getContext( '2d' );
|
|
24
|
+
context.fillStyle = 'rgb(127,127,255)';
|
|
25
|
+
context.fillRect( 0, 0, width, height );
|
|
26
|
+
|
|
27
|
+
for ( let i = 0; i < 4000; i ++ ) {
|
|
28
|
+
|
|
29
|
+
const x = Math.random() * width;
|
|
30
|
+
const y = Math.random() * height;
|
|
31
|
+
const r = Math.random() * 3 + 3;
|
|
32
|
+
|
|
33
|
+
let nx = Math.random() * 2 - 1;
|
|
34
|
+
let ny = Math.random() * 2 - 1;
|
|
35
|
+
let nz = 1.5;
|
|
36
|
+
|
|
37
|
+
const l = Math.sqrt( nx * nx + ny * ny + nz * nz );
|
|
38
|
+
|
|
39
|
+
nx /= l; ny /= l; nz /= l;
|
|
40
|
+
|
|
41
|
+
context.fillStyle = 'rgb(' + ( nx * 127 + 127 ) + ',' + ( ny * 127 + 127 ) + ',' + ( nz * 255 ) + ')';
|
|
42
|
+
context.beginPath();
|
|
43
|
+
context.arc( x, y, r, 0, Math.PI * 2 );
|
|
44
|
+
context.fill();
|
|
45
|
+
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
return canvas;
|
|
49
|
+
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export { FlakesTexture };
|