12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- #version 330
- uniform vec2 parameter;
- uniform float opacity;
- uniform float n_steps;
- uniform float mandelbrot;
- uniform vec3 color0;
- uniform vec3 color1;
- uniform vec3 color2;
- uniform vec3 color3;
- uniform vec3 color4;
- uniform vec3 color5;
- uniform vec3 color6;
- uniform vec3 color7;
- uniform vec3 color8;
- in vec3 xyz_coords;
- out vec4 frag_color;
- #INSERT finalize_color.glsl
- #INSERT complex_functions.glsl
- const int MAX_DEGREE = 5;
- void main() {
- vec3 color_map[9] = vec3[9](
- color0, color1, color2, color3,
- color4, color5, color6, color7, color8
- );
- vec3 color;
- vec2 z;
- vec2 c;
- if(bool(mandelbrot)){
- c = xyz_coords.xy;
- z = vec2(0.0, 0.0);
- }else{
- c = parameter;
- z = xyz_coords.xy;
- }
- float outer_bound = 2.0;
- bool stable = true;
- for(int n = 0; n < int(n_steps); n++){
- z = complex_mult(z, z) + c;
- if(length(z) > outer_bound){
- float float_n = float(n);
- float_n += log(outer_bound) / log(length(z));
- float_n += 0.5 * length(c);
- color = float_to_color(sqrt(float_n), 1.5, 8.0, color_map);
- stable = false;
- break;
- }
- }
- if(stable){
- color = vec3(0.0, 0.0, 0.0);
- }
- frag_color = finalize_color(
- vec4(color, opacity),
- xyz_coords,
- vec3(0.0, 0.0, 1.0)
- );
- }
|