ocornut / imgui

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

Gallery: Post your screenshots / code here (PART 1) #123

Open ocornut opened 9 years ago

ocornut commented 9 years ago

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


Open thread for posting examples of the way you are using ImGui. e.g. those are some of the example mini applet implemented at the bottom of ImGui::ShowTestWindow() Except we're looking for real world usage! (I have a few things that are unfortunately under NDA at the moment, so user contributions are welcome)

new5

Cthutu commented 8 years ago

How are you doing the tabs? I'm doing something similar but using the Win32 API to implement the tabs so each window is an actual OS window that renders OpenGL.

vinjn commented 8 years ago

@Cthutu I am using the awesome https://github.com/thennequin/ImWindow from @thennequin

Cthutu commented 8 years ago

Thanks!

On Tue, 29 Dec 2015 at 20:59 Vinjn Zhang notifications@github.com wrote:

@Cthutu https://github.com/Cthutu I am using the awesome https://github.com/thennequin/ImWindow from @thennequin https://github.com/thennequin

— Reply to this email directly or view it on GitHub https://github.com/ocornut/imgui/issues/123#issuecomment-167917162.

ocornut commented 8 years ago

So assume the screenshot on his site aren't up to date and he made fancy tabs. It'd be nice if the tabs were merged designed and merged back into core lib.

Cthutu commented 8 years ago

I was thinking the same thing. I think I will stick to my hybrid approach of Win32 handling docking and tabs that contain OpenGL contexts for ImGUI. That way you can drag a window outside the confines of the original docking window.

On Wed, 30 Dec 2015 at 03:39 omar notifications@github.com wrote:

So assume the screenshot on his site aren't up to date and he made fancy tabs. It'd be nice if the tabs were merged designed and merged back into core lib.

— Reply to this email directly or view it on GitHub https://github.com/ocornut/imgui/issues/123#issuecomment-167957980.

ocornut commented 8 years ago

That way you can drag a window outside the confines of the original docking window.

This is exactly what the ImWindow code linked above is doing afaik.

Cthutu commented 8 years ago

Really? It looked like it was doing it in one OpenGL context using ImGUI to do everything. I will look at the source code closer.

On Wed, 30 Dec 2015 at 09:33 omar notifications@github.com wrote:

That way you can drag a window outside the confines of the original docking window.

This is exactly what the ImWindow code linked above is doing afaik.

— Reply to this email directly or view it on GitHub https://github.com/ocornut/imgui/issues/123#issuecomment-168011624.

Cthutu commented 8 years ago

I checked the source code and it only uses a separate window if you break away. The individual tabbed windows under one frame still operate on one Win32 handle.

On Wed, 30 Dec 2015 at 10:29 Matt Davies mattie.davies@gmail.com wrote:

Really? It looked like it was doing it in one OpenGL context using ImGUI to do everything. I will look at the source code closer.

On Wed, 30 Dec 2015 at 09:33 omar notifications@github.com wrote:

That way you can drag a window outside the confines of the original docking window.

This is exactly what the ImWindow code linked above is doing afaik.

— Reply to this email directly or view it on GitHub https://github.com/ocornut/imgui/issues/123#issuecomment-168011624.

hypernewbie commented 8 years ago

Vertex Engine 8, new high-performance hobby project OpenGL 4 engine.

VE8

Thank you for imgui!

nem0 commented 8 years ago

Docking in https://github.com/nem0/lumixengine

dock

simple API

IMGUI_API bool BeginDock(const char* label, bool* opened = nullptr);
IMGUI_API void EndDock();
johanwendin commented 8 years ago

Animation timeline in my sprite editor for current game. (dear ImGui called from Squirrel script)

sprite_editor_halfsize

ocornut commented 8 years ago

Extra from JohanWendin, who is writing a tracker cyohqinw8aajbs7 png large

Something from some paper (forgot exact source) 23936642450_2f6502ff0c_o

emoon commented 8 years ago

That tracker looks sweet! :)

johanwendin commented 8 years ago

Thanks Daniel :)

It was planned as an internal tool for chip music creation. (with some more focus on programable waveforms for the instrument creation than f.e. FT2 provides - think Famitracker rather than Renoise). If I ever get it working for my needs I guess I could throw in XM loading/saving too - or at least XI export :)

A vast majority of people are much better off with f.e. Renoise or OpenMPT instead ^^ (or good old FT2).

emoon commented 8 years ago

@johanwendin I see. Something similar to AHX/HivelyTracker then?

johanwendin commented 8 years ago

@emoon honest, I hadn't heard of them before. hides but looking into Hively now :) (just added custom effect handling to my XM player so "worst" case I can just use that :) )

emoon commented 8 years ago

@johanwendin Ah. Yeah it's "based" of on AHX from Amiga (example here https://www.youtube.com/watch?v=Wxy03dRbApQ) which is also a chiptracker.

r-lyeh-archived commented 8 years ago

Is any of the profilers free-to-use / source available? :)

r-lyeh-archived commented 8 years ago

@nem0 that docking looks sweet! :) care to share the code?

thennequin commented 8 years ago

@r-lyeh He already share it https://github.com/nem0/LumixEngine/blob/master/src/editor/imgui/imgui_dock.inl

nem0 commented 8 years ago

Yeah, more about it #351

dougbinks commented 8 years ago

@r-lyeh I made an imgui backend wrapper for microprofile, you can find it in my enkiTSExamples github repo.

r-lyeh-archived commented 8 years ago

woohoo :+1:

ocornut commented 8 years ago

Some shot from @itamago from https://github.com/ocornut/imgui/pull/511 / https://github.com/ocornut/imgui/issues/513

c17282fe-c511-11e5-8c7d-a78f0aa2052c

c15aec7a-c72d-11e5-8b3f-ff78da2b3834 32a39e7c-c693-11e5-99ca-693834941b30

74f788b6-c51b-11e5-8836-7886a6bdee87

nefarius commented 8 years ago

Greetings!

First of all: thank you so much @ocornut for this incredible piece of software!

I'm currently working on a DirectX hooking library similar to Valves Steam In-game Overlay which sadly is closed-source.

Some working examples:

Half-Life 2 (DX9, 32-Bit)

image

Castlevania: Lords of Shadow – Ultimate Edition (DX9Ex, 32-Bit, Output gets distorted when ImGui is rendered)

image

Left 4 Dead (DX9, 32-Bit)

image

Bioshock 2 (DX10, 32-Bit)

image

Borderlands (DX9, 32-Bit)

image

Borderlands 2 (DX9, 32-Bit)

image

snip

Hopefully I'll get those pesky DX10/11 games to cooperate too :)

ocornut commented 8 years ago

Nice @nefarius The coloring issues in Valve game is due to gamma correction. Depending on where the imgui polygons are rendered I imagine some later pass is applying a gamma curve. You can either move the imgui render in a different pass of the game engine, or counteract the effect of gamma by powering colors by 1/2.2.

Not sure the high amount of screenshots here is really necessary especially since they are big files and some don't even show any of ImGui. Don't hesitate to post details in a separate thread if you figure out how to get those games to render and the answer is related to the demo imgui_impl_xxx code. Most probably the issues are related to where/how you inject the additional render.

nefarius commented 8 years ago

@ocornut Right, sorry for going overboard a bit :) I removed the "empty" ones.

Since my knowledge of DirectX higher than version 9 is hitting its limits I'd really appreciate every hint on how I could get it to work.

I'm injecting the rendering into

depending on the DX version.

jarikomppa commented 8 years ago

ScreenShot Made yet another crappy curve editor kinda thingy. Rather trivial implementation, not horribly user friendly, but seems to do the trick.

Source (and "documentation") at https://github.com/jarikomppa/img2spec/blob/master/src/imgui/imgui_user.inl

Could possibly be a base for a "proper" curve editor, who knows. Consider it public domain. If someone turns that into a better one, I'd naturally be interested in it. =)

ocornut commented 8 years ago

@jarikomppa Cool! Also that sort of code is very useful to me to work on improving the private API. May I suggest including imgui_internal.h so your code doesn't have to be in imgui_user.inl, and easier to share/distribute perhaps.

@haikarainen Thanks, here's hoping you become a millionaire then ;) Colors wise, seen this problem many times, I keep forgetting the exact solution but read two posts above, probably apply a 1/2.2 power curve. If you can confirm what fixes it correctly for you, I should probably add a FAQ for it.

EDIT Another picture from LumixEngine https://github.com/nem0/LumixEngine 3fcf130e-cece-11e5-878b-c9fe24c1b11a

lumix-cropped

perkele1989 commented 8 years ago

@ocornut I actually solved it yesterday just after I posted it.

The problem

Since I have an sRGB backbuffer, anything I render directly to the window is expected to be in sRGB colorspace, however the reference implementations of renderDrawListsFn (found under examples) render in linear space.

The solution

EDIT: Previous solution redacted as misleading, caused by my own confusion with regards to sRGB (sorry!) I fixed it by simply disabling GL_FRAMEBUFFER_SRGB before rendering ImGui, and then enabling it again directly afterwards.

Also that Lumix UI looks incredible, is that still ImGui core functionality?

nem0 commented 8 years ago

@haikarainen Lumix Engine has custom docking, curve editor, node editor, color picker and small change in histogram, everything else is dear imgui. The skin is from #511

perkele1989 commented 8 years ago

@nem0 Thanks man! That skin is amazing, much cleaner for tools development imo. I vote for making it the standard skin in ImGui, if some of you agree I'll create an issue out of it.

EDIT: Are the docking/color picking parts opensource? :)

ocornut commented 8 years ago

There's many things to consider when choosing a skin. That skin rely on changes discussed in #511 and curves + borders are rather expensive in term of polygon count. Also I'm not sure that one works well with transparent windows which are useful in many sort of applications. It can't be default at least probably until bake curved borders into the texture atlas (I would take a serious PR for that). And generally skinning has lots of implications, I want to improve it but it takes time.

The docking is in #351 and the color picker is in #346. The works provided in those thread has been super helpful. (I took over the color picker recently to finish it and fully integrate it within the main distribution but been unbearably busy those past few weeks, will get back on it probably after 22)

Merging color picker is a rather small task. Docking would be a great step but more work to take it from "functional piece of code you can grab" to "api and stored data stable enough, useful for the majority of people". Tho nem0 has done a lot of good work on that already. For now I'd suggest grabbing the piece that nem0 cleaned up.

perkele1989 commented 8 years ago

@ocornut I see, thanks a ton for your hard work :+1:

nefarius commented 8 years ago

Success! Re-creating the render target view before calling ImGui_ImplDX11_NewFrame in IDXGISwapChain::Present did the trick:

image

@ocornut thanks again for your amazing project!

JoNil commented 8 years ago

Hi!

We are building a realtime 360 video stitcher for VR and using dear imgui for our gui :D

oden

ocornut commented 8 years ago

This is Part 1. I am splitting issues to reduce loading times and locked the old ones.

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

Entity-Now commented 2 years ago

从 @Pagghiu 03ddb9dc-19a1-11e5-94b6-e60e5299398e

nice