4361 Commits

Author SHA1 Message Date
Mitchell Hashimoto
a7c1f63ad8 metal: populate the greyscale texture, prep ubershader 2022-10-31 09:44:37 -07:00
Mitchell Hashimoto
89610f9b8d metal: setup vertex data 2022-10-31 09:44:37 -07:00
Mitchell Hashimoto
6b7ed3fefb metal: use content scale when resizing 2022-10-31 09:44:37 -07:00
Mitchell Hashimoto
ea0265f021 projection matrix, render cell 2022-10-31 09:44:37 -07:00
Mitchell Hashimoto
a17a7426a3 draw a square, handle resize 2022-10-31 09:44:37 -07:00
Mitchell Hashimoto
4d4c1790cb draw a triangle 2022-10-31 09:44:36 -07:00
Mitchell Hashimoto
fc7e457098 add first pass metal shader 2022-10-31 09:44:36 -07:00
Mitchell Hashimoto
90a284e176 boilerplate for rendering 2022-10-31 09:44:36 -07:00
Mitchell Hashimoto
090bab6798 metal: setup the render loop, draw the background color 2022-10-31 09:44:36 -07:00
Mitchell Hashimoto
07271a6cfd Initial metal abstraction (noop) 2022-10-31 09:44:36 -07:00
Mitchell Hashimoto
19f003d7d0 mac: load emoji font last so it is not preferred for text 2022-10-31 09:44:19 -07:00
Mitchell Hashimoto
f89b5d12f6 fixed bugs 2022-10-29 09:48:57 -07:00
Mitchell Hashimoto
1e5c17dffa Comment to show native access 2022-10-28 10:02:32 -07:00
Mitchell Hashimoto
b4a83d98c4 window no longer makes any OpenGL calls 2022-10-28 09:24:40 -07:00
Mitchell Hashimoto
e7ffb823af propertly deinit the GPA so we can detect leaks in debug 2022-10-25 15:49:21 -07:00
Mitchell Hashimoto
d8cdd5d8fe Fix the primary leak with config 2022-10-25 15:48:13 -07:00
Mitchell Hashimoto
233ee2b3eb fixing more memory leaks 2022-10-25 15:40:26 -07:00
Mitchell Hashimoto
bcf485342e fix a couple more memory leaks 2022-10-24 16:17:18 -07:00
Mitchell Hashimoto
ef57e1e56a free memory in cells LRU 2022-10-24 16:09:08 -07:00
Mitchell Hashimoto
8dd9e7b325 Fix memory leak forgetting to clean up fontconfig 2022-10-24 15:55:57 -07:00
Mitchell Hashimoto
9ef431c632 use the c allocator when running under valgrind 2022-10-24 15:34:30 -07:00
Mitchell Hashimoto
cf14ea506f update zig 2022-10-24 14:35:42 -07:00
Mitchell Hashimoto
c2ce158342 remove the max timer 2022-10-24 10:55:16 -07:00
Mitchell Hashimoto
c0f96f591b remove render timer from window 2022-10-24 10:50:42 -07:00
Mitchell Hashimoto
536f5c4487 set proper opengl background 2022-10-24 10:04:40 -07:00
Mitchell Hashimoto
b4859625bf bring back out of focus no blink 2022-10-24 10:01:38 -07:00
Mitchell Hashimoto
dc908cb73d support screen size, rip out shared state 2022-10-24 09:52:08 -07:00
Mitchell Hashimoto
45ff936ddf no longer store grid size on the renderer 2022-10-24 09:32:51 -07:00
Mitchell Hashimoto
ce384c2356 renderer: extract the size structs to a shared file 2022-10-24 09:27:09 -07:00
Mitchell Hashimoto
aa3d132947 run rendering on another real thread (still bugs) 2022-10-24 09:17:48 -07:00
Mitchell Hashimoto
aeb592bae9 move to new renderstate, new render method 2022-10-23 21:04:52 -07:00
Mitchell Hashimoto
b347ff458b prepare our render state on the window 2022-10-23 20:55:04 -07:00
Mitchell Hashimoto
9913bba2e8 introduce renderer thread logic (not starting it yet) 2022-10-23 20:18:10 -07:00
Mitchell Hashimoto
89a4c59f3c make opengl loader context-aware 2022-10-23 19:39:02 -07:00
Mitchell Hashimoto
de9731da1f rename grid to a renderer, extract to subfolder
"Grid" was a really antiquated name when it had both the screen state
AND the renderering functionality tied together. This hasn't been true
for a LONG time and it is long overdue that this is renamed to its
proper name.

This also begins setting up a folder structure to anticipate future
renderers and rendering functionality. I'm not working on any alternate
renderers right now so the interface isn't expected to be good, just
laying out the files in this way.
2022-10-23 16:47:34 -07:00
Mitchell Hashimoto
34e1c96dd7 workaround for https://github.com/ziglang/zig/issues/13277 2022-10-23 11:39:21 -07:00
Mitchell Hashimoto
bc3762e85b update zig to latest, fix todos 2022-10-23 10:54:39 -07:00
Mitchell Hashimoto
79f69885ca update to latest zig which renames @min/@max 2022-10-19 10:42:31 -07:00
Mitchell Hashimoto
366ea2ff4c cell under cursor always remains visible by inverting fg colors 2022-10-18 15:28:31 -07:00
Mitchell Hashimoto
fa0028f104 coretext: rasterize glyph with a padding to prevent artifacting 2022-10-18 14:57:44 -07:00
Mitchell Hashimoto
c00c8f52b5 coretext: render glyph on its own bounding box, calculate bearings 2022-10-18 14:49:23 -07:00
Mitchell Hashimoto
38e0c258d0 coretext: we do want to smooth and anti-alias glyphs 2022-10-18 12:56:02 -07:00
Mitchell Hashimoto
4669032e56 face: coretext zero the bitmap before render 2022-10-18 12:52:37 -07:00
Mitchell Hashimoto
58c107dceb freetype: resize glyphs that are too tall prior to storing in texture
Most emoji fonts are massive glyphs (128x128, 256x256, etc.). This means
the texture we need to store emoji is also massive. For a 128x128 emoji
font (both Apple and Noto), we can only store 12 emoji before resizing
prior to this commit.

This commit now threads through a max height through to the font face
and resizes the bitmap in memory before putting it in the atlas. This
results in significant savings. The max height is the cell height. We
allow the glyphs to be as wide as necessary due to double (and more)
wide glyphs.

For the unicode emoji test file, the atlas size before and after:

  Before: 262 MB
  After: 16 MB
2022-10-17 19:14:30 -07:00
Mitchell Hashimoto
c103a278f1 render font info in dev mode 2022-10-17 14:47:51 -07:00
Mitchell Hashimoto
7cb3f2267f use our built-in font for dev mode 2022-10-17 11:56:46 -07:00
Mitchell Hashimoto
ab721b5b26 disable inputs when they're captured by dev mode 2022-10-17 11:19:35 -07:00
Mitchell Hashimoto
a39fe6baed Use scalable check rather than fixed size check for setting char size 2022-10-16 20:55:06 -07:00
Mitchell Hashimoto
2e1bc7bb01 Bring back freetype font bitmap conversion
Monaco on Mac is mono
2022-10-16 20:47:21 -07:00
Mitchell Hashimoto
f29393bca6 Imgui (#20)
* vendor/cimgui

* Add a "dev mode" window which for now is just imgui demo
2022-10-16 16:20:08 -07:00