feat: grade a sparse window's polyline by slope, so phosphor does not switch off on zoom
Intensity grading was gated on the column reduction, which is gated on a density whose only job is killing the moire beat. Dwell has nothing to do with that, so narrowing a window past the threshold turned the whole phosphor model off and a discontinuity went from a third of a flat top's ink to all of it in one pixel of zoom. stage_trace_slopes() grades each segment by its own slope instead, with a measure that agrees with the dense path at the boundary, and reports itself as FrameStats::slope_traces -- disjoint from column_traces, so a host asserting graded_traces == column_traces reads the same as before. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
1 parent
cc908efa36
commit
37e414bcc5
8 files changed
+442
-13
No files matched your search
@@ -202,6 +202,14 @@ struct Style {
|
||||
/// bright mark. Counting a row at +1 per segment that touches it instead -- the
|
||||
/// obvious thing -- grades a sine's fast middle as brightly as its rails, which
|
||||
/// is the pattern inverted.
|
||||
///
|
||||
/// Below `dense_threshold_spp`, where there are no columns to reduce, this grades
|
||||
/// the **polyline** by each segment's own slope instead (`FrameStats::slope_traces`
|
||||
/// against `graded_traces`) -- the same measure for a sparse window, where a
|
||||
/// segment *is* the sub-column. One switch covers both because the alternative was
|
||||
/// a defect: gated on the reduction, the model switched off as a window narrowed
|
||||
/// past the threshold, and an edge drawn at a third of a flat top's ink jumped to
|
||||
/// all of it in one pixel of zoom.
|
||||
bool intensity_grading = false;
|
||||
|
||||
/// Sub-buckets per pixel column the gather is asked for when grading: the level
|
||||
|
||||
Reference in new issue
Block a user