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 |
| f0b6f2d39c0c004d47a6d78640d05d6c | Fragmentarium_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
|
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.
|
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.
|
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) |