Matt DesLauriers
mattdesl.svbtle.com · Personal blog · on HN since 2014
Matt DesLauriers is a creative coder who writes about GPU graphics, generative art, pen plotters, and JavaScript tooling.
What HN saysHN commenters link it as a guide to pen plotting and thick line rendering on the GPU, and ask him about his generative art process.
18HN people shared it
10linked it in comments
28stories submitted
735story points
2 years agolast shared
2014people per year2026
Most-shared posts
- 1Drawing Lines is Hard – an interactive look at GPU line rendering12 people · 289 points · first shared 2015 · 21 comments on HN
- 2Pen Plotter Art and Algorithms4 people · 204 points · first shared 2017 · 25 comments on HN
- 3Material Design on the GPU: Text Rendering2 people · 29 points · first shared 2015 · 10 comments on HN
- 4Browserify vs. Webpack2 people · 22 points · first shared 2014 · 10 comments on HN
- 5Debugging Node.js with Chrome DevTools2 people · 8 points · first shared 2016 · discussion on HN
- 6Audiograph2 people · 3 points · first shared 2016 · discussion on HN
- 7Making Bellwoods, a Generative Art Game in 13 Kb1 people · 125 points · first shared 2018 · 13 comments on HN
- 8Writing Modular and Versioned GLSL1 people · 28 points · first shared 2014 · 4 comments on HN
- 9Making an interactive web toy in WebGL and WebAudio1 people · 7 points · first shared 2018 · discussion on HN
- 10Shaping Curves with Parametric Functions1 people · 6 points · first shared 2017 · discussion on HN
- 11Show HN: 30 Days, 30 Demos1 people · 5 points · first shared 2015 · 2 comments on HN
- 12Rapid Prototyping in JavaScript1 people · 2 points · first shared 2015 · discussion on HN
- 13Generative Art with Node.js and Canvas1 people · 2 points · first shared 2016 · discussion on HN
- 14JS Workflow: Faster and Cleaner Modules1 people · 2 points · first shared 2014 · discussion on HN
- 15Motion Graphics for the Web1 people · 2 points · first shared 2014 · discussion on HN
What HN people wrote when they linked it
lagrange77 · 2024-11-20
Hey, i'm brainstorming for a 3d vector renderer in WebGPU on JS/TS and stumbled on your project [0] yesterday.
(Thick) line drawing is especially interesting to me, since it's hard [1].
I also stumbled upon this [2] recently and then wondered if i could use that technique for every shape, by converting it to quadratic bezier curve segments.
Do you think that's a path to follow?
[0] https://github.com/Lichtso/contrast_renderer
[1] https://mattdesl.svbtle.com/drawing-lines-is-hard
[2] https://scribe.rip/@evanwallace/easy-scalable-text-rendering-on-the-gp…
mattdesl · 2018-08-28
Thank you! This is all in JavaScript with some open source tools I'm building[1]. I write about my process in a few places: often on Twitter, recently in a TinyLetter, and occasionally more in-depth on my blog[2].
I'd suggest Tim Holman's GenerativeArtistry[3] as a starting point to get back into it.
Good luck! Feel free to ping me any time on Twitter or IG if you have any Qs about generative art.
[1] - https://github.com/mattdesl/canvas-sketch
[2] - https://mattdesl.svbtle.com/
[3] - https://generativeartistry.com/
paulgb · 2018-03-01
Here's a good intro to plotting in a JS environment: https://mattdesl.svbtle.com/pen-plotter-1
And one I wrote for Python: https://bitaesthetics.com/posts/surface-projection.html
One of my favorite parts of plotting is the community; there's a bunch of good tutorials and GitHub repos for someone getting started.
greggman · 2017-07-20
Used "correctly" the web with JS is way better than the web without. There's plenty of sites that use JS great from actual apps to articles and tutorials with interactive examples. In fact personally I find myself disappointed when I see an article that would clearly be better with interactive diagrams but the authors are stuck thinking the web it just a transmitted book and not it's own medium but better strengths.
A couple of examples where IMO JS makes the page superior to one without
https://mattdesl.svbtle.com/drawing-lines-is-hard
https://bost.ocks.org/mike/algorithms/
https://pomax.github.io/bezierinfo/
doctorpangloss · 2016-07-31
I don't know if using Xeon Phi for rendering makes that much sense. It's sort of the problem it's least competitive to solve on a raw performance, performance per watt or development cost basis.
> However, ‘smaller’ is a relative term as current visualizations can occur on a machine that contains less than a terabyte of RAM. Traditional raster-based rendering would have greatly increased the memory consumption as the convoluted shape of each neuron would require a mesh containing approximately 100,000 triangles per neuron.
That sounds like a poor approach to this problem. You could write a shader that renders thick lines for the dendrites, and the rest of the geometry can be conventional meshes. The same shader could have a pass specially designed for lines and depth of field rendering. That's the one unusual shader. It's hard, but not super hard to write. [0]
Besides, unless you need this to run in real time (which the Xeon Phi doesn't anyway), you could just raster render and page in the mesh data from wherever. So what if it's slow.
I think highly technical platform decisions like Xeon Phi versus NVIDIA CUDA is really about the details. You have to educate the reader both on the differences that matter and why they should choose one over the other. The comment in the article, "no GPU dependencies," is a very PR-esque don't-mention-your-competitor dance around what they're actually trying to say: the CUDA ecosystem can be a pain since you can't buy the MacBook Pro with…
SomeCallMeTim · 2015-03-16
Sigh. I had just about decided on using Browserify in my current projects (instead of Require.JS), and now I have to find out there's ANOTHER option... (Though looking at one comparison [1], I guess I'm sticking with Browserify moving forward.)
It does feel like information like this is siloed: Everyone talks about their own favorite solution, and few actually make intelligent comparisons. I didn't know about gulp until after I'd already set up grunt, for instance, and I don't really want to tell the team "now we're using gulp" after having selected grunt only two months ago. I hadn't even heard of Broccoli until just now, either. I obviously need a better JavaScript news feed.
That said, I don't feel a need to slam gulp or say grunt is great. But something that the article misses is that the kind of loud, rude argument that it describes is a basic, well-known psychological reaction to insecurity: The less self-confidence you have, the more you feel the need to be loud about your opinions. And I think a lot of JavaScript developers are insecure, based on the evidence.
[1] http://mattdesl.svbtle.com/browserify-vs-webpack
[2] https://en.wikipedia.org/wiki/Psychological_projection
krebby · 2023-12-05
Yes, they're essentially optimizing for separate things: https://mattdesl.svbtle.com/drawing-lines-is-hard
SVG naturally spends a lot of time and resources tessellating paths into triangle strips, which requires mitering and sorting and other not easily parallelizable (read: slow for GPU) algorithms.
ridiculous_fish · 2021-05-23
Awesome project! I'm curious how you draw lines? I found that drawing nice lines is quite painful in WebGL; I ended up using the "Screen-Space Projected Lines" technique here:
https://mattdesl.svbtle.com/drawing-lines-is-hard
and then using a fragment shader to antialias them.
rlx0x · 2015-03-11
Just for reference, "Drawing lines is hard"
> http://mattdesl.svbtle.com/drawing-lines-is-hard
> https://news.ycombinator.com/item?id=9179336
leeoniya · 2022-04-04
related:
https://surma.dev/things/webgpu/ (https://news.ycombinator.com/item?id=30600525)
https://mattdesl.svbtle.com/drawing-lines-is-hard (https://news.ycombinator.com/item?id=13671016)
https://blog.mapbox.com/drawing-antialiased-lines-with-opengl-8766f341…
i'd like to try implementing this paper [1] in WebGPU, but think it's over my head currently, having mainly worked with Canvas2D.
[1] https://jcgt.org/published/0002/02/08/paper.pdf