diff options
| author | Akshay Nair <phenax5@gmail.com> | 2026-09-20 15:53:10 +0530 |
|---|---|---|
| committer | Akshay Nair <phenax5@gmail.com> | 2026-09-20 15:53:10 +0530 |
| commit | 7bdd84e8ecade87ececdefe3cee614df8438e0a1 (patch) | |
| tree | 5228218d87c08ca348a549d3444c12657439a694 /src/main/resources/shaders | |
| parent | 70e53263b259c6b73a03ec16fe819bfce5f1ecb7 (diff) | |
| download | art-playground-openrndr-7bdd84e8ecade87ececdefe3cee614df8438e0a1.tar.gz art-playground-openrndr-7bdd84e8ecade87ececdefe3cee614df8438e0a1.zip | |
Wood pattern flow field(wip)
Diffstat (limited to 'src/main/resources/shaders')
| -rw-r--r-- | src/main/resources/shaders/warping.glsl | 4 | ||||
| -rw-r--r-- | src/main/resources/shaders/wood.glsl | 60 |
2 files changed, 60 insertions, 4 deletions
diff --git a/src/main/resources/shaders/warping.glsl b/src/main/resources/shaders/warping.glsl index 044e324..a607007 100644 --- a/src/main/resources/shaders/warping.glsl +++ b/src/main/resources/shaders/warping.glsl @@ -1,10 +1,6 @@ #version 430 layout(local_size_x = 1, local_size_y = 1) in; -#include <sdf> -#include <utils> -#include <noise> - uniform float seconds = 0; layout(rgba8) uniform readonly image2D noise_texture; layout(rgba8) uniform writeonly image2D output_image; diff --git a/src/main/resources/shaders/wood.glsl b/src/main/resources/shaders/wood.glsl new file mode 100644 index 0000000..5dec360 --- /dev/null +++ b/src/main/resources/shaders/wood.glsl @@ -0,0 +1,60 @@ +#version 430 +layout(local_size_x = 1, local_size_y = 1) in; + +uniform float seconds = 0; +layout(rgba8) uniform readonly image2D noise_texture; +layout(rgba8) uniform readonly image2D subtexture; +layout(rgba8) uniform writeonly image2D output_image; + +uniform float flow_field[400]; +uniform vec2 particles[100]; +uniform int particles_count; + +float sample_noise(in vec2 p) { + vec4 noise = imageLoad(noise_texture, ivec2(p * imageSize(noise_texture))); + return noise.x; +} + +float gen_pattern(in vec2 p, out vec3 coloring_factor, out vec3 coloring_factor2) { + float s1 = sample_noise(p + sample_noise(p) * vec2(0.5, 0.1)); + float s2 = sample_noise(p + sample_noise(p) * vec2(0.8, 0.4)); + float s3 = sample_noise(p + sample_noise(p)); + coloring_factor = vec3(0.204, 0.11, 0.01) * vec3(s1 * s2, 0.3 * s3, 0.3 * s3); + coloring_factor2 = vec3(0.4, 0.3 * s3, 0.3 * s3); + return sample_noise(p + s2 * s1 * s3); +} + +vec3 srgb(in float r, in float g, in float b) { + return vec3(pow(r, 2.2), pow(g, 2.2), pow(b, 2.2)); +} + +void main() { + vec2 uv = vec2(gl_GlobalInvocationID.xy) / imageSize(output_image).xy; + + // vec3 coloring_factor; + // vec3 coloring_factor2; + // float v = gen_pattern(uv, coloring_factor, coloring_factor2); + // coloring_factor = srgb(0.941, 0.827, 0.706); + // coloring_factor2 = srgb(0.204, 0.11, 0.01); + // coloring_factor2 = srgb(0.204, 0.11, 0.01); + // coloring_factor2 = srgb(0.104, 0.06, 0.00); + // vec3 color = mix(coloring_factor, coloring_factor2, clamp(v, 0., 1.)); + + ivec2 grid = ivec2(20, 20); + vec2 p = uv * grid; + int ffidx = int(p.x) + int(p.y) * grid.y; + float cell = flow_field[ffidx]; + // vec3 color = vec3(ffidx/400.); + vec3 color = vec3(cell); + // subtexture + + for (int i = 0; i < particles_count; i++) { + vec2 p = particles[i]; + if (length(uv - p) - 0.01 <= 0) { + color = vec3(1, 0, 0); + } + } + + // color = imageLoad(noise_texture, ivec2(uv * imageSize(output_image).xy)).xyz; + imageStore(output_image, ivec2(gl_GlobalInvocationID.xy), vec4(color, 1)); +} |
