Add modified Fragmented project files
This commit is contained in:
parent
f99f1fbc9b
commit
77ce93fb15
57 changed files with 1696 additions and 0 deletions
162
README.md
Normal file
162
README.md
Normal file
|
@ -0,0 +1,162 @@
|
|||
|
||||
<h1 align=center>Pigment</h1>
|
||||
|
||||

|
||||
|
||||
<p align=center>Color grading with code.</p>
|
||||
|
||||
|
||||
## Table of Contents
|
||||
|
||||
- [Supported Platforms](#supported-platforms)
|
||||
- [Usage](#usage)
|
||||
- [Shaderlib](#shaderlib)
|
||||
- [Commandline interface](#commandline-interface)
|
||||
- [Known Issues](#known-issues)
|
||||
|
||||
|
||||
## Supported Platforms
|
||||
|
||||
- Linux
|
||||
|
||||
You can find the latest release ...
|
||||
|
||||
- [here (remotebranch.eu)](https://remotebranch.eu/ChaoticByte/Pigment/releases/latest)
|
||||
|
||||
|
||||
## Usage
|
||||
|
||||
With Pigment, you are processing images with GDShaders. This brings almost endless opportunities to create unique art.
|
||||
If you want to learn GDShader, take a look at the [Godot docs](https://docs.godotengine.org/en/stable/tutorials/shaders/).
|
||||
|
||||
**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 <filepath>
|
||||
```
|
||||
|
||||
The main image file will be read and available as the sampler2D `TEXTURE`.
|
||||
|
||||
|
||||
#### Load additional images
|
||||
|
||||
```glsl
|
||||
//!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:
|
||||
|
||||
```glsl
|
||||
//!load ...
|
||||
//!steps 5
|
||||
|
||||
uniform int STEP;
|
||||
uniform int STEPS;
|
||||
|
||||
void fragment() {
|
||||
if (STEP == 0) {
|
||||
...
|
||||
} else if (STEP == 1) {
|
||||
...
|
||||
} else if (STEP == STEPS-1) {
|
||||
...
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
## 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:
|
||||
|
||||
```glsl
|
||||
shader_type canvas_item;
|
||||
|
||||
#include "./shaderlib/oklab.gdshaderinc"
|
||||
|
||||
//!load ./images/swamp.jpg
|
||||
|
||||
void fragment() {
|
||||
vec4 oklab = rgb2oklab(COLOR);
|
||||
vec4 oklch = oklab2oklch(oklab);
|
||||
oklch.z -= 2.0;
|
||||
COLOR = oklab2rgb(oklch2oklab(oklch));
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
## Commandline interface
|
||||
|
||||
You can run Pigment from the commandline or scripts.
|
||||
|
||||
> Note: Headless mode is not supported. Using the commandline interface still opens a window.
|
||||
|
||||
|
||||
### Usage
|
||||
|
||||
```
|
||||
~ Pigment CLI ~
|
||||
-================-
|
||||
|
||||
Usage:
|
||||
|
||||
./Pigment <command> <args...>
|
||||
|
||||
Commands:
|
||||
|
||||
help
|
||||
|
||||
| Shows this help text.
|
||||
|
||||
apply --shader PATH --input PATH --output PATH
|
||||
|
||||
| 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.
|
||||
|
||||
```
|
||||
|
||||
|
||||
### 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.
|
||||
|
||||
> Note: You *can* use this feature for video frames, but it will take a loooong time.
|
||||
|
||||
|
||||
#### Examples
|
||||
|
||||
```
|
||||
./Pigment apply --shader ./examples/oklab.gdshader --input ~/Pictures/test.png --output ./output.png
|
||||
```
|
||||
|
||||
|
||||
## 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
|
Loading…
Add table
Add a link
Reference in a new issue