Tool based in nodes to build GLSL shaders without any programming knowledge written in C using OpenGL and GLFW.

Overview

FNode

Tool based in nodes to build GLSL shaders without any programming knowledge written in C using OpenGL and GLFW (raylib library). It contains a compilation pipeline to convert the nodes web into a GLSL vertex and fragment shader files.

This pipeline can be configured in the settings pop up to select the GLSL shading version. Besides, the program starts with an example project of how to build a vertex animated plant with lambert lighting.

Installation

FNode requires raylib. To get it, follow the next steps:

  • Go to raylib and clone the repository.
  • Ensure to pull the last changes from master branch.
  • Use code inside examples header comments to compile and execute.

Notes

When running build pipeline, shader.vs and shader.fs are generated in output folder. Besides, a shader.fnode file is generated which contains all data from the shader editor. This data is loaded when the tool is opened again to continue editing the shader.

I recommend to take a look to the example shader to see how to handle with some vectors operations. By the way, observe that both vertex and fragment output nodes needs a 4 floats input (Vector4 or any operator node which returns 4 values).

Note: the output shader is tweaked to work with raylib videogames programming library, but all variables have a familiar name to adapt them to your own engine.

Screenshots

Thanks to

  • raysan5 for creating the new interface design and helping during the development.
You might also like...
A tiny programming language that transpiles to C, C++, Java, TypeScript, Python, C#, Swift, Lua and WebAssembly 🚀
A tiny programming language that transpiles to C, C++, Java, TypeScript, Python, C#, Swift, Lua and WebAssembly 🚀

A tiny programming language that transpiles to C, C++, Java, TypeScript, Python, C#, Swift, Lua and WebAssembly 🚀

A tool for use with clang to analyze #includes in C and C++ source files

Include What You Use For more in-depth documentation, see docs. Instructions for Users "Include what you use" means this: for every symbol (type, func

GSmartControl - Hard disk drive and SSD health inspection tool

GSmartControl Hard disk drive and SSD health inspection tool GSmartControl is a graphical user interface for smartctl (from smartmontools package), wh

Orbit, the Open Runtime Binary Instrumentation Tool, is a standalone C/C++ profiler for Windows and Linux
Orbit, the Open Runtime Binary Instrumentation Tool, is a standalone C/C++ profiler for Windows and Linux

Orbit, the Open Runtime Binary Instrumentation Tool, is a standalone C/C++ profiler for Windows and Linux. Its main purpose is to help developers visualize the execution flow of a complex application.

WinMerge is an Open Source differencing and merging tool for Windows.
WinMerge is an Open Source differencing and merging tool for Windows.

WinMerge is an Open Source differencing and merging tool for Windows. WinMerge can compare both folders and files, presenting differences in a visual text format that is easy to understand and handle.

A tool that analyzes headers and generates introspection code

A tool that analyzes headers and generates introspection code

Statically typed programming language.
Statically typed programming language.

Summary Luxury is a statically programming langage which is targeting embedded programming. I will eventually stop using C and fully use this language

An implementation of yacc for the janet programming language.

janet-yacc An implementation of yacc for the janet programming language. The implementation is based heavily on https://c9x.me/yacc/. Example from ./e

Writing our own printf function, this is a project done under ALX Low Level Programming.

0x11. C - printf Writing our own printf function, this is a project done under ALX Low Level Programming. Resource secrets of printf Implementing prin

Comments
  • Do you think this could make modern shaders for the upbge project?

    Do you think this could make modern shaders for the upbge project?

    Do you think this could make modern shaders for the upbge project?

    could you help us replace the current GLSL node editor with your system?

    can this also build 2d filters? https://github.com/UPBGE/blender

    opened by BluePrintRandom 1
  • Improve nodes information display and layout

    Improve nodes information display and layout

    The way the nodes are drawn is quite simple and it doesn't give a good experiencie or clear information.

    Nodes with special features like colors, texture samplers, and nodes without values must have a custom nodes drawing displaying relevant information. Also, they must be easily tweakable using text inputs and sliders.

    opened by victorfisac 0
Releases(1.2)
Owner
Víctor Fisac
I am experienced in Creative Media, 3D Animation and game design focused in video games development and software programming for tools and middleware.
Víctor Fisac
A tool for generating build scripts for C++20 projects that use modules.

cpp_module_parser [cmop] A tool for generating build scripts for C++20 projects that use modules. The intent is to provide a backend for premake, for

Alexander Christensen 2 Nov 23, 2021
This project aims to facilitate debugging a kernel driver in windows by adding support for a code change on the fly without reboot/unload, and more!

BSOD Survivor Tired of always telling yourself when you got a BSOD that what if I could just return to the caller function which caused the BSOD, and

Ido Westler 159 Dec 21, 2022
Handling C++ & __try exceptions without the need of built-in handlers.

manual_exception_handling this handles exceptions inside the module its specified to manage without needing previous handlers for the exception a good

null 45 Dec 13, 2022
Another system information tool written in C++

Sysfex Another neofetch-like system information fetching tool for linux-based systems written in C++. This is a hobby project, so bugs are to be expec

Mehedi Rahman Mahi 109 Dec 29, 2022
SIDKick -- the first complete SID 6581/8580-drop-in-replacement that you can build yourself

.- the first complete SID-drop-in-replacement that you can build yourself -. SIDKick is a drop-in replacement for the SID sound chips used in C64s and

null 103 Jan 4, 2023
Infocom Z-machine build environment for 25 retro computer systems, preconfigured for PunyInform

Puddle BuildTools (for PunyInform and other libraries and compilers targeting the Infocom Z-machine) If you're into classic 8-bit and 16-bit home comp

Stefan Vogt 44 Nov 25, 2022
The C++ REST SDK is a Microsoft project for cloud-based client-server communication in native code using a modern asynchronous C++ API design. This project aims to help C++ developers connect to and interact with services.

The C++ REST SDK is a Microsoft project for cloud-based client-server communication in native code using a modern asynchronous C++ API design. This project aims to help C++ developers connect to and interact with services.

Microsoft 7.2k Jan 2, 2023
A simple and easy-to-use library to enjoy videogames programming

hb-raylib v3.5 Harbour bindings for raylib 3.5, a simple and easy to use library to learn videogames programming raylib v3.5. The project has an educa

MarcosLMG 1 Aug 28, 2022
Haxe bindings for raylib, a simple and easy-to-use library to learn videogame programming

Haxe bindings for raylib, a simple and easy-to-use library to learn videogame programming, Currently works only for windows but feel free the expand t

FSasquatch 36 Dec 16, 2022