All Projects → voidtuxic → YALCT

voidtuxic / YALCT

Licence: MIT License
Yet Another Live Coding Tool - Powered by Veldrid and elbow grease

Programming Languages

C#
18002 projects
powershell
5483 projects
GLSL
2045 projects

Projects that are alternatives of or similar to YALCT

30-days-of-shade
30 days of shaders in GLSL using GLSLCanvas
Stars: ✭ 134 (+436%)
Mutual labels:  shaders, glsl, shadertoy, glsl-shader, glsl-shaders, glslviewer, glsl-sandbox, glsleditor
Thebookofshaders
Step-by-step guide through the abstract and complex universe of Fragment Shaders.
Stars: ✭ 4,070 (+16180%)
Mutual labels:  shaders, glsl, glsl-shader, glsl-editors, glsl-shaders, glsl-sandbox
Bonzomatic
Live shader coding tool and Shader Showdown workhorse
Stars: ✭ 829 (+3216%)
Mutual labels:  demoscene, glsl, live-coding, shadertoy, livecoding
3d Game Shaders For Beginners
🎮 A step-by-step guide to implementing SSAO, depth of field, lighting, normal mapping, and more for your 3D game.
Stars: ✭ 11,698 (+46692%)
Mutual labels:  shaders, vulkan, glsl, glsl-shader, glsl-shaders
Shadered
Lightweight, cross-platform & full-featured shader IDE
Stars: ✭ 3,247 (+12888%)
Mutual labels:  shaders, glsl, glsl-editors, glsl-sandbox
shady
A GTK+ shader editor, that aims for Shadertoy.com compatibility (and more…)
Stars: ✭ 22 (-12%)
Mutual labels:  demoscene, glsl, shadertoy
glNoise
A collection of GLSL noise functions for use with WebGL with an easy to use API.
Stars: ✭ 185 (+640%)
Mutual labels:  shaders, glsl, glsl-shaders
ModularMusicVisualizer
Project in Hiatus, unmaintained, being rewritten privately. Will Open Source when stuff is ready. Project will be Renamed.
Stars: ✭ 81 (+224%)
Mutual labels:  shaders, glsl, glsl-shaders
RavEngine
A fast, easy to use C++20 3D game library for modern computers
Stars: ✭ 122 (+388%)
Mutual labels:  metal, shaders, vulkan
Glsl Optimizer
GLSL optimizer based on Mesa's GLSL compiler. Used to be used in Unity for mobile shader optimization.
Stars: ✭ 1,506 (+5924%)
Mutual labels:  metal, shaders, glsl
FNode
Tool based in nodes to build GLSL shaders without any programming knowledge written in C using OpenGL and GLFW.
Stars: ✭ 81 (+224%)
Mutual labels:  shaders, glsl, glsl-shaders
kotlin-glsl
Write your GLSL shaders in Kotlin.
Stars: ✭ 30 (+20%)
Mutual labels:  shaders, glsl, glsl-shaders
The Forge
The Forge Cross-Platform Rendering Framework PC Windows, Linux, Ray Tracing, macOS / iOS, Android, XBOX, PS4, PS5, Switch, Quest 2
Stars: ✭ 2,710 (+10740%)
Mutual labels:  metal, shaders, vulkan
Shadertoy Browser
Shadertoy browser & viewer for Mac built in Rust
Stars: ✭ 176 (+604%)
Mutual labels:  metal, shaders, shadertoy
ofxShadertoy
Addon for openFrameworks that sets up and loads Shadertoy (http://www.shadertoy.com) shaders
Stars: ✭ 77 (+208%)
Mutual labels:  shaders, glsl, shadertoy
Crossshader
⚔️ A tool for cross compiling shaders. Convert between GLSL, HLSL, Metal Shader Language, or older versions of GLSL.
Stars: ✭ 113 (+352%)
Mutual labels:  metal, vulkan, glsl
qml-glsl-coder
live editor of GLSL fragment shaders based on Qt / QML
Stars: ✭ 19 (-24%)
Mutual labels:  glsl, live-coding, glsl-shaders
ShaderView
ShaderView is an Android View that makes it easy to use GLSL shaders for your app. It's the modern way to use shaders for Android instead of RenderScript.
Stars: ✭ 53 (+112%)
Mutual labels:  shaders, glsl, glsl-shaders
ShaderToy-Chrome-Plugin
Web extension for shadertoy.com
Stars: ✭ 159 (+536%)
Mutual labels:  shaders, shadertoy, glsl-shaders
deffx
A collection of useful shader effects made ready to be used with the Defold game engine
Stars: ✭ 33 (+32%)
Mutual labels:  shaders, glsl, glsl-shaders

Yet Another Live Coding Tool

Build

A glsl live coding tool strongly inspired by Shadertoy, but as a cross platform cross graphics API desktop application. Code in modern GLSL and view your shaders using the (almost) full power of your computer's graphics APIs.

Why? Because I wanted to train on Veldrid, I love live coding despite not contributing a lot to it, and Shadertoy is a really fun thing. There's also a part of me who wants to show that dotnet is fun, not only for Windows and for boring aspnet and big IT service companies. Veldrid helps a lot in this sense.

FAST DEMO

Credits in this hectic gif:

Table of content

Features

  • full GLSL v450 fragment shader support
  • texture input support
  • load/save your shaders or pack them into a zip archive for easier sharing
  • import (or at least try to) shadertoy shaders (doesn't support shaders with texture and sound inputs right now)
  • supports OpenGL, Vulkan, Direct3D11 and Metal
  • supports Windows 10, Linux and MacOS

Usage

Download release

Self-contained releases are provided for the following systems :

  • Windows 64bit : Minimum OS version is Windows 7
  • Linux 64bit : Most desktop distributions like CentOS, Debian, Fedora, Ubuntu, and derivatives
  • MacOS 64bit : Minimum OS version is macOS 10.12 Sierra

Check out the latest release page to download it. CI building and other platforms are in the works.

Builds are self-contained and don't require the .Net Core runtime to be installed. Extract files to whatever folder you wish and launch YALCT executable through your file explorer or via CLI for backend switching.

MacOS will require you to allow the app in your system preferences to able to launch directly from the finder. Unless you have a nice graphics card on your mac, don't expect wonderful performances.

Making shaders

Wether you create or load a shader, the entry point is the main() function. Regarding the rest, you are free to declare as many functions as you need, the entire Vulkan flavor GLSL specs should be supported.

Default shader on create :

void main()
{
    float x = gl_FragCoord.x / resolution.x;
    float y = gl_FragCoord.y / resolution.y;
    out_Color = vec4(0,x,y,1);
}

Shader parameters

Name Type Description
mouse vec4 xy for mouse, z for mouse 1 click, w for mouse 2 click
resolution vec2 screen resolution in pixels
time float global time in seconds
deltaTime float time since last frame in seconds
frame int frame number

API Support

This has mostly been tested on Windows 10, but it does run on MacOS High Sierra and Ubuntu 18.04. Some more testing is required.

API Windows Linux MacOS
OpenGL 3.0+ (default) (deprecated)
Vulkan
Direct3D11
Metal

Running different graphics APIs

By default, YALCT launches with OpenGL (and Metal on MacOS). You can switch to Vulkan or Direct3D11 through cli :

YALCT opengl
YALCT vulkan
YALCT direct3d11

As you can guess, MacOS doesn't get a choice.

Building

This repository uses git lfs.

Requires .Net Core 3.1 SDK for building. Nothing particular about the building process, just go inside the project folder and build/run/publish it how you wish.

Quickstart :

cd YALCT
dotnet run -c Release

Publishing releases

Windows only for now. A powershell script is provided to build all supported x64 platforms in self-contained zip files. You still need the .Net Core SDK as specified in Building. You also need a globally installed 7-zip because the default Windows compression util breaks folder hierarchy on unix systems.

.\publish-all.ps1

You will find all the zip archives in the build/ folder.

Known issues

  • Vulkan doesn't like some shaders and can freeze the app on load

Roadmap and contribution

Contributions are welcome, feel free to fork and open PRs. Here are some features that I wish to implement in the future:

  • editor with syntax highlight? Might be hard in the current state
  • actual working CI ? Github actions artifacts produce bugged executables
  • ISF shader import
  • Shadertoy/ISF export
  • input audio
  • more exotic inputs : game controllers, midi, OSC, why not some interaction with OSSIA Score
  • server/p2p with viewer mode for multiuser sessions (for comps for instance)
    • should start simple with local rendering by transfering fragment code to the viewer
    • then I'm thinking about webrtc to allow a bit more efficiency with a lot of users
  • shadertoy API instead of just opening local files
  • on the fly backend changing
  • more options like font choosing for UI and editor. We're using dearimgui, might as well exploit its full potential

There's a lot of experimentation going around : getting better at this, trying out new stuff, colaborating with established tools. I have no pretentions of making something to replace your favorite livecoding tool.

Trying to use some semblance of git flow, but not the tool. Main branch is develop, releases are on master, and I do enjoy the feature/ paradigm.

License

Licensed under the MIT License.

Credits

Fonts:

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].