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