218 karma · joined November 14, 2012
Your effort to create a lightweight vector file format with these features is really appreciable, even if it can never replace SVG for the more general use case. Anyway the tiger has rendering problems (I am quite obsessed with this tiger: even my rasterizer initially did not draw it correctly).
Spoiler: I'm one of the developers of AmanithSVG - http://www.amanithsvg.com
«...i'm dancing in a nutshell»
https://opensea.io/assets/0x2a2127753653f6210d26f5b470738bf1... (EPIC)
We do not do it...
https://opensea.io/assets/0x2a2127753653f6210d26f5b470738bf1... (LEGENDARY)
Both are closed source, but there are evaluation version available, if someone is interested in compare rendering quality and speed.
I clearly remember all such research papers. After studying all of them and after three complete rewrite of the engine, we finally implemented a classic 2 step algo: sweepline polygon decomposition to monotone polygons, and then monotone polygons to triangles.
We had really heavy headaches dealing with intersections, autointersections, splitting edges, comparing and merging original vertexes with vertexes created by splitting edges, managing edges connectivity and topology.
After some try, we totally discarded the idea to write it in floating point arithmetic, preferring fixed point integers instead (and this was a real turning point for the robustness!).
Anyway, good times to remember!
"Curves to straight line segments" and "polygon to triangles" was done in CPU, everything else in GPU. It was the year 2005 or so.
STROKE_LINE_WIDTH = 200 STROKE_CAP_STYLE = CAP_BUTT; STROKE_JOIN_STYLE = JOIN_ROUND; <identity transform matrix>
float xy[8]; int j = 0;
for (int i = 0; i < 4; ++i) { // x coordinate xy[j++] = 20.0f * (float)cos((i / 4.0f) * 1.7) + 128.0f; // y coordinate xy[j++] = 20.0f * (float)sin((i / 4.0f) * 1.7) + 128.0f; }
<draw stroked polygon whose points are the xy coordinates>
Tutorials are under heavy development, with IA controlled troops too!
We are considering to make tax-office configurable in terms of payout time.
Good idea the universal radio tower!
The black square is the box in which You'll play, you'll receive updates from enemy troops and so on...