Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Gallery: Post your screenshots / code here (PART 12) #3488

Open
ocornut opened this issue Sep 23, 2020 · 66 comments
Open

Gallery: Post your screenshots / code here (PART 12) #3488

ocornut opened this issue Sep 23, 2020 · 66 comments
Labels

Comments

@ocornut
Copy link
Owner

ocornut commented Sep 23, 2020

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

@mborgerson
Copy link

I have been using Dear ImGui to develop a simple user interface for xemu, an Original Xbox Emulator. The most interesting pieces of this UI so far are probably the dynamic controller configuration dialog and the "About" dialog, which mix in some OpenGL-rendered elements for custom widgets. I have plans to build on this further, but I'm happy with the interface so far and I highly recommend Dear ImGui for similar projects.

input
other_dialogs

Thank you Dear ImGui developers!

P.S. Along the way I also had to solve file navigation. For this I decided to leverage native file selection interfaces and ended up picking this simple library.

@adriengivry
Copy link

About a year and a half using ImGUI for the Overload 3D Game Engine!

A whole event-based UI module has been built on top of ImGUI:

// Simple window with a button printing "Hello World" when clicked
class MyWindow : PanelWindow
{
public:
    MyWindow()
    {
        auto& button = CreateWidget<OvUI::Widgets::Buttons::Button>("SayHello");
        button->ClickedEvent += []() { Debug.Log("Hello World!"); };
    }
};
// Keeps elementCount up-to-date with the elementCountField
class MyWindow : PanelWindow
{
public:
    MyWindow()
    {
        int elementCount = 0;
        auto& elementCountField = CreateWidget<OvUI::Widgets::InputFields::InputInt>("Element count:");
        auto& elementCountDispatcher = elementCountField.AddPlugin<OvUI::Plugins::DataDispatcher<int>>();
        elementCountDispatcher.RegisterReference(elementCount);
    }
};
// A simple text with a custom contextual menu (On right click)
class MySuperContextualMenu : public OvUI::Plugins::ContextualMenu
{
public:
    MySuperContextualMenu() = default;
    virtual void CreateList()
    {
        auto& open = CreateWidget<OvUI::Widgets::Menu::MenuItem>("Open");
        auto& edit = CreateWidget<OvUI::Widgets::Menu::MenuItem>("Edit");
        auto& properties = CreateWidget<OvUI::Widgets::Menu::MenuItem>("Properties");

        open.ClickedEvent += []() { DoStuff(); };
        edit.ClickedEvent += []() { DoOtherStuff(); };
        properties.ClickedEvent += []() { SoSomething(); };
    }
};

class MyWindow : PanelWindow
{
public:
    MyWindow()
    {
        auto& text = CreateWidget<OvUI::Widgets::Texts::Text>("Right-click me please!");
        text.AddPlugin<MySuperContextualMenu>();
    }
};

Editor UI

image
image

In-game debug UI

image

@tomasiser
Copy link

Hello! A bit over 1 year ago, we finished our student project called Pepr3D for 3D printing. Even though the project is not maintained anymore, I wanted to showcase our usage of ImGui here.

Essentially everything UI related in Pepr3D is using ImGui, even though it was heavily customized. We made a lot of use of functions like PushStyleVar, PushStyleColor, ButtonBehavior, CalcTextSize, RenderTextClipped, etc., which would otherwise take ages to implement ourselves. If anyone is curious, you can have a look into our /src/ui folder for source codes, especially SidePane and Toolbar.

Overall, I was really excited how easy it was to use ImGui and its API to create a completely new user interface that looks exactly as I wanted. It was a really great help that ImGui also implemented advanced functionalities like drag & dropping and color picking, which I used in our color palette management.

pepr3d

Here are a couple of gifs to showcase the UI. :-)

toolbar color_palette

And showcasing the individual tools:

Model import Triangle painter
Model import Triangle painter
Paint bucket Brush
Paint bucket Brush
Text editor Export assistant
Text editor Export assistant

@d3cod3
Copy link

d3cod3 commented Oct 4, 2020

Hello!

here goes a project of mine in current development ( beta stage now ), called Mosaic, a livecoding programming/patching environment for creating real-time audio-visual compositions. It's principally designed for live needs, as can be teaching in class, live performing in an algorave, or running a generative audio-visual installation in a museum.
It aims to empower artists, creative coders, scenographers and other creative technologists in their creative workflow.
It's a FLOSS, Free/Libre and Open Source Software with multi-platform support, and it's written in C++, offering high performance.

His GUI ( node canvas, nodes, links, menus and everything ) is completely builded with the amazing Dear ImGui, coupled with openFrameworks for texture drawing.

Mosaic is shipped with an internal code editor, non-blocking system dialogs, a programmable non-linear interactive timeline, an included patch video exporter with subtitler for easy tutorial creation, lua/python/glsl/bash live-coding and pure data live-patching capability, a good selection of audio synthesis modules, multiple fullscreen output windows capabilities ( as many as your system can have ) with an independent warping for each window, a map-map style integrated mapping module, and an easy to use osc sending/receiving objects/nodes for network communication.

The idea behind Mosaic is to facilitate human-machine communication, to amplify imagination and to speed up the creative workflow, without sacrificing the spectrum of possibilities. To achieve this, it bundles together various creative-coding tools, acting as an interactive bridge between them.
It includes a collection of audio-visual objects that can be easily connected together using a nodal-based graphical interface, defining a custom dataflow.

Mosaic is mainly based on two frameworks : OpenFrameworks and ImGui. OpenFrameworks is an open source C++ toolkit for creative coding.
Dear ImGui is a bloat-free graphical user interface for C++ with minimal dependencies.
Together with the latter ones, Mosaic bundles comes with other 3rd party libraries such as PureData Vanilla and numerous ofxAddons.
It also embeds various programing languages for live-coding purposes : Lua with OF-bindings, Python 2.7 scripting interpreter, live compiling of GLSL shaders and editing/execute Bash scripts (macOS & linux) capabilities.

Mosaic is extendable : you can easily add custom objects.
While this involves writing and compiling code, requiring some C++ knowledge, we aim to make this process as easy as possible. Thus, Mosaic is flexible and devoted to grow over time.
For example, any Openframeworks project can be easily ported to Mosaic Objects, exposing them to the live-patching environment. This way, working with OF becomes way more modular, and you can make run-time adjustments. Possibilities are endless.
Once created, plugins can either be statically compiled into Mosaic, or if you wish, there's also support for dynamically loading them, making it easy to share and distribute your objects with others.

Mosaic is still under development and in Beta release, but has been already successfully used for 2 years at the Fine Arts faculty of the UPV university, Valencia, Spain. It has been deployed in multiple student projects presentations, and in some interactive installation in public cultural spaces.

Today, Mosaic has sufficiently grown to be tested by a wider group of people.

If you're curious, please try out Mosaic and don't hesitate to get in touch.
Mosaic is open to anybody, contributions of any kind are welcome.

Mosaic development team is composed by Emanuele Mazza [https://github.com/d3cod3] Daan de Lange [https://daandelange.com/] and Maria José Martínez de Pisón

More information can be found here:

A small video here and here

And some screenshots here:

29_1979

28_transparent_machines04

LongLiveTheEighties

PD_SquareWaveOscillator_01

audioAnalysisToLuaScript_02

textureGate

mosaicScreenshot_201004

mosaicScreenshot_201004_1

@ocornut
Copy link
Owner Author

ocornut commented Oct 8, 2020

Kanteran: "This is a code-block editor for education using dear imgui"
wmS59CabiP

Joel16: "I'm developing a file manager on the Nintendo Switch which uses Dear ImGui."
2020082417093900-6AFA6CCF17F3A4ECA8335590808C1A1C

@thedmd: " I'm developing more concrete blueprint example for node editor. This one does real job behind the nodes.
It will land on main branch as an example when I decide it is decent enough. You can look at the code right now on https://github.com/thedmd/imgui-node-editor/tree/develop branch. Code is in flux so a lot can change yet."

imgui_blueprint_mro_list

@kudaba "That's pretty much what I have in my node system (users can very easily describe new nodes and graphs in c++ with the graphs able to compile into efficient run-time)"
wordgame

@symfund
Copy link

symfund commented Oct 11, 2020

Screenshot 2020-10-11 093000

Dear ImGUI is so cool that I put imgui into a layered child window.

Say goodbye to MFC, emWin, ucGUI, microWindows, Kivy, Qt, RIP!

Thank you! Dear ImGUI.

@Rel1cx
Copy link

Rel1cx commented Oct 11, 2020

A ffmpeg-based video encoding tool built with imgui.

@jspanchu
Copy link

I set up an initial implementation to render VTK's display frame buffer into an ImGUI window (with ImGui::Image). Nothing fancy, but pretty cool. Now all of VTK's dataset manipulation/visualization capabilities can be realized in a project that uses DearImGUI for its UI. Note: Until now VTK was restricted to QT/MFC.

Supported VTK version >= 9.0.0

Source: Repo

Usage is straightforward for DearImGUI users:

Platform init
renderer backend init
ImGui_ImplVTK_Init() 
ImGui_ImplVTK_AddActor(..)
while(!terminate)
{
  ImGui::NewFrame()
  ...
  ImGui_ImplVTK_Render()
  ImGui::Render()
  ImGui_ImplXXXX_RenderDrawData(ImGui::GetDrawData());
}

Demo:
vtkImGuiDemo
VTK forums link

@asbott
Copy link

asbott commented Oct 15, 2020

A little hobby project i've been working on:

apparatusinterface

https://github.com/asbott/Apparatus

@gboisse
Copy link

gboisse commented Oct 19, 2020

Visual node graph + creative coding with ImGui :)

skull_anim

@unknowndevice
Copy link

unknowndevice commented Oct 22, 2020

pokemon sword and shield. seen here. more in this thread

@inanevin
Copy link

I am using an in-house modified version of dear imgui for my custom game engine!
Lina Engine

linass

@FredrikAleksander
Copy link

bilde

A fully functional Terminal Emulator widget for ImGui

@igrekus
Copy link

igrekus commented Oct 29, 2020

A GUI control tool for a lab RF device QA rig:

image

Plots are rendered on a Matplotlib surface with ImGUI datascience.

Being designed to work over an independent GL scene, Dear ImGui does not fit this kind of use case too well, but it's so easy to use and looks very cool =)

@ghost
Copy link

ghost commented Nov 1, 2020

Memory watcher for my GBA emulator
It's very WIP and I'm trying to make it look better :P
The reason for me making it from scratch is that the memory watcher extension for ImGui dies when feeding him with address spaces that are larger than 24 bit (IIRC, at least that's what has happened to me and some other emulator developers), and since the GBA has an address space that ranges from 28 to 32 bit, here I am :3
memory_watcher

@aiekick
Copy link
Contributor

aiekick commented Jan 3, 2021

New feature on ImGuiFileDialog

the Ability to display a dialog to prevent user from overwriting an existing file

ConfirmToOverWrite

@aiekick
Copy link
Contributor

aiekick commented Jan 4, 2021

New feature in ImGuiFontStudio

The ability to generate a "Card" of the font. Who will show you Glyph and Corresponding Label.

So, when you not have in mind, the visual of an icon in your header file, no need to reopen ImGuiFontStudio,
you can just check the "Card" file

see this tweet for a video : https://twitter.com/aiekick/status/1346005440954585088

and here a sample Card of the whole font icon Forkawesome
forkawesome_webfont

@josemorval
Copy link

Here a little VFX playground I'm working as side project in winter break. ImGui is awesome.

playgroundvfx

@Vairn
Copy link

Vairn commented Jan 5, 2021

During the lockdown we had for months in Melbourne, I started to rewrite the entire GUI portion of the custom software we use to Create Interactive Installations. Not a small task, but it brings a breath of fresh air to our software, and moves the software to have a multi-platform Editor Environment, instead of being stuck to windows.
PS_IMGUI

@mgerhardy
Copy link

I'm still in the process to migration from turbobadger to dear imgui - but this is a screenshot of my voxel editor using dear imgui.

Bildschirmfoto von 2021-01-06 16-19-03
(https://twitter.com/MartinGerhardy/status/1346839512694071299)

Find the code at https://github.com/mgerhardy/engine/tree/master/src/tools/voxedit - it's using the docking branch and a first attempt to auto-configure the workspace.

@drunderscore
Copy link

Soprano - Build and visualize Minecraft chat components

ea2BsqYTC7

Minecraft has a system of "chat components", which is essentially used to serialize rich-text into JSON, in order to network it to clients to render. All the more detailed aspects of this are out of the scope of this thread, but the dear imgui editor certainly isn't.

https://www.youtube.com/watch?v=fwx7Q3TCccU
This shows the use of a live editor, where the changes you make are displayed directly to you. This helps facilitate the manual creation of these chat components, which can be used for a multitude of reasons.

Another interesting point to discuss is the window -- it's a dear imgui decorated window, with no visible platform window. I spoke about wanting to do this in #3680, and this was the result of the suggestions from @\rokups. Truly a very weird use-case, but I personally believe it came out looking incredible.

The only problem currently is text wrapping being incorrect. TextWrapped is called for each component (each JSON object with the text property), and ImGui::SameLine(0.0f, 0.0f) is used to keep all the text next to each other. However, if the text wraps, it will wrap under the start of that individual TextWrapped call, instead of the very first one -- which is the parent. I'm not sure if dear imgui has a simple solution to let me specify text wrapping coordinates/offsets...

Broken text wrapping

zaw8NKsISy

@epezent
Copy link

epezent commented Jan 12, 2021

A quick little toy I put together while working on some DSP algorithms. Using ImGui and ImPlot.

filter_toy

@mnbuxtc
Copy link

mnbuxtc commented Jan 15, 2021

Hello again guys, i already posted there few months back (#2847 (comment)) and now i want to share my new gui with you
image
image
Its a bit harder than previous one. For example, there is blur in it

UPD: here is small intro https://vk.com/video-182026152_456239365

@aiekick
Copy link
Contributor

aiekick commented Jan 16, 2021

A compact Slider made for ImGuiFontStudio.
my goal was to have the active zone of the slider more large for better precision with mouse
so i decided to put label inside the active zone :) and finaly i find him elegant too

Er8sbOQSOt

@aiekick
Copy link
Contributor

aiekick commented Jan 19, 2021

New feature to come inImGuiFontStudio (WIP)

The ability to see how a glyph will be displayed with a targeted font (some time glyphs are not aligned with text)
The ability to adjust glyph by glyph for a test font and test string
The ability to generate the font with theses adjustement.

a new pane for preview the font result was added with a specific behavior for select glyph to insert in a test string

quick video of the behavior

ImGuiFontStudio_Msvc_x64_xtXkM9N3Hn

@aiekick
Copy link
Contributor

aiekick commented Jan 21, 2021

Come back of Colored Font Support with FreeType Rasterize. just for display for the moment.
next task will be to generate the font and keep the colors :)

ImGuiFontStudio_Msvc_x64_UmKUNaQrAH

@LowSpecCorgi
Copy link

Hello again guys, i already posted there few months back (#2847 (comment)) and now i want to share my new gui with you
image
image
Its a bit harder than previous one. For example, there is blur in it

UPD: here is small intro https://vk.com/video-182026152_456239365

I thought using ImGui for cheats in kinda ..disallowed?

@ocornut
Copy link
Owner Author

ocornut commented Jan 22, 2021 via email

@MoneyWasted
Copy link

I think we all know that most of imguis use is in cheats or other types of game modifications. Not saying all uses are used that way as there are people using it for other things.

It's nice to have all your options in a menu that can be pulled up in the game rather then using key binds or a console window.

At least ocornut is understanding and allows us to use imgui in our menus and for that I thank you.

@LowSpecCorgi
Copy link

I think we all know that most of imguis use is in cheats or other types of game modifications. Not saying all uses are used that way as there are people using it for other things.

It's nice to have all your options in a menu that can be pulled up in the game rather then using key binds or a console window.

At least ocornut is understanding and allows us to use imgui in our menus and for that I thank you.

Most Imgui uses I've seen are not used for cheats
Though you're the only cheat dev using ImGui, that seems to be quite skilled
The gui looks very nice

@ocornut
Copy link
Owner Author

ocornut commented Jan 23, 2021

This Nintendo Japan jobs page:
https://www.nintendo.co.jp/jobs/keyword/53.html
Shows a screenshot of one of their engine called "Bezel Engine"
bezel engine

alphaTerm financial software http://www.alphaticks.io
EsSBnmdXIAA-9Ec

@phkehl
Copy link

phkehl commented Jan 24, 2021

GNSS receiver configuration and analysis tool (not publicly available at the moment)
screenshot

@ocornut
Copy link
Owner Author

ocornut commented Jan 24, 2021 via email

@encelo
Copy link

encelo commented Jan 25, 2021

ncTiledViewer is a viewer of Tiled maps made with the nCine.
You can find the source code on GitHub and try the web version online.

ncTiledViewer

@doragasu
Copy link

A ffmpeg-based video encoding tool built with imgui.

Nice! I want to build a "classical dialog GUI", similar to this, but all examples I find use the "lots of windows inside the main window" layout. I have looked to this project sources, but I do not understand Go... any other example in C++ on how to achieve this?

@mat-r
Copy link

mat-r commented Feb 2, 2021

I am also interested in an example in C++ to build this type of UI (only one window).

@aiekick
Copy link
Contributor

aiekick commented Feb 2, 2021

you just need to hide the decoration of the window.
but this topic is not made for speak about that kind of things, just for share imgui use,
so please please use discord, github issue or github discussions for ask help

@phoenixcatdog
Copy link

phoenixcatdog commented Mar 27, 2021

Those guys are using Dear imgui:
PlenOctrees for Real-time Rendering of Neural Radiance Fields

@symfund
Copy link

symfund commented Mar 28, 2021

I will port the Dear ImGUI to Cortex-A9MP, using CPU+NEON software rendered OpenGL, for IVI: In-Vehicle Infortainment

@Hoek67
Copy link

Hoek67 commented Mar 29, 2021

Just started to look at IMGui yesterday... and it's exactly what I was after. I was on the verge of looking at building my own before I discovered it.

Others were either full of bloat or had so many dependencies it was crazy.

My game engine was a DX7 one in 2004 and I recently upgraded to DX11 including learning HLSL etc from scratch. After a while I decided to use the DX7 code as a learning experience and start fresh.

The screenshot shows my initial evaluation effort. It actually hooked into my engine with ease as, like advertised the data from ImGui is basically a textured triangle list with clipping and texture breaks.

image

I hope the engine I'm making can be used as an educational tool eventually. Making a 3d rendered space invaders as a proof of concept of which I would supply source code.

Repository owner locked and limited conversation to collaborators Apr 6, 2021
@ocornut
Copy link
Owner Author

ocornut commented Apr 6, 2021

Followup in #3793

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

No branches or pull requests