OK here is my big announcement. For the past couple years I've been working on a rapid prototyping and development platform for real time rendering.
TL;DR - use nodes in a node graph to string together compute shaders, ray gen shaders, draw calls, etc. View it in a viewer that supports hot reloading. When you are done, generate code that would pass a code review. (Currently only DX12 code gen is public. More coming in future!)
https://github.com/electronicarts/gigi
GitHub - electronicarts/gigi: A framework for rapid prototyping and development of real-time rendering techniques.

A framework for rapid prototyping and development of real-time rendering techniques. - electronicarts/gigi

GitHub
Also - super obvious from the screenshots I'm sure, but dear imgui essentially made this possible. I wouldn't have been able to do this all in a reasonable time frame otherwise.
Thank you @ocornut . Also thanks for the recent article about dear imgui development. I feel way more prepared for what to do if Gigi gets popular.
@demofox Congrats on the release! Glad that dear imgui can be a bit of a help there!
@ocornut as usual, thanks to you for making UI a delight 😀
@demofox Watching through your wonderful tutorial video over lunch (nice work on that too), this looks fantastic Alan, congratulations!
@longbool thank you! Here's hoping it isn't just framework #N+1 and people actually like it and find it useful!
@demofox congratulations! Looking awesome!!
@demofox congrats on getting it out the door! It really is useful. I'm so glad I can use it for personal stuff now!
@steadmanticore Thanks Andrew. I can't wait til we get those videos out. I think people are going to really dig yours.
@demofox looks like a wish come true! If I’m ever using windows again I can see myself getting lost in it haha.
@photex the plan (not sure when) is to add vulkan generation, and get the viewer (interpreter) able to run vulkan as well, then hopefully it should be able to be mac and linux too. But yeah, not here today unfortunately!
A driving force for this though is that a surprising amount of ML researchers use mac and linux, so who knows, maybe that'll help it happen sooner.
@demofox it is what it is. Work and life just happen to have me working on Linux currently and I gave my personal laptop to my son earlier this year which is mostly being used to play Elden Ring at this point haha.
But yeah, our entire ML and perception teams are basically Mac users with one or two using Ubuntu. Everyone else is on one Linux or another with the exception of some management folks who were born and will die in Office 365.
@demofox so one of the things that bothers me immensely about AI code assistants is just how off the mark they are. (Typing isn’t my problem, it’s designing and modeling).
If you look at something like simulink (despite its many problematic aspects), it lets you build models for complex systems and then generate code or firmware and visualize things. This is what I’m picturing here except for rendering pipelines.
Something that is domain specific and is a toolbox to let you design things a rung up the ladder and plugs into a broader codebase etc.
It’s really really exciting! I hope it catches on.
@photex agreed and I hope so too.
@demofox Looks awesome! I just watched the tutorial, great stuff!
I feel it would have saved me so much time prototyping my simple particles system mesh shader. (I had to write the whole vulkan thing) Question, does it support mesh shaders?
@mzyanide yeah it supports mesh shaders :)
Check out Techniques/UnitTests/MeshShaders/ for examples
@demofox Noice! Gonna take a look
@mzyanide btw I just put together what particle system you meant. I was looking at that earlier thinking "wow, wtf that is a lot of particles"
@demofox Haha! Thanks! Well, the power of spawning geometry and pushing it straight to the rasterizer.
@demofox this looks great, congrats! Ever since much simpler times of Rendermonkey, I was wondering why a tool in a similar spirit does not exist for modern era. Look like you did just that!
@aras so true! What's strange is I think everyone benefits by things being better and easier (whatever shape that looks like ultimately) but it doesn't make sense for any individual company to invest in it? My pov. Research groups with freedom enough ftw I guess?
@demofox woah, awesome!!! I've been wanting there to be something like this for ages!
@demofox Looks amazing!
Finally I can study and play around with rendering techniques, without all the hassle involved in setting up a test environment/project. Thank you!
@matias yes!! So much this. (I say this as a fellow user and gfx dev person hehe)
@demofox You'd be shocked to know how many times I've wanted to try make something, and then I lost my motivation when I couldn't decide on a nice environment for doing it in (another OpenGL/Vulkan C++ project from scratch? Unity? Or, God forbid, try to do it in that chaotic game engine project I started on ages ago?). So this is a much-needed tool!
@demofox Very nice. This is what FX Composer should have been!
@castano @demofox yeah, it's filling a niche that many of us needed and wanted to see filled! Abstracting all the annoyances distracting us from the "real" problems when prototyping new ideas. I will definitely play with it. :)
Btw., is the installer expected to default to "C:\Program Files (x86)\..." despite the binaries being 64 bits?
@BartWronski @castano I use the nullsoft installer and $PROGRAMFILES ends up with that. I need to check the docs to see if there's another token I should be using.
Btw Bart, the viewer is python scriptable (change parameters, read/write gpu resources, drive execution), and gigi is deterministic by default. We used it in the FAST paper for data and image gathering, and it was an excellent experience.
@BartWronski @castano oh and there's a differentiable slang demo in the unit tests (UnitTests/Compute/SlangAutoDiff.py).
We have an internal Gigi jam video coming out that has a better example, but differentiable slang is pretty awesome.
@demofox @BartWronski @castano Ah! I think you'll want to use $PROGRAMFILES64 instead of $PROGRAMFILES in NSIS. With $PROGRAMFILES, I think you'd have to include x64.nsh.
@demofox congrats, this is awesome! The codegen part in particular will be so, so helpful when experimenting and teaching!
@jesta88 @demofox Do you plan to ship this with projects demonstrating typical rendering techniques and shaders? Or to have an associated repo gathering such examples? That would be an awesome learning resource.
@oparisy @jesta88 some techniques but all that would be a lot of work. Hopefully other people will start making things like that and sharing them.
It would be great if we could have tutorials like the old days again (E.g. nehe) not having to spend a month getting to the first triangle!
@demofox @jesta88 sure, I was thinking along the line of a collaborative effort. "Prepare the repo and they will come" (hopefully)
@jesta88 @demofox is there a stable serialized form for the graph that could be used as input to code generators to other engines and platforms? Also, is this bare metal (DirectX, Vulcan level effects), or can it be used to write shaders integrable into engines (pending the availability of the generators described above)?
@oparisy @jesta88 there isn't a serialized output of the flattened graph, that'd be a good idea, I'll add that to the todos.
DX12 is the only public code generator at the moment but internally we have UE5 and frostbite code generators too that support ~90% of the features.
Webgpu is also something we'd like to get done. Being able to share a URL to arbitrary render techniques would be really nice.
@demofox this is awesome, I may very well use this instead of rolling my own
@1st_C_Lord that may be the most sincere compliment one programmer can give to another 😂.
Cool deal. Hit me back with feedback etc if you have any after giving it a try.
@demofox congrats on the release Alan! It's awesome to see Gigi finally made open source.