Title: next will be Mandelbulber 2.0 with Qt interface Post by: Buddhi on March 11, 2014, 10:12:35 PM Hi
I decided to redevelop Mandelbulber program almost from scratch. I stuck at point when there is very difficult to fulfill new users requirements. However during last years I have learned a lot about C++ and general programming approaches. I hope this gave me very good foundation for creating new application which will be much more C++ than C. What will be changed the most: - user interface from GTK+ to Qt - GUI will be completely redesigned to be much more user friendly (Qt Designer is really good tool to create interfaces) - all internal parameters will be stored using stl containers (like std::map), which help me to create many functions to manage different types of fractal parameters representation (csv files, text files, change of some parameter for all keyframes, different interpolation methods for different parameters, etc...) - probably hybrid formulas will work in different ways (combine, multiplexing, ...) - will be material editor I can't promise that old settings files will be compatible with new version. I decided to change many things and old data structures are not enough flexible. However I will try to create settings converter to provide even 90% compatibility. I will inform you about work progress. There is a lot of to learn (Qt is new for me) and a lot of to do, so it will take some time. What is already done: - flexible container for all fractal parameters - first trials with Qt windows and widgets ... not so much but this is very beginning Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: Syntopia on March 11, 2014, 10:38:32 PM Good choice - Qt is an excellent toolkit. Is also has easy support for OpenGL and even OpenCL.
- all internal parameters will be stored using stl containers (like std::map), which help me to create many functions to You might consider using Qt's own container library (http://qt-project.org/doc/qt-4.8/containers.html). In my opinion, it is nicer than the STL, e.g. you can iterate using a 'foreach' syntax, and you can easily serialize the content using QDataStream. Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: lukesleftleg on March 11, 2014, 11:36:08 PM I think this is a really exciting announcement Buddhi, even if it means it might be a while before another release.
Mandelbulber has reached a really interesting stage in terms of what the code can do, but I could see that the design was starting to make it hard to progress. Power to your elbow, good Sir, but you take all the time you need. I'll certainly be keeping up with any development reports you decide to share with us with great interest though. The very best of luck, and thank you once again for all you've done so far. :) Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: LMarkoya on March 12, 2014, 12:16:43 AM I am sure everyone here and in the fractal world will be excited about your new offering
Best Wishes and I look forward to seeing whatever you come up with, along with hundreds, if not thousands of others Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: thargor6 on March 12, 2014, 01:05:19 AM Sounds like a lot of work, but seems to be an excellent decision. I wish you good luck and enough power to succeed :-) I'm not using fractal-software (other than mine) because I have no time, but if I would, then Mandelbulber would be my choice. It is already an excellent product!
All the best, Andreas Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: KRAFTWERK on March 12, 2014, 07:46:30 PM I am sure everyone here and in the fractal world will be excited about your new offering Best Wishes and I look forward to seeing whatever you come up with, along with hundreds, if not thousands of others +1 on that Louis, and a great decision Buddhi, looking forward to try it out, just PM if you need beta testing. (on mac ;) ) Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: quaz0r on March 12, 2014, 08:26:03 PM exciting news. do you have any idea what general time frame you are looking at to accomplish a release? a few months? several months? a year? more than a year?
Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: Buddhi on March 12, 2014, 08:40:09 PM exciting news. do you have any idea what general time frame you are looking at to accomplish a release? a few months? several months? a year? more than a year? There is no timeline for this. Everything depends how many problems I will encounter during development and how much help I will get from you. In few days I will establish new subversion repository to share actual source code. Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: quaz0r on March 12, 2014, 09:07:42 PM i will be happy to help if i can
Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: JohnVV on March 13, 2014, 05:45:32 AM gtk or QT go with QT as you are finding out GTK is great BUT --- yes a BUT --- it dose not scale well and uses more and more system resources even Gimp is moving Off "the Gimp Tool Kit " and even Chrome is even moving off GTK QT4 is very stable , widely used , FAST and fast ( needs repeating fast ) and MultiOS Linux ,mac , bsd and even Windows will run it . the QT creator *.pro build files are VERY strait forward and easy to "read the code" or using the everyday qmake is a easy configure process for new users Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: mclarekin on March 14, 2014, 11:36:11 AM combine, multiplexing ... I can't wait :), but on the other hand, I have still so much to learn and experiment on with 1.21 that I could happily wait years for your next version. :beer: :beer: :beer:
Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: element90 on March 14, 2014, 01:08:08 PM I moved Saturn and Titan from C++/Gtkmm to Qt with version 4.0. The reason was so that I could develop an OS X version as getting the native version of Gtkmm (i.e.without X Windows) to build always failed. The move from Gtk 2 to Gtk 3 was far from easy so it was easier to jump toolkits. The OS X version of Saturn and Titan was never released because my iMac effectively died ,its graphics card failed and will now only boot into command line Linux. I had serious performance issues with Qt on OS X, I hadn't tracked down the cause by the time the iMac became sick.
I found constructing user interfaces in code easy and flexible, trying to use Qt's integrated GUI designer complicates matters. To speed the transition to Qt I replaced Gtkmm threads with boost threads as Qt has a QThread class but no means of using methods within a class as threads. The scheme works provided signals transmitted from the thread methods DO NOT have parameters. Qt classes can not be used as subclasses to a template class. If template classes are to be used they can be wrapped in a Qt class, I had to do that for the "CalculatingUnit" template class instantiated with long double and multi-precision in CalculatingUnitLD and CalculatingUintMP Qt classes. Embedding parameter data in png files had to be reworked as the space allowed by Qt was too small for the data I embed into Saturn seed files. In general I've found Qt much easier than Gtkmm. The creation of source packages for Saturn and Titan was complicated as getting GNU autotools to work with Qt is tricky. I use NetBeans 7.3.1 for Qt development on Linux as its integration with subversion is excellent. After a lot investigation I couldn't work out how to get QtCreator to play nicely with subversion, it's probably possible, I just don't know how. Qt on Windows also works well as QtCreator can use Microsoft's compilers which produce much faster code than the GNU compilers. Qt 4.8 is easier to deal with than Qt 5.x, some additional dependencies were added with Qt 5.0 and the documentation for exactly what it is required for distribution is somewhat lacking (last looked at around Dec 2013/Jan 2014). As NetBeans 7.3.1 doesn't support Qt 5 using Qt 4.8 for Linux and Windows makes sense. Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: Buddhi on March 16, 2014, 03:49:33 PM Thanks for all suggestions. Today I made decision how I will do this application. I tried some solutions:
- Standard C++ application edited in Eclipse with qmake - more problems than advantages :) because of lack of integration between qmake and Eclipse. Adding of event slots would be big pain. - - Standard C++ application edited in Eclipse and interface created as .ui files and loaded during runtime using QUiLoader - works very well and make application more independent from UI (better flexibility in the future) Latest one is the best for me. It gives me opportunity to use Qt Designer and my favorite IDE for C++. Now I'm trying to find the best layout of GUI. In attached file there is some preview. On sides of the window there is used Dock Widget which allows to move sections of ui to the place where user want. On the top will be toolbar (not added yet). In pull-down-menu there will be options like save settings, save images, etc... Most of values will be possible to set by slider or by value. Some sliders will work as logarithmic, because of very wide range of value. Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: Buddhi on March 16, 2014, 06:08:46 PM New SVN repository is here: http://code.google.com/p/mandelbulber2/
Everybody who want to join to edit the code and ui, please contact with me. I need also somebody to test it (even this scratch version) under Windows and Mac. I would like to be sure that I'm not using some libraries which are not multiplatform. Every help is really appreciated Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: Syntopia on March 16, 2014, 06:12:05 PM You should consider Qt Creator as well. It has Qt Designer built-in, and supports SVN. It has matured to be a quite powerful IDE.
Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: Buddhi on March 16, 2014, 06:19:14 PM I tried Qt Creator (second option - I wrote by mistake "Qt Designer"). It is really good IDE but not as good as Eclipse. I tried to setup SVN in Qt Creator but without success.
Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: Syntopia on March 16, 2014, 09:12:04 PM I gave it a try with Qt 4.8.5 using MSVC++ Compiler version 18.
I did a "qmake -project test.pro", and then manually added the line "CONFIG += uitools" to the test.pro and loaded it into Qt Creator. There were 133 errors, but most of them were variations of the following: f:\mandelbulber2\mandelbulber2\src\files.h(17) : fatal error C1083: Cannot open include file: 'png.h': No such file or directory ..\mandelbulber2\src\fractparams.cpp(115) : error C2143: syntax error : missing ')' before '{' f:\mandelbulber2\mandelbulber2\src\main.hpp(13) : error C2871: 'std' : a namespace with this name does not exist ..\mandelbulber2\src\primitives.cpp(92) : error C2065: 'M_PI' : undeclared identifier ..\mandelbulber2\src\system.cpp(10) : fatal error C1083: Cannot open include file: 'unistd.h': No such file or directory ..\mandelbulber2\src\parameters.cpp(174) : error C3861: 'snprintf': identifier not found ..\mandelbulber2\src\parameters.cpp(273) : error C2143: syntax error : missing ';' before '{' f:\mandelbulber2\mandelbulber2\src\cimage.hpp(110) : warning C4305: 'return' : truncation from 'double' to 'float' f:\mandelbulber2\mandelbulber2\src\interface.hpp(39) : error C2332: 'struct' : missing tag name In particular, watch out for the compound literals (e.g.(sRGB){45761, 53633, 59498}). This is non-standard C++ and not supported by VC++. Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: Buddhi on March 16, 2014, 09:52:24 PM About those many errors, did you set include path properly in your compiler? It shows that there is missing png.h, unistd.h, etc... It can't even find symbol std (should be included from <iostream>).
In particular, watch out for the compound literals (e.g.(sRGB){45761, 53633, 59498}). This is non-standard C++ and not supported by VC++. How it should be instead to be compatible with VC++? Every GNU compiler have no problem with this. Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: Syntopia on March 16, 2014, 10:44:16 PM Quote About those many errors, did you set include path properly in your compiler? It shows that there is missing png.h, unistd.h, etc... It can't even find symbol std (should be included from <iostream>). In main.hpp there is a 'using namespace std;' before anything is included. Thus the symbol is undefined, and the compiler should complain. "Unistd.h" is a Unix (Posix) thing (http://en.wikipedia.org/wiki/Unistd.h), and not found on the Windows platform. It is available on MingGW, but should be avoided for cross-platform code. The same goes for "Dirent.h". I'm sure there are good Qt equivalents for these. I have different png.h's on my system - are you using the one from the Qt thirdparty lib? Quote How it should be instead to be compatible with VC++? Every GNU compiler have no problem with this. Well, it is a GNU extension: http://gcc.gnu.org/onlinedocs/gcc-3.2/gcc/Compound-Literals.html One portable way would be to define a constructor for the sRGB struct, and pass the parameter as sRGB(r,g,b). Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: Buddhi on March 17, 2014, 05:30:33 PM Thanks for the explanation. However....
In main.hpp there is a 'using namespace std;' before anything is included. Thus the symbol is undefined, and the compiler should complain. 'using namespace std;' is after #include <iostream>, so I don't know why your compiler shows that std is undefined About "unistd.h" and "dirent.h" I just forgot that they are Linux specific. I will use something from Qt lib instead. About png.h I use original one (http://www.libpng.org/pub/png/libpng.html) which is included in Debian as standard dev package. I haven't tried from Qt lib. I don't know what is possible with Qt version of it. For me is very important to have possibility to save PNG line by line (separately, not as a one stream). I use this in tile rendering mode, where is not possible to store whole image in memory. About sRGB I will add constructor with initialization list. This will solve the problem permanently. I will do the same for other structs. Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: Buddhi on March 17, 2014, 06:57:30 PM I have done all changes which Syntopia mentioned as necessary to be compatible with VC++ and to be more platform independent. Please check if some more changes are needed. Actual source is in SVN
Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: Syntopia on March 17, 2014, 09:35:12 PM Thanks for the explanation. However.... 'using namespace std;' is after #include <iostream>, so I don't know why your compiler shows that std is undefined There are no includes in main.hpp. Are you sure you are not looking at main.cpp? I have done all changes which Syntopia mentioned as necessary to be compatible with VC++ and to be more platform independent. Please check if some more changes are needed. Actual source is in SVN I have added libpng and libjpeg from the Qt thirdparty folder to my path, which might work. However, it would be better to include thirdparty libs with the source to ensure the same version are used. We are down to ~60 errors or so. Still a few API calls, which are linux specific: ..\mandelbulber2\src\qt_interface.cpp(136) : error C3861: 'exp10': identifier not found ..\mandelbulber2\src\common_math.cpp(164) : error C2065: 'M_PI' : undeclared identifier ..\mandelbulber2\src\parameters.cpp(174) : error C3861: 'snprintf': identifier not found ..\mandelbulber2\src\system.cpp(94) : error C3861: 'clock': identifier not found Also one compound literal: ..\mandelbulber2\src\parameters.cpp(273) : error C2059: syntax error : '{' This one is actually a case of MSVC++ not following strict standard: ..\mandelbulber2\src\interface.cpp(145) : error C2146: syntax error : missing ')' before identifier 'or' while 'or' according to the standard is a keyword alias for '||', VC++ doesn't allow this (unless running in strict mode). But an easy fix is just to use '||'. And finally these two - which I couldn't easily tell what was wrong with: f:\mandelbulber2\mandelbulber2\src\interface.hpp(39) : error C2332: 'struct' : missing tag name ..\mandelbulber2\src\main.cpp(34) : error C2332: 'struct' : missing tag name ..\mandelbulber2\src\system.cpp(31) : error C2679: binary '=' : no operator found which takes a right-hand operand of type 'const QString' (or there is no acceptable conversion) Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: _revers_ on March 17, 2014, 10:43:04 PM It seems I'm not the only one using Eclipse for Qt development :) It is not a perfect solution but I also prefer it over Qt Creator.
To make Eclipse Qt development a little bit easier I wrote a plug-in that you might want to take a look at: New Qt Form Wizard (https://sourceforge.net/projects/eclipse-cdt-qt-form-wizard/). It generates templates (*.h, *.cpp and *.ui files) for Qt widgets. For example for QWidget: header: Code: #ifndef _NEWFORM_H source: Code: #include "NewForm.h" ui file: Code: <ui version="4.0"> Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: Syntopia on March 17, 2014, 11:31:50 PM And finally these two - which I couldn't easily tell what was wrong with: f:\mandelbulber2\mandelbulber2\src\interface.hpp(39) : error C2332: 'struct' : missing tag name ..\mandelbulber2\src\main.cpp(34) : error C2332: 'struct' : missing tag name Turns out 'interface' is redefined by a macro in a Windows header - so this variable must be renamed. Quote ..\mandelbulber2\src\system.cpp(31) : error C2679: binary '=' : no operator found which takes a right-hand operand of type 'const QString' (or there is no acceptable conversion) Should probably be something like '... = (QDir::currentPath() + QDir::separator()).toStdString();' - but I'd recommend to switch away from std::string and use QString exclusively. Finally it seems you have added a moc file manually for 'qt_interface' and added it to SVN? This will not work as Qt creator creates moc-files in a temporary dir. The moc file ends up being included twice. Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: Buddhi on March 18, 2014, 07:08:55 PM 1. Do you have "main.cpp" like here https://code.google.com/p/mandelbulber2/source/browse/trunk/mandelbulber2/src/main.cpp ??
2. instead exp10 I will use pow(10.0, p) 3. M_PI problem has following solution: Code: #define _USE_MATH_DEFINES 4. snprintf is from stdio.h http://www.cplusplus.com/reference/cstdio/snprintf/ . It is not Linux specific. VC++ doesn't have functions which were implemented in C99. It is also part of C++11, so will be available also in VC++. What I should use instead of it to keep compatibility? Is there any equivalent in VC++? I can use sprintf(), but it will be not as safe as snprintf() 5. clock() is from <ctime> (http://www.cplusplus.com/reference/ctime/clock/) If this is not present in VC++, what I should use instead? 6. 'interface' I have renamed to 'mainInterface' 7. will be like you wrote '... = (QDir::currentPath() + QDir::separator()).toStdString();' I will still use std::string and other std::... containers because they are better described (even I have more books) and I also don't like Qt-style iterators (foreach) which use a lot of macros. Some macros make troubles when there is some mistake in the code. Then compiler shows error inside the Qt header file but not in my source code. It is sometimes difficult to solve problems in the code. In future I will use C++11 'foreach'-like construction (http://www.cplusplus.com/forum/general/106765/) 8. .moc file is necesary when I use QUiLoader. This is only way how slots can be defined and connected automatically with ui. This file was generated with moc. You should not use qmake for this application. Try to handle this as a standard c++ application in VC++ (don't use Qt Creator). Call moc to generate fresh .moc file and then launch c++ build. Fresh changes are already committed to SVN repository. Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: Syntopia on March 18, 2014, 09:20:17 PM Quote 1. Do you have "main.cpp" like here https://code.google.com/p/mandelbulber2/source/browse/trunk/mandelbulber2/src/main.cpp ?? Sure. But the error is still in 'main.hpp' (line 13): https://code.google.com/p/mandelbulber2/source/browse/trunk/mandelbulber2/src/main.hpp Quote 3. M_PI problem has following solution: Code: #define _USE_MATH_DEFINES works! Quote 4. snprintf is from stdio.h http://www.cplusplus.com/reference/cstdio/snprintf/ . It is not Linux specific. VC++ doesn't have functions which were implemented in C99. It is also part of C++11, so will be available also in VC++. What I should use instead of it to keep compatibility? Is there any equivalent in VC++? I can use sprintf(), but it will be not as safe as snprintf() Qt has very nice string functions, e.g.: QString str = QString("delta: %1").arg(d, 0, 'E', 3); // str == "delta: 1.234E+01" Quote 5. clock() is from <ctime> (http://www.cplusplus.com/reference/ctime/clock/) If this is not present in VC++, what I should use instead? clock() is available - the problem was that 'ctime' was not included. It works if I add a "#include <ctime>" at the top of system.cpp. Quote 7. will be like you wrote '... = (QDir::currentPath() + QDir::separator()).toStdString();' I will still use std::string and other std::... containers because they are better described (even I have more books) and I also don't like Qt-style iterators (foreach) which use a lot of macros. Some macros make troubles when there is some mistake in the code. Then compiler shows error inside the Qt header file but not in my source code. It is sometimes difficult to solve problems in the code. In future I will use C++11 'foreach'-like construction (http://www.cplusplus.com/forum/general/106765/) Well, you decide. But I should mention that Qt containers supports both STL-iterators, Java-style iterations and foreach constructions, so you are free to choose. And wrt macros, I think you already sold your soul, once you started using the signal and slots in Qt :-) Quote 8. .moc file is necesary when I use QUiLoader. This is only way how slots can be defined and connected automatically with ui. This file was generated with moc. You should not use qmake for this application. Try to handle this as a standard c++ application in VC++ (don't use Qt Creator). Call moc to generate fresh .moc file and then launch c++ build. Fresh changes are already committed to SVN repository. This sound somewhat strange to me. I think you should aim for being able to build your application with qmake, and I don't think it will require much effort. It seems to work for me, if I simply delete the line: '#include "qt_interface.moc.hpp"' Now, the next problem is the dependence on 'libjpeg' and 'libpng'. Including the headers made the system compile, but linking fails, because the sourcefiles for the libraries needs to be compiled and linked in. I managed to add libpng (and zlib which it depends on) to the project, but I couldn't compile libjpeg easily. I would suggest to include the libpng library with the Mandelbulber source, but change to Qt builtin JPEG saving (which should be good enough unless you also need to stream tiles to JPEG). Finally, there are some hardcoded paths, which should be adjusted: QFile file("/home/krzysztof/workspace/mandelbulber3/qt/render_window.ui"); Update: attached a Windows screenshot! Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: Buddhi on March 18, 2014, 09:47:33 PM Quote Sure. But the error is still in 'main.hpp' (line 13): https://code.google.com/p/mandelbulber2/source/browse/trunk/mandelbulber2/src/main.hpp OK. My fault. I looked into wrong file :) I will correct it Quote Qt has very nice string functions, e.g.: QString str = QString("delta: %1").arg(d, 0, 'E', 3); // str == "delta: 1.234E+01" I have to learn more about QString class. I see that it's much more flexible thar std::string Quote clock() is available - the problem was that 'ctime' was not included. It works if I add a "#include <ctime>" at the top of system.cpp. Will be added Quote Well, you decide. But I should mention that Qt containers supports both STL-iterators, Java-style iterations and foreach constructions, so you are free to choose. And wrt macros, I think you already sold your soul, once you started using the signal and slots in Qt :-) Again, I have to learn more about Qt. I didn't know that I can use stl iterators. That's why I used foreach. Maybe I will switch completely to Qt containers (my soul is chip <- :evil1:). Quote Now, the next problem is the dependence on 'libjpeg' and 'libpng'. Including the headers made the system compile, but linking fails, because the sourcefiles for the libraries needs to be compiled and linked in. I managed to add libpng (and zlib which it depends on) to the project, but I couldn't compile libjpeg easily. I would suggest to include the libpng library with the Mandelbulber source, but change to Qt builtin JPEG saving (which should be good enough unless you also need to stream tiles to JPEG). I will try to use JPEG from Qt. About libpng I shouldn't attach any binaries (libraries) to the source. They are system specific. Only way to attach it would be to include full source for libpng, but it will make more troubles. I'm Linux user, so I always have all needed libraries in the system. I have no idea how it looks like in MS VC++. Quote Finally, there are some hardcoded paths, which should be adjusted: QFile file("/home/krzysztof/workspace/mandelbulber3/qt/render_window.ui"); I have just put this like now for testing. I will change it tomorrow. By the way, do you want to have commit access to SVN repository? Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: flexiverse on March 18, 2014, 10:21:48 PM I think you should use u++
Its clearly far superior to qt and all others. Plus, less code, cross platform. Check it out http://www.ultimatepp.org/index.html Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: quaz0r on March 19, 2014, 02:28:00 AM personally im always annoyed at projects that include the full source of common libraries into their own source :police:
Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: quaz0r on March 19, 2014, 06:42:27 AM I was curious if I would be the only one who would be interested in multiprecision functionality being added to mandelbulber? I was looking around and found this mpreal (http://www.holoborodko.com/pavel/mpfr/) C++ header that someone created to encapsulate MPFR (http://www.mpfr.org/) which makes it very easy to add multiprecision to existing code by overloading operators and all the math functions like sin() sqrt() etc. The main thing that would need to be done is to go through and find all the variables of type double that would need to be made type mpreal. I was thinking the user could either toggle multiprecision mode manually and enter the precision manually, or perhaps the program could automagically switch to multiprecision mode and adjust the precision as needed based on when it encounters DE error like it does when you try to zoom beyond what the current precision can handle? I know nobody has really bothered to mess with multiprecision for 3D fractals yet mainly I think because of current computing power being very limiting for such a thing, but I think it could be usable for no-frills stuff not using complicated hybrids or fancy effects. If people are willing to wait a day or two for fancy volumetric lights and things to render, maybe some people would be interested enough to wait a day or two for a deep zoom to render?
Another thought I had was to implement an autofocus? It would be particularly useful for animations. Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: element90 on March 19, 2014, 12:56:22 PM Quote Only way to attach it would be to include full source for libpng, There should be no need to use libpng at all. PNG files can be saved directly from a QImage object, JPEG can also be saved in the same way. Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: Buddhi on March 19, 2014, 05:59:22 PM Update: attached a Windows screenshot! At first view looks ok. Even better than on my computer, because of some unknown reason it doesn't display icons (arrows) inside buttons. Possibly I'm doing something wrong with icons.qrc. Is there needed to compile this resource file? Other thing: could you check what happens if you click on "Light sources" / "Color" button. Should appear color selector window. I'm asking because it is not form standard Qt lib, but from KDE Widgets. Next thing: What happens if you click on "Render button"? Should be rendered some colored pattern (just for testing). Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: Buddhi on March 19, 2014, 06:17:44 PM There should be no need to use libpng at all. PNG files can be saved directly from a QImage object, JPEG can also be saved in the same way. As I mentioned before one reason to not use PNG from QImage object is that there is not possible to write image line by line (needed for tile rendering to save memory usage). Next thing is that QImage doesn't support images in 16-bit per channel formats. (RGBA64 16-16-16-16). However I'm taking into consideration to use QImage to save JPG images. I found that it can use existing memory buffer (not needed to generate additional for QObject) so it should not be memory expensive. Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: Syntopia on March 19, 2014, 09:16:41 PM I will try to use JPEG from Qt. About libpng I shouldn't attach any binaries (libraries) to the source. They are system specific. Only way to attach it would be to include full source for libpng, but it will make more troubles. I'm Linux user, so I always have all needed libraries in the system. I have no idea how it looks like in MS VC++. You should certainly not attach binaries to the source. What I would do, would be to include the source code for libpng - it is quite small, and easy to compile. personally im always annoyed at projects that include the full source of common libraries into their own source :police: What is the alternative? That people need to hunt down the source, perhaps getting an incompatible version, and then compiling it? These libraries are not standard libraries on Windows. Quote By the way, do you want to have commit access to SVN repository? Well, it might be easier, but I don't know how much time I'll have for it. Anyways, my gmail account is mikaelhc@gmail.com. At first view looks ok. Even better than on my computer, because of some unknown reason it doesn't display icons (arrows) inside buttons. Possibly I'm doing something wrong with icons.qrc. Is there needed to compile this resource file? The proper way to use Qt is to run the following tools when building: - moc: should be called on all header files with a Q_OBJECT macro. Produces a 'moc_filename.cpp' file, that must be added to the project, but ordinarily is not added to version control. - rcc: compiles resources (such as your icons) into an embeddable object. - uic: compiles .ui files. (instead of loading them dynamically, at runtime) All of this is automatically taken care of, if using qmake. Quote Other thing: could you check what happens if you click on "Light sources" / "Color" button. Should appear color selector window. I'm asking because it is not form standard Qt lib, but from KDE Widgets. Doesn't work. I don't think you can embed a custom KDE widget in a Windows build. There is QColorDialog, though. Quote Next thing: What happens if you click on "Render button"? Should be rendered some colored pattern (just for testing). Works! Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: DwarfStar on March 19, 2014, 10:06:04 PM Buddhi,
I sent you an email yesterday about testing Mandelbulber 2.0 for you, but I have not received a response. So, I'll try posting a couple questions/comments here. 1. Question - Is the SVN at http://code.google.com/p/mandelbulber2/ ??? There is nothing to download and start testing with. 2. Comment - Please keep PNG, I use PNG16 Alpha exclusively to render my source images to create HD videos. The Alpha channel is a MUST have!!! 3. Comment - My OS is Windows 7, since Mandelbulber 1.19 or 1.20 (currently using 1.21), I have had blank spots in the UI, such as in the progress bar. As the progress bar advances, it blanks out the field it occupies. This is similar to the icon button issue mentioned before this post. 4. Question - Does the installer of the test version of Mandelbulber 2.0 place the program into \Mandelbulber folder? Look forward to helping with 2.0!!! Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: quaz0r on March 19, 2014, 10:17:10 PM svn checkout http://mandelbulber2.googlecode.com/svn/trunk/ mandelbulber2
Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: DwarfStar on March 19, 2014, 10:38:04 PM Quote svn checkout http://mandelbulber2.googlecode.com/svn/trunk/ mandelbulber2 Thank you, I checked it out, but there is no compiled code yet. I'm running Windows 7 64bit, so as soon as a compiled beta is ready to go, so am I. Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: Buddhi on March 22, 2014, 11:23:41 AM Finally I have found way to use Eclipse with qmake. First I learn to use moc, qrc and uic manually. When I had understood what they are exactly doing, then was very easy to create .pro file for qmake and configure Eclipse. I have also resign from use QUiLoader for main window. Now it's like standard Qt application.
Actual version of the source with proper .pro file in already in SVN. Now I'm going to develop substitution of KColorButton, because it could not work under Windows. Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: knighty on March 22, 2014, 03:00:28 PM Mandelbulb would be cute with Qt. ;D
:thumbsup1: Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: Buddhi on March 23, 2014, 08:44:59 AM If anybody has some remarks about source code, all comments can be placed directly in code.google site: https://code.google.com/p/mandelbulber2/source/list
Then will be less posts here about the code. In this site you will also see detailed information about latest changes in the Mandelbulber code. In this thread I would like to publish only information about work progress or when I will stuck on something. Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: visual.bermarte on April 02, 2014, 12:02:02 AM from render_window.hpp
Code: #include "../qt/ui_render_window.h" isn't this header missing? Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: Buddhi on April 02, 2014, 06:30:58 AM Yes, it's not present. This header is generated automatically by qmake. In debug folder there is .pro file. It is a configuration file for qmake. Qmake generates all needed header files regarding the user interface and also creates makefile.
Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: Buddhi on April 15, 2014, 08:23:14 PM Hi
It's time for some update. The user interface is in 60% designed. In attached file there is a screenshot. Functions are grouped in movable dock widgets. If the user want to arrange interface there is possible to move docks to different places or even detach from main window. Almost all parameters are adjustable with sliders. For parameters with very wide value range the slider is logarithmic. Color selection buttons are created without using KDEColorButton, so it works without kdeui libraries. Actual development version is as always in SVN repository (https://code.google.com/p/mandelbulber2/source/checkout). I hope it should be possible to compile it even using MS Visual Studio (thanks to Qt it's much more platform independent). QMake project file is in Debug folder. Please share your opinion. There is still possible to redesign the interface if this is not optimal. Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: ellarien on April 15, 2014, 09:15:02 PM It looks nice. Will it adjust gracefully to 'smaller' screens like my 1366x768 laptop?
Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: cKleinhuis on April 15, 2014, 11:29:05 PM @buddhi do you plan to improve the "hybrid" creation of mandelbulber ?! i always found it very hard to understand what the program actually does, and quite limiting compared to the possibilities with mandelbulb3d, are you improving on hybrid creation ( as list of formulas, rather than some predefined param slots ... ) ? i hope sooooooooooooooooooooooooooooooooo much!
Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: Buddhi on April 16, 2014, 05:47:44 PM @buddhi do you plan to improve the "hybrid" creation of mandelbulber ?! i always found it very hard to understand what the program actually does, and quite limiting compared to the possibilities with mandelbulb3d, are you improving on hybrid creation ( as list of formulas, rather than some predefined param slots ... ) ? i hope sooooooooooooooooooooooooooooooooo much! Yes, it will be improved. If you look at screenshot you will see that there are separate tabs for each hybrid formula step (like in Mandelbulb3D). Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: lukesleftleg on April 17, 2014, 08:28:09 AM Just to say that the GUI is looking really nice.
Really very nice indeed. Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: rh73 on April 18, 2014, 09:11:51 AM 1. Did somebody manage to build this Qt version under Windows?
I tried it manually (qmake then make from command line) and it compiles a bunch of files then throws this error: Code: ..\src\system.cpp: In function 'bool InitSystem()': This is using Qt4.8.5 and mingw32-gcc-4.4.0. First I tried the latest Qt5.2 but it complained about deprecated function(s) in the code so I downgraded to 4.8 and had to downgrade gcc as well to avoid having to rebuild Qt from scratch and adding just another possible reason to mess up things and don't know what's going wrong. 2. And is there any way to properly integrate Qt into Eclipse (or visual studio, for that matter)? How is the development process going to look like? It's going to be necessary to jump a lot between ui design and coding functionality for ui elements, so using a solution where this is possible seamlessly would be very beneficial. Edit: I'm getting closer it seems. Manual compile went through, but now it doesn't want to link: Code: C:\Users\Robert\workspace\mandelbulberqt\trunk\mandelbulber2\Debug>make all I'm starting to feel like it would be easier (for me) to grab the render kernel and slap a nice little .NET interface on it. Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: Buddhi on April 18, 2014, 04:49:41 PM Quote This is using Qt4.8.5 and mingw32-gcc-4.4.0. First I tried the latest Qt5.2 but it complained about deprecated function(s) in the code so I downgraded to 4.8 and had to downgrade gcc as well to avoid having to rebuild Qt from scratch and adding just another possible reason to mess up things and don't know what's going wrong. I use Qt 4.8.4, but I'm going to migrate to 5.2.1. One month ago I had some issues with Qt5 but last weeks there were some updates. By the way I will substitute this obosolete QtString::toAscii() function Quote 2. And is there any way to properly integrate Qt into Eclipse (or visual studio, for that matter)? How is the development process going to look like? It's going to be necessary to jump a lot between ui design and coding functionality for ui elements, so using a solution where this is possible seamlessly would be very beneficial. You have some options: 1) use Qt Creator - here you have full integration (ui editor with code editor) 2) use Eclipse. To integrate it you need to: - set in project Properties/C++Build/Settings/Build Steps/Pre-build steps folowing command: qmake -o makefile mandelbulber.pro - disable Properties/C++Build/Builder Settings/Generate Makefiles automatically then qmake will create Makefile file and also genrate some header files like qt/ui_render_window.h ui editor won't be integrated, but compilation will work directly from Eclipse. 3) With Visual Studio is also possible. Ask Syntopia how to do this. Quote I'm getting closer it seems. Manual compile went through, but now it doesn't want to link: check if libpng is present in mingw or some library path is not defined properlyQuote I'm starting to feel like it would be easier (for me) to grab the render kernel and slap a nice little .NET interface on it. Would be easier for Windows users, but then this application won't be multiplatform. Under Linux it's very easy, because installation of development packages is very simple. Everything is already in the system.Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: rh73 on April 18, 2014, 05:50:24 PM I use Qt 4.8.4, but I'm going to migrate to 5.2.1. One month ago I had some issues with Qt5 but last weeks there were some updates. By the way I will substitute this obosolete QtString::toAscii() function The problem with Qt4.8 is that you need an old version of mingw/gcc unless you plan to compile Qt yourself. Which I'd rather avoid because first you need Perl and Python and so on. Quote You have some options: 1) use Qt Creator - here you have full integration (ui editor with code editor) 2) use Eclipse. To integrate it you need to: - set in project Properties/C++Build/Settings/Build Steps/Pre-build steps folowing command: qmake -o makefile mandelbulber.pro - disable Properties/C++Build/Builder Settings/Generate Makefiles automatically then qmake will create Makefile file and also genrate some header files like qt/ui_render_window.h ui editor won't be integrated, but compilation will work directly from Eclipse. 3) With Visual Studio is also possible. Ask Syntopia how to do this. check if libpng is present in mingw or some library path is not defined properly Would be easier for Windows users, but then this application won't be multiplatform. Under Linux it's very easy, because installation of development packages is very simple. Everything is already in the system. I know that Qt works relatively well with VS, so that's going to be a last resort. But I wanted to try out Eclipse + mingw to learn something new. My current problem is getting libpng into the mingw installation which is bundled with Qt5 (it doesn't have msys). I tried simply mounting this mingw folder from a fresh msys install and install libpng and some other stuff but it didn't have the desired effects... (it installed into a new msys folder inside Qt's mingw). Well I guess I could just import the libpng sources into the project and don't try to mess with mingw but then installing every other library will be as tedious, too. Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: Buddhi on April 18, 2014, 10:20:15 PM Quote The problem with Qt4.8 is that you need an old version of mingw/gcc unless you plan to compile Qt yourself. Which I'd rather avoid because first you need Perl and Python and so on. Today I have tested Qt5 (5.2.1). The result was poor. The code needed some minor changes, which was not a problem (updated code for Qt5 is in SVN). Unfortunately I wasn't able to start Mandelbulber. It crashed before main(). I don't know the reason (debug version of Qt5 is not yet available in Debian and I had no patient to compile all Qt5 libraries from source). Next thing I found that themes for Qt4 are not compatible with Qt5. This makes the program ugly (I saw preview in Qt Designer). I think it's too early to work with Qt5. Even if you look at many modern applications with Qt, you will see that still none of them use Qt5. So my decision is stay with Qt4 for next several months. Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: rh73 on April 19, 2014, 12:49:31 AM Ah, I wrote you an email before checking the forum. I managed to build it with qt5 as well, but it crashes for me too. Good to know that it'S the same for you because I was sure I'm still doing something wrong.
Edit: Here's a bit output from the .exe I got with starting it in QtCreator: Code: Debugging starts Edit: the crash happens in the constructor of RenderWindow when trying to execute Code: ui->setupUi(this); Edit: I forgot to mention that there was another problem: in main() it tried to open a log file, but with empty filename string. You need to call InitSystem() before any call of WriteLog(). Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: visual.bermarte on April 20, 2014, 03:54:56 PM using QT 4.8 and version 21, everything is fine on OSX, much easier than GTK
Code: export PATH=$PATH:/usr/bin Code: cd debug here I have added png header and library to makefile, for me is -I/Users/me/gtk/inst/include to INCPATH and -L/Users/me/gtk/inst/lib to LIBS :dink: than I have changed cimage.hpp to include QtGui/QWidget instead of QtGui Code: #include <QtGui/QWidget> and qpainter.h to interface.cpp Code: #include <qpainter.h> then I have removed -lQtXml -lQtCore -lQtGui from makefile and finally I ran make command Code: make this is a screenshot of the interface when I press on render button Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: Buddhi on April 20, 2014, 08:50:45 PM Edit: I forgot to mention that there was another problem: in main() it tried to open a log file, but with empty filename string. You need to call InitSystem() before any call of WriteLog(). I can't find this place in the code. Where it is called before InitSystem()? Is this some initialization of global variable? using QT 4.8 and version 21, everything is fine on OSX, much easier than GTK Great to see this. Thanks bermarte for the trial. I will consider your remarks in the code. Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: rh73 on April 20, 2014, 09:57:58 PM I can't find this place in the code. Where it is called before InitSystem()? Is this some initialization of global variable? Umm, good question. It's not there anymore, and after looking through the older revisions of main.cpp it was never there. It's probably that I tried to move the instantiation of QApplication to the top and accidentally moved WriteLog line before that with it. So I was accusing you of a bug I added myself :) I have it working fine with Qt5 now, but as I mentioned per mail, the application startup of Qt5 apps takes VERY long on Windows - 5 seconds before the window shows, every time. Which surprises me, I thought Windows tries to cache dlls which are used frequently, so why do subsequent starts take just as long, too? In comparison Qt4 performs much better in that regard, the same demo applications and mandelbulber2 start almost instantly. But QtCreator seems to do a good job with handling different parallel installs of Qt versions and compilers, so at least that's nice. Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: Buddhi on May 19, 2014, 08:18:53 PM Time for some update:
In attached file there is fresh screenshot of Mandelbulber taken from my screen. What you see is the rendering engine is almost rewritten to new Qt application. What is done: - containers for parameters work very well - main rendering engine is almost new. I have created many new C++ classes for it. Now when I look into the code I like it (old code worked very well but was ugly) - new engine has capability to render regions (many people asked for it, but in old engine it was too difficult to implement) - during rendering there is refreshed preview for only last rendered lines (faster refresh) - multi-threading is done using QThread (platform independent) - all functions are taken (I hope) from Qt lib, so the application still should be multiform. It is to check. - actually only one fractal formula is implemented (only Mandelbulb). It was enough for render engine testing - new camera positioning partially implemented (camera - target) What is important for me I started to understand Qt philosophy. Now it is even possible for me to create new widgets based on inheriting of existing objects and re-implement built-in functions (and then use promotion in QtDesigner). I think this functionality of Qt is the most powerful thing. But to achieve this level of understanding I had to read about 1500 pages of C++ handbooks (Symphony in C++ - Jerzy Grebosz and The C++ Standard Library: A tutorial and reference - Nicolai M. Josuttis) and tons of Qt pages. Learning, learning, and learning..... Next to do: 1. interface functions - camera movements - parameters saving/loading - image save, loading of textures 2. some more fractal formulas and hybrid fractals (new approach) It looks like about 30% of work is done. Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: lukesleftleg on May 20, 2014, 01:44:53 PM Very exciting news, Mr Buddhi.
I continue to watch with great interest. :) Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: quaz0r on May 20, 2014, 07:34:09 PM sounds nice
Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: geomagnet on June 10, 2014, 02:39:04 AM Thank you so much for all your hard work. I've enjoyed using your program and watching it grow into this beautiful product.
I look forward to all your future releases. Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: Buddhi on June 15, 2014, 11:05:49 AM Update:
Camera movements are done. It took much more time than I assumed, but now it should cover requirements from all users. In attached image there is navigation panel. - there is possible to move camera and target separately - there are three modes for movements: - fixed camera-target distance: camera and target will move together. Camera will not rotate during movement - move camera: only camera will be moved, and will rotate to look at the fixed target - move target: target will be moved, camera will stay in fixed position and rotate to look at target - there is slider to change distance between camera and target (depending on mode, will move camera or target) - all movements can by by constant step or by step depending on distance to the fractal surface - rotation are in two modes: - rotate camera: target will be rotated around the camera - rotate target: camera will rotate around the target - yaw/pitch/roll can be controlled in two modes: - fixed roll angle: all movements/rotations will not roll the camera - straight rotation: rotation behavior will not depend in polar coordinates, especially when pith is almost 90 degrees. One of most important things is camera will behave properly in animation mode in every configuration. In old version there was a problem when pitch was close to 90 degrees or some angles pass 180 or 360 degrees. In actual camera engine there is used internally the vector which indicates top direction of the camera. In animation this vector will be morphed and controls camera roll. Other rotations will be controlled by configuration of the camera against the target. There was a lot of algebra to do this, but I like how it behave. other things done: - image view scaling and re-sizing with window re-size - added status and progress bar with rendering time calculation Next to do: - camera movements by mouse clicks - optimize rendering engine (it's about 30% percent slower than in old version) - I have to find where is the bottleneck. Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: lukesleftleg on June 16, 2014, 08:57:42 PM Oh that is really nice.
Quite a few times I've wished I had a target camera to work with. You're spoiling us, Buddhi. :D Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: Mihaly on July 10, 2014, 09:12:27 PM Wow! This is great news. I haven't been keeping on the forums much for awhile, but I do use several fractal generating programs and have been using mandelbulber and enjoying it very much - thank you very much - and would be happy to do a little trialling even of beta software, I am familiar with the 1.21 interface using GTK but I run it on a much newer machine (recent purchase a nice core i7 2GHz, 4Gb Ram and Nvidia GT720 graphics card) so I have been really putting it through it's paces (sadly I do still use Windows 8, but I can test the software on an older XP laptop as well as an AMD machine I have on the kitchen table - I know - I have no life!)
But if I may be able to provide some feedback, and try out the software on various systems it could be some small return for the wonderful you and others have done making this great stuff, and it has been simply amazing to go from a pentium M to a full-on core i7 and test graphics cards really putting them to some use (rather than just gaming, though nothing against gaming either). I don't know how the Qt interface change will affect how it renders the UI under Win 8, but I'd be happy to poke around a bit with testing if it can be of any help. I'm not really great artistically, I'm usually more interested in exploration of 3D slices of Quaternions, so I usually am interested in developing fly-throughs of interesting features. Also I don't really understand about getting GPU performance settings right, nor what is OpenCL (vs OpenGL?) so I hope to learn something along the way. I do have some background in computing but it has been a long while since I actually wrote any code, and that was mainly for analysis, not graphics as such. Anyway, I am sure there are probably already heaps of people happy to help, but I will definitely be interested to follow how the project goes! Once again many thanks for the software, it is greatly appreciated. :D Mihaly K. Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: Buddhi on July 31, 2014, 10:02:12 PM Development progress update:
- applied all fractal formulas from old Mandelbulber (a lot of work with UI for each formula, especially Mandelbox and IFS) - implemented hybrid fractals (now each formula has own tab for settings) - added load/save settings functions (introduced new file structure) - added save image functions (jpeg - used QImageWriter, png - still used libpng because of 16-bit image formats) - added progressive rendering (much optimized in compare with old Mandelbulber) - added error messages - added loading and previews for textures (background, environment mapping, light map for ambient occlusion) - project fully migrated to Qt5 Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: lxegs on August 03, 2014, 03:20:51 PM Hi
I' ve tried this version and it works well (still some bugs but usuable) I ve also tried to pass some arguments to g++ @ compilation and my conclusions are : - gcc versions 4.9 makes more optimized code - compiling using flags like "march=core-avx-i" & "-O3" for i3/i5/i7 2nd/3rd generation make rendering 2 or 3x faster than without ! there is also a flag for 4th generation using AVX2 instructions but I haven't this sort of CPU for testing ... Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: quaz0r on August 08, 2014, 12:25:54 PM i just built from svn to take a look and it looks very nice, its even somewhat functional already. very nice :) :beer:
Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: zebastian on August 10, 2014, 09:28:24 PM Hi I' ve tried this version and it works well (still some bugs but usuable) I ve also tried to pass some arguments to g++ @ compilation and my conclusions are : - gcc versions 4.9 makes more optimized code - compiling using flags like "march=core-avx-i" & "-O3" for i3/i5/i7 2nd/3rd generation make rendering 2 or 3x faster than without ! there is also a flag for 4th generation using AVX2 instructions but I haven't this sort of CPU for testing ... Hello, I got best results with this CXXFLAGS: QMAKE_CXXFLAGS += -march=native -Ofast # | | # | ------ Optimization for fast executing code (includes -O3 and -ffast-math) # | # -------------------- turns on system-dependent optimization I am using an Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz. The default image (Mandelbulb 800 * 600) renders in 3,72 Compared to 4,63s with the current settings. (~20% saving) Here is more info about optimizing compiler flags in the gcc doc: https://gcc.gnu.org/onlinedocs/gcc-4.9.1/gcc/Optimize-Options.html#Optimize-Options That's probably still suboptimal and compiling takes forever (even with make -j). Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: Buddhi on August 10, 2014, 09:55:33 PM About march=core-avx-i and QMAKE_CXXFLAGS += -march=native -Ofast I have to consider that the program has to run on different machines. That's why I not use those flags. If I use -march-native it will be optimized only for my machine, and the program can crash on other CPU. core-avx-i flag makes program running only on newest Intel CPUs (on my computer doesn't run at all). The program will be distributed with standard flags. But source code will be still available if anybody will want to use all CPU features.
By the way, thank you for testing the program, even when is not finished. P.S. you have very fast machines. On my PC it takes 10s to render default settings (Intel Core 2 Quad 2.2GHz). Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: quaz0r on August 11, 2014, 11:33:38 AM would it make sense to distribute source code with something like march=native since people building from source will be doing it for their own computers and anyone making builds to distribute will know not to use march? also i wonder if it might be worth making available different windows builds for different cpus if the performance difference is noticeable enough? another thing i have wondered is if supporting something like intel's math kernel library would make any noticeable performance difference? the intel math kernel library is supposed to have some specially optimized cvector routines and trig routines and stuff. after a quick search it looks like amd has their own thing called the amd core math library.
Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: Buddhi on August 17, 2014, 09:53:02 PM I don't like doing anything under Windows, but today I have decided to look how new Mandelbulber works. First I tried to establish QT Creator with Visual Studio C++ 2010 Express, but I was not able to create appropriate libraries for libpng and zlib. I got many strange errors (libraries were successfully compiled, but Qt Creator couldn't link them), and after many hours of fighting I decided to switch to mingw. Then everything went smooth and I got exe file for Mandelbulber v2 without any significant changes in code (only small change in file dialogs, because they made crashes).
Finally I have created package with testing version of the program (without any installer, just zip file). It's here: https://sourceforge.net/projects/mandelbulber/files/mandelbulber%20v2%20-%20alpha%20001.zip/download By the way, has anybody tried to compile Qt application for win64 target? If yes, what is needed to do this? Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: lxegs on August 17, 2014, 11:04:40 PM Hello
I 'm using a 64 bit windows version for weeks without problems (32 bits version is limited to 3 Go of RAM and it crash (seems it doesn't use swap) , only the 64 bits version can make very large size of fractals) I have downlaoded a precompiled version of QT5 64 bits and recompiled libpng & libz under 64 bits, the whole thing with mingw 64bits. i m using qtcreator (the "official" version, and add external compiler and the previous downloaded qt path) links : http://sourceforge.net/projects/mingw-w64/ (http://sourceforge.net/projects/mingw-w64/) http://www.winkde.org/pub/kde/ports/win32/emerge/ (http://www.winkde.org/pub/kde/ports/win32/emerge/) --> the are many ways to compile libpng, i use it becuse i think it's very easy http://sourceforge.net/projects/qtx64/files/qt-x64/5.3.1/mingw-4.8/seh/ (http://sourceforge.net/projects/qtx64/files/qt-x64/5.3.1/mingw-4.8/seh/) --> for x64, prefer a "seh" version, not sjlj the only problem that i have, is that i need to declare all the environnement of QT (not compiled in static mode ??) to work each time (bat file), like this : Code: cd /d D:\mandelbulber2\mandelbulber2\build-mandelbulber-Desktop_Qt_5_3_1_x64_MinGW_x86_64_4_9_1_posix_seh_rt_v3_rev0-Release\release Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: lukesleftleg on August 18, 2014, 01:45:52 PM Hi Buddhi, and thanks very much for the alpha.
Unfortunately, I couldn't get it to run (Win 7 64bit). All I got was an error window with the following message: Quote from: Windows This application failed to start because it could not find or load the Qt platform plugin "windows". Reinstalling the application may fix this problem. Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: lxegs on August 18, 2014, 02:55:56 PM Hi lukesleftleg
it seems you have to install QT framework for now : http://download.qt-project.org/official_releases/qt/5.3/5.3.1/qt-opensource-windows-x86-mingw482_opengl-5.3.1.exe (http://download.qt-project.org/official_releases/qt/5.3/5.3.1/qt-opensource-windows-x86-mingw482_opengl-5.3.1.exe) relaunch mandelbulber.exe and it should work Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: lukesleftleg on August 18, 2014, 08:21:42 PM Hi lxegs, and thanks very much for the pointer.
I've downloaded and installed from the link you gave me, but unfortunately it doesn't seem to have made any difference. It's cool. I can wait for full release. :) Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: knighty on August 19, 2014, 10:23:18 PM me 2!
Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: lxegs on August 20, 2014, 03:43:49 PM Hi
Just compiled a static version, just unzip it and launch you need to have a x64 version of windows, tested on 8.1 only, but should work on 7 & vista too i have seen it can't load parameters files without crashing .... https://drive.google.com/file/d/0B4iVMoUTj0zccFF1ZXhtQXd4VUE/edit?usp=sharing (https://drive.google.com/file/d/0B4iVMoUTj0zccFF1ZXhtQXd4VUE/edit?usp=sharing) Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: lukesleftleg on August 20, 2014, 11:52:04 PM Hi lxegs,
Yep, that's done it. Thanks very much indeed. And in other news.... Wow Buddhi, that's really nice! I'm going to enjoy this. You should be most proud. Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: mclarekin on August 21, 2014, 01:38:37 AM Yes lxegs that's done it, seems to work fine on Win 7, with old Intel i3 2.13GHz the default mandelbulb took 6.67 seconds compared 9.72 seconds on to version 1.21 64 bit using openCL on CPU .
thanks :) but then crashed in subsequent attempts to load parameters :sad1: Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: knighty on August 23, 2014, 04:20:58 PM @Buddhi:
You need to include "imageformats" and "platforms" directories to the package. That's why it doesn't run everywhere. See this thread (http://qt-project.org/forums/viewthread/37916/#165675). (you don't need QML and Qtquick plugins though). Very nice interface BTW! Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: LMarkoya on August 24, 2014, 04:11:21 AM Will there be a MAC pre release?
Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: taurus on September 04, 2014, 10:51:59 PM I had my hands on the windows alpha of Mandelbulber 2.0. My Summary:
Stability: at first glance ok Interface: extremely nice and flexible Features: early alpha Speed: feels pretty fast, even in hybrid mode Must have: compatibility mode - a possibility to load even basic properties of old parameter files conclusion: still some way to go, but quite promising! Keep it going! :beer: Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: visual.bermarte on September 08, 2014, 04:45:24 AM +1 on that Louis, and a great decision Buddhi, looking forward to try it out, just PM if you need beta testing. (on mac ;) ) Will there be a MAC pre release? http://sourceforge.net/projects/mandelbulber/files/mandelbulber_v2_002_x86-64_alpha.dmg/download (http://sourceforge.net/projects/mandelbulber/files/mandelbulber_v2_002_x86-64_alpha.dmg/download) (OSX 10.6-64 bit)Now it is possible to compile mandelbulber using xcode. Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: quaz0r on September 08, 2014, 06:20:15 AM mb2 looks to be not only a rewrite but a reconceptualization of the program, so there likely is not a 1:1 relation between mb1 parameters and mb2 parameters, so any ability to load old parameter files would be kind of a hackish novelty it seems
Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: lxegs on September 14, 2014, 12:52:40 PM Hello
I've just rebuild a win32 version from last svn revision I've found a workaround for loading bug (QT framework built without ICU support) https://drive.google.com/file/d/0B4iVMoUTj0zcWl9GUUNTdlp1ek0/edit?usp=sharing (https://drive.google.com/file/d/0B4iVMoUTj0zcWl9GUUNTdlp1ek0/edit?usp=sharing) Title: Re: next will be Mandelbulber 2.0 with Qt interface Post by: Buddhi on October 10, 2014, 12:03:19 PM First release of Mandelbulber v2 is done. Details are here: http://www.fractalforums.com/releases-b233/mandelbulber-v2-2-01/ This post closes this topic. I started it in March 2014, so it didn't take too much time for first release :D. Thanks to all for support, especially with first steps in Qt. |