End of milestone 3
This commit is contained in:
1 parent
5e2769faa8
commit
cc70cea7f6
13 files changed
+192
-84
No files matched your search
@@ -32,6 +32,8 @@ step up is visible at a glance.
|
||||
|---|---|---|---|---|---|
|
||||
| L0 / C0 | Lambertian surfaces, Earth's and the Moon's limbs exact, eclipse by Earth and the Moon, no shadows on the target, no light from Earth | Pinhole, absolute radiometry to 12-bit DN, no noise or blur | 0.9–1.3 ms | 5–68 ms | [](docs/images/l0-c0.png) |
|
||||
| L1 / C0 | Adds Earth's surface from Blue Marble and the Moon's from the LRO Camera's map, the Moon's measured phase curve, shadows on the target, Earthshine and Moonshine, eclipses seen on Earth and the Moon, the Sun's limb darkening | Pinhole, absolute radiometry to 12-bit DN, no noise or blur | 1.3–2.3 ms | 12–114 ms | [](docs/images/l1-c0.png) |
|
||||
| L1 / C1 | As L1 above, with stars from Hipparcos, Tycho-2 and Gaia | Adds pixels that collect light over their area (the scene rendered 2 x 2 finer, then averaged), lens distortion, a Gaussian lens blur, the Sun, Moon and Earth at their apparent positions, shot, dark and read noise, PRNU, DSNU and hot pixels, blooming | 4.1–5.2 ms | 83–684 ms | [](docs/images/l1-c1.png) |
|
||||
| L1 / C2 | As L1 above, with stars | Adds diffraction (the Airy pattern over each channel's band) or a measured PSF, applied with its wings by FFT | 35–37 ms | 0.61–1.22 s | [](docs/images/l1-c2.png) |
|
||||
|
||||
Times are one 1920 x 1080 RGB frame end to end (`submit` to `wait_view`, with
|
||||
the DN image ready to read), median of criterion runs, over models from 12 to
|
||||
@@ -40,15 +42,21 @@ the DN image ready to read), median of criterion runs, over models from 12 to
|
||||
sensor pass writing the image into memory the CPU reads. `wait`, which copies
|
||||
the 12 MB image into a new `Vec`, takes 1.8 to 2.0 ms on the RTX 3060 at L0
|
||||
and 2.3 to 3.1 ms at L1, and on lavapipe 7 to 77 ms and 14 to 144 ms. L1's
|
||||
setup also loads the Earth and Moon maps, about 1 s, once. lavapipe ran on the
|
||||
Intel Core Ultra 9 285K's 24 cores. Run to run, the RTX 3060's times vary by
|
||||
about 5 %, and lavapipe's by up to 15 % between sessions. The samples are the
|
||||
Landsat 8 example scene (`examples/scenes/landsat8.toml`). `cargo bench -p
|
||||
resolved` reproduces the numbers (L1 when the maps are in `data/`), and
|
||||
`resolved render --timings N` shows the per-pass split.
|
||||
setup also loads the Earth and Moon maps, about 1 s, once. In the sample scene
|
||||
the GPU's work is 3.8 ms at C1, of which 1.3 ms is drawing Earth and the Moon
|
||||
at 2 x 2 and 1.0 ms the blur, and 33 ms at C2, of which 30 ms is the FFT
|
||||
convolution on a 4096 x 4096 grid. The C2 sample uses the example camera's
|
||||
Gaussian PSF, and looks like C1's: at f/4 the Airy core is smaller than a
|
||||
pixel, and its wings show around the Sun (`examples/scenes/sun-glare.toml`).
|
||||
lavapipe ran on the Intel Core Ultra 9 285K's 24 cores. Run to run, the RTX
|
||||
3060's times vary by about 5 %, and lavapipe's by up to 15 % between sessions.
|
||||
The samples are the Landsat 8 example scene (`examples/scenes/landsat8.toml`),
|
||||
the preview (not `--pretty`) at half size, with the noise of seed 0. `cargo
|
||||
bench -p resolved` reproduces the numbers (L1 when the maps are in `data/`,
|
||||
and stars from C1 when the catalog is), and `resolved render --timings N`
|
||||
shows the per-pass split.
|
||||
|
||||
Planned: C1 and C2 add pixel-area sampling, lens distortion, blur and detector
|
||||
noise; L2 adds measured materials and the atmosphere; L3 is path traced.
|
||||
Planned: L2 adds measured materials and the atmosphere; L3 is path traced.
|
||||
|
||||
## Usage
|
||||
|
||||
@@ -137,23 +145,27 @@ cargo run --release -p resolved-cli -- render \
|
||||
--out frame.png --preview preview.png --timings 50
|
||||
```
|
||||
|
||||
`scripts/make-gallery.sh` renders every example scene at L0 and L1 into
|
||||
`gallery/` with `--pretty`, skipping any whose model or data is missing, and
|
||||
`scripts/serve-gallery.py` serves the result as a web page on port 8000 of
|
||||
every interface, each scene captioned from its file.
|
||||
`scripts/make-gallery.sh` renders every example scene at L0 and L1, with
|
||||
camera C1, into `gallery/` with `--pretty`, skipping any whose model or data
|
||||
is missing, and `scripts/serve-gallery.py` serves the result as a web page on
|
||||
port 8000 of every interface, each scene captioned from its file.
|
||||
|
||||
`crates/resolved-showcase` makes a 30-second movie at lighting L1: an inspector
|
||||
holding station behind a Landsat 8 model 705 km up, which astrokit propagates
|
||||
with J2. Time runs fast over the daylit Earth, slows as the Moon rises over the
|
||||
limb ahead, and slows almost to real time as the spacecraft passes into Earth's
|
||||
shadow. The camera drifts on a small natural relative orbit around its station,
|
||||
and adjusts its exposure frame by frame as a video camera does (up to one
|
||||
frame's time), through dawn and dusk. `--out movie.mp4` encodes it with ffmpeg,
|
||||
rendering each 1920 x 1080 frame in about 4 ms on the RTX 3060. `--serve
|
||||
`crates/resolved-showcase` makes a 30-second movie at lighting L1 and camera
|
||||
C1: an inspector holding station behind a Landsat 8 model 705 km up, which
|
||||
astrokit propagates with J2. Time runs fast over the daylit Earth, slows as
|
||||
the Moon rises over the limb ahead, and slows almost to real time as the
|
||||
spacecraft passes into Earth's shadow. The camera drifts on a small natural
|
||||
relative orbit around its station, and adjusts its exposure frame by frame, up
|
||||
to the flight time between frames, by at most 6 times per second of flight. It
|
||||
meters the first frame before taking it. In Earth's shadow at the end,
|
||||
exposures reach about 2 s, and show the target lit by the Moon and the stars
|
||||
above the limb. `--out movie.mp4` encodes it with ffmpeg, rendering and tone
|
||||
mapping each 1920 x 1080 frame in about 9 ms on the RTX 3060. `--serve
|
||||
0.0.0.0:8010` renders it live, in step with the clock, and streams it as MJPEG
|
||||
at 60 frames per second (`--fps`; it keeps up to 120, rendering each frame in
|
||||
under 5 ms) to the gallery page's Movie tab, which also plays and offers the
|
||||
recorded file (`make-gallery.sh` writes `gallery/movie.mp4`):
|
||||
at 60 frames per second (`--fps`; at 120 it skips up to 16 frames in 5 s),
|
||||
skipping about 9 more where the flight starts over, while it meters, to the
|
||||
gallery page's Movie tab, which also plays and offers the recorded file
|
||||
(`make-gallery.sh` writes `gallery/movie.mp4`):
|
||||
|
||||
```sh
|
||||
cargo run --release -p resolved-showcase -- --serve 0.0.0.0:8010
|
||||
@@ -199,23 +211,21 @@ cargo run --release -p resolved-showcase -- --serve 0.0.0.0:8010
|
||||
|
||||
## Status
|
||||
|
||||
Lighting L0 and L1 and camera C0 are in: the library renders Earth, Moon, Sun
|
||||
and targets to DN through `Renderer`, and the CLI renders scene files. Lighting
|
||||
L1 draws Earth's surface from Blue Marble and the Moon's from the LRO Camera's
|
||||
map, shadows on the target, light from Earth and the Moon on it, eclipses on
|
||||
Earth and the Moon, the Sun's limb darkening, and stars from Hipparcos,
|
||||
Tycho-2 and Gaia, which camera C1 shows. Camera C1 is under way: so far,
|
||||
Lighting L0 and L1 and cameras C0, C1 and C2 are in: the library renders
|
||||
Earth, Moon, Sun and targets to DN through `Renderer`, and the CLI renders
|
||||
scene files. Lighting L1 draws Earth's surface from Blue Marble and the Moon's
|
||||
from the LRO Camera's map, shadows on the target, light from Earth and the
|
||||
Moon on it, eclipses on Earth and the Moon, the Sun's limb darkening, and
|
||||
stars from Hipparcos, Tycho-2 and Gaia, which camera C1 shows. Camera C1 adds
|
||||
pixels that collect light over their area, lens distortion (Brown-Conrady),
|
||||
lens blur (a Gaussian PSF) applied to the scene rendered 2 x 2 finer than the
|
||||
pixels, the Sun, Moon and Earth at their apparent positions (light time
|
||||
and aberration), detector noise (shot, dark current and read noise, seeded
|
||||
and reproducible), the detector's fixed pattern (PRNU, DSNU and hot pixels),
|
||||
and blooming along columns or into neighbors. Camera C2 adds diffraction
|
||||
(the Airy pattern, averaged over each channel's band) and measured PSFs,
|
||||
applied with their wings by FFT. Planned, in order:
|
||||
pixels, the Sun, Moon and Earth at their apparent positions (light time and
|
||||
aberration), detector noise (shot, dark current and read noise, seeded and
|
||||
reproducible), the detector's fixed pattern (PRNU, DSNU and hot pixels), and
|
||||
blooming along columns or into neighbors. Camera C2 adds diffraction (the Airy
|
||||
pattern, averaged over each channel's band) and measured PSFs, applied with
|
||||
their wings by FFT. Planned, in order:
|
||||
|
||||
- Camera: the C1 and C2 checkpoint, their rows in the table above with
|
||||
sample images.
|
||||
- Lighting: BRDF and spectral materials, atmospheric scattering, clouds, lunar
|
||||
terrain.
|
||||
- Portable ray tracing, path tracing, and label outputs for ML.
|
||||
|
||||
Reference in new issue
Block a user