@takram/three-clouds 0.1.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.
Files changed (103) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/README.md +1130 -0
  3. package/assets/local_weather.png +0 -0
  4. package/assets/shape.bin +1 -0
  5. package/assets/shape_detail.bin +1 -0
  6. package/assets/turbulence.png +0 -0
  7. package/build/index.cjs +583 -0
  8. package/build/index.cjs.map +1 -0
  9. package/build/index.js +728 -0
  10. package/build/index.js.map +1 -0
  11. package/build/r3f.cjs +2 -0
  12. package/build/r3f.cjs.map +1 -0
  13. package/build/r3f.js +205 -0
  14. package/build/r3f.js.map +1 -0
  15. package/build/shared.cjs +2189 -0
  16. package/build/shared.cjs.map +1 -0
  17. package/build/shared.js +3825 -0
  18. package/build/shared.js.map +1 -0
  19. package/package.json +77 -0
  20. package/src/CascadedShadowMaps.ts +288 -0
  21. package/src/CloudLayer.ts +85 -0
  22. package/src/CloudLayers.test.ts +61 -0
  23. package/src/CloudLayers.ts +181 -0
  24. package/src/CloudShape.ts +22 -0
  25. package/src/CloudShapeDetail.ts +22 -0
  26. package/src/CloudsEffect.ts +810 -0
  27. package/src/CloudsMaterial.ts +467 -0
  28. package/src/CloudsPass.ts +285 -0
  29. package/src/CloudsResolveMaterial.ts +108 -0
  30. package/src/DensityProfile.ts +38 -0
  31. package/src/LocalWeather.ts +21 -0
  32. package/src/PassBase.ts +28 -0
  33. package/src/Procedural3DTexture.ts +94 -0
  34. package/src/ProceduralTexture.ts +94 -0
  35. package/src/ShaderArrayPass.ts +32 -0
  36. package/src/ShadowMaterial.ts +141 -0
  37. package/src/ShadowPass.ts +185 -0
  38. package/src/ShadowResolveMaterial.ts +72 -0
  39. package/src/Turbulence.ts +21 -0
  40. package/src/bayer.ts +23 -0
  41. package/src/constants.ts +8 -0
  42. package/src/helpers/FrustumCorners.ts +138 -0
  43. package/src/helpers/setArrayRenderTargetLayers.ts +32 -0
  44. package/src/helpers/splitFrustum.ts +59 -0
  45. package/src/index.ts +14 -0
  46. package/src/qualityPresets.ts +117 -0
  47. package/src/r3f/CloudLayer.tsx +95 -0
  48. package/src/r3f/CloudLayers.tsx +54 -0
  49. package/src/r3f/Clouds.tsx +278 -0
  50. package/src/r3f/index.ts +2 -0
  51. package/src/shaders/catmullRomSampling.glsl +113 -0
  52. package/src/shaders/cloudShape.frag +78 -0
  53. package/src/shaders/cloudShapeDetail.frag +56 -0
  54. package/src/shaders/clouds.frag +996 -0
  55. package/src/shaders/clouds.glsl +190 -0
  56. package/src/shaders/clouds.vert +69 -0
  57. package/src/shaders/cloudsEffect.frag +11 -0
  58. package/src/shaders/cloudsResolve.frag +202 -0
  59. package/src/shaders/cloudsResolve.vert +10 -0
  60. package/src/shaders/localWeather.frag +83 -0
  61. package/src/shaders/parameters.glsl +64 -0
  62. package/src/shaders/perlin.glsl +211 -0
  63. package/src/shaders/shadow.frag +197 -0
  64. package/src/shaders/shadow.vert +16 -0
  65. package/src/shaders/shadowResolve.frag +76 -0
  66. package/src/shaders/shadowResolve.vert +10 -0
  67. package/src/shaders/structuredSampling.glsl +101 -0
  68. package/src/shaders/tileableNoise.glsl +88 -0
  69. package/src/shaders/turbulence.frag +51 -0
  70. package/src/shaders/types.glsl +18 -0
  71. package/src/shaders/varianceClipping.glsl +114 -0
  72. package/src/uniforms.ts +218 -0
  73. package/types/CascadedShadowMaps.d.ts +52 -0
  74. package/types/CloudLayer.d.ts +26 -0
  75. package/types/CloudLayers.d.ts +21 -0
  76. package/types/CloudShape.d.ts +5 -0
  77. package/types/CloudShapeDetail.d.ts +5 -0
  78. package/types/CloudsEffect.d.ts +170 -0
  79. package/types/CloudsMaterial.d.ts +86 -0
  80. package/types/CloudsPass.d.ts +44 -0
  81. package/types/CloudsResolveMaterial.d.ts +30 -0
  82. package/types/DensityProfile.d.ts +12 -0
  83. package/types/LocalWeather.d.ts +5 -0
  84. package/types/PassBase.d.ts +14 -0
  85. package/types/Procedural3DTexture.d.ts +20 -0
  86. package/types/ProceduralTexture.d.ts +24 -0
  87. package/types/ShaderArrayPass.d.ts +7 -0
  88. package/types/ShadowMaterial.d.ts +34 -0
  89. package/types/ShadowPass.d.ts +34 -0
  90. package/types/ShadowResolveMaterial.d.ts +20 -0
  91. package/types/Turbulence.d.ts +5 -0
  92. package/types/bayer.d.ts +4 -0
  93. package/types/constants.d.ts +6 -0
  94. package/types/helpers/FrustumCorners.d.ts +18 -0
  95. package/types/helpers/setArrayRenderTargetLayers.d.ts +3 -0
  96. package/types/helpers/splitFrustum.d.ts +9 -0
  97. package/types/index.d.ts +13 -0
  98. package/types/qualityPresets.d.ts +46 -0
  99. package/types/r3f/CloudLayer.d.ts +7 -0
  100. package/types/r3f/CloudLayers.d.ts +15 -0
  101. package/types/r3f/Clouds.d.ts +16 -0
  102. package/types/r3f/index.d.ts +2 -0
  103. package/types/uniforms.d.ts +66 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.js","sources":["../src/DensityProfile.ts","../src/CloudLayer.ts","../src/CloudLayers.ts","../node_modules/.pnpm/tiny-invariant@1.3.3/node_modules/tiny-invariant/dist/esm/tiny-invariant.js","../src/helpers/FrustumCorners.ts","../src/helpers/splitFrustum.ts","../src/CascadedShadowMaps.ts","../src/bayer.ts","../src/qualityPresets.ts","../src/shaders/clouds.frag?raw","../src/shaders/clouds.glsl?raw","../src/shaders/clouds.vert?raw","../src/shaders/parameters.glsl?raw","../src/shaders/types.glsl?raw","../src/CloudsMaterial.ts","../src/shaders/catmullRomSampling.glsl?raw","../src/shaders/cloudsResolve.frag?raw","../src/shaders/cloudsResolve.vert?raw","../src/shaders/varianceClipping.glsl?raw","../src/CloudsResolveMaterial.ts","../src/PassBase.ts","../src/CloudsPass.ts","../src/helpers/setArrayRenderTargetLayers.ts","../src/ShaderArrayPass.ts","../src/shaders/shadow.frag?raw","../src/shaders/shadow.vert?raw","../src/shaders/structuredSampling.glsl?raw","../src/ShadowMaterial.ts","../src/shaders/shadowResolve.frag?raw","../src/shaders/shadowResolve.vert?raw","../src/ShadowResolveMaterial.ts","../src/ShadowPass.ts","../src/uniforms.ts","../src/shaders/cloudsEffect.frag?raw","../src/CloudsEffect.ts","../src/constants.ts"],"sourcesContent":null,"names":["DensityProfile","expTerm","exponent","linearTerm","constantTerm","other","paramKeys","applyOptions","target","params","key","value","_CloudLayer","options","CloudLayer","entriesScratch","intervalsScratch","compareEntries","a","b","_CloudLayers","result","minIntervals","maxIntervals","i","layer","entry","intervalIndex","balance","entryIndex","flag","interval","CloudLayers","isProduction","prefix","invariant","condition","message","FrustumCorners","camera","far","Vector3","isOrthographic","inverseProjectionMatrix","corner","absZ","clipDepths","index","frustum","matrix","modes","count","near","_","lambda","uniform","logarithmic","lerp","splitFrustum","mode","vectorScratch1","vectorScratch2","matrixScratch1","Matrix4","matrixScratch2","frustumScratch","boxScratch","Box3","cascadedShadowMapsDefaults","CascadedShadowMaps","Vector2","cascadeCount","mapSize","maxFar","farScale","splitMode","splitLambda","margin","fade","_a","splits","cascades","nearCorners","farCorners","diagonalLength","distance","sunDirection","lightOrientationMatrix","Object3D","cameraToLightMatrix","frusta","cascade","radius","left","right","top","bottom","bbox","j","center","texelWidth","texelHeight","position","inverseMatrix","projectionMatrix","viewMatrix","inverseViewMatrix","bayerIndices","bayerOffsets","offset","values","defaults","qualityPresets","fragmentShader$4","clouds","vertexShader$3","parameters","types","vectorScratch","geodeticScratch","Geodetic","CloudsMaterial","AtmosphereMaterialBase","parameterUniforms","layerUniforms","atmosphereUniforms","atmosphere","AtmosphereParameters","GLSL3","resolveIncludes","vertexShader","atmosphereParameters","functions","unrollLoops","fragmentShader","depth","math","turbo","generators","raySphereIntersection","cascadedShadowMaps","interleavedGradientNoise","vogelDisk","Uniform","Vector4","renderer","scene","geometry","object","group","uniforms","prevPowder","nextPowder","prevGroundIrradiance","previousProjectionMatrix","previousViewMatrix","reprojectionMatrix","frame","resolution","dx","dy","assertType","cameraPosition","cameraPositionECEF","width","height","targetWidth","targetHeight","__decorateClass","defineInt","defineExpression","define","defineFloat","catmullRomSampling","fragmentShader$3","vertexShader$2","varianceClipping","CloudsResolveMaterial","RawShaderMaterial","colorBuffer","depthVelocityBuffer","shadowLengthBuffer","colorHistoryBuffer","shadowLengthHistoryBuffer","PassBase","Pass","name","Camera","shadow","createRenderTarget","depthVelocity","shadowLength","renderTarget","WebGLRenderTarget","HalfFloatType","LinearFilter","RedFormat","CloudsPass","ShaderPass","alpha","frameBufferType","_b","_c","current","resolve","history","resolveUniforms","currentUniforms","nextResolve","nextHistory","deltaTime","lowResWidth","lowResHeight","depthTexture","depthPacking","setArrayRenderTargetLayers","outputBuffer","glTexture","gl","drawBuffers","ShaderArrayPass","inputBuffer","stencilTest","fragmentShader$2","vertexShader$1","structuredSampling","ShadowMaterial","fragmentShader$1","ShadowResolveMaterial","historyBuffer","WebGLArrayRenderTarget","ShadowPass","createCloudParameterUniforms","instances","createCloudLayerUniforms","shadowLayerMask","updateCloudLayerUniforms","layers","densityProfile","totalMinHeight","totalMaxHeight","shadowBottomHeight","shadowTopHeight","altitude","maxHeight","createAtmosphereUniforms","vector3Scratch","vector2Scratch","cloudsUniformKeys","cloudsMaterialParameterKeys","shadowUniformKeys","shadowMaterialParameterKeys","shadowPassParameterKeys","shadowMapsParameterKeys","changeEvent","cloudsPassOptionsDefaults","Resolution","CloudsEffect","Effect","EffectAttribute","EventDispatcher","resolutionScale","resolutionX","resolutionY","_d","passOptions","definePropertyShorthand","defineUniformShorthand","inverseEllipsoidMatrix","altitudeCorrection","getAltitudeCorrectionOffset","surfaceNormal","zenithAngle","shadowMaps","shadowPass","cloudsPass","shadowUniforms","cloudsUniforms","prevOverlay","nextOverlay","prevShadow","nextShadow","prevShadowLength","nextShadowLength","baseWidth","baseHeight","props","Texture","Data3DTexture","CLOUD_SHAPE_TEXTURE_SIZE","CLOUD_SHAPE_DETAIL_TEXTURE_SIZE","ref","DEFAULT_LOCAL_WEATHER_URL","DEFAULT_SHAPE_URL","DEFAULT_SHAPE_DETAIL_URL","DEFAULT_TURBULENCE_URL"],"mappings":"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A;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GCAAC,KAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GCAAC,KAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GCAAC,KAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA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","x_google_ignoreList":[3]}
package/package.json ADDED
@@ -0,0 +1,77 @@
1
+ {
2
+ "name": "@takram/three-clouds",
3
+ "version": "0.1.0",
4
+ "description": "A Three.js and R3F implementation of geospatial volumetric clouds",
5
+ "keywords": [
6
+ "three",
7
+ "three.js",
8
+ "geospatial",
9
+ "volumetric",
10
+ "clouds"
11
+ ],
12
+ "homepage": "https://github.com/takram-design-engineering/three-geospatial/tree/main/packages/clouds",
13
+ "bugs": {
14
+ "url": "https://github.com/takram-design-engineering/three-geospatial/issues"
15
+ },
16
+ "repository": {
17
+ "type": "git",
18
+ "url": "https://github.com/takram-design-engineering/three-geospatial.git"
19
+ },
20
+ "license": "MIT",
21
+ "author": "Shota Matsuda <shota@takram.com>",
22
+ "type": "module",
23
+ "exports": {
24
+ ".": {
25
+ "import": "./build/index.js",
26
+ "require": "./build/index.cjs",
27
+ "types": "./types/index.d.ts"
28
+ },
29
+ "./r3f": {
30
+ "import": "./build/r3f.js",
31
+ "require": "./build/r3f.cjs",
32
+ "types": "./types/r3f/index.d.ts"
33
+ }
34
+ },
35
+ "main": "./build/index.cjs",
36
+ "module": "./build/index.js",
37
+ "types": "./types/index.d.ts",
38
+ "files": [
39
+ "assets",
40
+ "build",
41
+ "src",
42
+ "types",
43
+ "package.json",
44
+ "CHANGELOG.md",
45
+ "README.md"
46
+ ],
47
+ "dependencies": {
48
+ "@takram/three-atmosphere": "0.9.0",
49
+ "@takram/three-geospatial": "0.0.1-alpha.8",
50
+ "tiny-invariant": "^1.3.3",
51
+ "type-fest": "^4.34.1"
52
+ },
53
+ "peerDependencies": {
54
+ "@react-three/fiber": ">=8.17.10",
55
+ "@react-three/postprocessing": ">=2.16.3",
56
+ "postprocessing": ">=6.36.4",
57
+ "react": ">=18.0",
58
+ "three": ">=0.170.0"
59
+ },
60
+ "peerDependenciesMeta": {
61
+ "@react-three/drei": {
62
+ "optional": true
63
+ },
64
+ "@react-three/fiber": {
65
+ "optional": true
66
+ },
67
+ "@react-three/postprocessing": {
68
+ "optional": true
69
+ },
70
+ "react": {
71
+ "optional": true
72
+ }
73
+ },
74
+ "publishConfig": {
75
+ "access": "public"
76
+ }
77
+ }
@@ -0,0 +1,288 @@
1
+ // Based on the following work with slight modifications.
2
+ // https://github.com/StrandedKitty/three-csm/
3
+ // https://github.com/mrdoob/three.js/tree/r169/examples/jsm/csm
4
+
5
+ /**
6
+ * MIT License
7
+ *
8
+ * Copyright (c) 2019 vtHawk
9
+ *
10
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
11
+ * of this software and associated documentation files (the "Software"), to deal
12
+ * in the Software without restriction, including without limitation the rights
13
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
14
+ * copies of the Software, and to permit persons to whom the Software is
15
+ * furnished to do so, subject to the following conditions:
16
+ *
17
+ * The above copyright notice and this permission notice shall be included in all
18
+ * copies or substantial portions of the Software.
19
+ *
20
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
23
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
24
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
25
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
26
+ * SOFTWARE.
27
+ */
28
+
29
+ import {
30
+ Box3,
31
+ Matrix4,
32
+ Object3D,
33
+ Vector2,
34
+ Vector3,
35
+ type PerspectiveCamera
36
+ } from 'three'
37
+ import invariant from 'tiny-invariant'
38
+
39
+ import { FrustumCorners } from './helpers/FrustumCorners'
40
+ import { splitFrustum, type FrustumSplitMode } from './helpers/splitFrustum'
41
+
42
+ const vectorScratch1 = /*#__PURE__*/ new Vector3()
43
+ const vectorScratch2 = /*#__PURE__*/ new Vector3()
44
+ const matrixScratch1 = /*#__PURE__*/ new Matrix4()
45
+ const matrixScratch2 = /*#__PURE__*/ new Matrix4()
46
+ const frustumScratch = /*#__PURE__*/ new FrustumCorners()
47
+ const boxScratch = /*#__PURE__*/ new Box3()
48
+
49
+ export interface Cascade {
50
+ readonly interval: Vector2
51
+ readonly matrix: Matrix4
52
+ readonly inverseMatrix: Matrix4
53
+ readonly projectionMatrix: Matrix4
54
+ readonly inverseProjectionMatrix: Matrix4
55
+ readonly viewMatrix: Matrix4
56
+ readonly inverseViewMatrix: Matrix4
57
+ }
58
+
59
+ export interface CascadedShadowMapsOptions {
60
+ cascadeCount: number
61
+ mapSize: Vector2
62
+ maxFar?: number | null
63
+ farScale?: number
64
+ splitMode?: FrustumSplitMode
65
+ splitLambda?: number
66
+ margin?: number
67
+ fade?: boolean
68
+ }
69
+
70
+ export const cascadedShadowMapsDefaults = {
71
+ maxFar: null,
72
+ farScale: 1,
73
+ splitMode: 'practical',
74
+ splitLambda: 0.5,
75
+ margin: 0,
76
+ fade: true
77
+ } satisfies Partial<CascadedShadowMapsOptions>
78
+
79
+ export class CascadedShadowMaps {
80
+ readonly cascades: Cascade[] = []
81
+
82
+ readonly mapSize = new Vector2()
83
+ maxFar: number | null
84
+ farScale: number
85
+ splitMode: FrustumSplitMode
86
+ splitLambda: number
87
+ margin: number
88
+ fade: boolean
89
+
90
+ private readonly cameraFrustum = new FrustumCorners()
91
+ private readonly frusta: FrustumCorners[] = []
92
+ private readonly splits: number[] = []
93
+ private _far = 0
94
+
95
+ constructor(options: CascadedShadowMapsOptions) {
96
+ const {
97
+ cascadeCount,
98
+ mapSize,
99
+ maxFar,
100
+ farScale,
101
+ splitMode,
102
+ splitLambda,
103
+ margin,
104
+ fade
105
+ } = {
106
+ ...cascadedShadowMapsDefaults,
107
+ ...options
108
+ }
109
+ this.cascadeCount = cascadeCount
110
+ this.mapSize.copy(mapSize)
111
+ this.maxFar = maxFar
112
+ this.farScale = farScale
113
+ this.splitMode = splitMode
114
+ this.splitLambda = splitLambda
115
+ this.margin = margin
116
+ this.fade = fade
117
+ }
118
+
119
+ get cascadeCount(): number {
120
+ return this.cascades.length
121
+ }
122
+
123
+ set cascadeCount(value: number) {
124
+ if (value !== this.cascadeCount) {
125
+ for (let i = 0; i < value; ++i) {
126
+ this.cascades[i] ??= {
127
+ interval: new Vector2(),
128
+ matrix: new Matrix4(),
129
+ inverseMatrix: new Matrix4(),
130
+ projectionMatrix: new Matrix4(),
131
+ inverseProjectionMatrix: new Matrix4(),
132
+ viewMatrix: new Matrix4(),
133
+ inverseViewMatrix: new Matrix4()
134
+ }
135
+ }
136
+ this.cascades.length = value
137
+ }
138
+ }
139
+
140
+ get far(): number {
141
+ return this._far
142
+ }
143
+
144
+ private updateIntervals(camera: PerspectiveCamera): void {
145
+ const cascadeCount = this.cascadeCount
146
+ const splits = this.splits
147
+ const far = this.far
148
+ splitFrustum(
149
+ this.splitMode,
150
+ cascadeCount,
151
+ camera.near,
152
+ far,
153
+ this.splitLambda,
154
+ splits
155
+ )
156
+ this.cameraFrustum.setFromCamera(camera, far)
157
+ this.cameraFrustum.split(splits, this.frusta)
158
+
159
+ const cascades = this.cascades
160
+ for (let i = 0; i < cascadeCount; ++i) {
161
+ cascades[i].interval.set(splits[i - 1] ?? 0, splits[i] ?? 0)
162
+ }
163
+ }
164
+
165
+ private getFrustumRadius(
166
+ camera: PerspectiveCamera,
167
+ frustum: FrustumCorners
168
+ ): number {
169
+ // Get the two points that represent that furthest points on the frustum
170
+ // assuming that's either the diagonal across the far plane or the diagonal
171
+ // across the whole frustum itself.
172
+ const nearCorners = frustum.near
173
+ const farCorners = frustum.far
174
+ let diagonalLength = Math.max(
175
+ farCorners[0].distanceTo(farCorners[2]),
176
+ farCorners[0].distanceTo(nearCorners[2])
177
+ )
178
+
179
+ // Expand the shadow bounds by the fade width.
180
+ if (this.fade) {
181
+ const near = camera.near
182
+ const far = this.far
183
+ const distance = farCorners[0].z / (far - near)
184
+ diagonalLength += 0.25 * distance ** 2 * (far - near)
185
+ }
186
+ return diagonalLength * 0.5
187
+ }
188
+
189
+ private updateMatrices(
190
+ camera: PerspectiveCamera,
191
+ sunDirection: Vector3,
192
+ distance = 1
193
+ ): void {
194
+ const lightOrientationMatrix = matrixScratch1.lookAt(
195
+ vectorScratch1.setScalar(0),
196
+ vectorScratch2.copy(sunDirection).multiplyScalar(-1),
197
+ Object3D.DEFAULT_UP
198
+ )
199
+ const cameraToLightMatrix = matrixScratch2.multiplyMatrices(
200
+ matrixScratch2.copy(lightOrientationMatrix).invert(),
201
+ camera.matrixWorld
202
+ )
203
+
204
+ const frusta = this.frusta
205
+ const cascades = this.cascades
206
+ invariant(frusta.length === cascades.length)
207
+ const margin = this.margin
208
+ const mapSize = this.mapSize
209
+
210
+ for (let i = 0; i < frusta.length; ++i) {
211
+ const frustum = frusta[i]
212
+ const cascade = cascades[i]
213
+
214
+ // Update projection matrix.
215
+ const radius = this.getFrustumRadius(camera, frusta[i])
216
+ const left = -radius
217
+ const right = radius
218
+ const top = radius
219
+ const bottom = -radius
220
+ cascade.projectionMatrix.makeOrthographic(
221
+ left,
222
+ right,
223
+ top,
224
+ bottom,
225
+ -this.margin, // near
226
+ radius * 2 + this.margin // far
227
+ )
228
+
229
+ const { near, far } = frustumScratch
230
+ .copy(frustum)
231
+ .applyMatrix4(cameraToLightMatrix)
232
+ const bbox = boxScratch.makeEmpty()
233
+ for (let j = 0; j < 4; j++) {
234
+ bbox.expandByPoint(near[j])
235
+ bbox.expandByPoint(far[j])
236
+ }
237
+ const center = bbox.getCenter(vectorScratch1)
238
+ center.z = bbox.max.z + margin
239
+
240
+ // Round light-space translation to even texel increments.
241
+ const texelWidth = (right - left) / mapSize.width
242
+ const texelHeight = (top - bottom) / mapSize.height
243
+ center.x = Math.round(center.x / texelWidth) * texelWidth
244
+ center.y = Math.round(center.y / texelHeight) * texelHeight
245
+
246
+ // Update inverse view matrix.
247
+ center.applyMatrix4(lightOrientationMatrix)
248
+ const position = vectorScratch2
249
+ .copy(sunDirection)
250
+ .multiplyScalar(distance)
251
+ .add(center)
252
+ cascade.inverseViewMatrix
253
+ .lookAt(center, position, Object3D.DEFAULT_UP)
254
+ .setPosition(position)
255
+ }
256
+ }
257
+
258
+ update(
259
+ camera: PerspectiveCamera,
260
+ sunDirection: Vector3,
261
+ distance?: number
262
+ ): void {
263
+ this._far =
264
+ this.maxFar != null
265
+ ? Math.min(this.maxFar, camera.far * this.farScale)
266
+ : camera.far * this.farScale
267
+
268
+ this.updateIntervals(camera)
269
+ this.updateMatrices(camera, sunDirection, distance)
270
+
271
+ const cascades = this.cascades
272
+ const cascadeCount = this.cascadeCount
273
+ for (let i = 0; i < cascadeCount; ++i) {
274
+ const {
275
+ matrix,
276
+ inverseMatrix,
277
+ projectionMatrix,
278
+ inverseProjectionMatrix,
279
+ viewMatrix,
280
+ inverseViewMatrix
281
+ } = cascades[i]
282
+ inverseProjectionMatrix.copy(projectionMatrix).invert()
283
+ viewMatrix.copy(inverseViewMatrix).invert()
284
+ matrix.copy(projectionMatrix).multiply(viewMatrix)
285
+ inverseMatrix.copy(inverseViewMatrix).multiply(inverseProjectionMatrix)
286
+ }
287
+ }
288
+ }
@@ -0,0 +1,85 @@
1
+ import { DensityProfile, type DensityProfileLike } from './DensityProfile'
2
+
3
+ const paramKeys = [
4
+ 'channel',
5
+ 'altitude',
6
+ 'height',
7
+ 'densityScale',
8
+ 'shapeAmount',
9
+ 'shapeDetailAmount',
10
+ 'weatherExponent',
11
+ 'shapeAlteringBias',
12
+ 'coverageFilterWidth',
13
+ 'shadow',
14
+ 'densityProfile'
15
+ ] as const
16
+
17
+ export interface CloudLayerLike
18
+ extends Partial<
19
+ Pick<CloudLayer, Exclude<(typeof paramKeys)[number], 'densityProfile'>>
20
+ > {
21
+ densityProfile?: DensityProfileLike
22
+ }
23
+
24
+ function applyOptions(target: CloudLayer, params?: CloudLayerLike): void {
25
+ if (params == null) {
26
+ return
27
+ }
28
+ for (const key of paramKeys) {
29
+ const value = params[key]
30
+ if (value == null) {
31
+ continue
32
+ }
33
+ if (target[key] instanceof DensityProfile) {
34
+ target[key].copy(value as DensityProfile)
35
+ } else {
36
+ ;(target as any)[key] = value
37
+ }
38
+ }
39
+ }
40
+
41
+ export type TextureChannel = 'r' | 'g' | 'b' | 'a'
42
+
43
+ export class CloudLayer {
44
+ static readonly DEFAULT = /*#__PURE__*/ new CloudLayer()
45
+
46
+ channel: TextureChannel = 'r'
47
+ altitude = 0
48
+ height = 0
49
+ densityScale = 0.2
50
+ shapeAmount = 1
51
+ shapeDetailAmount = 1
52
+ weatherExponent = 1
53
+ shapeAlteringBias = 0.35
54
+ coverageFilterWidth = 0.6
55
+ densityProfile = new DensityProfile(0, 0, 0.75, 0.25)
56
+ shadow = false
57
+
58
+ constructor(options?: CloudLayerLike) {
59
+ this.set(options)
60
+ }
61
+
62
+ set(options?: CloudLayerLike): this {
63
+ applyOptions(this, options)
64
+ return this
65
+ }
66
+
67
+ clone(): CloudLayer {
68
+ return new CloudLayer(this)
69
+ }
70
+
71
+ copy(other: CloudLayer): this {
72
+ this.channel = other.channel
73
+ this.altitude = other.altitude
74
+ this.height = other.height
75
+ this.densityScale = other.densityScale
76
+ this.shapeAmount = other.shapeAmount
77
+ this.shapeDetailAmount = other.shapeDetailAmount
78
+ this.weatherExponent = other.weatherExponent
79
+ this.shapeAlteringBias = other.shapeAlteringBias
80
+ this.coverageFilterWidth = other.coverageFilterWidth
81
+ this.densityProfile.copy(other.densityProfile)
82
+ this.shadow = other.shadow
83
+ return this
84
+ }
85
+ }
@@ -0,0 +1,61 @@
1
+ import { Vector3 } from 'three'
2
+
3
+ import { CloudLayers } from './CloudLayers'
4
+
5
+ describe('CloudLayers', () => {
6
+ describe('packIntervalHeights', () => {
7
+ test('intervals', () => {
8
+ const layers = new CloudLayers([
9
+ { altitude: 0, height: 1 },
10
+ { altitude: 2, height: 1 },
11
+ { altitude: 4, height: 1 },
12
+ { altitude: 6, height: 1 }
13
+ ])
14
+ const minIntervals = new Vector3()
15
+ const maxIntervals = new Vector3()
16
+ layers.packIntervalHeights(minIntervals, maxIntervals)
17
+ expect(minIntervals.x).toBe(1)
18
+ expect(maxIntervals.x).toBe(2)
19
+ expect(minIntervals.y).toBe(3)
20
+ expect(maxIntervals.y).toBe(4)
21
+ expect(minIntervals.z).toBe(5)
22
+ expect(maxIntervals.z).toBe(6)
23
+ })
24
+
25
+ test('intersection', () => {
26
+ const layers = new CloudLayers([
27
+ { altitude: 0, height: 3 },
28
+ { altitude: 2, height: 1 },
29
+ { altitude: 4, height: 2 },
30
+ { altitude: 6, height: 1 }
31
+ ])
32
+ const minIntervals = new Vector3()
33
+ const maxIntervals = new Vector3()
34
+ layers.packIntervalHeights(minIntervals, maxIntervals)
35
+ expect(minIntervals.x).toBe(3)
36
+ expect(maxIntervals.x).toBe(4)
37
+ expect(minIntervals.y).toBe(0)
38
+ expect(maxIntervals.y).toBe(0)
39
+ expect(minIntervals.z).toBe(0)
40
+ expect(maxIntervals.z).toBe(0)
41
+ })
42
+
43
+ test('union', () => {
44
+ const layers = new CloudLayers([
45
+ { altitude: 0, height: 3 },
46
+ { altitude: 2, height: 0 },
47
+ { altitude: 4, height: 4 },
48
+ { altitude: 6, height: 1 }
49
+ ])
50
+ const minIntervals = new Vector3()
51
+ const maxIntervals = new Vector3()
52
+ layers.packIntervalHeights(minIntervals, maxIntervals)
53
+ expect(minIntervals.x).toBe(3)
54
+ expect(maxIntervals.x).toBe(4)
55
+ expect(minIntervals.y).toBe(0)
56
+ expect(maxIntervals.y).toBe(0)
57
+ expect(minIntervals.z).toBe(0)
58
+ expect(maxIntervals.z).toBe(0)
59
+ })
60
+ })
61
+ })