Logo by AGUS - Contribute your own Logo!

END OF AN ERA, FRACTALFORUMS.COM IS CONTINUED ON FRACTALFORUMS.ORG

it was a great time but no longer maintainable by c.Kleinhuis contact him for any data retrieval,
thanks and see you perhaps in 10 years again

this forum will stay online for reference
News: Support us via Flattr FLATTR Link
 
*
Welcome, Guest. Please login or register. October 06, 2024, 02:54:08 PM


Login with username, password and session length


The All New FractalForums is now in Public Beta Testing! Visit FractalForums.org and check it out!


Pages: [1] 2 3   Go Down
  Print  
Share this topic on DiggShare this topic on FacebookShare this topic on GoogleShare this topic on RedditShare this topic on StumbleUponShare this topic on Twitter
Author Topic: mightymandel GPU Mandelbrot set renderer (OpenGL 4)  (Read 42103 times)
Description: perturbation for unlimited zoom, but no glitch correction
0 Members and 1 Guest are viewing this topic.
claude
Fractal Bachius
*
Posts: 563



WWW
« on: December 15, 2014, 11:54:39 AM »

EDIT: http://mightymandel.mathr.co.uk


Today I updated my toy (no glitch correction) perturbation-technique OpenGL 4 Mandelbrot set renderer with a command line flag to disable distance estimation - this makes rendering take about 2/3 the time, and uses a bit less GPU memory.  Doesn't look as good though:

DE:


no DE:


Source code repository:
https://gitorious.org/maximus/mightymandel
http://code.mathr.co.uk/mightymandel
« Last Edit: March 10, 2015, 03:19:21 PM by claude » Logged
claude
Fractal Bachius
*
Posts: 563



WWW
« Reply #1 on: December 15, 2014, 12:41:42 PM »

I just added .kfr parser to mightymandel - already supported .sft, .mdz, .mm (native format, copy/pasted from console output).  Each non-flag argument is tried with all the parsers, the first argument to succeed is loaded.

Distance estimation fails to render sometimes beyond a certain depth (still debugging since years, not sure where the overflow or other fubar is..), this took 75s to render:


The -no-de flag gives a better image in these cases, this took 50s to render:


The original version of this view I rendered with Kalles Fraktaler still looks better (but I didn't keep track of how long it took to render, probably several minutes with the supersampling and glitch correction):
http://www.fractalforums.com/kalles-fraktaler-gallery/cross-hair/
Logged
claude
Fractal Bachius
*
Posts: 563



WWW
« Reply #2 on: December 20, 2014, 10:02:21 PM »

mightymandel now ported from gtk2 to glfw3, which should make it easier to compile.  There was a massive performance regression but I fixed that now, at the cost of slightly lower responsiveness in the GUI.
Logged
claude
Fractal Bachius
*
Posts: 563



WWW
« Reply #3 on: December 21, 2014, 10:09:23 AM »

http://mathr.co.uk/blog/2014-12-21_mightymandel_updates_galore.html

Automatic glitch correction, zoom sequence rendering, tiled rendering for high resolution or anti-aliasing, ...
Logged
claude
Fractal Bachius
*
Posts: 563



WWW
« Reply #4 on: December 24, 2014, 06:20:12 PM »

http://mathr.co.uk/blog/2014-12-24_mightymandel_v14.html
Logged
youhn
Fractal Molossus
**
Posts: 696


Shapes only exists in our heads.


« Reply #5 on: December 24, 2014, 08:24:48 PM »

I've been trying to get all packages and libs to build mightymandel. The process for GLFW3 felt a little awkward to me. Now I get errors which I can't solve:

Code:
LINK    mightymandel
/usr/lib64/gcc/x86_64-slackware-linux/4.7.1/../../../../x86_64-slackware-linux/bin/ld: /usr/local/lib/libglfw3.a(x11_window.c.o): undefined reference to symbol 'XISelectEvents'
/usr/lib64/gcc/x86_64-slackware-linux/4.7.1/../../../../x86_64-slackware-linux/bin/ld: note: 'XISelectEvents' is defined in DSO /usr/lib64/libXi.so.6 so try adding it to the linker command line
/usr/lib64/libXi.so.6: could not read symbols: Invalid operation
collect2: error: ld returned 1 exit status
ERROR   gcc -o mightymandel fp32_step.o atom.o fp32_unescaped.o fp64_unescaped.o fpxx_escaped.o interact.o shader.o fpxx_approx.o complex.o ref_set.o view.o blob_set.o fpxx_init.o render.o fp32_colour.o fp64_escaped.o find_ref.o fp64_init.o parse.o fp64_step.o fp32_fillc.o utility.o fp32_escaped.o fp32_init.o fpxx_unescaped.o mightymandel.o fpxx_step.o state.o record.o fpxx_escaped_vert.glsl.o fp64_complex.glsl.o fpxx_init_vert.glsl.o fp32_escaped_geom.glsl.o fp64_preamble.glsl.o fpxx_step_vert.glsl.o fpxx_init_geom.glsl.o fpxx_unescaped_geom.glsl.o fp32_colour_frag.glsl.o fp64_escaped_frag.glsl.o fpxx_approx_vert.glsl.o fp32_colour_vert.glsl.o fp64_escaped_vert.glsl.o fp64_unescaped_geom.glsl.o fp32_fillc_frag.glsl.o fp64_init_vert.glsl.o fp64_step_vert.glsl.o fp32_fillc_vert.glsl.o fp32_escaped_frag.glsl.o fp32_init_vert.glsl.o fp32_step_vert.glsl.o fpxx_unescaped_vert.glsl.o fp32_unescaped_geom.glsl.o fp32_escaped_vert.glsl.o fp32_complex.glsl.o fpxx_escaped_geom.glsl.o fp64_unescaped_vert.glsl.o fp64_escaped_geom.glsl.o fp32_preamble.glsl.o fp32_unescaped_vert.glsl.o fpxx_escaped_frag.glsl.o -lGLEW -lGL -lrt -lmpfr -L/usr/local/lib -lglfw3   -ggdb -DMIGHTYMANDEL_DEBUG_OPENGL
make: *** [mightymandel] Error 1
make: Leaving directory `/home/jeroen/downloads/mightymandel/src'

Any pointers for a fix?
Logged
claude
Fractal Bachius
*
Posts: 563



WWW
« Reply #6 on: December 24, 2014, 08:55:18 PM »

Adam Majewski had the same problem with staticly linked glfw3 on Ubuntu 13.04 (I think I got that version correct).

He wrote about it here:

http://en.wikibooks.org/wiki/Fractals/mightymandel#glfw

try:

Code:
make -C src EXTRA_LINK_FLAGS="-lGL -lGLU -lglfw3 -lX11 -lXxf86vm -lXrandr -lpthread -lXi"

or if that doesn't work, edit the Makefile to add those -l flags (for missing libraries).
Logged
youhn
Fractal Molossus
**
Posts: 696


Shapes only exists in our heads.


« Reply #7 on: December 25, 2014, 12:08:16 PM »

Ok, think that error was solved. One step further, but not there yet:

Code:
LINK    mightymandel
/usr/lib64/gcc/x86_64-slackware-linux/4.7.1/../../../../x86_64-slackware-linux/bin/ld: utility.o: undefined reference to symbol 'floor@@GLIBC_2.2.5'
/usr/lib64/gcc/x86_64-slackware-linux/4.7.1/../../../../x86_64-slackware-linux/bin/ld: note: 'floor@@GLIBC_2.2.5' is defined in DSO /lib64/libm.so.6 so try adding it to the linker command line
/lib64/libm.so.6: could not read symbols: Invalid operation
collect2: error: ld returned 1 exit status
ERROR   gcc -o mightymandel fp32_step.o atom.o fp32_unescaped.o fp64_unescaped.o fpxx_escaped.o interact.o shader.o fpxx_approx.o complex.o ref_set.o view.o blob_set.o fpxx_init.o render.o fp32_colour.o fp64_escaped.o find_ref.o fp64_init.o parse.o fp64_step.o fp32_fillc.o utility.o fp32_escaped.o fp32_init.o fpxx_unescaped.o mightymandel.o fpxx_step.o state.o record.o fpxx_escaped_vert.glsl.o fp64_complex.glsl.o fpxx_init_vert.glsl.o fp32_escaped_geom.glsl.o fp64_preamble.glsl.o fpxx_step_vert.glsl.o fpxx_init_geom.glsl.o fpxx_unescaped_geom.glsl.o fp32_colour_frag.glsl.o fp64_escaped_frag.glsl.o fpxx_approx_vert.glsl.o fp32_colour_vert.glsl.o fp64_unescaped_geom.glsl.o fp32_fillc_frag.glsl.o fp64_escaped_vert.glsl.o fp64_init_vert.glsl.o fp64_step_vert.glsl.o fp32_fillc_vert.glsl.o fp32_escaped_frag.glsl.o fp32_init_vert.glsl.o fp32_step_vert.glsl.o fpxx_unescaped_vert.glsl.o fp32_unescaped_geom.glsl.o fp32_escaped_vert.glsl.o fp32_complex.glsl.o fpxx_escaped_geom.glsl.o fp64_unescaped_vert.glsl.o fp64_escaped_geom.glsl.o fp32_preamble.glsl.o fp32_unescaped_vert.glsl.o fpxx_escaped_frag.glsl.o -lGLEW -lGL -lrt -lmpfr -L/usr/local/lib -lglfw3   -ggdb -DMIGHTYMANDEL_DEBUG_OPENGL -lGL -lGLU -lglfw3 -lX11 -lXxf86vm -lXrandr -lpthread -lXi
make: *** [mightymandel] Error 1

I've googled on libm.so.6 and found that this is part of the glibc packge. Currently installed on my Slackware system is "glibc-2.15_multilib-x86_64-8alien" . Do I need a newer version than 2.15 ... ?
Logged
quaz0r
Fractal Molossus
**
Posts: 652



« Reply #8 on: December 25, 2014, 05:10:23 PM »

is "-lm" not in your linker flags?
Logged
youhn
Fractal Molossus
**
Posts: 696


Shapes only exists in our heads.


« Reply #9 on: December 25, 2014, 07:00:41 PM »

Yes, "-lm" was not in my linker flags. But adding it gives yet another error:

Code:
LINK    mightymandel
/usr/local/lib/libglfw3.a(x11_gamma.c.o): In function `_glfwPlatformGetGammaRamp':
x11_gamma.c:(.text+0x1a5): undefined reference to `XF86VidModeGetGammaRampSize'
x11_gamma.c:(.text+0x1f3): undefined reference to `XF86VidModeGetGammaRamp'
/usr/local/lib/libglfw3.a(x11_gamma.c.o): In function `_glfwPlatformSetGammaRamp':
x11_gamma.c:(.text+0x321): undefined reference to `XF86VidModeSetGammaRamp'
/usr/local/lib/libglfw3.a(x11_init.c.o): In function `initExtensions':
x11_init.c:(.text+0x15d3): undefined reference to `XF86VidModeQueryExtension'
collect2: error: ld returned 1 exit status
ERROR   gcc -o mightymandel fp32_step.o atom.o fp32_unescaped.o fp64_unescaped.o fpxx_escaped.o interact.o shader.o fpxx_approx.o complex.o ref_set.o view.o blob_set.o fpxx_init.o render.o fp32_colour.o fp64_escaped.o find_ref.o fp64_init.o parse.o fp64_step.o fp32_fillc.o utility.o fp32_escaped.o fp32_init.o fpxx_unescaped.o mightymandel.o fpxx_step.o state.o record.o fpxx_escaped_vert.glsl.o fp64_complex.glsl.o fpxx_init_vert.glsl.o fp32_escaped_geom.glsl.o fp64_preamble.glsl.o fpxx_step_vert.glsl.o fpxx_init_geom.glsl.o fpxx_unescaped_geom.glsl.o fp32_colour_frag.glsl.o fp64_escaped_frag.glsl.o fpxx_approx_vert.glsl.o fp32_colour_vert.glsl.o fp64_unescaped_geom.glsl.o fp32_fillc_frag.glsl.o fp64_escaped_vert.glsl.o fp64_init_vert.glsl.o fp64_step_vert.glsl.o fp32_fillc_vert.glsl.o fp32_escaped_frag.glsl.o fp32_init_vert.glsl.o fp32_step_vert.glsl.o fpxx_unescaped_vert.glsl.o fp32_unescaped_geom.glsl.o fp32_escaped_vert.glsl.o fp32_complex.glsl.o fpxx_escaped_geom.glsl.o fp64_unescaped_vert.glsl.o fp64_escaped_geom.glsl.o fp32_preamble.glsl.o fp32_unescaped_vert.glsl.o fpxx_escaped_frag.glsl.o -lGLEW -lGL -lrt -lmpfr -L/usr/local/lib -lglfw3   -ggdb -DMIGHTYMANDEL_DEBUG_OPENGL -lGL -lGLU -lglfw3 -lX11 -lXrandr -lpthread -lXi -lm
make: *** [mightymandel] Error 1

Now I suspect problems with the wrong version of Xorg ... ?
Logged
quaz0r
Fractal Molossus
**
Posts: 652



« Reply #10 on: December 25, 2014, 09:22:34 PM »

you can usually guess/google what library you might need to link to when you dont have the right linker flags to start with.  for instance, looking at /usr/lib/libX* on my system i see a libXxf86vm.so, so for undefined references to xf86vidmode something or other i would probably try adding -lXxf86vm
*shrug*
Logged
claude
Fractal Bachius
*
Posts: 563



WWW
« Reply #11 on: December 25, 2014, 11:12:31 PM »

is "-lm" not in your linker flags?

I should definitely add -lm to the Makefile.

But for the other stuff, this is the kind of thing pkg-config (and at a lower level, shared libraries with ldd for .so) was designed to solve, maybe there's a way to get it working with static libglfw3.a so you don't have to hunt down dependencies manually, or alternatively making a shared libglfw3.so might work.  Maybe if enough people bug glfw3 they'll fix it for people compiling from source - I don't have this issue thanks to Debian packages being available, so I don't have a huge amount of motivation to find a solution that works everywhere (but if there is one, I'll gladly make it work in mightymandel by default)...
Logged
youhn
Fractal Molossus
**
Posts: 696


Shapes only exists in our heads.


« Reply #12 on: December 26, 2014, 12:42:41 AM »

Yay!  grin Don't ask me what exactly changed since the previous non-working try ... but it has been compiled now!



First had to upgrade my nvidia drivers to get opengl working, but now the program is running. Navigating through not-so-deep location works great, but further down I notice a lag. While the new location is calculated, the program appears to do nothing. It would be nice to have to kind of visual indication of the progress (showing pixels as they are calculated, perhaps even some low-res pre-renders, or a plain old progress bar). Maybe this won't be an issue when I go out and buy a new GPU card (currently using a Asus GeForce GT 610 ...)

In some situations the program can't handle the glitches and says "failed to find reference". I can reproduce this error by first zooming into sparse areas, then some zooms down to a mini, and finally pointing at "empty" space somewhere around the center.

A bit for navigation, but more for the renders, I would like to have a rotate function and a adjustable zoom-box. This way we can shoot places to render in the virtual fractal world, just as a photographer would do with the real world.

Claude, thank you very much for sharing this new toy!
Logged
PieMan597
Conqueror
*******
Posts: 122



WWW
« Reply #13 on: December 26, 2014, 12:54:22 AM »

I will definately have to try this out when I get back from vacation... (and get a new computer)
Logged
3dickulus
Global Moderator
Fractal Senior
******
Posts: 1558



WWW
« Reply #14 on: December 26, 2014, 01:15:17 AM »

all I had to do (after sorting out pkg deps) was adjust the libs...
-lX11 -lXi -lXrandr -lXxf86vm -lpthread -lGLEW -lGL -lrt -lmpfr -lm -lglfw3
compiles and runs great!
thanks "Santa" claude  dancing banana dancing chilli dancing banana dancing chilli dancing banana for the coolest gift, your time wink
« Last Edit: December 26, 2014, 01:18:14 AM by 3dickulus, Reason: typo » Logged

Resistance is fertile...
You will be illuminated!

                            #B^] https://en.wikibooks.org/wiki/Fractals/fragmentarium
Pages: [1] 2 3   Go Down
  Print  
 
Jump to:  

Related Topics
Subject Started by Replies Views Last post
OpenGL+cuda renderer (video+src) Mandelbulb Implementation kyrlian 3 7880 Last post April 12, 2010, 05:32:34 AM
by keldor314
Billy Stiltner's 3d mandelbrot opengl Others grailseeker 5 3806 Last post May 01, 2012, 04:31:24 PM
by grailseeker
mightymandel 2015-01-01 Movies Showcase (Rate My Movie) claude 0 2020 Last post January 08, 2015, 04:49:16 PM
by claude
CUDA mandelbrot renderer - should I publish? General Discussion kubinator4321 3 13166 Last post January 16, 2015, 04:38:58 PM
by kubinator4321
OpenCL Mandelbrot renderer (Linux/Windows/Mac, opensource) General Discussion trenmost 0 4308 Last post April 29, 2015, 08:44:39 PM
by trenmost

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2015, Simple Machines

Valid XHTML 1.0! Valid CSS! Dilber MC Theme by HarzeM
Page created in 0.152 seconds with 24 queries. (Pretty URLs adds 0.007s, 2q)