Martin Fouilleul
|
551d5e084e
|
[mtl renderer] re-introduced texturing
|
2023-04-09 19:24:32 +02:00 |
Martin Fouilleul
|
ee3e55dadd
|
[mtl renderer] fix msaa sample positions
|
2023-04-08 12:11:38 +02:00 |
Martin Fouilleul
|
effd8f1dd0
|
[mtl canvas] use same ccw test for testing against diagonal and testing against hull
|
2023-04-08 10:04:17 +02:00 |
Martin Fouilleul
|
2b7aadf180
|
[mtl canvas] multi-sampling
|
2023-04-07 18:18:50 +02:00 |
Martin Fouilleul
|
65b5a4b52a
|
[mtl renderer] Fixed curve slicing which used matrix operation and re-parameterization, which could create gaps in path. Now use blossoms, which ensure endpoints of subcurves match
|
2023-04-07 17:17:55 +02:00 |
Martin Fouilleul
|
d1fab449bc
|
[mtl canvas] Fixed loop implicit matrix
|
2023-04-07 10:15:37 +02:00 |
Martin Fouilleul
|
c4e866d9d4
|
[mtl canvas] Fix shader contents scaling
|
2023-04-05 10:31:50 +02:00 |
Martin Fouilleul
|
4c4f27066b
|
[mtl renderer] re-introduced end caps
|
2023-04-05 10:25:48 +02:00 |
Martin Fouilleul
|
e999af6bd3
|
[mtl canvas] make diagonal checks inclusive in mtl_side_of_segment()
|
2023-04-05 10:19:25 +02:00 |
Martin Fouilleul
|
53946a5710
|
[mtl canvas] fix end joint not generated for paths with only 2 elements
|
2023-04-05 09:52:12 +02:00 |
Martin Fouilleul
|
2484cdf7b3
|
[mtl canvas, wip] re-introducing joints
|
2023-04-04 20:35:48 +02:00 |
Martin Fouilleul
|
8d7fdf3b1a
|
[mtl canvas, wip] Fixing inclusive/exclusive bound checks during curve side tests / shortcut / rasterization
|
2023-04-04 19:02:53 +02:00 |
Martin Fouilleul
|
9322db8201
|
[mtl canvas, wip] cubic bézier implicitization
|
2023-04-01 19:46:35 +02:00 |
Martin Fouilleul
|
767841f9c6
|
[mtl canvas, wip] Fixed wrong backdrop when segment ended right on tile's bottom boundary
|
2023-03-30 16:41:41 +02:00 |
Martin Fouilleul
|
93998852bb
|
[mtl canvas, wip] Re-introducing quadratics implicitization
|
2023-03-30 15:58:46 +02:00 |
Martin Fouilleul
|
eee158ff85
|
[mtl canvas] tmp fix of clear color (revisit one we re-introduce texturing)
|
2023-03-29 16:30:16 +02:00 |
Martin Fouilleul
|
8af4e4eddc
|
[mtl canvas, wip] Collate queues in a per-tile op list and prune occluded shapes
|
2023-03-29 16:21:28 +02:00 |
Martin Fouilleul
|
a6c53649bd
|
[mtl canvas, wip] implemented backprop
|
2023-03-29 14:27:05 +02:00 |
Martin Fouilleul
|
c4415aaeea
|
[mtl canvas, wip] binning segments to tile queues
|
2023-03-28 17:58:23 +02:00 |
Martin Fouilleul
|
c71bc5be98
|
[mtl canvas] segment setup pass
|
2023-03-28 15:10:05 +02:00 |
Martin Fouilleul
|
f6a992e5f4
|
[mtl canvas] very first draft of new canvas backend based on edge-counting instead of triangle overlap
|
2023-03-28 13:09:48 +02:00 |
Martin Fouilleul
|
c20758f6a2
|
[mtl canvas] cull tiles queues outside viewport
|
2023-03-22 17:28:11 +01:00 |
Martin Fouilleul
|
faf024a63a
|
[mtl canvas] reorganizing the loop in render kernel to allow different commands
|
2023-03-22 16:40:43 +01:00 |
Martin Fouilleul
|
e9ecd9d521
|
[mtl canvas] Fix artifacts on tiger that was due to epsilon comparison for cubics equation in draw kernel. Removed that (now do <= 0), but then we need to weed out false negatives for solid triangles. So we compute if the triangle is solid in the triangle kernel and store it in the mg_triangle_data struct for now.
|
2023-03-22 15:02:04 +01:00 |
Martin Fouilleul
|
b0be21795e
|
[mtl canvas] prevent tiles entirely covered by textured shapes to be treated as solid (as the texture could be non-uniformly transparent)
|
2023-03-22 12:02:13 +01:00 |
Martin Fouilleul
|
26f669f3c1
|
[mtl canvas] adding a color command for fully covered, solid color tiles. This is not much of an improvement for now because the tile array just got bigger, but maybe we can use the same scheme and compact it into an int
|
2023-03-22 10:46:56 +01:00 |
Martin Fouilleul
|
90b00979ed
|
[mtl canvas] detecting full covered/uncovered tiles
|
2023-03-22 09:23:22 +01:00 |
Martin Fouilleul
|
0d8bc824a2
|
[mtl canvas] bucket triangles into per-shape tile queues, then gather into tile arrays. This somewhat improves perf for perf_text test and avoids an awful degradation due to sorting in tiger test (tiger now runs at ~20fps, which is still much slower than it could be, but the triangle coverage method we're using just incurs too much cross product computations...)
|
2023-03-21 10:22:37 +01:00 |
Martin Fouilleul
|
a4ef58f2d8
|
[mtl canvas] Tiling per rectangles into per-shape tile queues (linked lists of triangle indices) to avoid sorting
|
2023-03-20 16:46:12 +01:00 |
Martin Fouilleul
|
11113f597c
|
[mtl canvas, exp] try tiling per tile and avoiding sorting pass (worse on simple shapes and text, but degrades slower with complex scenes (eg tiger). Not great though)
|
2023-03-20 10:08:17 +01:00 |
Martin Fouilleul
|
92f4909d63
|
[mtl canvas] testing the metal canvas rendering the ghostscript tiger, and acknowledging it's painfully slow
|
2023-03-18 14:35:51 +01:00 |
Martin Fouilleul
|
1d36088302
|
[mtl canvas] render to an intermediate texture and acquire the drawable and blit to it only at the end of all compute passes
|
2023-03-16 10:25:56 +01:00 |
Martin Fouilleul
|
f14f397c99
|
[mtl surface] don't re-acquire drawable if there's already a valid one acquired
|
2023-03-15 18:51:50 +01:00 |
Martin Fouilleul
|
bd8e31c535
|
[mtl canvas] triple buffer vertex/index/shape buffers
|
2023-03-15 17:48:39 +01:00 |
Martin Fouilleul
|
0c74e997ae
|
[mtl surface] fix crash on exit when metal GPU frame capture is enabled. Apparently, if we release resources (on exit) before all GPU work is completed, libMetalCapture crashes on bad access. To work around that, in mg_mtl_surface_destroy(), we enqueue a last (empty) command buffer and call waitUntilCompleted on it, to ensure all previous command buffers are also completed
|
2023-03-15 13:02:18 +01:00 |
Martin Fouilleul
|
5ce53001e2
|
[canvas, mtl] clear resets command count and stores clear color. Ccanvas' backend begin proc now takes a clearColor parameter and clears final surface to that color before drawing any batch
|
2023-03-15 11:09:42 +01:00 |
Martin Fouilleul
|
98bac9744f
|
[mtl canvas] rearranged bounding box computations in tiling shader
|
2023-03-15 10:19:04 +01:00 |
Martin Fouilleul
|
f2cb96826c
|
[mtl canvas] fix bias computation for clockwise triangles
|
2023-03-15 10:04:51 +01:00 |
Martin Fouilleul
|
5c1a220f1f
|
[mtl canvas] don't reorder point to make clockwise triangles. Instead, store triangle orientation in triangle struct and multiply orientation in raster test
|
2023-03-14 15:08:39 +01:00 |
Martin Fouilleul
|
221fcbeb6b
|
[mtl canvas] store uv transform and color in triangle data (don't pass vertex or shape buffer to draw kernel)
|
2023-03-14 12:20:39 +01:00 |
Martin Fouilleul
|
c9a5b3d52d
|
[mtl canvas] rearranged triangle data for better packing
|
2023-03-14 09:42:17 +01:00 |
Martin Fouilleul
|
1b3583cc6d
|
[mtl canvas] remove box array, cache box in triangle struct
|
2023-03-14 09:42:12 +01:00 |
Martin Fouilleul
|
6536f4ac64
|
[mtl canvas] fused boxing and tiling, cache cubics in triangle data
|
2023-03-14 09:40:11 +01:00 |
Martin Fouilleul
|
ee4a667258
|
[mtl canvas] trying fused boxing/tiling passes
|
2023-03-14 09:25:20 +01:00 |
Martin Fouilleul
|
fd5a4d4cd8
|
[wip] trying to simplify metal shader
|
2023-03-14 09:25:09 +01:00 |
Martin Fouilleul
|
cee294d8ad
|
[mtl canvas] fixed setBuffer that was being called on the wrong encoder
|
2023-03-14 09:20:51 +01:00 |
Martin Fouilleul
|
e9d64166a3
|
[mtl canvas] fixed bug where tiles left and below screen where all bucketed to the first row/column (same as gl version, see 4a8c77f02 )
|
2023-03-13 16:53:12 +01:00 |
Martin Fouilleul
|
6da2494c81
|
[canvas example] fixed movement
|
2023-03-13 15:53:35 +01:00 |
Martin Fouilleul
|
13f025ab21
|
[mtl canvas] convert triangle rasterization to fixed point
|
2023-03-13 15:18:18 +01:00 |
Martin Fouilleul
|
7c58145524
|
[mtl surface] Allow setting swap interval to 0. Note however that vsync needs to be turned off at the OS level for that to work smoothly. Otherwise, we get jittery frame rate with stalls when we run off of drawables (I suppose? should investigate some more).
This can be done with Quart Debugger in Additional Tools for XCode.
|
2023-03-13 12:21:33 +01:00 |