From 6619b079c624dc0670690efde65e5a1b95c8ada8 Mon Sep 17 00:00:00 2001 From: ChaoticByte Date: Fri, 10 Oct 2025 22:16:02 +0200 Subject: [PATCH 1/2] Remove custom build template --- build-template/Containerfile | 21 --------------------- build-template/build.sh | 30 ------------------------------ 2 files changed, 51 deletions(-) delete mode 100644 build-template/Containerfile delete mode 100755 build-template/build.sh diff --git a/build-template/Containerfile b/build-template/Containerfile deleted file mode 100644 index 93e3a52..0000000 --- a/build-template/Containerfile +++ /dev/null @@ -1,21 +0,0 @@ - -MAINTAINER ChaoticByte - -# Using Ubuntu 20.04 -FROM docker.io/ubuntu:focal AS os-base - -# https://docs.godotengine.org/en/stable/contributing/development/compiling/compiling_for_linuxbsd.html - -RUN apt-get update -RUN DEBIAN_FRONTEND=noninteractive apt-get install -yq python3-pip git build-essential pkg-config libx11-dev libxcursor-dev libxinerama-dev libgl1-mesa-dev libglu1-mesa-dev libasound2-dev libpulse-dev libudev-dev libxi-dev libxrandr-dev libwayland-dev -RUN pip3 install --system scons - -FROM os-base AS clone-src - -RUN git clone https://github.com/godotengine/godot.git -b 4.5-stable /godot-src - -FROM clone-src - -WORKDIR /godot-src -ENTRYPOINT scons platform=linuxbsd target=template_release lto=full optimize=size disable_3d=yes module_text_server_adv_enabled=no module_text_server_fb_enabled=yes module_basis_universal_enabled=no module_csg_enabled=no module_enet_enabled=no module_gridmap_enabled=no module_jsonrpc_enabled=no module_mbedtls_enabled=no module_meshoptimizer_enabled=no module_minimp3_enabled=no module_mobile_vr_enabled=no module_msdfgen_enabled=no module_multiplayer_enabled=no module_navigation_enabled=no module_ogg_enabled=no module_openxr_enabled=no module_raycast_enabled=no module_squish_enabled=no module_theora_enabled=no module_upnp_enabled=no module_vhacd_enabled=no module_vorbis_enabled=no module_webrtc_enabled=no module_websocket_enabled=no module_webxr_enabled=no arch=x86_64 && strip bin/godot.linuxbsd.template_release.x86_64 - diff --git a/build-template/build.sh b/build-template/build.sh deleted file mode 100755 index c31f837..0000000 --- a/build-template/build.sh +++ /dev/null @@ -1,30 +0,0 @@ -#!/usr/bin/env bash - -set -e - -function log { - echo -e "\033[1;36m***** $@\033[0m" -} - -log -log "Pigment - Godot Build Template Builder" -log - -cd $(dirname $0) -log Switched to $(pwd) - -tmpsuffix=$(date +%s%N) -image_name=pigment-godot-template-builder -container_name=${image_name}-${tmpsuffix} -output_file=godot.linuxbsd.template_release.x86_64 - -log Building image ${image_name} ... -buildah build -t ${image_name} -log Building godot build template with container ${container_name} ... -podman run --name ${container_name} localhost/${image_name}:latest -log Copying ${output_file} from container to $(realpath ./${output_file}) -podman cp ${container_name}:/godot-src/bin/${output_file} ./${output_file} -log Removing container ${container_name} -podman container rm ${container_name} -log Done :D - From 62bff793396557f1fc5ded369e7d2dda9ad39f7c Mon Sep 17 00:00:00 2001 From: ChaoticByte Date: Fri, 10 Oct 2025 22:16:16 +0200 Subject: [PATCH 2/2] Update CLI help and README --- README.md | 75 +++++++++-------------------------------------------- src/Main.gd | 10 +++---- 2 files changed, 17 insertions(+), 68 deletions(-) diff --git a/README.md b/README.md index 29ab37f..0849cf8 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ ![screenshot](./screenshot.png) -

Color grading with code.

+

Use Godot's GLSL dialect for color grading and more.

## Table of Contents @@ -31,56 +31,7 @@ If you want to learn GDShader, take a look at the [Godot docs](https://docs.godo **To get started, use the project template (see the Releases section of this repo) and open it in Godot.** -The template includes many examples. You can use them as a starting-point to write your own stuff. - -Besides the regular GDShader stuff, Pigment has so-called directives. Those allow to further control the behaviour of the application. **The most important directive is `//!load` to load an image.** - - -### Load TEXTURE using the `//!load` directive - -```glsl -//!load -``` - -The main image file will be read and available as the sampler2D `TEXTURE`. - - -#### Load additional images - -```glsl -//!load+ - -uniform sampler2D ; -``` - -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: - -```glsl -//!load ... -//!steps 5 - -uniform int STEP; -uniform int STEPS; - -void fragment() { - if (STEP == 0) { - ... - } else if (STEP == 1) { - ... - } else if (STEP == STEPS-1) { - ... - } -} -``` +The template includes examples that you can use as a starting-point to write your own stuff. ## Shaderlib @@ -95,8 +46,6 @@ shader_type canvas_item; #include "./shaderlib/oklab.gdshaderinc" -//!load ./images/swamp.jpg - void fragment() { vec4 oklab = rgb2oklab(COLOR); vec4 oklch = oklab2oklch(oklab); @@ -117,7 +66,7 @@ You can run Pigment from the commandline or scripts. ``` ~ Pigment CLI ~ --================- +-=============- Usage: @@ -133,20 +82,20 @@ Commands: | Applies a shader file. - --shader PATH The path to the shader - --input PATH The path to the input image. - Passing a folder activates batch mode. - --output PATH Where to write the resulting image to. - In batch mode, this must be a folder. + --shader PATH The path to the shader + --input PATH The path to the image + Passing a folder activates batch mode + --output PATH Where to write the resulting image to + In batch mode, this must be a folder ``` ### Batch Mode -Since version v8.0, you can pass a directory to `--input` and `--output`. This will process all images in the input directory and write the output to the output directory. +You can pass a directory to `--input` and `--output`. This will process all images in the input directory and write the output to the output directory. -> Note: You *can* use this feature for video frames, but it will take a loooong time. +> Note: This is not very fast, so using it on maaany images may take some time. #### Examples @@ -158,5 +107,5 @@ Since version v8.0, you can pass a directory to `--input` and `--output`. This w ## Known Issues -- screen scaling is unsupported; Using screen scaling could lead to an either blurry UI, or no scaling at all -> see #45 -- commandline interface: `--headless` is not supported +- On some systems, screen scaling could lead to an either blurry UI, or no scaling at all +- CLI: Godot's `--headless` option is not supported diff --git a/src/Main.gd b/src/Main.gd index 80d85ba..134ecaa 100644 --- a/src/Main.gd +++ b/src/Main.gd @@ -13,13 +13,13 @@ func show_help(): "Commands:\n\n", " help\n\n", " | Shows this help text.\n\n", - " apply --shader PATH [--load-image PATH]\n\n", + " apply --shader PATH --input PATH --output PATH\n\n", " | Applies a shader file.\n\n", " --shader PATH The path to the shader\n", - " --input PATH The path to the image.\n", - " Passing a folder activates batch mode.\n", - " --output PATH Where to write the resulting image to.\n", - " In batch mode, this must be a folder.\n") + " --input PATH The path to the image\n", + " Passing a folder activates batch mode\n", + " --output PATH Where to write the resulting image to\n", + " In batch mode, this must be a folder\n") func parse_custom_cmdline(args: PackedStringArray): var kwargs: Dictionary = {"--shader": null, "--output": null, "--input": null}