Martin Fouilleul
d21e737733
[wip] re-introducing UI subsystem
2023-03-03 17:13:03 +01:00
martinfouilleul
653ddec978
[win32 surface sharing] win32 surface sharing using window reparenting
2023-03-03 12:41:09 +01:00
Martin Fouilleul
731e5b1ae8
[surface] pull mp_layer into the generic mg_surface_data struct, out of each backend-specific implementation
2023-03-03 11:50:12 +01:00
martinfouilleul
ac00cc9def
[wip, win32 surface sharing] simplifyin the surface sharing API
2023-03-02 19:21:39 +01:00
martinfouilleul
ee87976429
[win32 surface sharing] hacky proof of concept
2023-03-02 18:24:15 +01:00
martinfouilleul
3ada8ece9a
[wip, win32 surface sharing] in surface sharing example, terminate child process when parent exits
2023-03-02 12:23:10 +01:00
martinfouilleul
e58ae3ef52
[surface sharing] first draft for win32 using window reparenting
2023-03-02 09:54:12 +01:00
martinfouilleul
2560ddd5b4
[win32] adding simple IPC to test delegated surface
2023-03-01 18:58:59 +01:00
martinfouilleul
1dfc5dd684
[graphics, win32] applying changes to surface backend API
2023-03-01 17:41:39 +01:00
Martin Fouilleul
43d413dbbc
[surface] graphics surface sharing API + osx implementation
2023-03-01 16:15:36 +01:00
Martin Fouilleul
28f5af32fa
[graphics] Allocate canvases and fonts from graphics subsystem's arena
2023-03-01 11:37:33 +01:00
Martin Fouilleul
6bf989564d
[graphics] use a single handle arena for all graphics subsystem handles
2023-02-28 20:33:55 +01:00
Martin Fouilleul
5a19c03ad6
[canvas] removing unused old atlasing api
2023-02-28 18:47:45 +01:00
Martin Fouilleul
3615775168
[canvas] decompose image atlas API into simple rect atlas API + image atlas helpers. This avoids creating a bunch of new types/handles, and exposes the underlying image/sourceRegion so that user code can freely use these for more complex scenarios (eg drawing only a sub-region of an atlased image, or using an atlas image for arbitrary path filling)
2023-02-28 16:54:39 +01:00
Martin Fouilleul
d4bceba7e9
[canvas] basic image atlas API
2023-02-28 13:16:36 +01:00
martinfouilleul
9cb4aedbc5
[canvas, gl] use pre-multiplied alpha in draw shader and when compositing batches
2023-02-27 19:50:18 +01:00
martinfouilleul
ac6a5db209
[canvas, gl] Checked batching/transparency
2023-02-27 19:39:26 +01:00
Martin Fouilleul
5fa07cb462
adding image with transparency (top512.png) in resources to test transparency/overlaying
2023-02-27 19:34:54 +01:00
martinfouilleul
8f834fa1a5
[wip, canvas, gl] implementing basic image API
2023-02-27 19:25:41 +01:00
Martin Fouilleul
5e5f8ac5e7
adding image test/example
2023-02-27 15:43:41 +01:00
Martin Fouilleul
30aa6a4a48
[canvas] Put primitive's transform in the attributes struct. When rendering, set current transform at the beginning of mg_next_shape(). (This avoid using an additional prevTransform matrix to correctly setup uvTransform when mg_finalize_shape() at the beginning of mg_next_shape())
2023-02-27 15:01:44 +01:00
Martin Fouilleul
d195fb1f61
[canvas, mtl backend] Compute each layer with pre-multiplied alpha, starting from transparent color. Composite them to surface with premultiplied alpha too.
2023-02-27 14:24:59 +01:00
Martin Fouilleul
9ed630fc55
[canvas]
...
- Clear final surface to clear color, and enable blending layers onto it
- Fixed Batching bug where we were writing to vertex/shape buffers while the previous batch is using them
- Fixed bug where uvTransform uses transform of next shape instead of that of shape being finalized
2023-02-27 11:56:04 +01:00
Martin Fouilleul
e66932e624
[canvas] Set command attributes to canvas->attributes by default in mg_push_command()
2023-02-25 15:35:24 +01:00
Martin Fouilleul
193afb61fd
[canvas] move canvas structs decl from graphics_internal.h to graphics.c, keep only surface/canvas backend interface stuff in graphics_internal.h
2023-02-25 15:23:15 +01:00
Martin Fouilleul
074b17b743
[canvas] Set transform matrix as part of primitive and don't replay push/pop during render
2023-02-25 14:20:07 +01:00
Martin Fouilleul
b24de5d969
[canvas] Allow setting image source region
2023-02-25 12:59:49 +01:00
Martin Fouilleul
50569a1427
Allow setting texture on arbitrary path fills
2023-02-24 23:06:39 +01:00
Martin Fouilleul
4333ed02b0
[canvas] remove image draw commands, replace with rect/rounded rects + image source
2023-02-24 22:59:33 +01:00
Martin Fouilleul
1b62ec568c
[canvas, mtl backend] Handle image rotation
2023-02-24 20:40:16 +01:00
Martin Fouilleul
bb106b717f
Build user-space bounding box of shape in mg_push_vertex() _before_ transforming vertices
2023-02-24 19:20:05 +01:00
Martin Fouilleul
11c25bf001
Make transform implicit in mg_push_vertex()
2023-02-24 19:11:03 +01:00
Martin Fouilleul
5be019d166
[canvas, metal] compute uv coords in shader using uvTransformed computed in canvas backend, using shape bounding box, image dimension, source and dest regions
2023-02-24 18:50:46 +01:00
Martin Fouilleul
fd4c4e7be3
[canvas] simple image API
2023-02-24 12:01:00 +01:00
Martin Fouilleul
d1b71110bb
- Fixed metal canvas backend's drawBatch argument order
...
- Removed texturing in metal shader while we work on image API
- Started working on simple image API
2023-02-23 18:30:47 +01:00
Martin Fouilleul
2b60db292a
[wip] image api
2023-02-23 17:07:41 +01:00
martinfouilleul
1250dfd7c1
hardcode GL/GLES versions per-platform for now
2023-02-22 18:30:10 +01:00
martinfouilleul
4b9b182762
Removed todo. Track todos/dev notes/etc in external obsidian vault for now
2023-02-22 17:21:31 +01:00
martinfouilleul
0f5c93b767
[win32 build] use /DELAYLOAD option for libEGL and libGLESv2 to allow apps that don't use GLES backend to work without redistributing those unused DLLs
2023-02-21 19:02:16 +01:00
martinfouilleul
665c63c3d0
[win32 build/link]
...
- Build milepost as a dynamic library
- Add import/export directives to public API symbols
- Change example build scripts accordingly
2023-02-21 18:43:30 +01:00
Martin Fouilleul
dc2961f513
updated todo
2023-02-21 17:22:18 +01:00
Martin Fouilleul
3b26c92c85
[osx build/linking]
...
- Remove the need for client apps to explicitly link with all dependent libs and frameworks
- Don't require redistributing libEGL/libGLES if not used, by linking them with '-weak-l' option
- Change examples build scripts accordingly
2023-02-21 17:09:26 +01:00
Martin Fouilleul
94373d12ae
[surface] extracted common layer functionality from osx surfaces. Use layer in platform-agnostic egl surface.
2023-02-21 13:40:30 +01:00
martinfouilleul
9ea9ea7636
[surface] abstracted child window layer from win32 surfaces
2023-02-21 12:35:22 +01:00
martinfouilleul
5ac512c15e
[wgl] Keep dummy window/context around for gl context creation, and don't reload wgl functions every time
2023-02-20 20:20:52 +01:00
martinfouilleul
64d7b31e5c
destroy gles surfaces resources
2023-02-20 19:38:24 +01:00
martinfouilleul
2dccfa5547
[win32 surfaces] Backing win32 surfaces with child window and implementing frame/hidding control
2023-02-20 18:34:29 +01:00
Martin Fouilleul
4306d0a01c
back osx surfaces by CALayer
2023-02-20 16:49:44 +01:00
Martin Fouilleul
2232b647ed
reintroduced GLES backend to osx
2023-02-20 11:05:01 +01:00
martinfouilleul
9eaa125129
add GLES headers to ext
2023-02-17 18:57:01 +01:00