Commit Graph

260 Commits

Author SHA1 Message Date
martinfouilleul 80ea8db687 [surface/canvas cleanup]
- Make build-time and runtime backend selection a bit easier
- Reorganized backend-specific files with slightly more coherent naming scheme
2023-02-10 16:56:10 +01:00
martinfouilleul f54f639db5 properly destroying windows and fonts 2023-02-10 12:05:52 +01:00
martinfouilleul 08d3521b61 [canvas/surface cleanup]
- properly destroy gl canvas backend
- properly destroy gl surface
2023-02-09 18:40:42 +01:00
martinfouilleul af7cbae1fa [canvas cleanup] cleanup canvas resources on creation failure 2023-02-09 18:18:12 +01:00
martinfouilleul 35e396e4c4 [canvas cleanup]
- Remove attributes/color arguments in functions where we don't need them anymore (since they're defined when calling mg_next_shape())
- Renamed "_with_zindex" functions with "_path" -> these function only fill a path (eg rect), but don't increment the current shape
2023-02-09 17:02:58 +01:00
martinfouilleul 09a18419e4 [canvas] make shapeIndex implicit in calls to mg_push_vertex 2023-02-09 16:42:02 +01:00
martinfouilleul 4e816a838b [Clean canvas/shaders]
- Simplified shader names, prefix embedded strings by "glsl_"
- Extracted shader compilation in common function
- Add shader version string and common structs in canvas code rather than in every shader file
- Renamed zIndex with shapeIndex everywhere
2023-02-09 16:14:15 +01:00
martinfouilleul 4a8c77f023 - Move and Zoom perf_text example with the mouse
- Reverted to using 4 bits of subpixel precision and computing cross products with 32 bits integers, for perf reasons
- Fixed some confusion in tile array size vs number of elements (could still clean-up naming a bit though)
- Fixed bug where triangles on the left or below canvas boundaries where bucketted to the first colum/row of tiles
- Fixed bug in mouse button message handling (was always sending press on left button)
2023-02-09 13:09:41 +01:00
martinfouilleul 833767d6e2 move text with the mouse in perf_text example 2023-02-09 09:50:53 +01:00
martinfouilleul 21c604104f fix mp_app_get_resource_path() 2023-02-08 20:40:48 +01:00
martinfouilleul c0601961f1 Reposition window when changing dpi 2023-02-08 20:40:48 +01:00
martinfouilleul 3f58b2ac3d glsl canvas shader: do cross products in 64 bits fixed point to avoid overflow 2023-02-08 20:36:39 +01:00
martinfouilleul 7cf4c3d925 opengl surface/renderer: set surface scaling according to dpi of first monitor. Use that dpi to scale backing texture of canvas renderer. Note: changing monitor isn't handled yet! 2023-02-08 18:22:54 +01:00
martinfouilleul 7fbc4ba270 canvas renderer: Use clip rects to cull tiles/pixels in tiling and drawing passes 2023-02-08 12:59:31 +01:00
martinfouilleul e6e674ee04 Allow setting surface swap interval in opengl surface 2023-02-08 11:49:00 +01:00
martinfouilleul c982b524c0 Merge branch 'gl_canvas' of ssh://git.forkingpaths.dev/martinfouilleul/milepost into gl_canvas 2023-02-08 10:47:20 +01:00
martinfouilleul 38c27f21d6 canvas: allow flushing externally built commands with mg_flush_commands() 2023-02-08 10:46:12 +01:00
Martin Fouilleul afaa95fe07 applied canvas changes to metal backend 2023-02-08 10:42:21 +01:00
martinfouilleul 2419ab7889 opengl canvas renderer: splitting vertex data and shape data 2023-02-07 18:59:51 +01:00
martinfouilleul f0bc88c4fb gl canvas renderer with buffer re-specification 2023-02-07 17:00:59 +01:00
martinfouilleul 5788cdbcda Desktop opengl 4.3 canvas 2023-02-07 13:24:14 +01:00
martinfouilleul 91780b12c7 reorder fields in glsl vertex struct to be less wasteful 2023-02-06 17:01:32 +01:00
martinfouilleul 5754fc1ad2 using temporary buffer to build canvas verex data and use glBufferData with exact number of vertices to submit buffer to gpu 2023-02-06 16:14:43 +01:00
martinfouilleul 3dfaea1bba temporarily reducing vertex buffer size to test perf impact 2023-02-06 09:20:52 +01:00
martinfouilleul fd836c00dd canvas renderer: parallel tiling pass and sorting pass 2023-02-05 21:03:16 +01:00
martinfouilleul e59f2b152b simple gles tiled renderer 2023-02-03 18:44:28 +01:00
martinfouilleul 8faf588bee Added text rendering in win_canvas test app and confirm it's slow as is... 2023-02-02 20:36:03 +01:00
martinfouilleul 68810d8bf0 updated todo 2023-02-02 19:15:20 +01:00
martinfouilleul 19988d045e breaking triangle buffer into batches each time the current image changes 2023-02-02 18:57:57 +01:00
Martin Fouilleul 9cadc2f23f added notes on bindless textures indexing 2023-02-02 17:02:55 +01:00
martinfouilleul 28e2a3648e Multisampling in gles canvas shader 2023-02-02 13:34:06 +01:00
martinfouilleul f73241e4a6 set background clear color correctly 2023-02-02 12:08:04 +01:00
martinfouilleul 0796b2cbcd Switched to fixed point in gles triangle rasterization, and fixed wrong offset curve check collapsing the internal control points 2023-02-02 11:40:22 +01:00
martinfouilleul e0300e9e3c Fixed indexing in gles_canvas_fragment shaders and fixed native keys buffer 2023-02-01 16:23:51 +01:00
martinfouilleul 8e87837fcc working on gles 3.1 canvas on windows 2023-01-31 15:51:50 +01:00
martinfouilleul c5ae556f22 [wip] win32 gles surface using angle 2023-01-29 01:04:24 +01:00
Martin Fouilleul bd7e1a15f1 - Conflating mp_views and surfaces
- Implicit canvas context in canvas API
- GLES window surface on mac
2023-01-28 17:24:43 +01:00
Martin Fouilleul 9bf62d2218 re-working graphics surfaces 2022-12-26 18:33:31 +01:00
Martin Fouilleul db5b4966e9 - Restructure osx version to use mp_app_internal.h/mp_app.c
- test new run loop structure on osx
2022-12-24 15:33:32 +01:00
martinfouilleul 72338b1a25 Extracted commonalities from platform specific app backends 2022-12-23 20:46:42 +01:00
martinfouilleul 30bd704af2 win32 opengl loader nonsense 2022-12-22 18:24:43 +01:00
martinfouilleul a696c2ba2b Added platform detection macros and atomic/thread_local abstraction 2022-12-22 15:29:07 +01:00
martinfouilleul c57e16db5a [win32 port] Hello triangle in OpenGL 4.3 2022-12-21 19:43:31 +01:00
martinfouilleul 2421871c3e windows port initial commit: simple window with GL 4.3 context 2022-12-21 12:03:55 +01:00
Martin Fouilleul 7f62938f84 directory create/remove 2022-08-28 13:49:40 +02:00
Martin Fouilleul 00b282dcd4 Platform file system functions (remove, move, etc) 2022-08-26 14:47:20 +02:00
Martin Fouilleul 884e05abd2 Adding plaform specific move file functions 2022-08-21 19:14:59 +02:00
Martin Fouilleul 1d77a36640 Fixed executable/bundle paths procs 2022-08-21 17:07:54 +02:00
Martin Fouilleul 440668129c Remote GLES surfaces 2022-08-19 20:55:00 +02:00
Martin Fouilleul 13cccdf5de trying to integrate mg_surface_client/server 2022-08-19 19:46:31 +02:00