Logo by miles - 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: Follow us on Twitter
 
*
Welcome, Guest. Please login or register. March 28, 2024, 11:04:36 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 34338 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
« Reply #15 on: December 26, 2014, 03:04:44 AM »

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

Awesome!  Nice image too smiley

Quote
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).

The lack of progress indication is a bit annoying indeed, but it's related to the way mightymandel works.  It doesn't have a fixed iteration limit, so it just keeps going (iterating all the pixels in parallel) until at least 1 pixel escaped, and the rate of escapes is low.  This means that it'll never finish if the whole view is interior, though I do have some ideas how to check that before starting the render.  Here's the details of how it decides it is finished:

https://gitorious.org/maximus/mightymandel/source/cc2e0f9ed93e3d48adb86872638fba18c43f4e73:src/render.c#L148
http://code.mathr.co.uk/mightymandel/blob/cc2e0f9ed93e3d48adb86872638fba18c43f4e73:/src/render.c#l148

and if you notice line 163 there's a (currently disabled) printout of various statistics - problem is there is no rate limiting so it's quite a flood that slows down the rendering. I plan to fix the rate limiting issue soon - probably by making the new (unreleased so far) --verbose debug option print everything and the --verbose info option (default log level) print a summary every second or so if it changed).

In the current version I have on my laptop (away for xmas), I refactored a lot of stuff (mostly boring internals, but once I've got this awkward stuff finished I should be able to work on all the fun parts more productively, and maybe other people will be able to understand wtf is going on too - too much shared mutable global state and undocumented invariants at the moment.  Reluctant to even push it to gitorious because I have no way of telling if I broke FP64 rendering or so...

Quote
Maybe this won't be an issue when I go out and buy a new GPU card (currently using a Asus GeForce GT 610 ...)

I'm developing on a Geforce G550Ti (except right now I'm on a laptop with G105M, so I can't test much), so yours should be faster than mine already!

Quote
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.

Yes Adam already sent me a test case location, it's really annoying.  The glitch correction is pretty abysmal at the moment, that's my main priority to fix once I get the code into a normal program style (main loop) instead of callback hell.

Quote
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.

Weirdly there is an 'angle' defined somewhere in the code, I think I started implementing it and never finished, or it bitrotted, so I don't think it does anything, and it's not exposed via any user interface.  This was mainly intended for rendering series of related minibrots, scaled and rotated so that all the minibrots match up but the hairs are all different.



I did something similar with aligning embedded Julia sets in this video:

https://archive.org/details/hairy_julias_2013-06-18

Quote
Claude, thank you very much for sharing this new toy!

You're welcome!
« Last Edit: March 10, 2015, 02:52:22 AM by claude, Reason: gitorious.org is closing » Logged
Botond Kósa
Fractal Lover
**
Posts: 233



WWW
« Reply #16 on: December 26, 2014, 04:39:22 PM »

Nice! Can we expect a compiled executable for all the ones who just want to try it out without going through the adventures of compiling?
Logged

Check out my Mandelbrot set explorer:
http://web.t-online.hu/kbotond/mandelmachine/
claude
Fractal Bachius
*
Posts: 563



WWW
« Reply #17 on: December 26, 2014, 05:26:22 PM »

Nice! Can we expect a compiled executable for all the ones who just want to try it out without going through the adventures of compiling?

I can't provide one, it would in anycase be somewhat useless because all Linux distributions have somewhat different sets of libraries and versions, so it wouldn't work.  I could provide a Debian binary, but compiling on Debian is really easy as the dependencies are all packaged already, so there isn't much point.

Maybe someone on other systems can provide binaries for those, but I'd also say it's a bit soon - development is quite rapid at the moment, so the binary would probably be out of date in a week.

I might eventually try and cross-compile one for windows 32bit sometime, just for the learning adventure of it.  I'll post when I've got a binary.  Probably won't be the next released version (it's likely to have some bugs after my heavy refactoring), but maybe the one after once all the bugs are ironed out.
Logged
claude
Fractal Bachius
*
Posts: 563



WWW
« Reply #18 on: December 31, 2014, 09:24:36 PM »

v14-164-g9cd6fc7 (current git master) fixes a bad bug:

https://gitorious.org/maximus/mightymandel/commit/50c0de1f6f8da8a6caf9fa036f084463c4a49cbe
http://code.mathr.co.uk/mightymandel/commitdiff/50c0de1f6f8da8a6caf9fa036f084463c4a49cbe

if you're in the mood to experiment tonight then ignore the bit in the README about getting a stable tag.  otherwise...

v15 is very nearly ready, barring major problems it should be tomorrow (just need to write the changelog since v14, which will be massive).
« Last Edit: March 10, 2015, 02:43:40 AM by claude, Reason: gitorious.org is closing » Logged
claude
Fractal Bachius
*
Posts: 563



WWW
« Reply #19 on: January 01, 2015, 11:56:46 PM »

mightymandel v15 released!  http://mathr.co.uk/blog/2015-01-01_mightymandel_v15.html

Here's a short video with the new improved zoom assembler, much less blurry/grainy than before:
http://mathr.co.uk/mandelbrot/2015-01-01_mightymandel_zoom_assembler_improved.ogv (5MB)
Logged
3dickulus
Global Moderator
Fractal Senior
******
Posts: 1558



WWW
« Reply #20 on: January 02, 2015, 12:58:49 AM »

SuSE Linux

Code:
LINK    mightymandel
/usr/lib64/gcc/x86_64-suse-linux/4.7/../../../../x86_64-suse-linux/bin/ld: /usr/lib/libglfw3.a(x11_clipboard.c.o): undefined reference to symbol 'XConvertSelection'
/usr/lib64/gcc/x86_64-suse-linux/4.7/../../../../x86_64-suse-linux/bin/ld: note: 'XConvertSelection' is defined in DSO /usr/lib64/libX11.so.6 so try adding it to the linker command line
/usr/lib64/libX11.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 fp32_escaped.o startup.o render.o tiling.o fpxx_escaped.o interact.o shader.o complex.o logging.o blob_set.o mightymandel.o utility.o fp64_escaped.o find_ref.o fp32_init.o fp64_init.o fpxx_step.o parse.o fp64_step.o fp32_fillc.o fpxx_init.o fp32_colour.o fpxx_unescaped.o image.o zoom.o fpxx_approx.o ref_set.o record.o fp64_unescaped.o completion.o fp32_fillc_vert.glsl.o fpxx_init_frag.glsl.o fpxx_escaped_vert.glsl.o fp64_complex.glsl.o fpxx_init_vert.glsl.o fp32_escaped_geom.glsl.o fpxx_step_vert.glsl.o fpxx_escaped_geom.glsl.o fpxx_escaped_frag.glsl.o fp32_unescaped_geom.glsl.o fp32_colour_frag.glsl.o fpxx_unescaped_vert.glsl.o fp32_colour_vert.glsl.o fp64_escaped_vert.glsl.o fp32_preamble.glsl.o fp32_fillc_frag.glsl.o fp64_preamble.glsl.o fp64_init_vert.glsl.o fp64_escaped_geom.glsl.o fp32_escaped_frag.glsl.o fpxx_init_geom.glsl.o fp32_init_vert.glsl.o fp32_step_vert.glsl.o fpxx_approx_vert.glsl.o fp32_escaped_vert.glsl.o fp32_complex.glsl.o fp64_escaped_frag.glsl.o fp64_unescaped_geom.glsl.o fp64_unescaped_vert.glsl.o fp64_step_vert.glsl.o fpxx_unescaped_geom.glsl.o fp32_unescaped_vert.glsl.o -lGLEW -lGL -lrt -lmpfr -lm -L/usr/local/lib -lglfw3   -ggdb -DMIGHTYMANDEL_DEBUG_OPENGL
make: *** [mightymandel] Error 1

changed Makefile @ line 19
from...
Code:
LINK_FLAGS := \
-lGLEW -lGL -lrt -lmpfr -lm\
$(shell pkg-config --libs glfw3) \
$(DEBUG_FLAGS) \
$(EXTRA_LINK_FLAGS)
to...
Code:
LINK_FLAGS := \
-lX11 -lXi -lXxf86vm -lXrandr -lpthread \
        -lGLEW -lGL -lrt -lmpfr -lm \
$(shell pkg-config --libs glfw3) \
$(DEBUG_FLAGS) \
$(EXTRA_LINK_FLAGS)

...compiles and runs great!
Logged

Resistance is fertile...
You will be illuminated!

                            #B^] https://en.wikibooks.org/wiki/Fractals/fragmentarium
claude
Fractal Bachius
*
Posts: 563



WWW
« Reply #21 on: January 02, 2015, 03:52:13 PM »

changed Makefile @ line 19

It works without the additions here, but adding it doesn't break anything for me either, so I committed it:
https://gitorious.org/maximus/mightymandel/commit/fd6e22468defdc3e2c1d8122f0025880acb9c408
http://code.mathr.co.uk/mightymandel/commitdiff/fd6e22468defdc3e2c1d8122f0025880acb9c408

Quote
...compiles and runs great!

smiley
« Last Edit: March 10, 2015, 02:42:32 AM by claude, Reason: gitorious.org is closing » Logged
claude
Fractal Bachius
*
Posts: 563



WWW
« Reply #22 on: January 04, 2015, 09:45:36 PM »

mightymandel now has its own home page:

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

updating it is slightly awkward for me, so it may lag behind the git master changes.

some changes in git (apart from documentation stuff and the things already mentioned):

User interface improvements:
new parser for pre-processed FractInt .ppar center-mag variant
new parser for FractInt .gif embedded metadata
new parser for PNG converted from PPM with mightymandel embedded metadata
--interactive mode waits for events instead of polling when rendering is finished, to reduce idle CPU load

Rendering speed improvements:
interior checking for period 1 cardioid and period 2 circle (fp32 and fp64)
increased the default number of iterations performed in each GPU pass

increasing the iterations per pass might cause problems on older GPU (mainly laggy system response during rendering, or even a driver crash), if you have problems related to that (or anything else) please do tell me!
Logged
claude
Fractal Bachius
*
Posts: 563



WWW
« Reply #23 on: January 05, 2015, 03:22:52 AM »

Nice! Can we expect a compiled executable for all the ones who just want to try it out without going through the adventures of compiling?

Here's one cross-compiled for 32bit Windows, just because I wondered if it was possible.  Seems to work in WINE, but I've got no Windows to test with.
http://mathr.co.uk/mandelbrot/mightymandel-v15-65-g58e77b3.zip

Documentation (includes build process and some known bugs):
https://gitorious.org/maximus/mightymandel/source/58e77b3e18ae32e1cbcc52a32dfd647f84da9a2b:WINDOWS.md
http://code.mathr.co.uk/mightymandel/blob/58e77b3e18ae32e1cbcc52a32dfd647f84da9a2b:/WINDOWS.md
« Last Edit: March 10, 2015, 02:41:00 AM by claude, Reason: gitorious.org is closing » Logged
claude
Fractal Bachius
*
Posts: 563



WWW
« Reply #24 on: January 05, 2015, 06:34:13 AM »

Just finished a 3-day render, and found a bug sad

--no-de colouring (and probably the glitch masking too, but that's not so relevant) gives seams at tile boundaries - they're subtle in static images but if there is an even number of tiles, the seam(s) through the center will be static in a zoom video and much more visible.

The solution is relatively simple, save the raw iteration data and only colour it once it has been combined into a full image, instead of colouring tiles separately.


* seam1.png (6.95 KB, 64x64 - viewed 572 times.)

* seam2.png (4.77 KB, 64x64 - viewed 560 times.)

* seam3.png (2.17 KB, 64x64 - viewed 551 times.)
Logged
knighty
Fractal Iambus
***
Posts: 819


« Reply #25 on: January 05, 2015, 02:10:57 PM »

The win32 version works fine here. Thank you.
Logged
cKleinhuis
Administrator
Fractal Senior
*******
Posts: 7044


formerly known as 'Trifox'


WWW
« Reply #26 on: January 05, 2015, 02:32:56 PM »

the rendering method is nice, buuuuuuuuuuuuuuuuuuuuuuuuuut i was expecting a pertubation gpu method, and after a few clicks the images takes already 2secs to render wink i have a i7 3,2 ghz and a radeon 7970 gpu Sceptical
Logged

---

divide and conquer - iterate and rule - chaos is No random!
claude
Fractal Bachius
*
Posts: 563



WWW
« Reply #27 on: January 05, 2015, 02:51:27 PM »

the rendering method is nice, buuuuuuuuuuuuuuuuuuuuuuuuuut i was expecting a pertubation gpu method, and after a few clicks the images takes already 2secs to render wink i have a i7 3,2 ghz and a radeon 7970 gpu Sceptical

I'll just copy/paste the relevant part of the WINDOWS.md file I linked here - extreme slowness is a known bug wink

Quote
\section winbugs Bugs in mightymandel.exe

- `clock_gettime()` isn't working in my mingw64 installation, I think a fix is
  in the works but I don't feel like upgrading my whole system to get a newer
  version, just to compile binaries for an OS I don't use.  This means I just
  ifdef'd out the offending code, so the timing doesn't work (this has the side
  effect of making mightymandel a lot slower because it displays the frame and
  polls for user input after every GPU step, instead of waiting until a timeout
  is reached).

- `localtime_r()` isn't working, so I ifdef'd that out too.  All saved files
  have the same stem, so be aware that each mightymandel session will overwrite
  PPM saved from a previous session:

      NOTICE  saved: mightymandel_1900-01-00_00-00-00_0000_00_00.ppm

- I don't know what happens on real windows wrt stderr or stdout messages.

- I don't know what happens on real windows wrt current working directory of a
  program started by a double click on an icon.  So images could get saved to
  strange places (or saving could fail due to permission issues).

- 1926 lines of error messages are printed on stderr at launch (this may be an
  issue with `wine` instead of `mightymandel.exe`.

      err:wgl:is_extension_supported No OpenGL extensions found, check if your OpenGL setup is correct!

I found this, going to try it soon http://www.decompile.com/cpp/faq/windows_timer_api.htm
Logged
claude
Fractal Bachius
*
Posts: 563



WWW
« Reply #28 on: January 05, 2015, 05:15:35 PM »

@cKleinhuis -- oops, I assumed you were on Windows, but re-reading I'm not so sure...  anyway...

Timers fixed: https://gitorious.org/maximus/mightymandel/commit/809ce98cf55b921530220905c4d8b754c157e8b7
Timers fixed: http://code.mathr.co.uk/mightymandel/commitdiff/809ce98cf55b921530220905c4d8b754c157e8b7

New win32 binary: http://mathr.co.uk/mandelbrot/mightymandel-v15-74-g4a1a535.zip

This one is about 40% faster than the previous one (well, I only tested one parameter, in --one-shot mode, so take that figure with salt).

Now ./mightymandel.exe is only about 3.3% slower than ./mightymandel on my system (excluding the time wine takes to start).
« Last Edit: March 10, 2015, 02:37:24 AM by claude, Reason: gitorious.org is closing » Logged
cKleinhuis
Administrator
Fractal Senior
*******
Posts: 7044


formerly known as 'Trifox'


WWW
« Reply #29 on: January 05, 2015, 05:18:04 PM »

i am windows user, yes wink
Logged

---

divide and conquer - iterate and rule - chaos is No random!
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 6590 Last post April 12, 2010, 05:32:34 AM
by keldor314
Billy Stiltner's 3d mandelbrot opengl Others grailseeker 5 3634 Last post May 01, 2012, 04:31:24 PM
by grailseeker
mightymandel 2015-01-01 Movies Showcase (Rate My Movie) claude 0 1835 Last post January 08, 2015, 04:49:16 PM
by claude
CUDA mandelbrot renderer - should I publish? General Discussion kubinator4321 3 10291 Last post January 16, 2015, 04:38:58 PM
by kubinator4321
OpenCL Mandelbrot renderer (Linux/Windows/Mac, opensource) General Discussion trenmost 0 4110 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.225 seconds with 24 queries. (Pretty URLs adds 0.013s, 2q)