gpu-stroke-expansion-paper's People
Forkers
waywardmonkeysgpu-stroke-expansion-paper's Issues
Figures for paper
This issue is to propose the figures for the paper.
-
A conceptual pipeline. First stage contains a number of encoded path segments, maybe one highlighted for expansion in subsequent stages (the others thinner/grayer). Next: approximation of the cubic with a sequence of Euler spirals (each a different color). Then maybe show the (exact) parallel curves of those spirals, colors matching. Finally show the flattening.
-
Images to show the stroke encoding. Slide 6 from RustLab2023 talk may be a starting point, but it doesn't show caps/joins.
-
Cubic to Euler error metric
a. Probably a diagram showing cubic and ES superimposed, with common thetas, and an arrow showing the point of maximum distance.
b. Double-parabola construction (see Cleaner parallel curves with Euler spirals
c. Fit of double-parabola over theta_0, theta_1 space (same link as above)
d. Heatmap plot of actual Fréchet distance vs estimate, for d_0, d_1 slice of parameter space, theta_0 and theta_1 fixed -
Maybe a figure to support unrolled recursion? Not obvious what this should look like
-
Handling of cusp case. Show cubic w/cusp, highlight ES with 180 degree turn, likely also show parallel curves
-
Subdivision density
a. Supporting figure for subdivision density, maybe the one from Flattening quadratic Béziers
b. sqrt(|1-x^2|) (this figure is already in the paper) - it can be smaller though
c. Exact and approximate integral of above (this figure is already in the paper) -
Evolutes
a. Euler spiral and its evolute (see wiki page), plus subdivisions for flattening
b. Simplified Fig 11 from Nehab -
Triangle strip as alternate output
-
Performance figures; follow Fig 15 from Nehab
Measurements
Histograms, Counts
- Cubic -> ES(PC) counts
- ES(PC) -> Line Segments
- ES(PC) -> Circular Arc Segments
flatten
max and average cubic->euler iteration counts per invocation
I suggest using the "stills" data set from Nehab'20
GPU Perf.
For GPU timings, I'm planning to use the fine-grained (per-pipeline) timer queries in wgpu-profiler. This can be readily instrumented to output averages across a large sample count. This feature is supported on Vulkan and works with my Ubuntu NVIDIA RTX4090 setup. Fine-grained queries don't seem to work on Metal, so we'll need to rely on XCode to produce these on M1, which is harder to automate (unless maybe there's a path to getting wgpu-profiler to work).
For raw GPU timings we'll use the "timings" data set from Nehab'20 plus stress tests from the Vello test-scenes (trickycubicstrokes, mmark, longpathdash, many_draw_objects (zoomed in)
- Raw average
flatten
time flatten
time as fraction of overall render timeflatten
withGPU_STROKES = false
?- End-to-end frame timing comparison (against other renderers TBD)
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.