Commit Graph

104 Commits

Author SHA1 Message Date
Emil Ernerfeldt 1b36863248
Split out new crate egui-winit from egui_glium (#735) 2021-09-28 17:33:28 +02:00
Emil Ernerfeldt 52e49bd4ae README: Point to better example in the "how to render 3D" FAQ section 2021-09-20 22:58:26 +02:00
Emil Ernerfeldt 93c2fde1fc Extend section about rendering 3D inside of egui 2021-09-19 20:16:50 +02:00
Emil Ernerfeldt f2b6edd6db Replace egui_winit_ash_vk_mem with egui-winit-ash-integration in README.md
Closes https://github.com/emilk/egui/issues/707
2021-09-11 09:34:00 +02:00
Emil Ernerfeldt 391bec1170 FAQ: add "How do I render 3D stuff in an egui area?" 2021-09-05 10:18:49 +02:00
Emil Ernerfeldt 5f88d89f74
Faster galley cache (#699)
* Speed up galley cache by only using the hash as key

This hashes the job but doesn't compare them with Eq,
which speeds up demo_with_tessellate__realistic by 5-6%,
winning back all the performance lost in
https://github.com/emilk/egui/pull/682

* Remove custom Eq/PartialEq code for LayoutJob and friends

* Silence clippy

* Unrelated clippy fixes
2021-09-04 10:19:58 +02:00
Emil Ernerfeldt de1a1ba9b2
New text layout (#682)
This PR introduces a completely rewritten text layout engine which is simpler and more powerful. It allows mixing different text styles (heading, body, etc) and formats (color, underlining, strikethrough, …) in the same layout pass, and baked into the same `Galley`.

This opens up the door to having a syntax-highlighed code editor, or a WYSIWYG markdown editor.

One major change is the color is now baked in at layout time. However, many widgets changes text color on hovered. But we need to do the text layout before we know if it is hovered. Therefor the painter has an option to override the text color of a galley.


## Performance
Text layout alone is about 20% slower, but a lot of that is because more tessellation is done upfront. Text tessellation is now a lot faster, but text layout + tessellation still lands at a net loss of 5-10% in performance. There are however a few tricks to speed it up (like using `smallvec`) which I am saving for later. Text layout is also cached, meaning that in most cases (when all text isn't changing each frame) text tessellation is actually more important (and that's more than 2x faster!).

Sadly, the actual text cache lookup is significantly slower (300ns -> 600ns). That's because the `TextLayoutJob` is a lot bigger (it has more options, like underlining, fonts etc), so it is slower to hash and compare. I have an idea how to speed this up, but I need to do some other work before I can implement that.

All in all, the performance impact on `demo_with_tesselate__realistic` is about 5-6% in the red. Not great; not terrible. The benefits are worth it, but I also think with some work I can get that down significantly, hopefully down to the old levels.
2021-09-03 18:18:00 +02:00
Mohammed Alyousef d9fd806e94
add fltk-egui as a 3rd party backend crate (#694) 2021-09-03 15:20:34 +02:00
Emil Ernerfeldt 4f8dcf9a27 Augment list of fedora dependencies
Taken from https://github.com/emilk/egui_template/pull/24
2021-09-02 21:25:38 +02:00
Emil Ernerfeldt ce19e10258 REAMDE: add link to egui docs about immediate mode 2021-08-23 21:48:38 +02:00
Emil Ernerfeldt 661f0d71a7
Add libssl-dev to apt-get install path (#635) 2021-08-20 14:37:14 +02:00
Emil Ernerfeldt 734ec9dc5a Add link to amethyst_egui 2021-08-18 12:46:59 +02:00
Emil Ernerfeldt d6299bcd91 Expand egui_web/README.md with list of shortcomings 2021-08-16 21:17:15 +02:00
Emil Ernerfeldt 9bbcfd5996 Fix typo
Closes #567 #617
2021-08-15 17:02:28 +02:00
Luca a1c5ce05f7
readme: add `egui_glfw_gl` (#586) 2021-07-29 22:14:17 +02:00
Emil Ernerfeldt 4feee59f84 Improve README files for all crates 2021-07-29 22:04:20 +02:00
Emil Ernerfeldt 326da7a0d7 README: Clean up the integration section 2021-07-29 21:58:50 +02:00
Emil Ernerfeldt 9b1a8c9e00 Add link to egui-tetra 2021-07-29 01:33:55 +02:00
Emil Ernerfeldt 94937a33e8 Add link to ggez-egui 2021-07-28 17:52:05 +02:00
Emil Ernerfeldt 52d187ab5f Add godot-egui to README.md 2021-07-23 11:04:55 +02:00
Emil Ernerfeldt d8b2b50780
Add libxkbcommon-dev to list of linux deps (#549)
Closes https://github.com/emilk/egui/issues/545
2021-07-06 19:33:37 +02:00
Emil Ernerfeldt d807451348 Release 0.13.0 - Better panels, plots and new visual style 2021-06-24 20:00:06 +02:00
Benjamin Bouvier e22c242d17
Use ab_glyph instead of rusttype for font rendering (#490)
* Use ab_glyph instead of rusttype for font rendering

* address review feedback
2021-06-24 12:13:57 +02:00
Emil Ernerfeldt ef36cac422 Improve misc docs 2021-06-12 22:12:45 +02:00
Emil Ernerfeldt ec6268e4ac egui_web: document how to fill the full width of the browser 2021-06-03 18:56:37 +02:00
Emil Ernerfeldt 6468b2b84e
Implement efficent scrolling of large content (#457) 2021-06-03 18:48:45 +02:00
ilya sheprut 9dd23b44e0
readme: add `nannou_egui` (#379) 2021-05-12 13:29:37 +02:00
Emil Ernerfeldt 7b0f991b20 Improve docs concerning custom fonts, themes and accessibility
Closes https://github.com/emilk/egui/pull/370
Closes https://github.com/emilk/egui/issues/372
2021-05-11 14:56:27 +02:00
crumblingstatue e991a1c310
Fix typo in README.md (#340) 2021-04-29 19:31:24 +02:00
ilya sheprut d6de19b507
Mention macroquad backend in the readme (#308) 2021-04-15 10:20:04 +02:00
follower 0353f40dd5
Typo fix: "occational" -> "occasional" (#286) 2021-04-08 22:22:58 +02:00
pixeljoelson b028e708e0
fixed typo in README.md (#275) 2021-04-05 09:56:58 +02:00
Emil Ernerfeldt 33a4058381 Add comment about Firefox CPU usage in FAQ 2021-04-02 09:24:34 +02:00
Emil Ernerfeldt 94baf98eab Add a galley cache to Fonts to avoid doing the same layout each frame 2021-03-29 22:49:48 +02:00
Emil Ernerfeldt de439b6e21 Deprecate old Slider constructors in favor of Slider::new 2021-03-27 16:07:18 +01:00
Emil Ernerfeldt 405ae3bcee Add link to https://github.com/hakolao/egui_winit_vulkano 2021-03-21 16:09:44 +01:00
Emil Ernerfeldt 24b3cd021f Add demo app instructions for Defora Rawhide
Closes https://github.com/emilk/egui/issues/235
2021-03-21 15:28:00 +01:00
Emil Ernerfeldt 07a17dc6cf Sort 3rd party integrations and add link to egui_vulkano 2021-03-08 22:57:45 +01:00
Emil Ernerfeldt fdb1aa6bec improve documentation 2021-02-28 18:59:46 +01:00
Emil Ernerfeldt fc8b27807c Add discussion about the pros and cons of immediate mode GUIs 2021-02-11 19:29:05 +01:00
Emil Ernerfeldt e5233d2268 Add link to egui_winit_ash_vk_mem crate 2021-02-09 18:38:37 +01:00
Emil Ernerfeldt 5ce681ef16 Improve documentation 2021-02-07 17:04:03 +01:00
Emil Ernerfeldt 18e1ea1d63 Clarify which platforms egui runs on.
Closes https://github.com/emilk/egui/issues/145
2021-01-27 21:33:37 +01:00
Emil Ernerfeldt b493bc6efc Wrap tesselated output in struct ClippedMesh(Rect, Mesh) 2021-01-25 21:43:17 +01:00
Emil Ernerfeldt 247026149c
Multiple mouse button support (#135)
Add support for primary, secondary and middle mouse buttons. Also improve ability to click things in low FPS situations.

This introduces a lot of breaking changes:

    Backends/integrations now pass mouse events via the even stream.
    Response has an interface of mostly methods instead of public members.
    input.mouse is now input.pointer and has new interface.


* Rename 'mouse' to 'pointer' everywhere (pointer = mouse or touch)

* Make Response::clicked and Response::double_clicked into methods

* Remove Response::active and add dragged() and interact_pointer_pos()

* Support multiple mouse buttons

* Make PointerState interface all methods

* Make most members of Response private
2021-01-25 18:50:19 +01:00
Emil Ernerfeldt c476c7f1a2 Add note about required libraries on Linux
Closes https://github.com/emilk/egui/issues/121
2021-01-20 17:27:58 +01:00
Emil Ernerfeldt 90a0ce969b Add link to bevy_egui integration 2021-01-17 22:11:12 +01:00
Emil Ernerfeldt 37a3fe7f76 Release 0.8.0 - Grid layout & new visual style 2021-01-17 15:28:52 +01:00
Emil Ernerfeldt 9814b25246 List default egui dependencies after badges 2021-01-17 14:54:24 +01:00
Emil Ernerfeldt 31b7eda51e Rename Egui to egui
Also update iamges in README.md
2021-01-17 14:48:59 +01:00