GLShaderNodeEditor
GLShaderNodeEditor copied to clipboard
Node Editor of OpenGL Shaders
OpenGL Shader Node Editor
![]()
This is an OpenGL shader node editor based on Dear ImGui and ImNodes, which deals with GLSL shaders, including dynamic creation, linking, uniforms setting, and buffers binding in runtime via GUI operations. Basically it covers most of the C++ OpenGL client coding throughout the rendering pipeline.
-
Programs

A program can link multiple shaders for a rendering pipeline. -
Framebuffers

-
Textures

Visualization of OpenGL texture objects. -
Nodes
-
Event Nodes

- On Init
Will be executed once whenever the "start" or "restart" command is sent. - On Frame
Will be executed every frame during "running" state.
- On Init
-
Program Node
- Attributes
- Dispatch Type:
glDrawArray()orglDispatchCompute() - Framebuffer: screen or user created framebuffer
- Draw Mode: 1st param of
glDrawArray() - Size: 3rd param of
glDrawArray()(The 2nd param will always be 0) - Work Group Size X/Y/Z: params of
glDispatchCompute()
- Dispatch Type:

- Node Inputs
- Flow In
- Uniforms
- Uniform Blocks
- Shader Storage Buffers
- Node Outputs
- Flow Out
- Image Uniforms
- Shader Storage Buffers
- Framebuffer Attachments
- Attributes
-
Block Node

Can be either a Uniform Block or a Shader Storage Buffer Block.

Only block pins with same sizes can be linked. -
Texture Node

-
Image Node

- Node Inputs
- Texture Object
- Node Outputs
- Image Object
- Texture Object
- Node Inputs
-
Ping-pong Node

Can process Image Objects or Shader Storage Buffers -
Time Node

-
Mouse Position Node

-
Integration with any OpenGL Project
- You can find a simple example OpenGL application in main.cpp.
Other libraries used:
- GLEW: https://github.com/nigels-com/glew
- GLFW: https://github.com/glfw/glfw
- OpenGL Mathematics: https://github.com/g-truc/glm
- tiny file dialogs: https://sourceforge.net/projects/tinyfiledialogs/
- stb: https://github.com/nothings/stb
- Source Sans: https://github.com/adobe-fonts/source-sans
- Fork Awesome: https://github.com/ForkAwesome/Fork-Awesome