Individual skill
threejs-atmosphere-aerial-perspective
Implement physically motivated sky and aerial-perspective systems in Three.js. Use for planetary atmospheres, ground-to-space transitions, Rayleigh/Mie scattering, precomputed LUTs, depth-based transmittance and inscattering, sun/moon discs, and atmosphere-aware lighting.
skills/threejs-atmosphere-aerial-perspective/SKILL.md
Source commit 53eb5a24097425d82532ec33697ad472750132a4
What was checked
- Matches the observed repository HEAD
- Yes
- Scanner rules are current
- Yes
- Repository scan complete
- No
- Skill scan complete
- Yes
- Observed behavior
- Local scripts
- Last checked
- Nov 10, 2026
These are observations at the recorded commit, not a guarantee of safety. Review the source before running it.
Install this skill
Choose an agent in your Stack or copy a command below. Commands fetch the pinned commit and copy only this skill directory. Existing destinations are refused. Copying a command does not install anything.
An install command is unavailable: current rules, complete repository and skill scans, an eligible behavior level and a permitted license are required.
Repository context
- Repository stars (not skill ratings)
- 984
- Repository last updated
- Oct 22, 2026
- License
- MIT
Observed agent integration: No specific integration evidence. Standard SKILL.md installation does not imply verified compatibility.
- engineering Derived category
Files and excerpt
File metadata and permitted, redacted excerpts come from the recorded scan. Source links are pinned to that commit.
Browse files
SKILL.mdcore · 2,775 bytesagents/openai.yamlasset · 242 bytesassets/lut-aerial-perspective/THIRD_PARTY_LICENSES.mddoc · 1,218 bytesassets/lut-aerial-perspective/irradiance.binasset · 8,192 bytesassets/lut-aerial-perspective/irradiance.exrasset · 2,306 bytesassets/lut-aerial-perspective/scattering.binasset · 8,388,608 bytesassets/lut-aerial-perspective/scattering.exrasset · 4,089,916 bytesassets/lut-aerial-perspective/transmittance.binasset · 131,072 bytesassets/lut-aerial-perspective/transmittance.exrasset · 28,047 bytesexamples/lut-aerial-perspective/atmosphere-effect.jsruns · 354 bytesexamples/lut-aerial-perspective/example-render.jpegasset · 25,762 bytesexamples/lut-aerial-perspective/source/atmosphere/AerialPerspectiveEffect.tsruns · 20,175 bytesexamples/lut-aerial-perspective/source/atmosphere/AtmosphereMaterialBase.tsruns · 9,005 bytesexamples/lut-aerial-perspective/source/atmosphere/AtmosphereParameters.tsruns · 2,183 bytesexamples/lut-aerial-perspective/source/atmosphere/IrradianceMaskPass.tsruns · 5,280 bytesexamples/lut-aerial-perspective/source/atmosphere/PrecomputedTexturesLoader.tsruns · 3,816 bytesexamples/lut-aerial-perspective/source/atmosphere/SkyLightProbe.tsruns · 4,226 bytesexamples/lut-aerial-perspective/source/atmosphere/SkyMaterial.tsruns · 5,490 bytesexamples/lut-aerial-perspective/source/atmosphere/StarsGeometry.tsruns · 810 bytesexamples/lut-aerial-perspective/source/atmosphere/StarsMaterial.tsruns · 3,983 bytesexamples/lut-aerial-perspective/source/atmosphere/SunDirectionalLight.tsruns · 2,485 bytesexamples/lut-aerial-perspective/source/atmosphere/blackBodyChromaticity.tsruns · 1,910 bytesexamples/lut-aerial-perspective/source/atmosphere/celestialDirections.tsruns · 2,288 bytesexamples/lut-aerial-perspective/source/atmosphere/constants.tsruns · 1,071 bytesexamples/lut-aerial-perspective/source/atmosphere/getAltitudeCorrectionOffset.tsruns · 832 bytesexamples/lut-aerial-perspective/source/atmosphere/getSunLightColor.tsruns · 3,060 bytesexamples/lut-aerial-perspective/source/atmosphere/helpers/functions.tsruns · 882 bytesexamples/lut-aerial-perspective/source/atmosphere/helpers/sampleTexture.tsruns · 1,681 bytesexamples/lut-aerial-perspective/source/atmosphere/index.tsruns · 578 bytesexamples/lut-aerial-perspective/source/atmosphere/shaders/aerialPerspectiveEffect.fragasset · 11,290 bytesexamples/lut-aerial-perspective/source/atmosphere/shaders/aerialPerspectiveEffect.vertasset · 2,302 bytesexamples/lut-aerial-perspective/source/atmosphere/shaders/functions.glslasset · 19,639 bytesexamples/lut-aerial-perspective/source/atmosphere/shaders/index.tsruns · 185 bytesexamples/lut-aerial-perspective/source/atmosphere/shaders/irradianceMask.fragasset · 2,146 bytesexamples/lut-aerial-perspective/source/atmosphere/shaders/parameters.glslasset · 478 bytesexamples/lut-aerial-perspective/source/atmosphere/shaders/sky.fragasset · 2,494 bytesexamples/lut-aerial-perspective/source/atmosphere/shaders/sky.glslasset · 2,574 bytesexamples/lut-aerial-perspective/source/atmosphere/shaders/sky.vertasset · 1,781 bytesexamples/lut-aerial-perspective/source/atmosphere/shaders/stars.fragasset · 1,111 bytesexamples/lut-aerial-perspective/source/atmosphere/shaders/stars.vertasset · 1,567 bytesexamples/lut-aerial-perspective/source/atmosphere/types.tsruns · 519 bytesexamples/lut-aerial-perspective/source/effects/DepthEffect.tsruns · 1,689 bytesexamples/lut-aerial-perspective/source/effects/DitheringEffect.tsruns · 581 bytesexamples/lut-aerial-perspective/source/effects/DownsampleThresholdMaterial.tsruns · 2,035 bytesexamples/lut-aerial-perspective/source/effects/GeometryEffect.tsruns · 2,154 bytesexamples/lut-aerial-perspective/source/effects/GeometryPass.tsruns · 1,389 bytesexamples/lut-aerial-perspective/source/effects/LensFlareEffect.tsruns · 5,480 bytesexamples/lut-aerial-perspective/source/effects/LensFlareFeaturesMaterial.tsruns · 2,322 bytesexamples/lut-aerial-perspective/source/effects/NormalEffect.tsruns · 2,912 bytesexamples/lut-aerial-perspective/source/effects/createHaldLookupTexture.tsruns · 637 bytesexamples/lut-aerial-perspective/source/effects/index.tsruns · 250 bytesexamples/lut-aerial-perspective/source/effects/setupMaterialsForGeometryPass.tsruns · 3,129 bytesexamples/lut-aerial-perspective/source/effects/shaders/depthEffect.fragasset · 472 bytesexamples/lut-aerial-perspective/source/effects/shaders/ditheringEffect.fragasset · 207 bytesexamples/lut-aerial-perspective/source/effects/shaders/downsampleThreshold.fragasset · 2,280 bytesexamples/lut-aerial-perspective/source/effects/shaders/downsampleThreshold.vertasset · 961 bytesexamples/lut-aerial-perspective/source/effects/shaders/geometryEffect.fragasset · 535 bytesexamples/lut-aerial-perspective/source/effects/shaders/lensFlareEffect.fragasset · 351 bytesexamples/lut-aerial-perspective/source/effects/shaders/lensFlareFeatures.fragasset · 2,414 bytesexamples/lut-aerial-perspective/source/effects/shaders/lensFlareFeatures.vertasset · 212 bytesexamples/lut-aerial-perspective/source/effects/shaders/normalEffect.fragasset · 1,054 bytesexamples/lut-aerial-perspective/source/geospatial/ArrayBufferLoader.tsruns · 952 bytesexamples/lut-aerial-perspective/source/geospatial/DataLoader.tsruns · 4,799 bytesexamples/lut-aerial-perspective/source/geospatial/EXR3DLoader.tsruns · 1,259 bytesexamples/lut-aerial-perspective/source/geospatial/Ellipsoid.tsruns · 4,238 bytesexamples/lut-aerial-perspective/source/geospatial/EllipsoidGeometry.tsruns · 3,089 bytesexamples/lut-aerial-perspective/source/geospatial/Geodetic.tsruns · 4,283 bytesexamples/lut-aerial-perspective/source/geospatial/PointOfView.tsruns · 4,611 bytesexamples/lut-aerial-perspective/source/geospatial/Rectangle.tsruns · 2,147 bytesexamples/lut-aerial-perspective/source/geospatial/STBNLoader.tsruns · 598 bytesexamples/lut-aerial-perspective/source/geospatial/Texture3DLoader.tsruns · 2,406 bytesexamples/lut-aerial-perspective/source/geospatial/TileCoordinate.tsruns · 2,486 bytesexamples/lut-aerial-perspective/source/geospatial/TilingScheme.tsruns · 2,415 bytesexamples/lut-aerial-perspective/source/geospatial/TypedArrayLoader.tsruns · 1,478 bytesexamples/lut-aerial-perspective/source/geospatial/assertions.tsruns · 69 bytesexamples/lut-aerial-perspective/source/geospatial/bufferGeometry.tsruns · 1,927 bytesexamples/lut-aerial-perspective/source/geospatial/constants.tsruns · 326 bytesexamples/lut-aerial-perspective/source/geospatial/decorators.tsruns · 6,157 bytesexamples/lut-aerial-perspective/source/geospatial/defineShorthand.tsruns · 2,222 bytesexamples/lut-aerial-perspective/source/geospatial/helpers/projectOnEllipsoidSurface.tsruns · 2,221 bytesexamples/lut-aerial-perspective/source/geospatial/index.tsruns · 701 bytesexamples/lut-aerial-perspective/source/geospatial/math.tsruns · 1,859 bytesexamples/lut-aerial-perspective/source/geospatial/resolveIncludes.tsruns · 687 bytesexamples/lut-aerial-perspective/source/geospatial/shaders/cascadedShadowMaps.glslasset · 2,409 bytesexamples/lut-aerial-perspective/source/geospatial/shaders/depth.glslasset · 525 bytesexamples/lut-aerial-perspective/source/geospatial/shaders/generators.glslasset · 238 bytesexamples/lut-aerial-perspective/source/geospatial/shaders/index.tsruns · 973 bytesexamples/lut-aerial-perspective/source/geospatial/shaders/interleavedGradientNoise.glslasset · 264 bytesexamples/lut-aerial-perspective/source/geospatial/shaders/math.glslasset · 2,434 bytesexamples/lut-aerial-perspective/source/geospatial/shaders/packing.glslasset · 505 bytesexamples/lut-aerial-perspective/source/geospatial/shaders/raySphereIntersection.glslasset · 3,750 bytesexamples/lut-aerial-perspective/source/geospatial/shaders/transform.glslasset · 343 bytesexamples/lut-aerial-perspective/source/geospatial/shaders/turbo.glslasset · 476 bytesexamples/lut-aerial-perspective/source/geospatial/shaders/vogelDisk.glslasset · 401 bytesexamples/lut-aerial-perspective/source/geospatial/typedArray.tsruns · 1,059 bytesexamples/lut-aerial-perspective/source/geospatial/typedArrayParsers.tsruns · 3,055 bytesexamples/lut-aerial-perspective/source/geospatial/types.tsruns · 251 bytesexamples/lut-aerial-perspective/source/geospatial/unrollLoops.tsruns · 714 bytesexamples/lut-aerial-perspective/source/vendor/tiny-invariant.tsruns · 301 bytesexamples/lut-aerial-perspective/source/vendor/url-join.tsruns · 716 bytesreferences/atmosphere-system-contract.mddoc · 6,106 bytes
Read excerpt
# Atmosphere and Aerial Perspective
Treat sky rendering and aerial perspective as two views of the same scattering model. They must share radii, density profiles, coefficients, sun direction, exposure scale, and coordinate transforms.
This skill contains exemplary examples and assets beyond descriptive guidance,
they're worth studying, referencing, or even copying. Use them sufficiently
when relevant and do NOT blindly skip them.
## Choose the implementation tier
- Small scene with no orbital camera: analytic height/distance approximation.
- Planetary ground-to-space camera: ray integration or precomputed LUTs.
- Large geospatial world: LUTs plus world-to-planet transform, altitude correction, and depth-aware aerial perspective.