Rename to Fractal Viewer, add Sierpinsky Carpet, use arcade 3.2.0

instead
of development
This commit is contained in:
csd4ni3l
2025-05-24 09:24:22 +02:00
parent c295fec105
commit 51c0c6ef05
13 changed files with 280 additions and 109 deletions

View File

@@ -50,6 +50,43 @@ void main() {
}
"""
sierpinsky_carpet_compute_source = """#version 430 core
uniform int u_depth;
uniform int u_zoom;
layout (local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
layout(location = 0, rgba32f) uniform image2D img_output;
void main() {
ivec2 coord = ivec2(gl_GlobalInvocationID.xy);
bool isHole = false;
for (int i = 0; i < u_depth; ++i) {
if (coord.x % 3 == 1 && coord.y % 3 == 1) {
isHole = true;
break;
}
coord /= 3;
}
vec4 color = isHole ? vec4(0, 0, 0, 1) : vec4(1, 1, 1, 1);
imageStore(img_output, ivec2(gl_GlobalInvocationID.xy), color);
}
"""
def create_sierpinsky_carpet_shader(width, height, precision="single"):
shader_source = sierpinsky_carpet_compute_source
shader_program = pyglet.graphics.shader.ComputeShaderProgram(shader_source)
sierpinsky_carpet_image = pyglet.image.Texture.create(width, height, internalformat=pyglet.gl.GL_RGBA32F)
uniform_location = shader_program['img_output']
sierpinsky_carpet_image.bind_image_texture(unit=uniform_location)
return shader_program, sierpinsky_carpet_image
def create_mandelbrot_shader(width, height, precision="single"):
shader_source = mandelbrot_compute_source