Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

Cast shadows on the Moon: a horizon map from LOLA

Open
#211 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
5/5
Estimated time
Over a week
Newbie friendliness
35/100
Issue type
Feature
Clarity
Clearly specified
Activity status
Active
Tech stack
javascript, three.js

Research direction

Read js/scene/Planet.md under relief and CESIUM.md under relief on the Moon's tiles, then inspect tools/moon/lolaNormalMap.py and the mesh material and tileset sunlitShader entry points. Build horizon maps from the LOLA DEM and apply the shadow term consistently to both render paths; decide whether to include the higher-resolution normal map. Done means rims shadow floors near the terminator on both views, moon-quarter stays in bounds, and the recipe rebuilds the maps.

Written by the indexing model from the issue text.

Description

enhancement track:solar-system

Proposed in #192's comment (section 3) and left open by #199 and #206; see Planet.md, relief ("No cast shadows yet") and CESIUM.md, relief on the Moon's tiles ("Not done: cast shadows").

Problem

The Moon's normal map (#199, on Cesium's tiles by #206) lights each texel by its own slope, which makes crater walls light and shade along the terminator. A slope can't make a rim shadow its floor, and in the last few degrees of Sun the real floors are black, the terminator's best-known look.

Proposal

A horizon map from the same LOLA DEM: the horizon's elevation in 8 azimuths per texel, in two RGBA 2048×1024 textures (about 2–4 MB, so Git LFS under public/large/moon/ with dataUrl; AGENTS.md, data policy). One shadow term in the surface shader, in both the mesh's material and the tileset's sunlitShader (so both sides of the swap match; moon-quarter parity). The recipe goes in tools/moon/ next to lolaNormalMap.py, and in Planet.md.

A 4096×2048 normal map (1.4 MB, LFS) would hold detail to a 1.3° Moon; decide whether to do it with this.

Done when

At the occultation view, rims shadow their floors near the terminator on both celestiary's Moon and Cesium's tiles, moon-quarter stays inside its bounds, and the recipe rebuilds the maps.

Related: #192, #199, #206, #205.

Dominant language
JavaScript
Stars
55
Forks
4
Avg merge
10h 12m
Merged PRs (30d)
134

Getting set up

This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from celestiary/web

All issues in celestiary/web

Similar issues

More JavaScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.