Digilantism

Welcome Fragmentologists


Fragmentarium-*-3Dickulus is my hacked version of Syntopia's great program,
I couldn't resist adding a few features ;) Thanks M Benesi too for his incredibly cool code.
My appologies to Syntopia for neglecting proper credit on this page for his amazing work
and special thanks too for the other Fragmentologists who have contributed their time and ideas.
http://www.fractalforums.com/fragmentarium/

Fragmentarium is a cross-platform application for exploring pixel based graphics on the GPU.

It is similar to Adobe's Pixel Bender, but uses pure GLSL.

Features:
* Multi-tabbed IDE, with GLSL syntax highlighting
* User widgets to manipulate parameter settings.
* Different 'mouse to GLSL' mapping schemes
* Modular GLSL programming - include other fragments
* Includes simple raytracer for distance estimated systems
* Many examples including Mandelbulb, Mandelbox, Kaleidoscopic IFS, and Julia Quaternion.

Fragmentarium-1.0.31 is built using Mingw32-4.9.2 C++, OpenGL/GLSL, and Qt 5.6.2

For more information see:
http://syntopia.github.com/Fragmentarium
Note: the executable with "nV" in the name is for cards that support GL greater than 4.0

Apr 30 2017 Fragmentarium Installer 6.0M Installs Windows Executable + Examples Includes and Misc + Qt 5.6.2 runtime DLLs
Aug 22 2017 Fragmentarium 2.0.0 Source Contains the newest beta version source files
Sep 10 2017 Fragmentarium 2.0.0 Release Contains the newest beta version RPM and DEB packages
MD5 SUMS
f0b6f2d39c0c004d47a6d78640d05d6cFragmentarium_Installer.7z

Changes since v0.9.12

  • Setting and saving camera spline path controlpoints as "KeyFrame" presets. Edit->Menu item or hotkey F8 (see tutorial 30)

  • Setting and saving In/Out easing curves for any/all "Float 1-2-3-4" parameters. Edit->Menu item or hotkey F7 (saved in params file or preset and in the .frag when auto generating ".png Files") (see tutorial 32)

  • Shows spline paths and controlpoints when in Progressive/Stop mode. (still not quite right but definitely helps me as an animator/artist)

  • Camera follows spline path when in Animation/Play mode.

  • Camera follows spline path when in Animation/Stop mode when the time slider is moved.

  • When in Progressive/Stop mode the "view vector" connects points between the Eye and Target paths relative to frame number when the time slider is moved.

  • Displays current rendered frame when saving animation to disk so that if something isn't set right or didn't hookup the way you expected you can stop that 45000 frame animation and fix it without waiting until it's finished 8 hours later. (depending on your hardware)

  • Tests for user added AutoFocus checkbox in Raytracer tab, focalplane tracks target when enabled. (see tutorial 31)

  • Ticks on TimeSlider representing keyframes

  • Saves current animation FPS and duration with default preferences settings on close

  • Toggle setting for spline rendering in case your projection or engine doesn't display them properly

  • Syntax Highlighter fixed?

  • Time represented as frame ticks rather than floating point seconds

  • Animation switches from play to stop at the end

  • glu library dependancy removed now uses QMatrix4x4 perspective and lookat for spline rendering

  • Easing curves can have loops.

  • Easing curve loops can ping pong.

  • Tabs remember their fragments and settings when made active (selected)

  • Added a CMakeLists.txt file

  • The "Render" dialog now remembers it's last state and allows rendering a range of frames.

  • Version sensitive highlighting for 1.0 - 4.4 defaults to 1.1

  • Using glsl.xml from http://renderingpipeline.com/2013/12/glsl-syntax-highlighting-for-opengl-4-4/4

  • Search function for text in editor

  • GLSL assembler browsing

  • Spline path object occlusion works on W!nd0ze :D

  • Saves Easing curve settings in "Range-nnnnn-nnnnn" preset

  • Spacebar toggles animating

  • Preferences dialog has infinite loop option for animating

  • Selecting a keyframe in the pull down menu will highlight the coresponding control points

  • F9 will select the coresponding preset text in the editor

  • The editor now uses a fixed width font

  • Info reports vendor and renderer, removes GLSL Asm Browser menu item if no nVidia card is found

  • v1.0.8 Added scripting abilities

  • Fixed the input widgets allowing user to type input

  • Increased the decimal places for input boxes from 5 to 9

  • Added OpenEXR RGBA16F image output since v1.0.10

  • Added OpenEXR RGBA16F textures for Sampler2D

  • Depth can be assigned to EXR alpha channel

  • Added anisotropic hardware filtering for textures

  • Mipmaps for textures

  • mklinux.sh and mkmingw.bat will compile OpenEXR static libs and Fragmentarium and install exe + Examples/* + Misc/* to a working folder.

  • mklinux.sh should also work for OSX ( thanks visual.bermarte @ fractalforums.com :D )

  • Tool bars remain as user set them when switching to/from fullscreen

  • Textures are persistent when switching to/from fullscreen and when switching textures

  • LoopPlay only loops in "Play" mode

  • Fixed the timeSlider max value to keep in sync with framerate/duration

  • Context menu available in full screen mode (Shift+RMB)

  • fixed Texture Persistence bug

  • Qt5.4 loads EXR format but doesn't save this format so still need OpenEXR static libs for that

  • All motion actions are now scaled to step size, set with shift->wheel or keypad 1-2-3, 5 resets to default

  • Fixed Easing Curve Ping Pong Loop bug


  • These came about after collaborating with Matt Benesi

  • Added special "feedback array" uniform so frag code can get mouse click locations

  • enabled screenTo3D function, read out object XYZ @ mouse pos in status bar tnx M Benesi

  • enabled MiddleButton (Wheel) click = center screen at this location

  • Shift+Tilde key resets camera to look at origin 0,0,0

  • LMB+Shift+Alt rotates around target

  • CTRL+LMB record mouse pos and increment feedback array counter

  • CTRL+Alt+LMB record mouse pos to feedback array with flipped sign

  • CTRL+Alt+Shift+LMB clears feedback array

  • CTRL+SHIFT+LMB erase last mouse pos from feedback array and decrement counter

  • Added "feedback array" Toolbar, appears when all of the feedback stuff is detected


  • Fixed Texture Persistence bug (again???)

  • CTRL+MMB sets light pos when using DE-Kn2.frag vec3 LightPos

  • Hide unused widgets unless they are locked

  • Added VariableEditor::getWidgetNames(), returns a QStringList of all variable widget names

  • Fixed broken cmdline option -s (Thanks visual.bermarte@FF )

  • added ETA to progress dialog

  • changed "F9" behavior: if keyframes exist highlight the current keyframe preset in the text editor, if no keyframes highlight the current preset

  • added "Save" feature to image preview dialog

  • fixed comboslider highlight for locked uniforms

  • adjust slider step with RMB click on slider, no longer on arrow keys

  • added script entries to the help menu

  • prefs option to use #define or const for locked uniforms

  • added a timeline editor (for easing curves) RMB click on time slider

  • added video encoder dialog (mencoder and ffmpeg option files in Misc folder)

  • fixed file path naming (I hope) ;)

  • using QDir::separater for paths

  • added parameters saved in PNG files (a good idea prompted by sabine62@FF)

  • fixed 2DCamera mouse control

  • fixed 2d frag crash on keyframes

  • fixed jumpy sec:frame readout on time slider

  • fixed start/stop bug when animation length is shorter than easingcurve duration

  • *** GUI Language Translations By FractalForums.com Users :D ***

  • German and Dutch by Sabine

  • Russian by Crist-JRoger and SCORPION


  • 30 - Keyframe Animation.frag
    How-To create a KeyFrame Animation:

    Make sure the cursor is at the end of the GLSL script
    Select Menu Item...
    Edit->Insert Command->Presets->Insert Preset From Current Settings
    or Push "F8" key

    This will give you the opportunity to choose a name or use the one provided:
    For a NON-KeyFrame preset change the name to whatever you like.
    Leave it as is to add this as a KeyFrame, must be named "KeyFrame.nnn" and it will auto increment as you add new ones.

    Must have at least 2 KeyFrames to begin animating.

    Suggest starting with only a default Preset.

    After adding a few click the "Animation" button and hit play. You should see your keyframes play.

    If you already have keyframes and want to adjust one...

    Apply KeyFrame.nnn you want to edit as current view (from the Preset selection in the Parameters area)

    Make changes to your view, where you look at, location etc.

    Block mark the KeyFrame.nnn in the editor

    In the menu select "Edit->Insert Command->Presets->Insert Preset From Current Settings"
    or press the "F8" key.

    You will be prompted for a new name, the name will have auto incremented so you must give it the name KeyFrame.nnn where nnn is the same number as the frame you are replacing.

    New camera coordinates will replace the block marked keyframe.

    That is it, done! this is how tutorial 30 was created

    Camera path KeyFrame presets are only saved to a file when you save the GLSL script you create them in.


    32 - Multi-Parameter Easing Animation.frag
    How-To create a Parameter Morph Animation:

    EDIT: These settings can be saved by using "Range" in the preset name like "#preset Range-100-200", the frame numbers have no impact on the easing curve values and are ignored, they are so the human can be reminded of what this range covers, allows for unique names like "Range-fogIn" "Range-fogOut" etc., these ranges can also be applied via fqScript eg: applyPresetByName("Range-fogIn")

    These can be placed in the "Default" preset so that when a frag is loaded from cmdline eg:remote machine, they will be active immediately.

    Cycles1:CosineCurve:44:1:24:1:240:0.3:1:1.7:1:0
    Power1:SineCurve:43:1:6:20:220:0.3:1:1.7:1:0
    RotAngle1:OutInBack:36:0:360:40:200:0.3:1:1.7:1:0

    the items on each line are used as follows...

    [Variable Name]:[Ease Name]:[Ease Type]:[start frame]:[end frame]:[begin parameter value]:[end parameter value]:[period]:[amplitude]:[overshoot]:[loops]:[pong]

    yes yes a lot of silly things to remember but fortunately there's a nice little GUI for all that :)

    1> load tutorial 32
    2> Select the "Mandelbulb" tab
    3> Select the "Power" slider
    4> Push "F7" key (or menu item "Edit->Add Easing Curve")
    5> Change some settings
    6> hit OK that is it, done!

    Frames before start frame will use start value until start frame is reached.
    Frames after finish frame will use finish value until end of animation is reached.
    These become active when the animation is playing.

    When you do this on a variable that already has a curve you will be prompted "Apply" "Discard" "Cancel"

    "Apply" will change these settings for this variable (like it, keep it)
    "Discard" will delete the settings for this variable (clean up, no animating)
    "Cancel" does nothing

    This only saves the changes internally!!! if you like the result then...

    1> you need to save parameters file or
    2> add a new preset with a new name and save the GLSL script or
    3> render a highres or anim to create "<frag-name>_Files"
    this folder will have all of your var morph settings in a single default preset and campath keyframes

    Parameter morph settings should all be in one named (not keyframe) preset.


    31 - Focal Plane Tracking Target.frag
    How-To Enable Auto Focus:

    Now in the Raytracer tab you can enable/disable focal plane target tracking,
    the focal plane maximum distance is 5,

    if you need more than that open the 3D.frag file and at around line 94 edit the focal plane widget maximum...


    uniform float FocalPlane; slider[0,1,5]

    to what ever you need like...


    uniform float FocalPlane; slider[0,1,50]

    keep in mind that the target floats around at some distance from the camera, dynamically adjusted (sometimes a lot) as you navigate, it is generally beyond what you are looking at and will need to be set before you create a keyframe or they will need to be adjusted by hand in the keyframe presets.

    EDIT:Mid Mouse Button Click on the fractal object with Variable Editor->Post->DepthToAlpha set to true (checked) will set the target depth at the surface of the fractal where you click.


    Misc code

    4289 Sep 4 01:12 GLCatmull-Rom OpenGL Demo (Source Code)
    17491 Sep 2 06:36 QtRangeSliderA two headed slider widget for QtCreator (Source Code)

    My Fragmentarium videos from 2013 - 2015

    "Water Test" "InvestigateThis2" "Insideout" "Morphing 4D Quaternion Julia PseudoKleinian" "How To Build A Dalek" "Tubular Hells 3" "Ritual Flyby" "Ritual Twist" "FourNode seq" "Fan Seq 640x360" "Ripple Seq 1280x720" "EndoMorphic" "CyberWerks" "The Art Of Folding" "Magical Menger Mandelbulb Mashup" "Spudsville-Tour" "Axolotl-1" "IQ-Clouds-v3" "IQ-clouds-v2" "IQ-clouds" "ChipCore768" "Goblins Nest" "OctoMorph" "God Ray Octo Bulb" "Nacimiento del Madonna or From Egg to Angel" "Scirocco" "DenCity" "Liberta" "Tubular-Hells" "Ritual" "Inspired by Spudsville" "morphology" "Amber 0.9.51 Easing Test" "Jungle Predator" "Param Morph X3" "Param Morph X1" "Focal Plane Tracking Target" "KeyFrame Spline Paths"