pub struct ScalarHiddenLines;Expand description
Portable exact hidden-line provider for orthographic and perspective views.
Visibility is decided exactly in the view’s affine frame: nothing is
rounded before a decision, only the endpoints of the output pieces are
(each the exact point rounded once). For every edge it examines the
triangles whose view-space bounding box can matter, found in an
axiolid-spatial BVH; in the worst case (everything overlaps in the
image) the cost still grows with edges times triangles, and
max_candidate_pairs bounds it.
A near clipping plane that cuts a MeshRole::Solid leaves a cap that
occludes (decided by ray parity with a symbolic perturbation of the image
point); a solid wholly beyond the plane is removed: it neither occludes
nor is drawn. A failure to produce an endpoint (a coordinate beyond the
binary64 range) is Degenerate and names the mesh of the edge.
Implementations§
Trait Implementations§
Source§impl Backend for ScalarHiddenLines
impl Backend for ScalarHiddenLines
Source§fn descriptor(&self) -> BackendDescriptor
fn descriptor(&self) -> BackendDescriptor
Source§impl Clone for ScalarHiddenLines
impl Clone for ScalarHiddenLines
Source§fn clone(&self) -> ScalarHiddenLines
fn clone(&self) -> ScalarHiddenLines
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for ScalarHiddenLines
Source§impl Debug for ScalarHiddenLines
impl Debug for ScalarHiddenLines
Source§impl Default for ScalarHiddenLines
impl Default for ScalarHiddenLines
Source§fn default() -> ScalarHiddenLines
fn default() -> ScalarHiddenLines
Source§impl MeshHiddenLines for ScalarHiddenLines
impl MeshHiddenLines for ScalarHiddenLines
Source§fn scratch_requirement(&self) -> ScratchRequirement
fn scratch_requirement(&self) -> ScratchRequirement
Source§fn cancellation_granularity(&self) -> CancellationGranularity
fn cancellation_granularity(&self) -> CancellationGranularity
Source§fn supports_projection(&self, projection: ViewProjection) -> bool
fn supports_projection(&self, projection: ViewProjection) -> bool
true for ViewProjection::Orthographic only, so a provider written
before ViewProjection existed, which ignores the field, is never given
a perspective view by a registry (ADR 0107). A provider that returns
true for a projection must draw it exactly and pass that
projection’s conformance suite.request.meshes in request.view.
Implementations must enforce request.limits before growing output.