I’ve now implemented an all-GPU-compute pipeline in a Pathfinder branch, avoiding the rasterizer entirely (CPU still used for tiling). However, so far it seems that using compute shader to create vector tiles and the standard GPU rasterizer to composite them is fastest…
msdfgen has a bunch of hacks to do geometric simplification because mSDF can only encode C1 OP C2 per texel, where OP is AND or OR. Can’t work as a general solution, it’d break too much content. (It tends to fail on fonts like Roboto Ultra Light; that’s why Android rejected it)
-
-
Sparse virtual texturing could solve this problem but I’m not convinced the setup would be fast enough for dynamic content. It’s also hard to implement proper fill rules…
-
BTW, regarding parallel sum, Pathfinder breaks the scene into 16x16 pixel tiles to minimize the cost of the sums… it’s still technically O(n^2) but in practice after tiling n is small.
End of conversation
New conversation -
-
-
It also has bugs. I ported the pure distance calculation code to run in a GLSL shader and noticed rendering glitches. I thought I had introduced bugs so traced against the C++ on a pixel by pixel basis and noticed the bugs were in the original code.
-
Ack. I don’t blame Viktor though, geometric simplification is hard :(
End of conversation
New conversation -
-
-
Reversing the code without having a clear picture of the intermediate representation is difficult. Understanding it as axis-aligned hyperbolas helps. I will look at it more closely one day. It scales really well. Distances are a really wonderful surface representation.
-
Yeah, I actually haven’t seen any literature that mentions that SDFs with bilinear interpolation give you hyperbolas… It falls out of the definition of bilinear interpolation since it traces out a bilinear function, y=(a + bx)/(c + dx)
End of conversation
New conversation -
Loading seems to be taking a while.
Twitter may be over capacity or experiencing a momentary hiccup. Try again or visit Twitter Status for more information.