FragTool

Thought it would be good to finally share FragTool with everyone. It’s not in a perfect state at the moment but I’m not sure when I’ll have time to work on it more so I figured it would be a good day to post it.

Eventually I’ll try and make some better documentation and or some video tutorials but here is quick run down of how it works. There are a number of features, I won’t go into too much detail at the moment but this should be enough to get going.

On the left side is a panel with a radio button at the top that changes which controls are being displayed.

Formula Tab:

  • select the DE surface formula (a fractal or any other DE function (distance estimation))
  • iterations has will have an impact on quality and performance
  • a lot of formulas will just be a cube with base settings.

Color and Light:

  • adjust shading and lighting
  • there are two color formulas - the second is more expensive
  • shadows and reflections are both expensive (reflections more so) environment map is a cheap light reflection look

LFOs: are modulation sources route-able to any parameter selected in the mod-matrix (future UI will have the mods able to be assign directly in the gadget again)

Render:

  • adjust render settings
  • Detail, FudgeFactor, and MaxRaySteps will all have an impact on quality and performance.
  • Standard mode renders one image per frame - useful for realtime and or general use
  • Progressive is an accumulated render that renders the same frame many times to get better smoother detail and a relatively realistic DOF
  • the DOF settings are no longer connected (but can be easily) they are for standard mode and use a depth map for a fake DOF
  • GL_RenderMix will turn on a COMP with a regular render TOP in it. The compositor will then mix both the raymarched render with OpenGL render using depth data from both. With this function it is possible to have the raymarched surface being occluded by regular geometry and vice-versa. The render TOP in the GL_Render COMP must use the camera it’s pointing to in order to have the same camera/projections matrices.

The right tabs:

Camera:
-use controller cross to switch between controller mode and and UI mode
-there are three options for controller mode, 3dx, 3dx SpaceNav and Mouse/Keyboard. When using mouse mode the use WASDRFQE keys to translate tx,ty,tz and rotate z. The mouse is then used to rotate x and y by clicking and dragging in the viewer. Press H to reset the camera.

GeoGL:

  • there is a table in GL_Render called parameters that if filled will make gadgets here that are able to be modulated and animated

ModMatrix:
-routes mod sources to any parameters

All parameters in the tabs can animated. Create a key in their respective animation COMP by pressing the K button. The slider will now become relative to the animation timeline and will set a key when moved and let go of. It will then snap back to zero. Edit animation in the animation editor at the bottom. You can turn off animation of particular channel by clicking the K button again. The animation data will still be there if turned back on unless the channel is deleted, in which case it will make a fresh channel again with it’s start and end values being the current slider value.

The top middle area stores and recalls presets. The radio button selects which panel to store or recall (either just one or all of them). The presets will store all mod, animation and parameter data.

There is also an audio processing / modulation setup, a camera take recorder / sequencer.
I’ll have to go into more detail at a later time.

You can either export a movie in standard mode by pressing the export button, or you can do a progressive render by pressing the Prog Render button.

All sliders have coarse, fine, finer, finest control - left click, lc + ctrl, lc + alt, lc + ctrl-alt respectively.


Also one very important thing:

Because of the nature of fractals and raymarching with certain settings render time can be very long. Most fractals can render at 60 fps on a Titan or 980 with the right settings but with certain settings and resolutions the framerate can drop down to 2 min frame or more… Without setting a proper key in the registry to tell Windows that it’s okay that the video card is not responding your video card can crash - either just Touch or Windows altogether. This isn’t as much of an issue now that it has the progressive renderer which keeps Touch’s framerate high while rendering a high quality render, but the default TDRDelay timeout setting is 2 seconds

To fix the issue, create this registry value
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\GraphicsDrivers\TdrDelay

Disclaimer- I cannot be held responsible for machines and brains crashing, melting or exploding from heavy use of FragTool. :smiley:

Also I just remembered that I have no idea if it will work on an ATI card… It may not, a while ago ATI wasn’t happy about floats set with integer characters, since then I’ve been pretty diligent but some of the GLSL code was written a while ago.

I think the whole patch needs a new UI and preset system which I would like to do in the future but for now I think it could be fun to use.

happy holidays!
cheers
Keith

Updates:

Progressive Render no longer clears to black on first frame which makes for a faster better render. ProgRender’s AnitAlias scale is now in pixel range so a value of at least 2 or 3 is now needed. When recalling presets made from before this change the value recalled will be about .67 which will have no effect and needs to be manually set higher.

Space bar starts/stops the timeline now rather than “b”. > re-starts the timeline at frame 1.

Fixed fields not updating slider positions.

Save image button now works again. This will save a jpeg and a tiff file of the current output in the project folder.

Preset morphing is now fixed. This will probably get called something else in the future because it is more like preset animating. To use:

  • make a bunch of presets of the same formula type
  • select the initial/start preset
  • open the Preset Morph window
  • select the group to morph (usually formula)
  • press initialize (this will make keyframe channels for all parameters in the group)
  • next select a preset in the Preset Morph list and press copy preset to make keyframes of that presets values
  • you can turn “Quick Copy” on which will key the preset when selected for fast creation of keys

When exporting movies I would recommend using only progressive render. Set the render parameter “Render” to Progressive then press the “Prog Render” button to choose a folder to render out a tiff sequence. The “Export” button does work to open the export movie dialog but the timeline will be set the root timeline which is not the time that the animation or LFO’s use. If you want to use the Export Movie Dialog you’ll need to set the Timepath to “/FragTool/Anim_LFOs_Mods” manually and then close and reopen it to initialize the start and end frames. You can also leave the time path but then the render will just start and the current time. Progressive Render is much better quality also.
FragTool 3_5_Public.toe (6.35 MB)
FragTool 3_4.toe (1.45 MB)

1 Like

Aww yeah Keith here it is! Thanks for sharing :slight_smile:

Keith you are a monster! :slight_smile:
thank you for the holidays gift.

Happy Holidays to you too.

Barak.

this is amazing!

thank you Keith, blowing my mind right now

Thank you for this!

The Quadro 2000 I have running is not having a fun time at 4-5 fps, but exploring that patch is exactly what I needed after following about every tutorial/e-book there is out there on TD (They are immensely helpful to teach you the basics and potentials). The endless possibilities they told us were in TD are finally presented to us in a realistic, functional and goal oriented (big patch with multiple layers and containers) way.

Anyways, thank you very much for sharing this patch which clearly took ALOT of hours to patch!

No problem everyone, I’m stoked to share.

Just uploaded a newer version with some fixes and cleaned up a little bit. Still want to redo he presets but everything seems to be working decently at the moment.

cheers
Keith

tempting me to buy a new laptop, have to spend it on that pesky food stuff though.

GTX260m went straight to terminal black-screen. can’t fight progress.

a GTX970 for the old desktop is probably on the cards very soon though… :slight_smile:

thanks for sharing.

Rod.

Sorry to hear that Rod. Yeah I don’t think a 260M will do so well…

Just uploaded a new version that has some of the lightest settings possible when loaded. It’s almost holding on 60 fps on a 780M on my laptop.

Pretty much looking at minimum 780M or 680 desktop GPU. Otherwise it won’t be very useful. Either way it’s more of production tool than a realtime tool. It’s possible to run some decent formulas at 60 - 30 fps at 720p but it’s pretty limited.

I thought of something last night though. When I have some time I’ll make a tile rendering mode that will only render a portion of the image every frame. It might take 16 frames to get the full image but at least this way the computer and the UI are still usable while it’s updating.

Keith,
publish video that shows how to use it, you will get lots of feedback that way.
I have tested it even with this machine :
passmark.com/baselines/V8/di … 4057650344
its works fine and look good( ~22 fps)

This thing looks insanely awesome; however, I’m not sure where to start … Preset morphing huh ? You should look at the Reaktor 5 community for inspiration ( if you haven’t done so already ) they are masters of set parameter blending.

I went to make a video tutorial for you guys but found out how many things I broke doing some updates to the UI. So ended up fixing things, I’ve posted a new version where a number of animation, mod, camera and timeline functions are fixed.

Definitely try and get tutorial made asap for you guys although I might have to break it up into a few. The video I recorded was 80 minutes and still hadn’t really covered quite a bit of it…

Yeah the preset morphing isn’t actually the best name for that function although it does have a similar effect in the end to morphing. It basically sets a bunch of animation keys of various presets in the animation comps so. That way you can make a number of presets that you like then convert them into one animation that can then be edited. Not sure where it’s at I didn’t get a chance to test it tonight. I’ll make sure it’s running well for the tutorials though. I should change the name and then implement the Reactor style parameter morph(I did know about that as well). I actually have two plans one is to make the realtime morph and to make an output preset grabber. When you do a bunch of animations and mods you might get moment where things look really good and you want to save that particular state without the animation and mods driving it.

I really need to do a major overhaul of the preset system first though. It’s kind of old school storing a bunch of DATs of everything - parameters, mod settings, animation values etc… which adds up to bunch of tables per preset and makes it difficult to deal with. Once I get the preset system up to date with some of my newer techniques I’ll do some improvements to the morphing and other features which will be much easier to do.

Animation seems to be fixed though. Create or select a static form, then press K on one of sliders. The slider is now relative the current animation value. Drag the slider up or down and either let go or press shift to set a keyframe. Press shift can still be a little jumpy but letting go is very smooth. It should work everywhere.

If anyone finds any bugs please let me know.

cheers
Keith

Just uploaded a new version with a few fixes and improvements.

I’ve added a few notes to the bottom of the first post.

cheers
Keith

Now the fun begins ! Got it now, thanks so much…

Wow, just seeing this for the first time now. Thanks so much for sharing this, Keith!

Getting 30 - 60fps on my 970ti. Great stuff Kieth this is an amazing piece of art / expression.

Thanks guys.

Btw it looks like it’s a bit broken in the new experimental builds >40000 . I’ll post a fixed version soon.

cheers
Keith

Finally got a chance to play with this on a decent computer. Awesome stuff mate!

Wow, this looks like a totally powerful tool!

I started exploring fractal stuff beginning of 2015. Disappointed with built software for fractals visualization I quickly moved to GLSL and wandered across a range of tools including Fragmentarium and Synthclipse. These are great tools but always limiting in what I wanna achieve.

Looks like moving to Touch and starting with FragTool is the beginning of a new chapter.
Particulary given that I wanted to move to more real-time stuff integrated with external sensors/inputs.

Motivated to learn.

Dear all,

I am learning how to use Fragtool, and would like to use my MIDI controller (Novation Launchcontrol XL) to modulate the parameters of this amazing Fragtool system. Could anyone explain to me or help me find out how to map a midi controller signal to any formula in the perform-mode of the Fragtool UI, so I can modulate parameters by twisting knowbs on my midi-controller?

Thank you so much and I hope to hear from you guys!

Fred

Hi Fred, it’s not setup but there are a couple of methods you can use.

In /FragTool/Anim_LFOs_Mods/ are a number of animation components for each parameter group (formula, camera etc.). If you insert an override in front of the CHOP labelled “out” in any of these sections you can override a parameter. This will work but you might find you’ll have a number of problems if you want to switch formulas - parameters that you had mapped may not exist anymore.

The best way to get midi controllers in would be to setup a number of controllers as modulation sources.

In /FragTool/Anim_LFOs_Mods/allModRouting you’ll need to update a table called “AllMods” with the channel names of the midi channels you want to map. Then in the same container merge your midi channels into the CHOP labeled “mods”

Now your midi channels will show up as mod sources in the Mod Matrix Source menus and you’ll be able to route the to any parameter. When a global preset is stored it will save the routing.