[HN Gopher] Drawing Text Isn't Simple: Benchmarking Console vs. ...
___________________________________________________________________
Drawing Text Isn't Simple: Benchmarking Console vs. Graphical
Rendering
Author : PaulHoule
Score : 48 points
Date : 2025-11-11 14:49 UTC (8 hours ago)
(HTM) web link (cv.co.hu)
(TXT) w3m dump (cv.co.hu)
| krstffr wrote:
| This website almost crashed my m1 macbook pro (renders at 1 fps
| or something), so I guess point taken: rendering text is not
| simple!
| dist-epoch wrote:
| And on my desktop, scrolling this page is painfully slow.
|
| Author: frontend technical lead, setting high code standards
| eviks wrote:
| what's worse is that scrolling doesn't actually work unless
| you have the text area focused/under the wheel... very weird.
| Which is even worse for PgUp/Down as who would think to focus
| the area first for scrolling???
| doodpants wrote:
| > who would think to focus the area first for scrolling???
|
| Sadly, this problem is common enough that click-before-
| keyboard-scrolling has become second nature for me.
| coxley wrote:
| > Author: frontend technical lead, setting high code
| standards
|
| Haha, to be fair it's common to half-ass personal projects
| even if it's your primary domain.
| wmanley wrote:
| Looks like it's caused by `backdrop-filter: blur(6px);` on
| `.menu-content`. After disabling that it's slow, but not _that_
| slow.
|
| Edit: This is with Firefox 144 on Ubuntu 22.04
| jeffbee wrote:
| With what browser? Seems fine with Chrome.
| 9999_points wrote:
| This is "an entire doctoral research project in performant
| terminal emulation".
|
| https://github.com/microsoft/terminal/issues/10362#issuecomm...
| bardak wrote:
| I was wondering if Casey would end up a mention on this topic.
| jiggawatts wrote:
| That really was just the most absurd argument for Microsoft
| developers to engage in. It felt like a parody of the
| "optimisation is unnecessary because us developers are such
| Prima Donnas and simply _toooooo_ expensive to lower
| ourselves to such levels " attitude that some people have.
|
| He used a cache. A simple hashtable. That's it. He got an
| absurd speedup of something like hundreds of times faster.
|
| What are developers smoking these days that they can't even
| envision _ever_ doing something like this without undertaking
| a research program?
|
| To this day people will debate this, as if there's a valid
| debate to be had!
|
| "No, no, no, it's premature to optimise software that is...
| being released to a billion users in production."
|
| "Casey is adding unnecessary complexity that will be hard to
| maintain... by using a fraction of the code Microsoft did to
| solve the same problem."
|
| "It must be full of errors... well... other than the superior
| Unicode compliance."
|
| "It's so much longer to develop high-performance code... the
| evidence is that it took Casey _two_ weekends to write a
| nearly complete terminal emulator! "
|
| Etc...
|
| Look where we are today. Microsoft _still_ steadfastly
| refuses to even _look_ at Casey 's solution, let alone adopt
| it wholesale. Years later there are _still_ blog articles
| being written about the performance issues of the Windows
| Terminal.
|
| PS: Notepad and Calculator got the same "treatment" and now
| struggle to keep up with key presses.
| xeonmc wrote:
| On the other hand you have the new Microsoft Edit which is
| some guy's weekend TUI project that got canonized by MS.
| 6510 wrote:
| In time we will be using hp printers for fast reliable text
| output.
| 6510 wrote:
| > What this code needs to do is extremely simple and it seems
| like it has been massively overcomplicated.
| bob1029 wrote:
| SDF seems to be one of the better solutions for text rendering.
|
| Valve had this problem solved since 2007. I'd argue this
| technique is a big part of what gave TF2 its impressive visual
| style. That game ran at 100+ fps on hardware like the 8800GT at
| the time.
|
| https://www.redblobgames.com/x/2403-distance-field-fonts/
| jayd16 wrote:
| SDF is awesome but even then it's not a silver bullet. It's a
| raster technique and some people want vector fonts or subpixel
| rendering.
| corysama wrote:
| I can imagine subpixel rendering being rather easy for SDF
| fonts. But, I can't say I've seen it done.
| eviks wrote:
| Thanks for the link, clicking around led to the discovery of
| this basic, yet fascinating 3D text demo
|
| https://chlumsky.appspot.com/msdf-demo
| jayd16 wrote:
| Stupid question but what are the units used in the results
| tables??
| eviks wrote:
| fps?
| unwind wrote:
| Meta: this is kind of a repost, not even a month since last time
| [1].
|
| [1]: https://news.ycombinator.com/item?id=45580559
| cluckindan wrote:
| I wonder how the GPU version is implemented. One quad and one
| texture draw per glyph sounds very not scalable, but one quad per
| terminal, one texture atlas and one shader to draw glyphs from
| the atlas already sounds much better.
| henning wrote:
| One quad per glyph is very scalable, especially if you use
| instanced rendering. Each quad is just reading from a single
| texture atlas. GPUs are beastly blitting machines.
|
| Runs at ~1500 FPS with a 6K screen of full text on my machine
| even when text is being updated at about the pace of a 150 WPM
| typist but you only update quads that strictly need to change
| and store font metrics on the GPU in a buffer. A full screen
| refresh where you send quad data for 750 Lorem ipsum paragraphs
| every frame runs at 300 FPS on my hardware.
| Snild wrote:
| A terminal maximized on my screen says: ~$
| echo $((2 * LINES * COLUMNS)) triangles 34272 triangles
|
| That's nothing for a modern GPU. For example, this benchmark[1]
| says to expect on the order of 10-800 million tri/s. At the low
| end of that, you'd have a frame time of 3.427ms -- 292 fps.
|
| The original Playstation could do 180 000 textured polygons per
| second[2], so it could've managed ~5 fps. Of course, you
| wouldn't render that many chars at its available output
| resolutions anyway. :)
|
| [1] https://github.com/ctsilva/triangle-rendering-
| benchmarks#:~:... [2]
| https://en.wikipedia.org/wiki/PlayStation_technical_specific...
| jayd16 wrote:
| But if they naively execute 15120 draw calls...
| samdoesnothing wrote:
| Same texture so a single draw call probably?
| JodieBenitez wrote:
| And another website made unusable thanks to inconsiderate use of
| javascript.
| henning wrote:
| Caching the fonts to a texture atlas is not an unusual idea.
| https://github.com/memononen/fontstash is a well known example of
| this. Odin has a native port meant to work in conjunction with
| its bindings to NanoVG. The Odin code is coupled to stb_freetype.
| rhdunn wrote:
| Here's Sabastian Lague's (Coding Adventure) video on font
| rendering -- https://www.youtube.com/watch?v=SO83KQuuZvg.
| Sharlin wrote:
| > So I tried something unconventional: draw each character once,
| cache it as a texture, and then just copy those textures around.
|
| That's more like the most conventional way to draw characters
| ever. Nobody goes around rendering filled Beziers any more than
| absolutely necessary. And _conventionally_ conventionally, fonts
| _were_ bitmaps in the first place!
| taeric wrote:
| Yeah, I confess I would have assumed that this was more common
| than otherwise.
|
| Makes me curious how much of computing is losing perceived
| speed because we have moved to calculating everything on the
| fly? Easy example is website layout. Yes, some dynamic sites
| need to calculate a ton on the fly. Most sites, though,
| probably don't need to reflow everything nearly as often as
| they do. And fitting everything into the mechanism that is the
| document flow remains baffling to me.
| mr_toad wrote:
| > And conventionally conventionally, fonts were bitmaps in the
| first place!
|
| Bitmaps in ROM on early machines.
|
| https://en.wikipedia.org/wiki/Motorola_6845
| estimator7292 wrote:
| Bitmaps in diode arrays on even earlier machines
| talkingtab wrote:
| MSDF is worth looking at:
|
| https://github.com/Chlumsky/msdfgen
|
| and
|
| https://steamcdn-a.akamaihd.net/apps/valve/2007/SIGGRAPH2007...
|
| The context is GPU's, things like three.js
|
| But yes, drawing text is hard.
| HackerThemAll wrote:
| I recommend the following reading (from
| https://news.ycombinator.com/item?id=36478892).
|
| https://faultlore.com/blah/text-hates-you/
___________________________________________________________________
(page generated 2025-11-11 23:01 UTC)