morio
Joined 11 years ago
Joined 11 years ago
Consider modern C++ practices as outlined here: https://github.com/cpp-best-practices/cppbestpractices/blob/...
What's the internal color space, I assume it is linear sRGB? It looks like you are going straight to RGBA FP32 which is good. Think how you will deal with denormals as the CPU will deal with those differently compared to the GPU. Rendering artifacts galore once you do real world testing.
And of course IsInf and NaN need to be handled everywhere. Just checking for F::ZERO is not enough in many cases, you will need epsilon values. In C++ doing if(value==0.0f){} or if (value==1.0f){} is considered a code smell.
Just browsing the source I see Porter Duff blend modes. Really, in 2025? Have fun dealing with alpha compositing issues on this one. Also most of the 'regular' blend modes are not alpha compositing safe, you need special handling of alpha values in many cases if you do not want to get artifacts. The W3C spec is completely underspecified in this regard. I spent many months dealing with this myself.
If I were to redo a rasterizer from scratch I would push boundaries a little more. For instance I would target full FP32 dynamic range support and a better internal color space, maybe something like OKLab to improve color blending and compositing quality. And coming up with innovative ways to use this gained dynamic range.
Quote for 100 boards (ENIG) on Bay Area Circuits, 10 days lead time, excluding shipping: $1000 ($1244 for 5 days lead time)
Todays quote for exact same 100 boards (ENIG) on pcbway.com, _including_ DHL shipping cost, 2 days lead time: $148 (shipping to Bay Area is usually 2 days with DHL, so really 4 days lead time). I've never had any quality issues and my boards have fine pitch 0.4mm BGA parts.
Yeah no, not even close. Certainly not marginally higher.
It's slightly cheaper than oshpark.com, they want $15 a board.
3D printers, laser cutters and benchtop CNC routers have the taken over the lion share of what hobbyists (and some professionals) used to do with these machines. Mine are just collecting dust while my 3D printers crank out parts every day.