forked from 1b-agent/opencadstudio-upstream
fix: render wipeout fills after wire pass so they correctly mask wires
Previously wipeout solid fills were part of the hatch pass (pass 1), drawn before wires (pass 5), so all wires appeared on top of the wipeout. This fix moves wipeout fills into a dedicated pass 6 that runs after wires, so the background-colored polygon correctly covers the lines/text beneath it — matching AutoCAD behaviour. - Scene.wipeout_models() separated from synced_hatch_models() - Primitive.wipeout_hatches populated via wipeout_models() - Pipeline.gpu_wipeouts + upload_wipeouts() + pass 6 after wires Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
This commit is contained in:
1 parent
efc259fdbe
commit
c184535d5e
3 files changed
+63
-5
No files matched your search
@@ -27,6 +27,8 @@ pub struct CameraState {
|
||||
pub struct Primitive {
|
||||
pub(super) wires: Vec<WireModel>,
|
||||
pub(super) hatches: Vec<HatchModel>,
|
||||
/// Wipeout fills — rendered in a separate pass AFTER wires.
|
||||
pub(super) wipeout_hatches: Vec<HatchModel>,
|
||||
pub(super) images: Vec<ImageModel>,
|
||||
pub(super) meshes: Vec<MeshModel>,
|
||||
pub(super) uniforms: Uniforms,
|
||||
@@ -60,6 +62,7 @@ impl<Msg: std::fmt::Debug + Clone> shader::Program<Msg> for Scene {
|
||||
Primitive {
|
||||
wires: all_wires,
|
||||
hatches: self.synced_hatch_models(),
|
||||
wipeout_hatches: self.wipeout_models(),
|
||||
images: self.images.values().cloned().collect(),
|
||||
meshes: self.meshes.values().cloned().collect(),
|
||||
uniforms: Uniforms::new(&cam, bounds),
|
||||
@@ -125,6 +128,7 @@ impl shader::Primitive for Primitive {
|
||||
pipeline.viewcube.ensure_depth_texture(device, size);
|
||||
pipeline.upload_uniforms(queue, &self.uniforms);
|
||||
pipeline.upload_hatches(device, &self.hatches);
|
||||
pipeline.upload_wipeouts(device, &self.wipeout_hatches);
|
||||
pipeline.upload_images(device, queue, &self.images);
|
||||
pipeline.upload_meshes(device, &self.meshes);
|
||||
pipeline.upload_wires(device, &self.wires);
|
||||
|
||||
Reference in new issue
Block a user