55 Commits

Author SHA1 Message Date
Qwerasd
10b8ca3c69 spelling: normalize grey -> gray 2024-08-11 18:31:01 -04:00
Qwerasd
d68906563e renderer/metal: properly support padding color = background (not extend) 2024-08-08 19:03:39 -04:00
Qwerasd
6339f9bae9 renderer: metal shaders rework
- Significant changes to optimize memory usage.
- Adjusted formatting of the metal shader code to improve readability.
- Normalized naming conventions in shader code.
- Abstracted repetitive code for attribute descriptors to a helper
function.
2024-08-07 17:39:31 -04:00
Mitchell Hashimoto
e5a087e143 renderer/metal: fix warnings compiling metal shader 2024-08-06 10:43:57 -07:00
Mitchell Hashimoto
389cc95394 renderer/metal: powerline enum value used wrong value 2024-08-06 10:22:08 -07:00
Leah Amelia Chen
503dfae6ff renderer: exempt Powerline cells from minimum contrast requirements
With a minimum contrast set, the colored glyphs that Powerline uses
would sometimes be set to white or black while the surrounding background
colors remain unchanged, breaking up contiguous colors on segments of
the Powerline.

This no longer happens with this patch as Powerline glyphs are now
special-cased and exempt from the minimum contrast adjustment.
2024-08-06 15:28:50 +08:00
Mitchell Hashimoto
ea551990eb renderer: disable window-padding-color=extend in certain scenarios
There are scenarios where this configuration looks bad. This commit
introduces some heuristics to prevent it. Here are the heuristics:

  * Extension is always enabled on alt screen.
  * Extension is disabled if a row contains any default bg color. The
    thinking is that in this scenario, using the default bg color looks
    just fine.
  * Extension is disabled if a row is marked as a prompt (using semantic
    prompt sequences). The thinking here is that prompts often contain
    perfect fit glyphs such as Powerline glyphs and those look bad when
    extended.

This introduces some CPU cost to the extension feature but it should be
minimal and respects dirty tracking. This is unfortunate but the feature
makes many terminal scenarios look much better and the performance cost
is minimal so I believe it is worth it.

Further heuristics are likely warranted but this should be a good
starting set.
2024-08-03 21:56:19 -07:00
Mitchell Hashimoto
ed1c163c7b renderer/opengl: support window-padding-color=extend 2024-08-03 16:29:17 -07:00
Mitchell Hashimoto
9214db3c5f renderer/metal: handle top/left 2024-08-03 16:03:42 -07:00
Mitchell Hashimoto
5309f4d080 renderer/metal: extend background color of grid border into padding 2024-08-03 15:39:02 -07:00
Mitchell Hashimoto
3a7dc355a0 renderer/metal: invert text under cursor again 2024-04-27 22:13:17 -07:00
Mitchell Hashimoto
ced8776120 renderer/metal: grid pos for bg/text should be ushort2
This saves 50% memory per vertex.
2024-04-25 19:16:40 -07:00
Mitchell Hashimoto
d12e3db599 renderer/metal: dedicated cell fg shader 2024-04-22 10:58:23 -07:00
Mitchell Hashimoto
e8b623e829 renderer/metal: dedicated cell bg shader 2024-04-22 10:43:29 -07:00
Mitchell Hashimoto
4398896905 renderer/opengl: strikethrough as sprite 2024-04-22 10:30:27 -07:00
Mitchell Hashimoto
ad08842e86 renderer/metal: remove strikethrough support from GPU 2024-04-22 10:26:51 -07:00
Mitchell Hashimoto
43c105c363 renderer: constrain emoji to cell width
Fixes #1402
2024-01-28 09:07:49 -08:00
Mitchell Hashimoto
5622ab370f renderer/metal,opengl: premult alpha for fragment shaders for images
Fixes #1346
2024-01-21 14:07:16 -08:00
Mitchell Hashimoto
62a2fdcf88 renderer/opengl: set texture size for constrained glyphs
This wasn't setting the texture size so the glyphs would show up blank
(zero texture size).
2024-01-15 15:04:05 -08:00
Mitchell Hashimoto
62e5234da4 renderer: for constrained cells, offset was being doubled
This helps better preserve the centerline for constrained glyphs
2024-01-07 15:02:56 -08:00
Mitchell Hashimoto
231a2b6369 renderer/opengl: implement fg_constrained 2023-12-16 20:11:37 -08:00
Mitchell Hashimoto
0b658c8217 renderer/metal: constrain PUA glyphs if they aren't next to space 2023-12-16 20:07:25 -08:00
Mitchell Hashimoto
ec8f3d036e renderer/opengl: implement min contrast 2023-12-01 21:55:51 -08:00
Mitchell Hashimoto
e3eba92c0e renderer/metal: only apply min contrast if set and only on non-color fg 2023-12-01 21:26:33 -08:00
Mitchell Hashimoto
7af4009f27 renderer/metal: minimum contrast ratio is configurable 2023-12-01 21:24:38 -08:00
Mitchell Hashimoto
6c859cca82 renderer/metal: minimum contrast experiment
This uses WCAG2 algorithms with a minimum ratio hardcoded of 3:1. This
is not shippable in its current state because we want the ratio to be
configurable and I'm not happy with the way data is being sent to the
shader.
2023-12-01 20:51:16 -08:00
Mitchell Hashimoto
d1de53ed22 renderer/opengl: correct shader params 2023-11-19 22:52:40 -08:00
Mitchell Hashimoto
64cacce1cf renderer/opengl: setup image uniforms 2023-11-19 22:33:06 -08:00
Mitchell Hashimoto
8253fc1f31 renderer/opengl: shaders only need one color input 2023-11-17 21:51:07 -08:00
Mitchell Hashimoto
2db36646ac renderer/opengl: some comments 2023-11-17 21:51:07 -08:00
Mitchell Hashimoto
5c7bad2f7d renderer/opengl: resize the screen texture 2023-11-17 21:51:06 -08:00
Mitchell Hashimoto
47971e7663 renderer/opengl: setup uniform buffer objects for custom shaders 2023-11-17 21:51:06 -08:00
Mitchell Hashimoto
5fc91401f2 renderer/opengl: draw custom shaders, simplified 2023-11-17 21:51:06 -08:00
Mitchell Hashimoto
aff5090362 renderer/opengl: simplifying the custom shader to get things working 2023-11-17 21:51:06 -08:00
Mitchell Hashimoto
46dd084ee9 renderer/opengl: wip 2023-11-17 21:51:05 -08:00
Mitchell Hashimoto
3a17ac48cf prettier: ignore shaders 2023-11-17 21:50:53 -08:00
Mitchell Hashimoto
01a73994cb renderer/metal: setup sampler state 2023-11-17 21:50:53 -08:00
Mitchell Hashimoto
1bd92619b1 renderer: shadertoy functions 2023-11-17 21:50:35 -08:00
Mitchell Hashimoto
c347148fd7 renderer/metal: CRT effect, ugly hacky code 2023-11-17 21:50:34 -08:00
Mitchell Hashimoto
a5066635f0 renderer: do not downsample oversized glyphs
Fixes #696

We should rely on the rasterizer to create glyphs of the proper size,
including doing CPU resizing if necessary.
2023-10-17 10:55:04 -07:00
Mitchell Hashimoto
0918731d9a renderer/metal: need to set proper alpha for fg mode in shader
Fixes #673
2023-10-16 12:22:51 -07:00
Mitchell Hashimoto
e0ee5d1763 Revert "Merge pull request #322 from mitchellh/big-glyphs"
This reverts commit 0ffbab00a42ba0fb9a3f2aa02428760df61d03d3, reversing
changes made to 6751087bead34efe1684997503c3764a63607397.
2023-08-24 21:05:33 -07:00
Mitchell Hashimoto
aad4bdb32a renderer/opengl: glyphs that are too wide should be scaled down
U+226A is 1-char wide according to the Unicode database but renders very
wide in many fonts. This causes it to leak outside of its grid cell. We
should scale down by x the same way we scale down by y.
2023-08-24 14:19:38 -07:00
Mitchell Hashimoto
7ff76ca00d terminal/kitty-gfx: respect display c/r params 2023-08-22 14:43:50 -07:00
Mitchell Hashimoto
3bbfee676b terminal/kitty-gfx: process source rectangle display params 2023-08-22 14:33:41 -07:00
Mitchell Hashimoto
84c72bbe46 renderer/metal: honor cell offset graphics command 2023-08-22 13:28:40 -07:00
Mitchell Hashimoto
5a9bbcbc2d renderer/metal: clip image if necessary off top of viewport (scrolling) 2023-08-22 11:32:45 -07:00
Mitchell Hashimoto
cb70d86c00 renderer/metal: emit draw calls for images 2023-08-22 10:12:40 -07:00
Mitchell Hashimoto
e665fc6741 renderer/metal: first pass at an image shader 2023-08-22 09:20:30 -07:00
Mitchell Hashimoto
0ca6957d0c renderer/{metal,opengl}: need to premult our cell alpha to have effect 2023-08-18 18:38:47 -07:00