Merged mfeemster/fractorium into master

This commit is contained in:
Michel Mastriani 2023-08-08 21:23:13 -03:00
commit adad1363c0
8 changed files with 171 additions and 117 deletions

View File

@ -1,6 +1,6 @@
# Build Guide for Linux
The following has been tested on Ubuntu 17.10 (artful).
The following has been tested on Ubuntu 20.
Make sure the package lists are up-to-date:
@ -13,13 +13,13 @@ Install `git` and clone the repository:
```
sudo apt-get install git
git clone --depth=1 https://mfeemster@bitbucket.org/mfeemster/fractorium.git
git clone https://mfeemster@bitbucket.org/mfeemster/fractorium.git
```
Install the dependencies.
```
sudo apt-get install g++ libc6-dev libgl1-mesa-dev libgl-dev libglm-dev libjpeg-dev libpng-dev libqt5opengl5-dev libtbb-dev libxml2-dev ocl-icd-libopencl1 ocl-icd-opencl-dev opencl-headers qt5-default qt5-qmake qtbase5-dev libopenexr22 libopenexr-dev
sudo apt-get install g++ libxcb-cursor0 libc6-dev libgl1-mesa-dev libgl-dev libglm-dev libjpeg-dev libpng-dev libqt6opengl6-dev libxml2-dev ocl-icd-libopencl1 ocl-icd-opencl-dev opencl-headers qt6-default qt6-qmake qtbase6-dev libopenexr25 libopenexr-dev
```
Install the OpenCL drivers and opencl support for your hardware.
@ -36,10 +36,10 @@ Optionally you can install the Nvidia-specific `nvidia-libopencl1-384` package,
but keep in mind that this will remove the generic ones (`ocl-icd-opencl-dev`
and `ocl-icd-libopencl1`).
If you have both Qt 4 and 5 installed, select Qt 5 before compilation:
If you have both Qt 5 and 6 installed, select Qt 6 before compilation:
```
export QT_SELECT=qt5
export QT_SELECT=qt6
```
Compile the binaries, they will be created in the `Bin/release` folder.

View File

@ -2,21 +2,22 @@
Install Xcode from the App Store
Install Qt 5.4.2 (Note, newer versions of Qt up to and including 5.8 have a bug with drawing OpenGL lines)
Install Qt 6.5.1
Install [homebrew](http://brew.sh/).
Install `git` and clone the repository:
Install Command Line Tools for Xcode
Clone the repository:
```
brew install git
git clone https://mfeemster@bitbucket.org/mfeemster/fractorium.git
```
Install the dependencies:
```
brew install qt5 tbb glm jpeg libpng glib libxml2 openexr
brew install glm jpeg libpng glib openexr@2
```
Add the Qt `bin` folder to `PATH` to make `qmake` available. In

View File

@ -1,4 +1,4 @@
# Build Guide For Visual Studio 2019 or Qt Creator
# Build Guide For Visual Studio 2022 or Qt Creator
## Tools
### git
@ -7,15 +7,15 @@ Install [git](https://git-scm.com/downloads).
### Visual Studio
Install [Microsoft Visual Studio 2019 or later](https://www.visualstudio.com/downloads/), then install the latest updates.
Install [Microsoft Visual Studio 2022 or later](https://www.visualstudio.com/downloads/), then install the latest updates.
### Qt
Install Qt for Windows 64-bit (VS 2017) 5.12.8 or later (http://www.qt.io/download/).
Install Qt for Windows 64-bit (VS 2019) 6.5.1 or later (http://www.qt.io/download/).
Add system environment variable named `QTPATH` and point it to the location of the Qt folder. On a default install, this will be something like:
`C:\Qt\5.12.8\msvc2017_64`
`C:\Qt\6.5.1\msvc2019_64`
### Wix
@ -59,7 +59,7 @@ Go into the fractorium folder and run this script which will get the rest of the
`makedeps.bat`
This will download and build `glm libopenexr libpng libxml tbb zlib`. You will have a folder structure like this:
This will download and build `glm libopenexr libpng libxml zlib`. You will have a folder structure like this:
```
[fractorium]
@ -69,32 +69,25 @@ This will download and build `glm libopenexr libpng libxml tbb zlib`. You will h
├─libpng
├─libxml2
├─openexr
├─tbb
└─fractorium
├─Deps
├─Iex-3_1.dll
├─IlmThread-3_1.dll
├─IMath-3_1.dll
├─libxml2.dll
├─OpenEXR-3_1.dll
├─Iex-3_1.lib
├─IlmThread-3_1.lib
├─Imath-3_1.lib
├─libjpeg.lib
├─libpng.lib
├─libxml2.lib
├─libxml2.dll
├─tbb.dll
├─tbb.lib
├─OpenEXR-3_1.lib
├─OpenEXRCore-3_1.lib
├─OpenEXRUtil-3_1.lib
├─zlib.lib
├─Half-2_3.lib
├─Iex-2_3.lib
├─IexMath-2_3.lib
├─IlmImf-2_3.lib
├─IlmImfUtil-2_3.lib
├─IlmThread-2_3.lib
├─Imath-2_3.lib
├─Half-2_3.dll
├─Iex-2_3.dll
├─IexMath-2_3.dll
├─IlmImf-2_3.dll
├─IlmImfUtil-2_3.dll
├─IlmThread-2_3.dll
├─Imath-2_3.dll
```
## Building with Qt Creator or Visual Studio
@ -120,17 +113,17 @@ The outputs will be placed in `fractorium/Bin/release` several minutes later if
Install the [Visual Studio Qt Addon](http://www.qt.io/download/).
Run Visual Studio and verify there is a menu item named *Qt5*. Click on it and click *Qt Options*.
Run Visual Studio and verify there is a menu item named *Qt6*. Click on it and click *Qt Options*.
Add a new Qt version to the list with the exact name of "Qt5", and set its path to the same as `$QTPATH`, which will be something like:
Add a new Qt version to the list with the exact name of "Qt6", and set its path to the same as `$QTPATH`, which will be something like:
`C:\Qt\5.12.8\msvc2017_64`
`C:\Qt\6.5.1\msvc2019_64`
The name "Qt5" must match exactly and this step must be completed before the Fractorium solution is opened. If not, the Qt add-in will completely ruin all solution and project files that use Qt.
The name "Qt6" must match exactly and this step must be completed before the Fractorium solution is opened. If not, the Qt add-in will completely ruin all solution and project files that use Qt.
Set the default version to the newly created Qt version and click *Ok*.
Open the file Fractorium.sln under Builds/MSVC/2019
Open the file Fractorium.sln under Builds/MSVC
Set the configuration to release, and build all.
@ -154,17 +147,13 @@ Apatite_Supergroup.ugr
boxtail_pack_02.gradient
boxtail_pack_03_triangle.gradient
boxtail_pack_04_mineshack.gradient
concrt140.dll
dark_windows.qss
lightdark.qss
ember.dll
ember.exp
ember.lib
emberanimate.exe
embercl.dll
embercl.exp
embercl.lib
embergenome.exe
emberrender.exe
Ember.dll
EmberAnimate.exe
EmberCL.dll
EmberGenome.exe
EmberRender.exe
fardareismai_pack_01_variety_number_128.gradient
fardareismai_pack_02_b_sides.gradient
fardareismai_pack_03_old_and_new.gradient
@ -172,18 +161,20 @@ fardareismai_pack_04_hoard.gradient
Feldspar_Group.ugr
flam3-palettes.xml
fractaldesire_pack_01.gradient
fractorium.exe
half-2_3.dll
iex-2_3.dll
iexmath-2_3.dll
ilmimf-2_3.dll
ilmthread-2_3.dll
imath-2_3.dll
Fractorium.exe
Iex-3_1.dll
IlmThread-3_1.dll
Imath-3_1.dll
libxml2.dll
lightdark.qss
Mica_Group.ugr
Qt5Core.dll
Qt5Gui.dll
Qt5Widgets.dll
msvcp140.dll
OpenEXR-3_1.dll
Qt6Core.dll
Qt6Gui.dll
Qt6OpenGL.dll
Qt6OpenGLWidgets.dll
Qt6Widgets.dll
Quartz_Varieties.ugr
rce_ordinary_pack_01_colornation.gradient
tatasz_pack_01.gradient
@ -191,75 +182,87 @@ tatasz_pack_02_colder.gradient
tatasz_pack_02_dark.gradient
tatasz_pack_02_warmer.gradient
tatasz_pack_03.gradient
tbb.dll
tatasz_pack_04.gradient
tatasz_pack_05.gradient
tatasz_pack_06.gradient
tatasz_pack_07.gradient
uranium.qss
user-palettes.xml
vccorlib140.dll
vcruntime140.dll
vcruntime140_1.dll
imageformats\qjpeg.dll
platforms\qwindows.dll
```
Double click fractorium.exe to run it, and use the command line to run the others.
To run on a computer without Visual Studio 2017, these files also need to be in the folder:
To run on a computer without Visual Studio 2022, these files also need to be in the folder:
```
2019\Community\VC\Redist\MSVC\14.25.28508\x64\Microsoft.VC142.CRT\msvcp140.dll
2019\Community\VC\Redist\MSVC\14.25.28508\x64\Microsoft.VC142.CRT\vcruntime140.dll
2019\Community\VC\Redist\MSVC\14.25.28508\x64\Microsoft.VC142.CRT\vcruntime140_1.dll
2019\Community\VC\Redist\MSVC\14.25.28508\x64\Microsoft.VC142.CRT\vccorlib140.dll
2019\Community\VC\Redist\MSVC\14.25.28508\x64\Microsoft.VC142.CRT\concrt140.dll
C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\msvcp140.dll
C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\vcruntime140.dll
C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\vcruntime140_1.dll
C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\vccorlib140.dll
C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\concrt140.dll
```
or you can install [Visual C++ Redistributable Packages for Visual Studio 2019 (64 bit)](https://www.visualstudio.com/downloads/)
or you can install [Visual C++ Redistributable Packages for Visual Studio 2022 (64 bit)](https://www.visualstudio.com/downloads/)
## Final file structure for distribution
```
[YOUR FOLDER]
├─ Amphibole_Supergroup.ugr
├─ Apatite_Supergroup.ugr
├─ boxtail_pack_02.gradient
├─ boxtail_pack_03_triangle.gradient
├─ boxtail_pack_04_mineshack.gradient
├─ dark_windows.qss
├─ lightdark.qss
├─ ember.dll
├─ emberanimate.exe
├─ embercl.dll
├─ embergenome.exe
├─ emberrender.exe
├─ fardareismai_pack_01_variety_number_128.gradient
├─ fardareismai_pack_02_b_sides.gradient
├─ fardareismai_pack_03_old_and_new.gradient
├─ fardareismai_pack_04_hoard.gradient
├─ Feldspar_Group.ugr
├─ flam3-palettes.xml
├─ fractaldesire_pack_01.gradient
├─ fractorium.exe
├─ half-2_3.dll
├─ iex-2_3.dll
├─ iexmath-2_3.dll
├─ ilmimf-2_3.dll
├─ ilmthread-2_3.dll
├─ imath-2_3.dll
├─ libxml2.dll
├─ Mica_Group.ugr
├─ Qt5Core.dll
├─ Qt5Gui.dll
├─ Qt5Widgets.dll
├─ Quartz_Varieties.ugr
├─ rce_ordinary_pack_01_colornation.gradient
├─ tatasz_pack_01.gradient
├─ tatasz_pack_02_colder.gradient
├─ tatasz_pack_02_dark.gradient
├─ tatasz_pack_02_warmer.gradient
├─ tatasz_pack_03.gradient
├─ tbb.dll
├─ msvcp140.dll (optional)
├─ vcruntime140.dll (optional)
├─ vcruntime140_1.dll (optional)
├─ vccorlib140.dll (optional)
├─ concrt140.dll (optional)
├─Amphibole_Supergroup.ugr
├─Apatite_Supergroup.ugr
├─boxtail_pack_02.gradient
├─boxtail_pack_03_triangle.gradient
├─boxtail_pack_04_mineshack.gradient
├─dark_windows.qss
├─Ember.dll
├─EmberAnimate.exe
├─EmberCL.dll
├─EmberGenome.exe
├─EmberRender.exe
├─fardareismai_pack_01_variety_number_128.gradient
├─fardareismai_pack_02_b_sides.gradient
├─fardareismai_pack_03_old_and_new.gradient
├─fardareismai_pack_04_hoard.gradient
├─Feldspar_Group.ugr
├─flam3-palettes.xml
├─fractaldesire_pack_01.gradient
├─Fractorium.exe
├─Iex-3_1.dll
├─IlmThread-3_1.dll
├─Imath-3_1.dll
├─libxml2.dll
├─lightdark.qss
├─Mica_Group.ugr
├─OpenEXR-3_1.dll
├─Qt6Core.dll
├─Qt6Gui.dll
├─Qt6OpenGL.dll
├─Qt6OpenGLWidgets.dll
├─Qt6Widgets.dll
├─Quartz_Varieties.ugr
├─rce_ordinary_pack_01_colornation.gradient
├─tatasz_pack_01.gradient
├─tatasz_pack_02_colder.gradient
├─tatasz_pack_02_dark.gradient
├─tatasz_pack_02_warmer.gradient
├─tatasz_pack_03.gradient
├─tatasz_pack_04.gradient
├─tatasz_pack_05.gradient
├─tatasz_pack_06.gradient
├─tatasz_pack_07.gradient
├─uranium.qss
├─user-palettes.xml
├─msvcp140.dll (optional)
├─vcruntime140.dll (optional)
├─vcruntime140_1.dll (optional)
├─vccorlib140.dll (optional)
├─concrt140.dll (optional)
└─imageformats

View File

@ -2,7 +2,7 @@
%define buildroot %{_topdir}/BUILDROOT
Name: Fractorium
Version: 22.21.4.2
Version: 23.23.8.1
Release: 1
Summary: A fractal flame editor with GPU support

View File

@ -10,7 +10,7 @@ Starting with a fresh clone from bitbucket.org. It will not work unless it's tot
```
$ git clone https://mfeemster@bitbucket.org/mfeemster/fractorium.git
$ cd fractorium
$ qmake main.pro -r -spec linux-g++-64 CONFIG+="release native"
$ qmake main.pro -r -spec linux-g++-64 CONFIG+=release
```
### Building a `.deb` locally
@ -69,7 +69,7 @@ To build the AppImage after successfully building using the make after qmake has
Ensure you these have two files in the folder up one level from the fractorium folder:
`linuxdeployqt-6-x86_64.AppImage`
`linuxdeployqt-continuous-x86_64.AppImage`
`appimagetool-x86_64.AppImage`

View File

@ -1,3 +1,51 @@
23.23.8.1 8/6/2023
--User changes
-Add Clear Sequence button to the Sequence Panel.
-Add animation preview in the sequence generator output pane.
-Add two new options --width and --height to EmberRender and EmberAnimate to allow the user to specify absolute dimensions to render the image at.
-Add a new option to EmberAnimate --ignore-existing which makes it skip rendering a frame if the files from all of the requested extensions for that frame already exist.
-Add new preset dimensions to the right click menu of the width and height fields in the editor.
-Make various fields in the Options window be resettable via double click.
-Fix various bugs in stylesheets to get them working properly on Windows and Linux with Qt6.
--Change QSS stylesheets to properly handle tabs.
--Make tabs rectangular by default. For some reason, they had always been triangular.
--Set default style to Fusion.
-Change installer to install to program files for all users.
--Bug fixes
-Handle forward slashes better in file output paths.
-Start and end tags were not properly included in the final render backup file output.
-Numbering of rendered files was wrong.
-Truchet_hex_fill was not compiling with some newer Nvidia drivers.
-Contrast was too sensitive.
-Incremental rendering times in the editor were wrong.
-Proper sizing of vertical header on the xaos visualization table on Linux.
-Options window layout was completely broken.
-Error when saving screen on macOS at first time.
-Center progress bars on Linux.
--Code changes
-Upgrade openexr to version 3.1.3.
-Remove all dependencies on Intel Threading Building Blocks and write our own version of parallel_for().
-Test if directories exist before adding to INCLUDEPATH.
-Fix compiler warnings in XmlToEmber.
-Remove unused varIndex = IndexInXform.
-Change Sequence Preview to PREVIEW_SIZE (128).
-Add include for /usr/include/Imath for OpenEXR to defaults.pri because it wasn't building on some linux systems with out it.
-Fix warning about unused CLStrings.
-Migrate to VS2022 and no longer use a version specific folder for the VS solution and project files. It is now under a version agnostic folder called Solution.
-Migrate to Qt6. There is probably more work to be done here.
-Migrate to Wix 4 installer.
-Fix many VS2022 code analysis warnings.
-No longer use byte typedef, because std::byte is now a type. Revert all back to unsigned char.
-Upgrade OpenCL headers to version 3.0 and keep locally now rather than trying to look for system files.
-No longer link to Nvidia or AMD specific OpenCL libraries. Use the generic installer located at OCL_ROOT.
-Add the ability to change OpenCL grid dimensions. This was attempted for investigating possible performance improvments, but made no difference.
-Get build and deployment scripts working with latest versions of Qt6, AppImage, and various library dependencies.
-Add two new macros so it would build with the latest gcc: SINGLETON_DERIVED_DECL_T and SINGLETON_DERIVED_IMPL_T.
-Small changes to opencl.hpp to get it to build.
22.21.4.2 4/19/2021
--User changes

View File

@ -8,7 +8,7 @@ Homepage: http://fractorium.com/
Vcs-Git: https://bitbucket.org/mfeemster/fractorium
Vcs-Browser: https://bitbucket.org/mfeemster/fractorium
Package: Fractorium
Version: 22.21.4.2
Version: 23.23.8.1
Architecture: amd64
Description: A fractal flame editor with GPU support
Fractorium

View File

@ -148,13 +148,15 @@ void Fractorium::InitParamsUI()
/// <param name="h">The height of the preset</param>
void Fractorium::AddSizePreset(QString name, int w, int h)
{
auto widthAction = new QAction(name, m_WidthSpin);
QString caption;
QTextStream(&caption) << name << " (" << ToString<int>(w) << " x " << ToString<int>(h) << ")";
auto widthAction = new QAction(caption, m_WidthSpin);
connect(widthAction, SIGNAL(triggered(bool)), this, SLOT(PresetWidthActionTriggered(bool)), Qt::QueuedConnection);
m_WidthSpin->addAction(widthAction);
auto heightAction = new QAction(name, m_HeightSpin);
auto heightAction = new QAction(caption, m_HeightSpin);
connect(heightAction, SIGNAL(triggered(bool)), this, SLOT(PresetHeightActionTriggered(bool)), Qt::QueuedConnection);
m_HeightSpin->addAction(heightAction);
m_HeightPresets[name] = std::pair<int, int>(w, h);
m_HeightPresets[caption] = std::pair<int, int>(w, h);
}
/// <summary>