fix(viewport): adapt entity colours to visible bg
`model_wires_for_viewport` was tessellating with `self.bg_color` (the model bg), so model content rendered inside a paper-layout viewport adapted to a dark bg even though the transparent shader now reveals the PaperCanvas sheet behind it — white wires stayed white on a light sheet. Pass the paper bg in a paper layout. Wire cache also needed an explicit invalidation when the bg or the active layout changes; otherwise the cached, already-adapted wires were returned against the new bg unchanged. - BACKGROUND command bumps `geometry_epoch` after both branches - new `Scene::set_current_layout` setter bumps on actual change; layout switch + history restore use it
This commit is contained in:
parent
2b5db8501b
commit
e3c962bdd1
4 changed files with 36 additions and 3 deletions
|
|
@ -51,6 +51,11 @@ impl OpenCADStudio {
|
|||
self.tabs[i].bg_color = None;
|
||||
self.tabs[i].scene.bg_color = [0.11, 0.11, 0.11, 1.0];
|
||||
}
|
||||
// Wire colour adaptation (`adapt_to_bg`) reads the bg
|
||||
// at tessellation time, so the cached wires need to
|
||||
// refresh — otherwise a light→dark bg flip leaves
|
||||
// black lines invisible against the new bg.
|
||||
self.tabs[i].scene.bump_geometry();
|
||||
self.command_line
|
||||
.push_output("Background reset to default.");
|
||||
} else if args.len() >= 3 {
|
||||
|
|
@ -64,6 +69,7 @@ impl OpenCADStudio {
|
|||
self.tabs[i].bg_color = Some([r, g, b, 1.0]);
|
||||
self.tabs[i].scene.bg_color = [r, g, b, 1.0];
|
||||
}
|
||||
self.tabs[i].scene.bump_geometry();
|
||||
self.command_line.push_output(&format!(
|
||||
"Background: rgb({}, {}, {})",
|
||||
args[0], args[1], args[2]
|
||||
|
|
|
|||
Loading…
Reference in a new issue