Create and apply image filters using Godot's GLSL dialect.
Find a file
2025-01-06 23:00:35 +01:00
assets Added an error indicator and error message box and refactored some code in the process - implements #21, prepares #16 2024-12-26 22:18:18 +01:00
build-template Add a custom godot build template with reduced features for smaller exports - implements #15 2024-12-22 21:55:33 +01:00
dist Add export presets for Linux and Windows 2024-06-05 20:50:48 +02:00
examples Rename example rgb_uv_distort to multistep_distort 2025-01-06 22:15:00 +01:00
scenes Add //!steps directive, some code cleanup, updated README & examples 2025-01-06 22:11:53 +01:00
shaderlib Bump version to v6.0, update & improve README, add new screenshot, and more; closes #19 2025-01-01 21:43:32 +01:00
src Minor typo Compositor.gd 2025-01-06 22:26:53 +01:00
.gitattributes Add project files 2024-06-04 18:31:04 +02:00
.gitignore Add a custom godot build template with reduced features for smaller exports - implements #15 2024-12-22 21:55:33 +01:00
export_presets.cfg Add a custom godot build template with reduced features for smaller exports - implements #15 2024-12-22 21:55:33 +01:00
LICENSE Add project files 2024-06-04 18:31:04 +02:00
project.godot Bump version to v6.1 2025-01-06 22:55:17 +01:00
README.md Rename example rgb_uv_distort to multistep_distort 2025-01-06 22:15:00 +01:00
screenshot.png Bump version to v6.0, update & improve README, add new screenshot, and more; closes #19 2025-01-01 21:43:32 +01:00

Fragmented

screenshot

Create image filters by writing shaders.

Supported Platforms

  • Linux

You can find the latest releases here.

Usage

The repo includes examples. You can use them as a starting-point to write your own filters.
Just load an image using //!load, edit the shader code and hit F5 to see the changes.

Load TEXTURE using the //!load directive

//!load <filepath>

The main image file will be read and available as the sampler2D TEXTURE.

Load additional images

//!load+ <name> <filepath>

uniform sampler2D <name>;

Have a look at the place_texture.gdshader example.

Have multiple steps with //!steps n

You can apply your shaderfile multiple times. At every additional step, TEXTURE is the result of the previous step. This can be used to chain effects that cannot be easily chained otherwise.

To query the current step index, a STEP uniform is automatically injected. If steps is set to 0, your shader won't be applied at all.

Example:

//!load ...
//!steps 5

void fragment() {
  if (STEP == 0) {
	...
  } else if (STEP == 1) {
	...
  }
  // ... and so on
}

Shaderlib

This repo comes with a (still small) shader library including pre-written functions and more.
Have a look at the shaderlib folder.

Here is an example:

shader_type canvas_item;

#include "res://shaderlib/hsv.gdshaderinc"

//!load ./swamp.jpg

void fragment() {
	COLOR = hsv_offset(COLOR, 0.32, 0.2, 0.0);
}