From beef18467e0f971ba88e29e56c15b5ef00468191 Mon Sep 17 00:00:00 2001 From: hodasemi Date: Thu, 26 Nov 2020 19:12:46 +0100 Subject: [PATCH] More testing --- src/fractal.frag | 79 +++++++++++++++++++++++++++++-------------- src/fractal.frag.spv | Bin 2736 -> 2888 bytes src/fractal.rs | 13 +++++-- 3 files changed, 65 insertions(+), 27 deletions(-) diff --git a/src/fractal.frag b/src/fractal.frag index 4a4dce8..efea7c5 100644 --- a/src/fractal.frag +++ b/src/fractal.frag @@ -9,6 +9,8 @@ layout (set = 0, binding = 0) uniform Parameters { float size; float time; float factor; + float width; + float height; } parameters; float hue_to_rgb(float p, float q, float t) { @@ -100,39 +102,66 @@ vec3 paint(float nx, float ny) { // color = vec4(paint(gl_FragCoord.x, gl_FragCoord.y), 1.0); // } +vec2 square_imaginary(vec2 number) { + return vec2( + pow(number.x, 2) - pow(number.y, 2), + 2 * number.x * number.y + ); +} + +float iterate_mandelbrot(vec2 coord) { + vec2 z = vec2(0,0); + + for(int i = 0; i < parameters.max_iter; i++){ + z = square_imaginary(z) + coord; + + if ( length(z) > 2 ) { + return i / parameters.max_iter; + } + } + + return parameters.max_iter; +} + void main() { - vec2 tc = vec2(in_uv.x) * parameters.time * parameters.factor; + vec2 coord = gl_FragCoord.xy / vec2(parameters.width, parameters.height); - float x0 = (tc.x * 3 - 2); - float y0 = (tc.y * 2 - 1); + float c = iterate_mandelbrot(coord); - float x = 0; - float y = 0; - int iteration = 0; + color = vec4(vec3(c, c * 0.3, c * 0.7), 1.0); - while ((x * x + y * y <= 4) && (iteration < parameters.max_iter)) - { - float xtemp = x * x - y * y + x0; - y = 2 * x * y + y0; - x = xtemp; + // vec2 tc = vec2(in_uv.x) * parameters.time * parameters.factor; - iteration += 1; - } + // float x0 = (tc.x * 3 - 2); + // float y0 = (tc.y * 2 - 1); - if (iteration == parameters.max_iter) - { + // float x = 0; + // float y = 0; + // int iteration = 0; - // Hier wird der Farbwert für das Innere der Mandelbrotmenge gesetzt + // while ((x * x + y * y <= 4) && (iteration < parameters.max_iter)) + // { + // float xtemp = x * x - y * y + x0; + // y = 2 * x * y + y0; + // x = xtemp; - color = vec4(0, 0, 0, 1); - } - else - { + // iteration += 1; + // } - // Hier kann eine beliebige Farbwahl stattfinden(z.B. mit einer Farbtabelle). - // als Index verwendet man die Variable "iteration", die einen Wert zwischen 1 und parameters.max_iter hat. + // if (iteration == parameters.max_iter) + // { - x = sin(float(iteration)); - color = vec4(x, x, x, 1); - } + // // Hier wird der Farbwert für das Innere der Mandelbrotmenge gesetzt + + // color = vec4(0, 0, 0, 1); + // } + // else + // { + + // // Hier kann eine beliebige Farbwahl stattfinden(z.B. mit einer Farbtabelle). + // // als Index verwendet man die Variable "iteration", die einen Wert zwischen 1 und parameters.max_iter hat. + + // x = sin(float(iteration)); + // color = vec4(x, x, x, 1); + // } } \ No newline at end of file diff --git a/src/fractal.frag.spv b/src/fractal.frag.spv index 72f32c41ad5a87240b0cee9f2e16f935823d8a73..6efbc524cc2d237b4c089e9f8a33c5265f84e5d3 100644 GIT binary patch literal 2888 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 diff --git a/src/fractal.rs b/src/fractal.rs index 976855b..d8e414b 100644 --- a/src/fractal.rs +++ b/src/fractal.rs @@ -8,6 +8,8 @@ struct ShaderInfo { size: f32, time: f32, factor: f32, + width: f32, + height: f32, } #[derive(Clone)] @@ -158,6 +160,8 @@ impl Fractal { size: 0.001, time: 0.0, factor: 1.0, + width: render_core.width() as f32, + height: render_core.height() as f32, }]) .set_memory_usage(MemoryUsage::CpuOnly) .set_usage(VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT) @@ -234,8 +238,13 @@ impl TScene for Fractal { } fn resize(&self) -> VerboseResult<()> { - println!("resize of FB is still missing"); + let mut mapping = self.descriptor_buffer.map_complete()?; - Ok(()) + mapping[0].width = self.context.render_core().width() as f32; + mapping[0].height = self.context.render_core().height() as f32; + + todo!("resize of FB is still missing"); + + // Ok(()) } }