Feature: colour palette generator (colour-theory sets) with a world pick that samples the material colour, not the post-processed pixel #431
Labels
No labels
amd
avatars
bug
builder
cannot-reproduce
crash
epic
feature
from-viewer
gl-removal
known-limitation
monitoring
parity
perf
platform
priority
critical
priority
high
priority
low
priority
medium
provenance
rendering
rt
status
in-progress
status
testing
status
up-next
triage
ui
upstream
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
sky_line/Slipstream#431
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Feature request: a colour set (palette) generator for builders and creators. Give it a base colour, pick a colour-theory scheme, and get a set of matching colours to use on objects. You can also pick the base colour from something in the world, sampled from the object's actual surface colour (texture × tint), not the final post-processed screen pixel.
Base colour input
What to sample: the face's base colour texture at the hit UV × the face's tint / colour (Blinn-Phong diffuse colour, or PBR base colour factor) × vertex colour if any, with alpha reported separately.
No lighting or post-processing: no shading, shadows, fog, bloom, tonemapping, exposure, AA or upscaling.
The existing picker copies only the face's tint. The current colour picker eyedropper (
LLFloaterColorPicker"color_pipette" →LLToolPipette→onColorSelect) copies the clicked face's tint colour (te.getColor()), not the screen pixel and not the texture colour (see the colour-picker validation ticket). This new pick samples the actual surface colour (texture × tint at the hit point) as a separate "sample material" mode, which could also become an option in the regular picker.The hit point: the pick already has the hit face and UV (
LLPickInfomUVCoords/mSTCoords, used by media-on-a-prim). Account for the face's texture transform (repeats, offset, rotation) and for PBR texture transforms (KHR_texture_transform).How to read the texel: the CPU copy may be trimmed or a thumbnail (#159 / #405 RAM tiers), and the GPU copy is block-compressed in a bindless slot. Options:
Prefer the GPU path (exact, cheap, no extra RAM), and note the mip that was used.
Colour space: report the colour in sRGB (what creators type into SL), and do the maths internally in linear / a perceptual space.
Optionally average a small area (3×3 / 5×5 texels) to avoid picking a single noisy texel, and/or show a small magnified preview while hovering.
Media faces / animated textures: sample the current frame or skip; say which.
Colour-theory schemes
Compute harmonies in a perceptual colour space (OKLCH / OKLab) rather than plain HSV, so the results look balanced:
Options:
Using the result
<r, g, b>LSL vector 0-1, 0-255 RGB), or send it to the active colour picker.Where it lives
Done when