mirror of
https://github.com/storytold/lightcraft.git
synced 2026-10-14 19:27:01 -04:00
Sensor-clipped pixels are rebuilt at raw decode. The tone map rolls them off to white at Neutral, so any colour they carry shows only when Highlights, a negative Exposure or Whites darkens them. They took colour from the nearest unclipped pixel (dark foliage, lens fringes along branches, pixels demosaiced from clipped samples), left two clipped channels at their white-balance-scaled clip levels (red or pink), and were neutral only in camera RGB, not after the colour model (a look fitted to the camera's JPEG, a camera profile). - highlight::reconstruct_with: chromaticity only from bright unclipped content away from edges and from the clip, through a normalised push-pull pyramid; a neutral estimate blended in where reliable content is scarce at every scale up to a quarter of the long edge, applied only as far as the pixel lies past the nearest near-clip unclipped pixels (so a surface still runs into clipping without a step); clipped pairs keep the estimate's ratio at their clip floors; partly clipped pixels fade into the clipped neutral on their way from the first channel clipping to the last; fully clipped pixels become the colour model's neutral. Pixels without a clipped channel are left exactly as they were. - engine: the decode colour step as CameraColourModel, with clipped_white, which keeps the camera's neutral for nearly singular or implausible models. - Tests in raw (continuity along a ramp through every clip, also as lines 1 to 16 rows thick with no reliable colour, on canvases 32 to 1024 rows), engine (pipeline renders at Highlights -100, #523's edit and Exposure -2 through the first clip, over the same sweep; a CC0 ILCE-7RM4 corpus file added to RAW_SAMPLES) and the GPU equivalence suite. - Render cache version 27. Co-Authored-By: Claude Opus 5.5 <[email protected]>
34 lines
1.1 KiB
TOML
34 lines
1.1 KiB
TOML
[package]
|
|
name = "lightcraft-gpu"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
license.workspace = true
|
|
description = "LightCraft GPU develop pipeline: wgpu compute (WGSL) twin of the CPU pipeline, which stays the reference (L3)"
|
|
|
|
[lints]
|
|
workspace = true
|
|
|
|
[dependencies]
|
|
lightcraft-denoise = { workspace = true, optional = true }
|
|
lightcraft-geom = { workspace = true }
|
|
lightcraft-color = { workspace = true }
|
|
lightcraft-raster = { workspace = true }
|
|
lightcraft-develop = { workspace = true }
|
|
lightcraft-pipeline = { workspace = true }
|
|
log = { workspace = true }
|
|
|
|
# Native only: Metal / Vulkan / DX12 through wgpu (pure Rust; the drivers are the system's).
|
|
# The browser build keeps the CPU pipeline (WebGPU needs async device creation: see docs/gpu-pipeline.md).
|
|
[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
|
|
wgpu = { workspace = true }
|
|
pollster = { workspace = true }
|
|
bytemuck = { workspace = true }
|
|
|
|
[features]
|
|
default = []
|
|
denoise = ["dep:lightcraft-denoise", "lightcraft-denoise/runtime"]
|
|
|
|
[dev-dependencies]
|
|
lightcraft-scenes = { workspace = true }
|
|
lightcraft-raw = { workspace = true }
|