contrast_renderer
caniuse
contrast_renderer | caniuse | |
---|---|---|
4 | 390 | |
63 | 5,503 | |
- | - | |
6.1 | 9.5 | |
3 months ago | 6 days ago | |
Rust | JavaScript | |
MIT License | Creative Commons Attribution 4.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
contrast_renderer
-
WebGPU Fundamentals
This is true, but there is a lot more to the story. For one, WebGPU does not (yet) support mesh shaders, though it may later as an extension. For two, consider a glyph such as "o" that has two contours. Real triangulation generates a mesh that only generates triangles between the outer and inner contours, and mesh shaders aren't good at that. There are techniques (cover and stencil) that draw twice, incrementing and decrementing a winding number stored in the stencil buffer (see contrast renderer[1] for a clean modern implementation), but it does require nontrivial tracking on the CPU side, and can result in lots of draw calls to switch between the cover and stencil stages unless sophisticated batching is done.
Compute shaders avoid all these problems and work on WebGPU 1.0 today.
[1]: https://github.com/Lichtso/contrast_renderer
-
Rust: State of GUI, December 2022 – KAS blog
Thanks!
You can also checkout the "feature/ui" branch in GIT [1] to get the UI framework prototype.
[1]: https://github.com/Lichtso/contrast_renderer/tree/feature/ui
- Vector Graphics on GPU
caniuse
-
Time-Based CSS Animations
The article uses custom css @properties which are awesome and have 88% browser support [1].
One thing to watch out for is differences in how browsers handle setting the fallback initial-value. Chrome will use initial-value if CSS variable is undefined OR set to an invalid value. Firefox will only use initial-value if the variable is undefined. For most projects, this won't be an issue, but for a recent project, I ended up needing to use javascript to set default values in Firefox to iron out the inconsistency between browser implementations.
[1] https://caniuse.com/?search=%40property
-
CSS Text Box Trim
Safari is the only browser that doesn't support extending HTML element
https://caniuse.com/?search=Custom%20Elements
-
JavaScript is not single-threaded
You forgot to mention (Web)Workers. This is explicit creation, management, and communication with additional threads within JavaScript. What's more, they've been around in JavaScript longer than the V8 engine has even existed!
https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers...
https://caniuse.com/?search=webworkers
- Show HN: Render audio to HTML canvas using WebGPU
-
Tree-shaking, the horticulturally misguided algorithm
Do you happen to know where can I check out the cutoff version for each browser? https://caniuse.com/?search=wasm doesn't have it (or other things like WasmGC for that matter)
- Le saviez-vous ? :focus :focus-within :focus-visible
-
10 Websites Every Web Developer Should Bookmark
(https://caniuse.com/) A handy tool for checking the browser compatibility of HTML, CSS, and JavaScript features. Can I Use provides up-to-date support tables for various web technologies across different browsers.
-
SASS is dead? CSS vs SASS 2024
Caniuse
-
Free Resources Every Web Developer Should Know About
Can I Use (https://caniuse.com/)
-
Speedometer 3.0: A Shared Browser Benchmark for Web Application Responsiveness
> Is it though?
In my experience it's the buggiest browser out of the big three, and is often missing basic features like e.g.:
https://caniuse.com/?search=opus
Supported in Firefox for *12 years* now, in Chrome for 10, still no support in Safari.
They only "support" Opus audio in their special snowflake '.caf' container, which is super buggy and the last time I checked no open source program could even generate Opus '.caf' files that could be played by Safari on all Apple platforms. I ended up writing a custom converter which takes a standard '.opus' file and remuxes it on-the-fly (I only store '.opus' files on my server) into Safari-compatible '.caf' files, taking special care to massage it so that it avoids all of their demuxer/decoder bugs. You shouldn't have to do this to have cross-browser high quality audio!
What are some alternatives?
nbody-wasm-sim - An N-body WebAssembly simulation using Web GPU
browserslist - 🦔 Share target browsers between different front-end tools, like Autoprefixer, Stylelint and babel-preset-env
nanovgXC - Lightweight vector graphics library implementing exact-coverage antialiasing in OpenGL
caniemail - Can I email… Support tables for HTML and CSS in emails.
glyphy - GLyphy is a signed-distance-field (SDF) text renderer using OpenGL ES2 shading language.
postcss-preset-env - Convert modern CSS into something browsers understand
vger-rs - 2D GPU renderer for dynamic UIs
modern-css-reset - A bare-bones CSS reset for modern web development.
msdfgen - Multi-channel signed distance field generator
modern-normalize - 🐒 Normalize browsers' default style
wxRust2 - re-exploration Rust binding to wx
Servo - Servo, the embeddable, independent, memory-safe, modular, parallel web rendering engine