Shop Forum More Submit  Join Login
About Deviant MattMale/United States Group :iconfractorium: Fractorium
 
Recent Activity
Deviant for 4 Years
Needs Core Membership
Statistics 23 Deviations 81 Comments 4,505 Pageviews
×

Newest Deviations

Hexes Perlin Honeycomb by mfeemster Hexes Perlin Honeycomb :iconmfeemster:mfeemster 2 3

Favourites

Journal
Hypertile Basics
First of all, special thanks to Zueuk who had the patience to explain me all the hypertile stuff =D
There is also an awesome hypertile tutorial that you should check out first: Hypertile Uncovered With 3D
 
 
Basics
To make a basic hypertile, you will need 2 transforms: Basic hypertile
hypertile2, rotated 180 degreesbubble (small amount, about 0.25 lets say) with pre_blur

The exact bubble size to fill a hypertile can be calculated exactly, or you can just change the amount of bubble until it fits.
The hypertile has two parameters, p and q. Basically, this means it takes p-gons, with q polygons meeting at each vertex (this do
:icontatasz:tatasz
:icontatasz:tatasz 51 15
Hypertile Uncovered With 3D by guagapunyaimel Hypertile Uncovered With 3D :iconguagapunyaimel:guagapunyaimel 142 24
Journal
Interview with Matt (Fractorium dev)

First of all , please introduce yourself to the community.

My name is Matt. I’m 35 and I live in San Diego, California, United States with my wife. I graduated with a Bachelor’s degree in computer science in 2001 and have been working ever since writing software. This project was done outside of my full-time job as a senior software developer.

And, of course, tell us about your software.

My project has several pieces and can be found here:https://github.com/mfeemster/fractorium/wiki
Before I give the details, I’d like to preface it by saying this is beta software, so you might find bugs or things that you don’t like. Rather than reject it, I would really appreciate feedback so I can incorporate good ideas into future releases.
With that out of the way, here it is:
Ember - A rewrite and redesign of the original flam3 code in C++. In addition to the rewrite, several bu
:icontatasz:tatasz
:icontatasz:tatasz 8 13
Journal
Return
Hi there! :wave:
I was so much inactive these days that some of you maybe don't even know who am I ;)  Well, I was busy at my new job, but now I'm back, and you can try catching me at #Aposhack channel.
Apophysis 3
It is that time when you can post your thoughts or ideas about new Apophysis. Yes, it is under its way :)
Be warned though, the new major version number is not for nothing... Apophysis 3 will be a huge step forward.
The most important thing is it will support layers. Every layer can be a flame, a background,
a time-escaped fractal... and probably other types, too. A single design can have as many layers, as you can create.
Isn't it fascinating? :)
It's also one and the only moment when we can get rid of Delphi and scripting library - finally! It's in C++ with Qt4,
which means it's portable and relatively easy for other coders to mess with it as they like.
The main design is ready, skeleton code is up and running - now I ne
:iconutak3r:utak3r
:iconutak3r:utak3r 14 238
Starting Out: Learning Apophysis by ChaosFissure Starting Out: Learning Apophysis :iconchaosfissure:ChaosFissure 156 67

Groups

Activity


Another release for Windows and Linux just in time for Christmas! Mac version coming next week.

For Linux users: Note that in order to use apt to install it from the repository, you need to add the ubuntu repository "artful". If you do not do that, you will not be able to access the new version. Alternatively, just download the .deb from fractorium.com and install directly. I had to move to artful to use a newer version of Qt.

This release focuses mostly on bug fixes and new variations, but has a couple of cool new features that are important: Support for 4K monitors and the ability to create multiple linked xforms at once. Thanks to the users who helped me out with reporting bugs, testing and adding new features: IDeviant, RationalParadox, triptychaos and others!

Important issues are bolded below.


--User changes
-Support 4k monitors, and in general, properly scale any monitor that is not HD.
-Allow for a spatial filter of radius zero, which means do not use a spatial filter.
-Add new variations: concentric, cpow3, helicoid, helix, randCubes, rays1, rays2, rays3, sphereblur.
-Use a new method for computing elliptic which is more precise. Developed by Discord user Claude.
-Remove the 8 variation per xform limitation on the GPU. You can now use as many variations per xform as you want.
-Allow for loading the last flame file on startup, rather than randoms.
-Use two different default quality values in the interactive renderer, one each for CPU and GPU.
-Creating linked xforms was using non-standard behavior. Make it match Apo and also support creating multiple linked xforms at once.


--Bug fixes
-No variations in an xform used to have the same behavior as a single linear variation with weight 1. While sensible, this breaks backward compatibility. No variations now sets the output point to zeroes.
-Prevent crashing the program when adjusting a value on the main window while a final render is in progress.
-The xaos table was inverted.
-Place the xforms and palette tabs in a scroll area to prevent weird sizing problems on low resolution monitors.
-Allow group dragging and floating of dock widgets.
-Make some tables auto size to their contents because some text appeared obscured on Linux.
-Opening an Xml was not properly setting the background field on the GUI, even though it was correctly parsed and used.
-Clicking random palette when using a palette file with 2 palettes could lead to a program freeze.


In addition to these new features and bug fixes, I've gotten around to my long sought after goal of making a benchmarking suite. I've gotten flames from users golubaja, tatasz, tyrantwave, and zy0rg (major thanks to all). I run some tests on the CPU and GPU and put the results in a spreadsheet, which you can analyze further on your own. In order to run the benchmark, go into the Bench subfolder in the install folder:

C:\Users\[YOURNAME]\AppData\Roaming\Fractorium\Bench

Open up a powershell window there and ensure you have permission to run scripts on your machine by running:

> Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Bypass

You only have to do this once.

Edit the file EmberBench.ps1 and see the third line:

> $devices = "2"//Set this to whatever device index your main GPU resides at. If you are unsure, just run emberrender --opencl info to find out.

You need to set that device index to whatever device index your GPU resides at.

Save the file, close all other programs, then run

> .\EmberBench.ps1

Which will take a about 15 minutes and output the results into a file in the parent folder called benchout.csv. It also creates benchout.txt which just gives the program output if you're interested in it.

Open benchout.csv in a spreadsheet viewer and optionally make a bar chart out of it to see how different flames perform in terms of iterations per second on the CPU and GPU.

fractorium.com/
My sincere apologies, but the previous release had a major bug in it: rendering with strips would crash the program.

Please go to fractorium.com and download the latest, 1.0.0.6

Sorry for the runaround, but things like this happen with only a small number of people testing.
Download here

This is a medium-sized release that fixes some bugs and adds a couple of new features.

Key features with explanations:

  • EXR is an image format developed by the movie industry to store extremely high precision color channel information, rather than the usual 8 bits per channel. It does this by using a 32-bit float for each RGBA channel. Some people call this High Dynamic Range (sometimes implemented as 10 bits per channel). In order to do this, I reworked much of the internal coloring code for the final color correction phase of the algorithm. This means I have finally removed all of the last remnants of strange flam3 code that converts between normalized and non-normalized color range values. The downside is that this requires more memory, but it shouldn't be too big of a deal. Using EXR is available in the final render dialog, as well as on the command line with --format=exr. Note that if you want high precision, but are not a fan of EXR, you can always use 16-bits per channel PNG files as the output on the command line via --format=png16.

  • Reworking this code led me to remove the --bpc command line option as well as some others. The image format implicitly specifies what the pixel type is.

  • When rendering on the command line, you were only able to specify one image output type. This could be a real pain if you were trying to see which file type was best for your images. Now, you can specify one or more types all at once with the --format option like so: --format=bmppngjpgpng16exr

  • The panorama 1 and 2 variations are interesting new developments from tatasz. I've ported them to Fractorium, so a big thanks to her!

  • Note that despite fixing some OpenCL compiler errors for Mac, a recent update of the Nvidia drivers broke compilation for some variations when using double precision. So if you're running this on a Mac and run into that problem, switch back to single precision. Remember, most flames are fine with single precision and it's much faster (2-32x) on the GPU. Future driver updates from Nvidia may fix this problem.

Full list:

--User changes
 -Add support for Exr files which use 32-bit floats for each RGBA channel.
 -Allow for clearing an individual color curve.
 -Allow for saving multiple image types in EmberRender and EmberAnimate. All writes are threaded.
 -Remove --bpc command line argument. Add format --png16 as a replacement.
 -Remove --enable_jpg_comments and --enable_png_comments command line arguments, and replace them with --enable_comments which applies to jpg, png and exr.
 -Add menu items to variations and affine spinners which allow for easy entry of specific numeric values like pi.
 -Make final render dialog be wider rather than being so tall.
 -Added panorama1 and panorama2 variations.

--Bug fixes
 -Fix several OpenCL build errors that were occurring on Mac. Some still remain.
 -Remove ability to save bitmap files on all platforms but Windows.
 -Fix bug where clearing the final xform, but leaving it present, then editing it would crash the program.
 -Disallow the use of synth when randomly generating xforms if the user has an Nvidia device present on their system.
 -crackle had a bug with Nvidia GPUs.
 -Only allow crackle_cellsize to be greater than 0.
 -Typing in the xform color index spinner produced strange results.
 -Returning from palette editor did not always update xform color indices.
 -Cleaner exit on some failures.
 -Better reporting of OpenCL errors.
I've been working on yet another release and decided that I want to include something in it which I've been thinking about for a long time.

I've always wanted to include a benchmarking script with the installer that tests a variety of flames which range from simple (ie: linear) to complex (ie: crackle).

But in order to do this, I'd need a standard set of flames which would always be used in the script, so that results can be compared across different machines over time.

As I've stated before, I'm utterly incapable of making fractal art. So that's where you come in!

Would any of the talented artists here let me include your flames with the installer? I'd place your name in the filenames, the name field of the Xml, as well as in the about box, so you'd get credit in perpetuity.

I think this would be a great addition to Fractorium because some interesting new hardware has been unveiled this year, as well as more arriving in the medium term future.

Most benchmarking sites don't really include fractals as part of their standard benchmarking suite. So I imagine that adding Fractorium as a way of benchmarking the CPU and GPU would be a welcome addition to those who are interested in expanding their benchmarking suites. Especially since it supports AMD and Nvidia GPUs, as well as multi-GPU configurations, including ones that mix manufacturers.

Also, since Fractorium is now fully cross platform, it'd be a great way to compare Mac vs. PC hardware.

Please let me know either here or via PM if you'd like to contribute some flame parameters.

Please be advised I will select them for inclusion based on their complexity and visual appeal.

The next release is roughly 3 to 4 weeks away.
A new version is up which has one major new feature, and a number of bug fixes. Important items are in bold below. Please update.

The most important change is the ability to view all xforms' color index values at once while in the palette editor. I know this is somewhat redundant, because those same values are shown on the color sub tab of the xforms tab. But that tab has the limitation of showing only one xform's values at a time. This new feature in the palette editor lets you see them all at once, so you can tell how they relate to each other. More info on it here.

One problem Michel Mastriani found is that Nvidia's latest drivers on Mac have broken the ability to render with OpenCL when using double precision. I have posted a bug report on their forums and will report back if/when they give me an answer.

User changes

  • Add support for adjusting xform color indices in the palette editor. Fixed palettes can now be displayed there, but they will have no color arrows as they are not editable.
  • Add support for independent dimension scaling in the EmberRender and EmberAnimate programs to bring them in line with the final render dialog Fractorium. The options are -ws, -hs and -scaletype.
  • dark.qss is now per-OS. Please reload it if you are using the dark theme.

Bug fixes

  • Opacity was accidentally being set to zero sometimes which could cause flickering when animating.
  • Fractorium would occasionally freeze after dismissing the final render dialog because some values were not properly re-initialized.
  • File paths with a space in them did not work in the command line programs.
  • Any Xml file in the search paths would erroneously be treated as a palette file.
  • The following variations were wrong: coshq, cothq.
  • During iteration, the color index could become nan if all xform color speeds were negative. This could lead to bad results on the GPU. Fix to check for nan. Minimal speed difference.
  • Fix crash when opening palette editor with a flame whose palette specifies no originating file.
  • Any measurement of time which was sub-millisecond was wrong. This was mostly the case when measuring the time taken for temporal samples in animation.
  • Properly propagate z through circlesplit, cylinder2 and tile_log variations.
  • Some values in truchet_fill could've been NaN.

Code changes

  • Make the following variations safer by using Zeps(): sinq, sinhq, secq, sechq, tanq, tanhq, cosq, coshq, cotq, cothq, cscq, cschq, estiq, conic, bipolar, edisc, whorl, tan, csc, cot, tanh, sech, csch, coth, auger, bwraps, hypertile3d, hypertile3d1, ortho, poincare, rational3, barycentroid, sschecks, cscq, cschq, scry_3D, splitbrdr, hexcrop, nblur, crob.
  • Always pass -cl-no-signed-zeros -cl-denorms-are-zero to kernel compiles for both single and double.
  • Flush all denormals to zero for all executable programs. This will likely lead to a speedup for badly behaving flames.
  • Small optimization for gdoffs, use precalcAtanYX.
Another release for Windows and Linux just in time for Christmas! Mac version coming next week.

For Linux users: Note that in order to use apt to install it from the repository, you need to add the ubuntu repository "artful". If you do not do that, you will not be able to access the new version. Alternatively, just download the .deb from fractorium.com and install directly. I had to move to artful to use a newer version of Qt.

This release focuses mostly on bug fixes and new variations, but has a couple of cool new features that are important: Support for 4K monitors and the ability to create multiple linked xforms at once. Thanks to the users who helped me out with reporting bugs, testing and adding new features: IDeviant, RationalParadox, triptychaos and others!

Important issues are bolded below.


--User changes
-Support 4k monitors, and in general, properly scale any monitor that is not HD.
-Allow for a spatial filter of radius zero, which means do not use a spatial filter.
-Add new variations: concentric, cpow3, helicoid, helix, randCubes, rays1, rays2, rays3, sphereblur.
-Use a new method for computing elliptic which is more precise. Developed by Discord user Claude.
-Remove the 8 variation per xform limitation on the GPU. You can now use as many variations per xform as you want.
-Allow for loading the last flame file on startup, rather than randoms.
-Use two different default quality values in the interactive renderer, one each for CPU and GPU.
-Creating linked xforms was using non-standard behavior. Make it match Apo and also support creating multiple linked xforms at once.


--Bug fixes
-No variations in an xform used to have the same behavior as a single linear variation with weight 1. While sensible, this breaks backward compatibility. No variations now sets the output point to zeroes.
-Prevent crashing the program when adjusting a value on the main window while a final render is in progress.
-The xaos table was inverted.
-Place the xforms and palette tabs in a scroll area to prevent weird sizing problems on low resolution monitors.
-Allow group dragging and floating of dock widgets.
-Make some tables auto size to their contents because some text appeared obscured on Linux.
-Opening an Xml was not properly setting the background field on the GUI, even though it was correctly parsed and used.
-Clicking random palette when using a palette file with 2 palettes could lead to a program freeze.


In addition to these new features and bug fixes, I've gotten around to my long sought after goal of making a benchmarking suite. I've gotten flames from users golubaja, tatasz, tyrantwave, and zy0rg (major thanks to all). I run some tests on the CPU and GPU and put the results in a spreadsheet, which you can analyze further on your own. In order to run the benchmark, go into the Bench subfolder in the install folder:

C:\Users\[YOURNAME]\AppData\Roaming\Fractorium\Bench

Open up a powershell window there and ensure you have permission to run scripts on your machine by running:

> Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Bypass

You only have to do this once.

Edit the file EmberBench.ps1 and see the third line:

> $devices = "2"//Set this to whatever device index your main GPU resides at. If you are unsure, just run emberrender --opencl info to find out.

You need to set that device index to whatever device index your GPU resides at.

Save the file, close all other programs, then run

> .\EmberBench.ps1

Which will take a about 15 minutes and output the results into a file in the parent folder called benchout.csv. It also creates benchout.txt which just gives the program output if you're interested in it.

Open benchout.csv in a spreadsheet viewer and optionally make a bar chart out of it to see how different flames perform in terms of iterations per second on the CPU and GPU.

fractorium.com/

deviantID

mfeemster
Matt
United States
Software developer and author of Fractorium. Looking to advance the tools and ideas of the fractal art community.

Comments


Add a Comment:
 
:iconesherymack:
Esherymack Featured By Owner Aug 2, 2017  Hobbyist Digital Artist
Hi! :wave:
I just found Fractorium today, wanted to say thanks for a renderer that can use OpenCL, lol :D
It's a fantastic program, easy to use, fast, and produces good results. Thank you, keep up the good work :D
Reply
:iconmfeemster:
mfeemster Featured By Owner Aug 3, 2017
Glad you like it! There are some bugs in that version with the Mac build. I will be releasing a new version soon.

Just curious, what OS are you using and what graphics card?
Reply
:iconesherymack:
Esherymack Featured By Owner Aug 3, 2017  Hobbyist Digital Artist
lol, I'm actually using it on Windows 10 (most recent version, not sure what it is, but post Creator update) on an AMD Radeon Sapphire 390x with backplate (www.sapphiretech.com/productde…). So kind of a beefy computer :lmao:

Renders a 2200x1444 fractal in under 40 seconds, with results almost what I get from 3-5 hours of rendering in Apophysis, or an hour and a half in Chaotica. Super fantastic :D
Reply
:iconmfeemster:
mfeemster Featured By Owner Aug 14, 2017
Very glad to hear it! I run an R9 280x and love it. It was one of the last mass market cards they released which had good fp64 support.

The new version of Fractorium has been delayed a bit, as some of my testers have discovered bugs. Keep an eye on my journal for when I release it.
Reply
(1 Reply)
:icondotaandme:
DotAandMe Featured By Owner Jun 1, 2016  Hobbyist Digital Artist
Hey!
I'm here to wish you a really happy birthday! I wish you the better results for all you're doing!
Keep it up and don't give up, there's not a lot of people out there doing what you are :)

I hope to help you somehow in the future,
Enjo the rest of the day! :D
Reply
:iconmfeemster:
mfeemster Featured By Owner Jun 3, 2016
Thanks Dot, I am aiming to wrap things up by the end of this month. In the meantime, check out the website, I finally got it up! www.fractorium.com
Reply
:icondotaandme:
DotAandMe Featured By Owner Jun 11, 2016  Hobbyist Digital Artist
Of course! Keep it up! :)
Reply
:iconbrusvejn:
brusvejn Featured By Owner Oct 1, 2015
Thanks!
Reply
:iconnightmaretf:
NightmareTF Featured By Owner Dec 2, 2013  Professional Digital Artist
Nice work with Fractorium! It's excellent.
Just one thing I was wondering about, though. Somehow images won't render above a certain (I'm not sure where the tipping point is yet, but 2560x1600 rendered ok for sure, under a minute @ 5000 quality :D) resolution for me, are you familiar with such a problem?
Using a 560GTX for rendering.

Again, awesome work! Thanks :)
Reply
:iconmfeemster:
mfeemster Featured By Owner Dec 8, 2013
Hi NightmareTF,

Both Fractorium, and its associated command line programs EmberRender, EmberAnimate and EmberGenome have no hard coded limit on anything. The limit is how much memory your GPU has. Sadly, GPUs are much more memory limited than the usual CPU configuration. For example, I'm running with 8GB of RAM, yet my GTX 460 has a measly 1GB. I looked up your card, and it's got 1GB also.

If you go into the final render dialog of Fractorium and play with the size and supersample values, you can see how much memory it requires to run.

Also don't forget, part of your video memory is also reserved for use in general system video display, so the usable amount for rendering will be less than the advertised 1GB.

As a last resort, if you really need a huge render, but don't want to buy a new card, switch to the CPU renderer.

Hope that helps, let me know how it goes. I'll be releasing updated versions with new features/bug fixes periodically.

Thanks for using it!
Reply
Add a Comment: