Ralith / Ralith/planetmap

Improve distribution of detail

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

Nobody has claimed this yet.

enhancement
Dominant language
Rust
Stars
65
Forks
6
Avg merge
9h 47m
Merged PRs (30d)
1

Description

Planetmap presently uses a traditional cubemap projection to distribute information over a radial domain. This is effective, but leads to some areas having ~50% more detail than others. Adopting a nonlinear projection within each cube face would allow us to drastically improve that for a small additional sampling cost. A variety of such mappings are compared in Cube-to-sphere Projections for Procedural Texturing and Beyond, which ultimately recommends a 5th-order polynomial approach that ~doubles the (very small) cost of applying the projection in exchange for reducing maximum area distortion to 7%. The increased sampling cost is further offset by the capacity to significantly reduce the number of samples (e.g. vertexes) necessary to achieve a certain minimum level of detail.

Applying this would lead to improved storage efficiency and isotropy, and make it much easier to define isotropic functions (e.g. for tree placement) in terms of individual chunks.

Contributor guide

No contributing guide indexed for this repository

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.

Research direction

No source files, tests, or entry points are named. Start by reading the linked Cube-to-sphere Projections paper, then locate Planetmap's cubemap projection and sampling code; done means the nonlinear projection is integrated and its distortion, sampling cost, storage efficiency, and isotropy are measured.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
computer-graphics
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.