Simplifying computing systems by having fewer kinds of graphics

submited by
Style Pass
2024-03-29 10:30:04

One way you could simplify computing systems is by having fewer redundant kinds of graphics. Typical computing systems have many different systems for windowing, drawing text, specifying fonts, making translucent windows, representing vector graphics, drawing and representing 3D graphics, zoomable graphics like maps, and doing text layout, among other things. For example, you might have VT-100 emulation, Xlib, PDF, Quartz, SVG, <canvas>, HTML with the CSS box model, PostScript, OpenGL, POVRay, H.264, MPEG-4, PNG, GIF, and JPEG, all on the same machine. Each typically has different tradeoffs related to performance, flexibility, and visual quality, but most of them just suck on all axes.

What if we had a graphics system that was both sufficiently expressive to cover nearly all of these applications, but also sufficiently performant to run in real time, while having a sufficiently simple implementation as to be understandable by a single person? Dan Amelang’s Gezira and Nile are an influential effort in this direction (for the aspect of graphics that involves rendering to pixels, anyway), but they’re resolutely two-dimensional.

In my view, immediate-mode graphics APIs like <canvas> and PostScript have more predictable performance and substantially simpler code than structured-mode graphics systems like SVG.

Leave a Comment