ocornut / imgui

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

Gallery: Post your screenshots / code here (PART 16) #5886

Open ocornut opened 1 year ago

ocornut commented 1 year ago

This is Part 16, 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!

VadimBoev commented 1 year ago

I posted the work of ImGui v1.88 in Google play, made on pure NDK without Java. I was wondering if Google would only skip the NDK, and it worked! The application is aimed at arm64-v8a architecture processors, but it also works fine on armeabi-v7a! I think I'll share the code and instructions at some time. https://play.google.com/store/apps/details?id=com.imgui.app

fromasmtodisasm commented 1 year ago

I posted the work of ImGui v1.88 in Google play, made on pure NDK without Java. I was wondering if Google would only skip the NDK, and it worked! The application is aimed at arm64-v8a architecture processors, but it also works fine on armeabi-v7a! I think I'll share the code and instructions at some time. https://play.google.com/store/apps/details?id=com.imgui.app

Oh man, it would be awesome if you could share the code, because google has done everything to make it difficult to adapt the code to android.

kem0x commented 1 year ago

I know this is not much but this really helped me a lot so it might as well help someone here ^^

ImTween

Published it here.

ashifolfi commented 1 year ago

image

UPDATE: I exposed some components to Lua and now you can actually use it in scripts

managed to get ImGui running inside of Sonic Robo Blast 2 and used it to display some performance stats. So now we have ImGui running on the Doom Engine in some form.

that's pretty much it right now but I plan to use this setup heavily for all sorts of things. Will probably post some more screenshots when I have more things setup but I thought I'd share it anyways as it's pretty neat.

thefoxcam commented 1 year ago

viewport timeline WIP open source layer-based compositor with a focus on bitmap editing for 2D motion design work, basically a combination of After Effects and Photoshop. ImGui's paradigm has been invaluable to my learning journey-- gotta thank Omar and all the contributors.

ashifolfi commented 1 year ago

oh also I don't think I've shared this here before but I'm also helping out with the development of Chira Engine which also uses ImGui! (apologies for posting so soon after my last one I wanted to share this one too before I forgot)

image

ocornut commented 1 year ago

NAP Framework by https://nap-labs.tech/ https://www.napframework.com

01-02-NAP-screen 01-01-NAP-screen

moebiussurfing commented 1 year ago

Not mine, but I just found that superb audio GUI. Sorry if not, but I think that it is ImGui, I am not 100% sure... there are many parts/apps: image https://sol-hsa.itch.io/sassy#download https://kx.studio/News.php?page

nitz commented 1 year ago

Leave it to me to feature creep the heck out of what should be a simple thing!

I've added a whole heap of customization options to imgui_toggle, A quick preview:

imgui_toggle preview

As usual, source is here: :octocat: cmdwtf/imgui_toggle (0BSD licensed)

tsl0922 commented 1 year ago

Command Palette built with imgui:

source: tsl0922/ImPlay

PathogenDavid commented 1 year ago

Found in the wild, Portal with RTX features a familiar face:

Screenshot of Portal with RTX showing Dear ImGui developer menu

RiffyDiffy commented 1 year ago

Not mine, but I just found that superb audio GUI. Sorry if not, but I think that it is ImGui, I am not 100% sure... there are many parts/apps: image https://sol-hsa.itch.io/sassy#download https://kx.studio/News.php?page

Aether (The reverb plugin shown in the screenshot) doesn't use ImGui for its GUI, but the DISTRHO Ildaeil mini-plugin host uses it for controls.

time-killer-games commented 1 year ago

filedialogs

ImGui File Dialogs - CLI and Client Library by Samuel Venable.


Based on ImFileDialog by dfranx, with many bugs/crashes fixed and overall improvements. The 'Quick Access' sidebar actually remembers what favorites were previously saved to it from previous runs of your application now, by saving the settings to a text file in a hidden configuration subfolder of your home folder. Allows for full localization among many other good things you'll find useful. Most of the dialog is customizable via environment variables. Uses system icon theme.


spritetool

3D-2D Sprite Tool for GameMaker Studio 2 by YoYoGames Ltd.


This tool makes gathering sprite images from 3D models significantly easier, allowing you to get your vision into GameMaker faster. This is the first version of the tool and the start of our new foray into the third dimension.

Andrej123456789 commented 1 year ago

image Termi, a terminal

Last time I posted a picture of Termi (#5243) Termi didn't have commands in .DLL or .so file NOR GUI models. GUI models today in third stable version are mostly just JSON entry but commands are fully finished with support of loading any command built by anyone using any programming language that can be compiled to .DLL file or .so file and can call functions in .DLL or .so files

Merry Christmas btw to entire Dear ImGui team and everyone else

slajerek commented 1 year ago

https://github.com/slajerek/RetroDebugger

Thanks a lot to @ocornut for making this happen!

320567252_1356347071841664_4581552724441969234_n 320563051_1164221430893861_6931154351
![320603001_1176403213019773_6193949470130406182_n](https://user-images.githubusercontent.com/1021783/209490365-baea4f75-54e1-415a-9041-e71d933e5e89.jpeg)
716993655_n 320603001_1176403213019773_6193949470130406182_n

ypujante commented 1 year ago

RE Edit, a free and open source WYSIWYG editor for the UI of a Rack Extension

Dark Style

RE Edit - Dark

Light Style

RE Edit - Light

elias-plank commented 1 year ago

Application for controlling a custom GoTo-AltAz-Mount for my telescope

Here is a preview of what the user interface of my application looks like. It uses an OpenGL backend, and C++. Don't get distracted by the weird descriptions on the individual targets, I am still parsing them wrong.

targets

Each target is selectable, and the following modal is displayed when a target is selected:

details

graph

And yes, there is also a dark mode:

dark-mode

nitz commented 1 year ago

The recently release tool SpriteMancer by CodeManu makes use of our favorite library, complete with an @ocornut shoutout!

image

image

aiekick commented 1 year ago

At job, I needed a tool for display Numerical Signal based logs to graph curve, for easy analyze.

The tool is called LogToGraph

So generic, since the parsing of a log file is done by a lua script. so easy modifable by a user.

In more than Dear ImGui, Thanks to ImPlot for his incredible graph possibilites

Quick demo : (here with a profiler log of my soft NoodlesPlate of a MandelBulb shader) LogToGraph_Msvc_x64_ynHVEfnFss

Jacckii commented 1 year ago

My practical part of my thesis called "Demonstration of Signal digitization". It uses dear ImGui and ImPlot. It has a Web assembly version that is hosted on GitHub Pages preview https://github.com/Jacckii/SignalDigitization

terrifictable commented 1 year ago

A Shader Editor like glslsandbox im currently working on image

https://github.com/TerrificTable/ShaderEditor

pthom commented 1 year ago

(First of all, sorry for unintentionally flooding the gallery with links when I first informed third party libraries authors, as you can see on top of this message)

image

I'd like to introduce Dear ImGui Bundle, which is a bundle for Dear ImGui, including many libraries from its ecosystem. It enables to easily create ImGui applications in C++ and Python, under Windows, macOS, Linux, and emscripten (and also iOS) It is aimed at application developers, researchers, and beginner developers who want to quickly get started.


Included libraries:

ImGui, ImPlot, Hello ImGui, ImGuizmo, ImGuiColorTextEdit, imgui-node-editor, imgui-knobs, ImFileDialog, portable-file-dialogs, imgui_md, imspinner, imgui_toggle, ImmVision, imgui_tex_inspect, imgui-command-palette

Announcements:


Some highlights with screenshots below:

Integrated documentation

image

Demo code viewer

image

Lots of widgets

image

ImPlot in jupyter notebook!

image

This list of screenshots is very partial, and there are lots of other features provided by the included libraries. Thanks to their authors!

ahmidou commented 1 year ago

MaterialX graph editor is using imgui 20230127_191753.jpghttps://twitter.com/SheriffStone/status/1619095627287396357?t=tenVRtU4cM4DNpk1FeLj2g&s=19

pers0na2dev commented 1 year ago

preview: https://imgur.com/InEs1WV

No-code UI creating software for ImGui. Create an interface for your application with the convenience of Figma and the functionality of Photoshop.

https://github.com/pearleascent/imgui-editor

3r4y commented 1 year ago

image

Blurry effect example for imgui.. I wanted to share one as it's not really a clear example, thanks.

hilgenberg commented 1 year ago

From a little Android puzzle game I wrote. Was a bit tricky to get the touch events to work properly (mouse up and then moving away - to get rid of the hover effects - has to be done in two consecutive frames) at first but now it all works really well - Dear Imgui is an absolute pleasure to work with! :-)

RuiVarela commented 1 year ago

https://github.com/RuiVarela/Senos

Senos is sound exploration tool from a developer point of view. It is very lightweight, can be used as a toy or a minimal song composer.

Play Setup Instruments Sequencer Chainer
Play Instruments Sequencer Chainer
qiutang98 commented 1 year ago

https://github.com/qiutang98/flower

I love imgui, just need to write some simple code then i can get a beautiful professional ui layout. With imgui‘s help, i can start to write my custom engine what i want to do a long time ago.

Snipaste_2023-02-06_10-39-57

Daandelange commented 1 year ago

I came across this which appears to be some well customised imgui : I guess the timeline is something made with openFrameworks. image https://vimeo.com/426350419 // https://localprojects.com/work/corporate-experience/patterns-of-life/

Madour commented 1 year ago

A toy project I created a while ago to learn ImGui. Very convenient lib, and the customization is also very easy.

image

tksuoran commented 1 year ago

erhe image

JulesFouchy commented 1 year ago

A color-gradient widget for Dear ImGui Animation It is an essential part of the generative-art software I am currently writing!

ocornut commented 1 year ago

Spotted on the web

Rat GUI The most convenient simulation tool for magnet engineers https://rat-gui.ch/index.html image

(also in licences for Final Fantasy X/X-2 HD remake (but no screen) https://finalfantasyxhd.square-enix-games.com/de-de/license)

tksuoran commented 1 year ago

erhe VR test (on Youtube) Watch the video

ChemistAion commented 1 year ago

I work with their amazing tools and the interface framework looks familiar ;) https://aaronia.com/software/rtsa-suite/

picture21_2_full

jonaslindemann commented 1 year ago

Structural Mechanics software ObjectiveFrame (https://github.com/jonaslindemann/objectiveframe):

2023-02-18 00_44_48-ObjectiveFrame

RiffyDiffy commented 1 year ago

Gardenscapes also uses ImGui, like Homescapes! Shown here is a screenshot of, I think, an animation manager? mpv-shot0002 Video link: https://youtu.be/qgGaXvZLPYw?t=11

ocornut commented 1 year ago

OpenSim Creator https://github.com/ComputationalBiomechanicsLab/opensim-creator OpenSim Creator

Fun thing, Quake 3 re-release using a Dear ImGui underlying logic for in-game menus: image

alektron commented 1 year ago

Having worked on a reasonably big ImGui application over the last two years, one of my biggest gripes has always been popups. While I generally love how quick and easy it is to display a popup, I often had the issue that I am somewhat deep in the call stack and want to show a popup. Usually just a quick message box to let the user confirm an action. While waiting for the confirmation I have to somehow retain some temporary data over several frames so I can continue my work, once the user closes the message box. One could argue that I should not open a popup from somewhere deep inside the callstack anyways but... well theory and practice and in practice it often is just a big nuisance and overcomplicates the code by a lot. Additionally the BeginPopup and OpenPopup functions must be called in the same ID Stack "Layer" which makes things even harder.

Long story short, I needed blocking popups. So blocking popups I implemented. Unfortunately the software I'm working on is proprietary so I can not show any code or get into too much detail. I mainly want to show that if you REALLY want/need blocking popups, like I did, then this could confirm to you that it is absolutely possible. Even if not that easily.

First of all let's see what it looks like. A simple message box: image

A little more 'complex' popup: image

Usage in code looks something like this:

  Popup::BlockingPopup popup("My Popup", nullptr /*Parent window*/, true /*Resizable*/);
  popup.Show(1000, 700);
  while (popup.Begin()) {

    //My content

    Popup::Buttons disable = Popup::Buttons::NONE;
    switch (Popup::DrawButtons(Popup::Buttons::OK | Popup::Buttons::CANCEL, Popup::ButtonAlign::RIGHT, disable))
    {
    case Popup::Buttons::OK:
    {
      // Stuff
      popup.Close();
      break;
    }
    case Popup::Buttons::CANCEL:
    {
      popup.Close();
      break;
    }
    default:
      break;
    }

    if (ImGui::IsKeyPressed(ImGuiKey_Escape))
      popup.Close();

    popup.End();
  }

By writing a wrapper function, classic message boxes can be shown like so:

Popup::BlockingMessageBox("Title", "Content", Popup::Buttons::YES | Popup::Buttons::NO, nullptr /*Parent window*/) == Popup::Buttons::YES

The way this all works is as follows: First of all we wrote a custom ImGui Backend... I know this is kind of a heavy hitter. Most people do not do this since the example backends provided are usually good enough. However for our application we are using a custom platform layer and renderer and our ImGui backend had to work with those either way (long before the Popup requirement even came up).

Why is a custom backend important? Because when showing a popup we create a whole new platform window as well as a whole new ImGui instance. That means ImGuiContext AND Backend. Unfortunately the example backends are not really made to be instanced multiple times in one application. Our backend being a class makes this relatively easy. Although there is some global state in our application so we can reuse parts of the existing backend instance (e.g. already loaded fonts or our renderer) without having to pass them around everywhere we might need a message box.

After creating a new instance, we open the window and enter a new loop. So a loop inside the application's actual main loop. That's how we achieve the 'blocking' part. Inside this loop we can then call ImGui functions as usual.

This method sure has it's limitations and it has quite the overhead, considering that we have to create a new window, ImGuiContext and backend every time. I'm also not that big of a fan of the global state we are using. Then again, the ImGuiContext is also 'just' global state. A little more sophisticated implementation would maybe pool windows/backends for reuse. Currently we don't do that and it saddens me that creating a new window under Windows is a lot slower than the lightning fast ImGui popups but maybe that's just nitpicking. We also can't do the 'greyed out' background for modal popups since that would require tinting the main applications window. That change would only show up in the next frame however and the whole idea here is that we do NOT want to figure out how to keep our state until the next frame.

It might not be the easiest thing to implement but maybe the knowledge alone that it is indeed possible and works pretty well motivates some folks to try the same and maybe even find a way to get similar functionality into 'vanilla' ImGui. Without a big example backend rework I currently do not really see a way.

ocornut commented 1 year ago

There’s a lot to unpack in your message but I have no idea why you are posting this in a Gallery thread instead of opening a new thread. It seems completely off-topic. Would be good if you moved it elsewhere and deleted message here (then i’ll delete mine). Also make sure you know about multi-viewports and modal windows.

ocornut commented 1 year ago

Apologies for the tone of my previous post: to clarify it seemed unclear if your message was to show/share your work (which is the purpose of this thread) or to open a discussion about various issues (which are valid but best posted elsewhere). I do realize that even thought it opens up a few questions it was aimed to be the earlier. My bad. The point if we cannot have those Gallery threads include lengthy back and fort replies.

Additionally the BeginPopup and OpenPopup functions must be called in the same ID Stack "Layer" which makes things even harder.

Indeed it's been a common issue that we aim to solve with using id paths (that are currently used in test engine but NOT in imgui functions yet: see the doc on test engine side to grasp the idea). Note that using GetID() you can compute a unique popup id then use BeginPopupEx(id, ... and your setup will work regardless of ID stack location.

I needed blocking popups. So blocking popups I implemented.

This was ambiguous on first read but I understand you want blocking in the sense of "parent-app-blocking". I am glad you got this working, thought I can't help but think that reworking your main application code and flow to facilitate storing popup-transient data would be nicer and simpler down the line.

That means ImGuiContext AND Backend. Unfortunately the example backends are not really made to be instanced multiple times in one application.

We did rework the backend following #2004 to allow them to work with multiple contexts. I think there are known issues if running in parallel but it doesn't seem the case here? (and was already the use case of #2004). Can you clarify what you think are preventing backends to do that?

dpeter99 commented 1 year ago

Found one in the wild https://mastodon.gamedev.place/@maxim/109978196009122743

Looks like valve is using it for the steam deck Dev kit.

image

ocornut commented 1 year ago

https://mastodon.social/@rustym "Dear ImGui has been just instrumental to creating Astro Duel 2. We’ve built debug menus, inspectors, editors and production tools all atop this incredible open source framework. What an industry gem!" Needle

"Upcoming Slitterhead from Bokeh Game Studio (new studio by Keiichiro Toyama, creator of Silent Hill) also seems to use it, https://youtu.be/zM3M3jTEAZM?t=136 2:16 in the video" Slitterhead

CosminPerRam commented 1 year ago

image

It looks like Counter-Strike 2 (announced at the time of commenting) is using imgui! Video here.

ocornut commented 1 year ago

Thank you @CosminPerRam. I took the liberty to amend your post (it shows as edited) with a slightly different frame taken from the video where more of the text is in focus.

rodan commented 1 year ago

I wanted to try out Dear ImGui, so I wrote a thermal image processing software around it. I really loved every minute, thanks!

the repository is here: https://github.com/rodan/thpp

thpp_realsr_interpolation

the rendering loop is event-driven (without poking ImGui's code) - based on great work done in #2749

ocornut commented 1 year ago

Usage in Halo Infinite From slides "Thinking Like Players: How 'Halo Infinite's' Multiplayer Bots Make Decisions" at GDC 2022 https://www.gdcvault.com/play/1027689/Thinking-Like-Players-How-Halo

halo infinite-02 halo infinite-04

abvadabra commented 1 year ago

In-house AI system, with editor and debugger. Architectured on combination of behaviour trees and hierarhical state machines.

Uses node editor by thedmd, written in java using imgui-java by Spair image image

alexeykarnachev commented 1 year ago

A little 2d sandbox to play with genetic AI training with several fancy features (dynamic light, pseudo 3d materials, game engine-like editor) -- code here

image

Chaojimengnan commented 1 year ago

A video progress bar 2ecdd735-4206-424b-b282-b54e8379e6a8