ocornut / imgui

Dear ImGui: Bloat-free Graphical User interface for C++ with minimal dependencies
MIT License
59.89k stars 10.18k forks source link

Gallery: Post your screenshots / code here (PART 14) #4451

Open ocornut opened 3 years ago

ocornut commented 3 years ago

This is Part 14, I am splitting issues to reduce loading times and avoid github collapsing messages.

Browse all threads and find latest one to post to using the gallery label.

Also see: Software using dear imgui (you can help complete the list!)

You can post your screenshots here!

AidanSun05 commented 3 years ago

Network Socket Terminal (NST) is an application for Internet and Bluetooth communication on Windows and Linux computers. Thanks to Dear ImGui's unique windowing system, the app can handle multiple connections at once!

image

Here's NST communicating with an ESP32 via WiFi (click for full size):

Animation

Development is in progress (alpha), it's currently sitting in a private GitHub repo. I plan to make it fully public and open-source when it's ready.

EDIT: I've made the repo public for anyone who's interested: https://github.com/NSTerminal/terminal

xhighway999 commented 3 years ago

LuaPad - An awesome online Lua sandbox screenshot )

mnesarco commented 3 years ago

Marz Designer is a parametric guitar designer (CAD software). WIP...

Screenshot from 2021-09-12 09-47-49

vtushevskiy commented 3 years ago

GLSL exlorer (standalone shadertoy "on steroids")

https://vimeo.com/605113516 https://vimeo.com/595099323 https://vimeo.com/593638722 https://vimeo.com/589236073 https://vimeo.com/588068234 https://vimeo.com/587673956 https://vimeo.com/584456788

Screen Shot 2021-09-14 at 15 48 09 Screen Shot 2021-09-14 at 15 45 00

mnesarco commented 3 years ago

Hi Friends, I don't know where to put this, so If this is the wrong place please tell me.

I have been working on something to automate the creation of icon fonts and plain atlases from sets of svg files:

screenshot_20

The idea is that you write a simple config file, put your svg files in a folder and that's it. No interactive work. You define a set of rules and your icon font is generated and your atlas is generated in case you don't want to use the icons as a font. And all the c++ sources are generated so you can use it directly in your code as images (sprites) or as text (font). Then if you change any svg file or add more, you run the script and everything is regenerated.

Atlases are optimized with rectpack, also you can add some rules to transform your svg files on the fly.

This is the first version (it can have bugs), I am using it in a Cmake project with add_custom_command(...) and everything is done by the build system, so my icons are just svg files in the source tree and they are directly usable in my code.

Example:


#include "atlas_cells.hpp"

// ....

auto bawr = your_own_texture_loader(icons::data::DATA, icons::data::SIZE);

// ...

        if (bawr)
        {
            if (ImGui::Begin("BAWR Icons")) 
            {
                ImVec2 sz32{32,32};
                ImGui::Image(*bawr, sz32, icons::sz32::fileExport.uv0, icons::sz32::fileExport.uv1);
                ImGui::Image(*bawr, sz32, icons::sz32::eye.uv0, icons::sz32::eye.uv1);
                ImGui::Image(*bawr, sz32, icons::sz32::layers.uv0, icons::sz32::layers.uv1);

                ImVec2 sz16{16,16};
                ImGui::Image(*bawr, sz16, icons::sz16::fileExport.uv0, icons::sz16::fileExport.uv1);
                ImGui::Image(*bawr, sz16, icons::sz16::eye.uv0, icons::sz16::eye.uv1);
                ImGui::Image(*bawr, sz16, icons::sz16::layers.uv0, icons::sz16::layers.uv1);
            }
            ImGui::End();        
        }

screenshot_21


// Or using the generate icon font

#include "my-icons_codes.hpp"
#include "my-icons_loader.hpp"

// ...
        // Load your text fonts
        // .....

        // Load the icon font:
        ImFontConfig cfg;
        cfg.MergeMode = true;
        cfg.PixelSnapH = true;
        icons::Font::Load(ImGui::GetIO(), 32, &cfg);

// ...

        if (ImGui::Begin("BAWR Icon Font")) 
        {
            ImGui::Text("This is text with an icon %s ...", my_icons::folderOpen);
        }
        ImGui::End();        

And the best: it is free, I hope it can be useful for you.

https://github.com/mnesarco/bawr

Cheers, Frank.

Jaysmito101 commented 3 years ago

Procedural Terrain Generation And Shading Tool With Node Editor, Shader Editor, Skybox, Lua Scripting, ,...

GITHUB LINK : https://github.com/Jaysmito101/TerraGen3D

Screenshot (0)

Screenshot (1)

Screenshot (2)

Edit: This is pretty old and screenshots are broken latest version here: https://github.com/ocornut/imgui/issues/4451#issuecomment-1085988174

duddel commented 2 years ago

I made a prototype "Skybox Composing Tool": https://didaduddel.itch.io/skytool Not the fanciest GUI, yet. But Dear ImGui enabled me to kick-start this project with low GUI-effort!

Example assets made by Kenney.

G9YTgT

gargakshit commented 2 years ago

I made a Chip-8 interpreter that has a built in machine state inspector and debugger.

Repo: https://github.com/gargakshit/chip-8

Screenshot of the chip-8 interpreter

SadKwitty commented 2 years ago

image

Not mine but uses custom skinned ImGui

796F commented 2 years ago

image

Not mine but uses custom skinned ImGui

any sauce available? would love to use sliders like that.

Jaysmito101 commented 2 years ago

image Not mine but uses custom skinned ImGui

any sauce available? would love to use sliders like that.

I guess no as this is a paid software https://neverlose.cc/product?type=csgo

martinpetkovski commented 2 years ago

image

NST is a nonlinear narrative editor completely done with the stock ImGui docking branch / community widgets. Here's the official website and the Steam page.

ocornut commented 2 years ago

Wow this is amazing looking! I had a wip branch with gradients which I never got around to finish, namely standardizing a new system for specifying colors, this is highly motivating to get back on finishing that work.

What’s interesting is that most (not all) of whats visible in that screenshot is down to creating one helper to draw a custom button (using eg the shading function). I wonder if we should promote that use case early on before it is formalized in the style system.

martinpetkovski commented 2 years ago

Wow this is amazing looking! I had a wip branch with gradients which I never got around to finish, namely standardizing a new system for specifying colors, this is highly motivating to get back on finishing that work.

Thanks!

What’s interesting is that most (not all) of whats visible in that screenshot is down to creating one helper to draw a custom button (using eg the shading function). I wonder if we should promote that use case early on before it is formalized in the style system.

Exactly! I copied a bunch of functions (not only the button ones), made them take two colors instead of one, and then I pass them onto the correct vertices when drawing. I also made wrapper functions that take a single color (from the theme) and just interpolate based on the button state (flipped gradient on pressed/released). The code is a mess atm, it doesn't integrate well with the rest of ImGui, but I can share my findings on how I made it usable for me. Is there a thread for this somewhere?

ocornut commented 2 years ago

I’ll create a thread on monday with some of the things I’ve got already and will pull you in.

The 2018 proof of concept was: https://user-images.githubusercontent.com/8225057/44239854-40c71c80-a170-11e8-82fd-f355ecaaf60d.PNG

ggerganov commented 2 years ago

Recently, I needed to make a web-page that allows to interactively explore a tree with a few thousand nodes. I tried various Javascript libraries for rendering hierarchy trees, but nothing was able render the entire tree smoothly enough.

Finally, I decided to make the page using Dear ImGui (OpenGL3 + SDL) and port it to WASM with Emscripten. This is the result:

explorer

With this stack, the same app runs both as an executable and also as a web-page. All browsers and devices that I have access to are able to render the page smoothly, without any issues. The source code is mostly in this file - very quick and dirty imlpementation.

Raais commented 2 years ago

I made this tool to design ImGui layouts and generate code in real-time. It's made mainly for beginners and people who just want to try out ImGui for fun, but also maybe for experienced devs to make their life easier?

1

2

ocornut commented 2 years ago

From "Hearts of Iron IV" dev blog https://devtrackers.gg/heartsofiron/p/67fbd64f-dev-diary-a-tech-lead-s-life

c67d7d70979b6153484d9033ba62c3d843f62130 f6abd759c74dc72140e280c463e948e2d6465768

From a course on complex network (university of valencia) https://sites.google.com/site/introcomplexnetworks/ FDVEcxRWQAAg5XF

Voxel Editor https://github.com/mgerhardy/engine/releases FC5AkAlXMAIBCtJ

athanggupte commented 2 years ago

I’ll create a thread on monday with some of the things I’ve got already and will pull you in. The 2018 proof of concept was: https://user-images.githubusercontent.com/8225057/44239854-40c71c80-a170-11e8-82fd-f355ecaaf60d.PNG

Was this thread created? If yes, please share the link here. It would be incredibly helpful as I am looking for a way to implement this kind of UI style in my project. Thank you

aiekick commented 2 years ago

NoodlesPlate 0.5.89 is out.

Some big refactor and improvment of the UI (Using Dear Imgui 1.85 WIP Docking and Viewport) And Many more new Features => Quick Demo Twitter Video

NoodlesPlate_Msvc_x64_N69aImL27C

NoodlesPlate_Msvc_x64_wPe36WwlZX

ncatlin commented 2 years ago

rgat 0.6.1 is a software reverse engineering tool for generating and visualising instruction traces

imgui_gallery rgat imgui_example_gif

It uses ImGui via ImGui.NET and I've really enjoyed how easy it makes it to create custom widgets

PathogenDavid commented 2 years ago

Was this thread created?

@xdevapps It wasn't but now it has been: https://github.com/ocornut/imgui/issues/4722

aloneguid commented 2 years ago

Browser Tamer is a Windows desktop utility to automate browser selection, ImGui and C++20.

one

chrxh commented 2 years ago

alien is a CUDA-based artificial life simulation program.

Screenshot

Demo video: https://www.youtube.com/watch?v=tuh7HAc08-I ImGui was such a help for me to build a better GUI in a short time.

jkunstwald commented 2 years ago

Custom UI bits and pieces for a renderer/editor:

screen1 screen2 screen3

0lru commented 2 years ago

This is a Skia-integration into an ImGui-based framework. Below is an example that displays a synthetic image with a size of 38800x3660 and an animated figure on top of it, plus some "native" buttons of course. I'm heavily using skia-python-bindings. It's more of a tech demo than eye candy, but I hope you get it.

"Demo" source "Widget" source

img

Currently trying a custom matplotlib-backend-in-python-skia-in-imgui with that: matplotlib

Layered rendering (render to texture during the imgui-traversal, then add the color buffer via DC.AddImage): icons

WasserEsser commented 2 years ago

It's nothing new that Riot Games uses ImGui for their testing and debugging, but there is a screenshot in this article of them using ImGui in testing TFT: https://www.upcomer.com/the-three-innovators-how-the-tft-live-balance-team-built-patch-11-24/ It's the background image for the header of the article, not fully visible on mobile.

codecnotsupported commented 2 years ago

https://github.com/ocornut/imgui/issues/4451#issuecomment-989791709 For mobile users: image-14

phkehl commented 2 years ago

I've posted this (at a much earlier stage) before, but the code is now on https://github.com/phkehl/ubloxcfg/tree/master/cfggui This is u-blox generation 9 positioning (GNSS) receiver control and analysis tool. I will try to find a good example logfile that you can play in case you don't have a GNSS receiver available. It's Linux only (too many GCC and GNU libc things are used. And I don't have Windoze anyways.. :-) screenshot3

aiekick commented 2 years ago

CADRays software of OpenCascade are using ImGui (Docking) and ImGuizmo video : https://www.youtube.com/watch?v=eu_dMMQAhd0

image

hnOsmium0001 commented 2 years ago

https://github.com/hnOsmium0001/imgui-command-palette is a Sublime Text/VSCode style command palette library implemented using C++17 standard library and ImGui. (see the README for more information)

mamoniem commented 2 years ago

Mirage Engine (Vulkan/C++) with ImGuizmo extension and a modified version of the super pretty Cherry theme

2021-11-21_MirageONE_Screenshot_2021_11_22_04_43_33 5346537_@2x

Mirage_cars_porsche911 copy

slajerek commented 2 years ago

Retro Debugger has been released today! This is retro computers APIs host for debugging (but not only!), currently supporting Commodore 64 (Vice), Atari XL/XE (Atari800), and NES (NestopiaUE)

https://github.com/slajerek/RetroDebugger/

3F197BE4-D0F7-4E10-BB29-EA1CF25DDA4F

dgregorius commented 2 years ago

Custom UI bits and pieces for a renderer/editor:

screen1 screen2 screen3

This looks very nice! Which font are you using?

tksuoran commented 2 years ago

https://github.com/tksuoran/erhe work in progress. Using ImGui 1.86 with docking branch, custom rendering backend rendering all of ImGui with a single draw call. 2022_01_02

dgregorius commented 2 years ago

Looks very nice! What font do you use? What is different in your font rendering backend wrt to the standard backend? My font rendering looks horrible at the moment. I don't know what changed...

tksuoran commented 2 years ago

Thanks 🙂

For good quality font rendering: You really need a good quality font, and treat font texture as linear. Possibly using freetype also helps.

My ImGui backend implementation is at https://github.com/tksuoran/erhe/blob/main/src/erhe/imgui/imgui_impl_erhe.cpp and I am happy to answer any questions.

tksuoran commented 2 years ago

Instead of having viewport in my ImGui window I put ImGui into my viewport: image image

This is very early version, backend needs to be implemented, but I think it should work fine.

durswd commented 2 years ago

A gradient editor which supports color, alpha and intensity.

https://github.com/effekseer/ImGradientHDR

ss

tksuoran commented 2 years ago

I heard you liked ImGui so I put ImGui inside ImGui 2022_01_16

KatPurpy commented 2 years ago

Hello, yes, this is me again with a new monkey game using DearImgui

Link: https://kat-purpy.itch.io/smpcd

PICTURE

vasilenkoalexey commented 2 years ago

The simplest speaker system (vented-box only right now) designer! ImGui + ImPlot.

Boxed

response demo

ocornut commented 2 years ago

This talk shows a few debug tools used by Call of Duty: Shadows of Cold War https://research.activision.com/publications/2021/10/shadows-of-cold-war--a-scalable-approach-to-shadowing

Cold War RT 01

Cold War RT 02

foxnne commented 2 years ago

I built a small pixel art editor for my own use, using Dear ImGui and written in Zig:

Pixi

home.png

animation.png

phkehl commented 2 years ago

glmatrix from xscreensaver as animated background in the app.. because, why not.. :-)

screenshot4

Result of me learning some OpenGL... xscreensaver's glmatrix ported to OpenGL 3.3 core profile.

See https://github.com/phkehl/glmatrix-experiment Screenshot from https://github.com/phkehl/ubloxcfg/blob/master/cfggui/

arabine commented 2 years ago

Because the world needs another Wordle (in french, sorry), here is an ImGui version : Yes, you can make games in ImGui !

Depot : https://github.com/arabine/galaxie-de-mots

ggerganov commented 2 years ago

Because the world needs another Wordle (in french, sorry), here is an ImGui version : Yes, you can make games in ImGui !

Here is another one in Bulgarian, also using Dear ImGui: https://github.com/ggerganov/wordle-bg

aiekick commented 2 years ago

ImGui in Monogame is broken :( Unsure if ImGui itself, ImGui.NET, or MonoGame.Imgui:

post an issue if you have an issue, but dont do that on this thread please

hoffstadt commented 2 years ago

Cool little music player made with Dear ImGui (using Python and Dear PyGui).

https://user-images.githubusercontent.com/39973752/153445050-010257e0-7d4b-4c54-ad5b-18ae3c761f2a.mp4

ZotyDev commented 2 years ago

Added a custom BeginDragDropTarget() and AcceptDragDropPayload() to implement this nice in-between line. image