Patrick Walton
25a6c33a1a
Remove the object index attribute from the shaders, since it's now unused
2019-05-14 15:22:50 -07:00
Patrick Walton
86f5bdb44a
Store paints in the paint texture indexed by paint ID, not object index
2019-05-14 15:21:15 -07:00
Patrick Walton
7a02b78b3d
Explicitly specify color texture coordinates for alpha and solid tiles.
...
This is groundwork for gradients and images.
This commit also refactors the interface for vertex attributes to use named
parameters (via structs), for clarity.
2019-05-14 15:11:04 -07:00
Patrick Walton
a54378f931
Make the paint texture dynamically-sized on the GPU side
2019-05-14 11:38:48 -07:00
Patrick Walton
376a1c7165
Rename "fill colors" to "paint" in preparation for gradients and images
2019-05-14 11:33:52 -07:00
Patrick Walton
89ca998fa8
Add a convenience method for creating a scene proxy with an empty scene.
...
This makes animation rendering loops a bit easier for users.
2019-05-13 18:29:57 -07:00
Patrick Walton
d5a12e0e9f
Revert "batch alpha and solid tiles"
...
This reverts commit 753a254726
.
2019-05-13 18:20:21 -07:00
Patrick Walton
f24d93819b
Add arc building methods and switch the Moiré demo to use them.
...
Also, stop taking points by reference in many methods, for consistency.
2019-05-13 12:42:13 -07:00
Patrick Walton
55be787ffd
Merge pull request #150 from nical/glitch-fix
...
Fix vertex attribute configuration of alpha tiles
2019-05-13 10:58:06 -07:00
Nicolas Silva
820a0286aa
Fix vertex attribute configuration of alpha tiles.
...
Fixes #134 .
glVertexAttribPointer takes a size as parameter which refers to the number of components and not the size in bytes of the value.
The tile index was registered as a 2-components value which caused the second component to overlap with the first member of the next primitive, which was mostly fine except for the last element which would overlfow the buffer. Intel and nvidia GPUs/drivers on linux at least refuse to read the first component of this two-component value if the other component is outside of the valid range which caused the shader to get zero instead and always select the first mask tile.
2019-05-13 18:00:54 +02:00
Patrick Walton
b4bdbec4aa
Merge pull request #148 from bzm3r/master
...
Constrain sizes of solid tile and alpha tile batches being sent to the GPU
2019-05-13 07:59:44 -07:00
Patrick Walton
639a8f39e8
Add Moiré demo
2019-05-11 11:53:50 -07:00
bhmerchant@gmail.com
753a254726
batch alpha and solid tiles
2019-05-10 22:57:34 -07:00
Patrick Walton
a5d373cb91
Rename "object" to "path" in preparation for image objects
2019-05-10 12:03:38 -07:00
Patrick Walton
54672f2089
Add "save as SVG" support to the demo.
...
This is intended to help diagnose rendering problems, by allowing export to a
format that can be minimized and in which issues can be reproduced.
2019-05-07 14:37:46 -07:00
Patrick Walton
b198c06968
Properly account for concurrency in the performance measurement
2019-05-07 13:43:37 -07:00
Patrick Walton
15f63df844
Rename `DebugUI` to `DebugUIPresenter` and `UI` to `UIPresenter`
2019-05-06 15:36:39 -07:00
Patrick Walton
3857a28e6a
Move logic out of the `gpu_data` module
2019-05-03 18:51:36 -07:00
Patrick Walton
9de7d95d33
Start a simple HTML canvas-like API, and add a minimal example to show how to
...
use it.
2019-05-03 14:15:38 -07:00
Patrick Walton
5c5e4e9313
Factor the scene thread out of the demo and into the renderer proper.
...
This simplifies Pathfinder's API considerably. Now users get off-main-thread
scene building "for free".
2019-05-01 17:12:25 -07:00
Patrick Walton
a96ee73da6
Introduce an Executor abstraction to enable alternatives to Rayon
2019-04-30 15:17:07 -07:00
Patrick Walton
db8eb1c97c
Run `rustfmt` on the renderer crate
2019-04-29 16:45:29 -07:00
Patrick Walton
8606cd013e
Replace commented out printlns with proper debug statements
2019-04-29 16:43:24 -07:00
Patrick Walton
6c31e1bc01
In VR mode, render one eye and then reproject to both eyes instead of rendering
...
twice.
This reduces both CPU and GPU time a lot in exchange for a small loss in
quality.
2019-04-26 17:22:54 -07:00
Patrick Walton
58d55c5eaa
Allow rendering to non-default framebuffers
2019-04-18 19:05:01 -07:00
Patrick Walton
62a3fefca4
Reenable the tile and fill counts in the debug display
2019-04-18 15:09:37 -07:00
Patrick Walton
c688d04412
Remove the scene assembly thread, and pipeline only fills instead of alpha
...
tiles.
Removing a thread should make it easier to manually assign threads to CPUs, as
is necessary on devices with poor schedulers like Magic Leap 1.
2019-04-18 13:50:26 -07:00
Patrick Walton
06439f858f
Store the tile rect in only one place in the scene assembly thread
2019-04-12 11:55:05 -07:00
Patrick Walton
21563d9d7f
Move the Z-buffer over to the `DenseTileMap` abstraction
2019-04-11 19:38:31 -07:00
Patrick Walton
eef6045ed7
Add missing `tile_map.rs` file
2019-04-11 19:36:55 -07:00
Patrick Walton
6a967c19f4
Introduce a `DenseTileMap<T>` type for better abstraction and SIMD use
2019-04-11 19:25:02 -07:00
Patrick Walton
9e38da25e1
Remove the `TileObjectPrimitive` structure in favor of a flat list of
...
backdrops.
This reduces memory usage a bit and adds the infrastructure needed to support a
tile map.
2019-04-11 18:54:03 -07:00
Patrick Walton
4e6bbf59ba
Stop using `crossbeam-channel`, as it's slower than `std::sync::mpsc` on macOS
...
at least
2019-04-10 20:29:13 -07:00
Patrick Walton
3d4f8bd008
Pipeline between CPU and GPU at a more fine-grained level.
...
This makes us stop running one frame behind.
2019-04-09 17:06:43 -07:00
Patrick Walton
d090dd459b
Remove the layer of indirection between object indices and shaders
2019-04-03 11:58:45 -07:00
Patrick Walton
db3851d754
Get subpixel AA and gamma correction working in 2D
2019-03-25 16:20:34 -07:00
Patrick Walton
224c8e85b9
Create separate shaders for monochrome and multicolor tiles.
...
This is preparation for fixing subpixel AA.
2019-03-22 14:28:31 -07:00
Patrick Walton
6ca5dc5f62
Add basic barrel distortion support for VR
2019-03-20 13:41:04 -07:00
Patrick Walton
0458d9a7f2
Factor out bits of the postprocessing shader into includes
2019-03-18 21:40:10 -07:00
Patrick Walton
bb32777101
Initial work toward VR support
2019-03-14 14:42:22 -07:00
Patrick Walton
9c404dfdc1
Add an Android port
2019-03-12 13:55:26 -07:00
Patrick Walton
b80ab2ad25
Only show the "Text Effects" button when a monochrome SVG is loaded
2019-03-06 19:35:57 -08:00
Patrick Walton
6062676d0e
Add tooltips to the buttons in the demo
2019-03-06 11:33:59 -08:00
Patrick Walton
4dff13ef00
Use an advancing cursor when laying out UI elements
2019-03-06 10:47:52 -08:00
Patrick Walton
8dc3a84d09
Remove `tile-svg` and the serialization code.
...
They can be added later if needed, but for now they're just bitrotting.
2019-03-05 15:38:10 -08:00
Patrick Walton
33aa6f905d
Move UI event code and widgets to the `pathfinder_ui` crate
2019-03-05 15:36:07 -08:00
Patrick Walton
ad0691c146
Move the generic UI code in the renderer crate to a separate crate
2019-03-05 15:13:55 -08:00
Patrick Walton
f7a8b573ce
Move the GPU rendering code out of `pathfinder_gl`, since it's now no longer
...
OpenGL-specific
2019-03-05 14:46:18 -08:00
Patrick Walton
5c7423d59c
Add more statistics to the performance debug window
2019-02-25 16:12:47 -08:00
Patrick Walton
1e3298fdb7
Switch to guard-band style clipping to eliminate artefacts
2019-02-22 13:15:00 -08:00
Patrick Walton
fc62e9bc71
Subdivide offset curves to an error bound.
2019-02-20 18:27:27 -08:00
Patrick Walton
c7a1d9e960
Use stencil to integrate the vector scene into the 3D environment
2019-02-19 12:03:02 -08:00
Patrick Walton
9af3bac11f
Implement depth interpolation, not working yet
2019-02-18 13:42:30 -08:00
Patrick Walton
e4803cfddf
Add some ground to the 3D scene, no depth buffer yet
2019-02-14 18:53:02 -08:00
Patrick Walton
31f1fae951
Add a TODO about monotonic conversion
2019-02-12 08:57:49 -08:00
Patrick Walton
f04c000cae
Add a quick check to skip clipping when an outline is entirely inside or
...
outside the clip area
2019-02-09 19:24:30 -08:00
Patrick Walton
2a118c3af0
Get all postprocessing filters working
2019-02-08 14:37:30 -08:00
Patrick Walton
ba5a0f987c
Add basic postprocessing support
2019-02-08 13:55:31 -08:00
Patrick Walton
a81850a899
Add window resizing support to the demo
2019-02-06 18:09:37 -08:00
Patrick Walton
8771dd6789
wip: dilation not working yet
2019-02-05 20:10:20 -08:00
Patrick Walton
3d0463999c
Add a SIMD integer rect type
2019-02-05 10:55:01 -08:00
Patrick Walton
fe410e066f
Add a SIMD rect type
2019-02-05 10:03:20 -08:00
Patrick Walton
63b47f1abe
Move basic geometry primitives to the `pathfinder_geometry::basic` module
2019-02-04 20:20:32 -08:00
Patrick Walton
f25682f0f1
Add a defringing shader for subpixel antialiasing, untested as of yet
2019-02-04 16:04:13 -08:00
Patrick Walton
a5234e6695
Stop clipping 3D quads over and over
2019-02-02 13:53:04 -08:00
Patrick Walton
b0e91369e5
Do scene building just-in-time on a per-outline basis as part of tiling
2019-02-02 11:36:42 -08:00
Patrick Walton
df59fd9792
Rename `Point4DF32` to `Point3DF32`
2019-02-01 17:07:03 -08:00
Patrick Walton
6a286ab153
Remove `Point3DF32`
2019-02-01 17:05:35 -08:00
Patrick Walton
0b0c913332
Split out SIMD into a separate crate
2019-02-01 11:48:10 -08:00
Patrick Walton
89244ba6cf
Do clipping in 3D homogeneous space
2019-01-31 15:29:13 -08:00
Patrick Walton
4801503dd8
Fix curve/edge intersection logic in clipping
2019-01-31 10:12:37 -08:00
Patrick Walton
e105bdb7c9
Display timing info in the demo
2019-01-30 14:42:06 -08:00
Patrick Walton
6b8848bb35
Fix boundary condition for active edges precisely on tile boundaries
2019-01-29 19:29:42 -08:00
Patrick Walton
e3bf703105
Stop using 100% CPU; fix bug when splitting line segments at Y extrema
2019-01-29 15:35:07 -08:00
Patrick Walton
e958363872
Allow scenes to be dumped as SVG (untested) and make 3D mode optional in the demo
2019-01-29 14:50:15 -08:00
Patrick Walton
ab93ea1f22
Fix bogus thin culling that was causing artefacts
2019-01-29 11:27:25 -08:00
Patrick Walton
d1ca5fe757
Use a much better technique for curve flattening
2019-01-28 20:36:06 -08:00
Patrick Walton
a9c1760de5
Clipping mostly works now
2019-01-28 14:58:57 -08:00
Patrick Walton
7e3365c481
wip
2019-01-28 12:57:15 -08:00
Patrick Walton
80db7155b8
wip
2019-01-25 17:07:37 -08:00
Patrick Walton
938bd30a78
wip
2019-01-25 14:28:53 -08:00
Patrick Walton
3ce60afb44
Fix clipping
2019-01-22 11:46:01 -08:00
Patrick Walton
93ae7d3548
Basic perspective support
2019-01-16 16:53:10 -08:00
Patrick Walton
02928f295d
Basic rect clipping
2019-01-15 13:49:26 -08:00
Patrick Walton
0097ffab19
wip
2019-01-15 11:42:25 -08:00
Patrick Walton
5bbb5a1b74
Get the native code demo rendering the tiger
2019-01-15 10:52:37 -08:00
Patrick Walton
a4c2796883
Implement a third demo with native code, not working yet
2019-01-14 19:32:53 -08:00
Patrick Walton
821b54b8f4
Factor renderer and SVG code out into separate crates
2019-01-14 14:20:36 -08:00