glChAoS.P/glChAoSP: OpenglChaoticAttractorsofSlight (dot)Particles A real time 3D strange attractors scout … and hypercompex fractals (new!)
To view all Attractors / Fractals currently inserted in this version, follow the link:Attractors Formula
Release Notes(what’s new)
All availabe 1.4.0 releases==>- glChAoS.P– (DeskTop) ******* – binaries availableWindows/(Linux) /OS X
- wglChAoS.P–WebGLviawebAssembly–live/onlineusing your browser – also for mobile devices
- You can select (Advanced Mode) ******* (check box) (default) ) or deselect it forStandard Mode, for low resources devices ( mobiles / tablet / smartphones), also fromwglChAoS.P Advanced Modepage description
New ver.1.4.0clipping planesfeature:
Particle System rendering features
- 100 Mof particles in minus of 1.6 GByte of VRAM .. until265 M(4G VRAM):Slight (dot)Particles
- only avec4(4-float) per vertex for position and color
- Rendering: RealTime Surface Reconstruction / Shadows / Ambient Occlusion
- Light Models: Phong / Blinn-Phong / GGX
- Glow effects: Gaussian Blur / bilateral deNoise with threshold / Gaussian deNoise
- Anti-aliasing: FXAA
- Image adjustment: Bright / Contrast / Gamma / Exposure / ToneMapping
WithBillboardandPointSpritetechniques
DLA3D Video Example
3D DLA (Diffusion Limited Aggregation) –PersonalDLAf-optimizedproject, adaptation and optimization from original code ofMichael Fogleman, with possibility to export / import to / from PLY format and to continue a previous rendering.
Video Example
Rendering models with Aizawa attractor –Rendering Video Example
Further rendering engine improvement (from ver.>=1.3.x) –*features also available in WebGL advanced version
wglChAoS.P – the WebGL2 online version (ver. 1.4.0)
This is aWebGL2/WebAssemblylightenedLIVE / ONLINEversion ofglChAoSPand Supports touch screen for mobile devices, smartphones and tablets
Go towglChAoS.P – LIVE / ONLINEstarting page
wglChAoS.P Advanced Mode – WebGL2 with new rendering engine
This is aWebGL2/WebAssemblylightenedLIVE/ONLINEversion withnew rendering engine: dual pass accurate rendering, shadows and ambient occlusion
(Go towglChAoS.P Advanced Mode (page)
*Advanced Mode not availabe / tested still for mobile devices
Hypercomplex fractalslike attractors – via IIM (Inverse Iterations Method)
glChAoS.P features
glChAoS.P is a 3D realtime Particle System with some unique features:
- 100 Mof particles in minus of 1.6 GByte of VRAM .. until265 M(4G VRAM):Slight (dot)Particles
- only 4-float (vec4) per vertex: position and color
- PointSprite and Billboard particles types
- 3D blended / solid / lighted particles
- Single dot or DualPass rendering (surface reconstruction from zBuffer)
- Shadows and AmbientOcclusion
- Light models: Phong / Blinn-Phong / GGX
- Distance attenuation on Size an Alpha channel
- Full customizable colors, with several color palettes
- Customizable glow effects: Gaussian Blur / bilateral deNoise with threshold / Gaussian deNoise
- Customizable FXAA filter
- Motion blur
- Post processing image correction:
- Gamma
- exposure
- Brightness
- Contrast
- ToneMapping / HDR
… and more
For more usage info:glChAoS.P info
Some screenshots from different operating systems
Hardware required:
- glChAoS.P– GPU with OpenGL 4.1 or higher
- wglChAoS.P– Browser with WebGL2 capabilities (FireFox, Chrome or Chromium based browsers)
Theoretically all graphics card that supports OpenGL 4.0 supports also OpenGL 4.5, depends only from drivers (and OS)
About the GPUs that support the OpenGL 4.5 (with appropriate drivers and OS permitting):
- NVidia starting from GT / GTX 4xx series
- AMD starting from HD 5xxx series
- Intel starting from Ivy Bridge / Bay Trail CPUs (with HD 4000 / 2500 Graphics)
Hardware recommended:
- GPU starting from AMD HD 7970 / NVidia GTX 670 or with better performance
- CPU with 2 or more cores
About performance
Glow effects, mostly with sigma>5, and DualPass / Shadows / AO requires expensive calculations in terms of performance
If you have slow performance try, in this order:
- Disable (DualPass) rendering and / orAOand / orShadows
- DisableGlowEffectsand / orFXAA
- PreferPointsprite: on AMD and Intel GPU (sensible difference of performance)
- Decrease number of particles buffer
- Decrease point size (if you can)
- try squared 1024 x 1024 (power of 2) window size (fromSettings panel)
Supported Operating systems:
- Microsoft Windows
- Linux / Unix
- Mac OS X
- Android via webBrowser (wglChAoS.PWebGL / webAssembly, lightned version)
Tested Operating System Versions:
- Microsoft Windows 7 / 8.x / 10
- Linux distributions: Ubuntu 16. 04 / 18. 04, Fedora 27 / 28 / 29
- Mac OS X 10. 14 (Mojave)
- Android 5/6/7/8/9 with Firefox and Chrome
Executables
No installation program is provided: just clone it form github or download the archive and decompress it in a folder whatever: only the internal directories structure must be preserved.
For Windows and Linux glChAoSP uses OpenGL 4.5 with AZDO (Approaching Zero Driver Overhead) and a separate thread (multithread) emitter / generator of particles with memory mapped directly on GPU vRAM.
On Mac OS X, for a limitation of the OS (from Mojave Apple have deprecated OpenGL) there is a downgraded version that use OpenGL 4.1 (higher possible) with a separate thread emitter / generator that uses the conventional CPU memory.
Are provided executable for the followings OS:
-
Windows
glChAoSP.exe
andglChAoSP _ 32 .exe
: native executable (64 and 32 bit) are provided for OpenGL>=4.5:Preferably use the 64 – bit version. (you can recompile it, with appropriate define, to obtain an OpenGL 4.1 compliant)glChAoSP_viewports.exe
: beta version of multiple viewports is also provided (floating GUI windows that can go out outside of main Viewport / Window): (only (bits). This is a great version, solid beta and full functional, but based on aunder developmentversion ofImGuilibrary.
Tested on Windows 7, 8 and 10 -
Linux
glChAoSP_Linux
: native executable (64 bit) is provided for OpenGL>=4.5, (you can recompile it, with appropriate define, to obtain an OpenGL 4.1 compliant)
After clone, copy or decompression, take care that executable bit of the fileglChAoSP_Linux
is active (chmod x).
Take care to have installed OpenGL library, whereas (libX) libXextshould already be installed.
It was tested on Fedora 27 / 28 and Ubuntu 16. 04 / 18. 04 LTS, although with subsequent updates and different library versions you may need to rebuild it. Read Build / CMake sections for further information.
Tested on Fedora 27 / 28 and Ubuntu 16. 04 / 18. 04- (wine)
The Windows executable, 32 / 64 bit, works fine also in wine 3.xx with no evident loss of performance
- (wine)
NOTE: Ending support for Ubuntu 16. 04 LTS (ended to April 2019): the distributed executable is no longer compatible, but compile compatibility remains: you can compile source code to build your executable.
- (OS X)
glChAoSP_OSX
: native executable (64 bit) is provided for OpenGL 4.1
From“Finder”click on applescript:glChAoSP_OSX.app
, or form command line type directly the command:./glChAoSP_OSX
It was tested on OS X ver 10. 14 (Mojave) only, although with subsequent updates and different library versions you may need to rebuild it. Read Build / CMake sections for further information.
Tested on 10. (Mojave)
glChAoS.P
To buildBuild requirements
- Compilers with full C 14 standard required
- CMake 3. 10 or higher
Boost Library to build DLA3D (Diffusion Limited Aggregation) object exlploration , (or uncomment DISABLE_DLA3D in CMake file to disable it)
Tested Compilers
- Microsoft Visual Studio 2019 / 2017 / 2015 (Platform Toolset v. 142 / 141 / 140: it does not work with previous versions)
- CLang 5/6/7
- GNU C 5/6/7/8
For Windows and Linux glChAoSP uses OpenGL 4.5 with AZDO (Approaching Zero Driver Overhead) and a separate thread (multithread) emitter / generator of particles with memory mapped directly on GPU vRAM.
On Mac OS X, for a limitation of the OS (from Mojave Apple have deprecated OpenGL) there is a downgraded version, that use OpenGL 4.1 (higher possible) with a separate thread emitter / generator that use the conventional CPU memory. *********
Furthers “build” option are provided:
- Use OpenGL 4.1 also on Windows and Linux.
- Single thread version.
CMake
In the folder./ SRC
there is theCmakeLists .txt
, use this folder as base directory.
Read below more obout your OS.
GLFW Library
Enclosed 32 / 64 bit built library for Windows, and 64 bit for Linux and OS X
When build glChAoSP, compiler looks for GLFW installed library, before, in the follows path:
- SRC / SRC / LIBS / GLFW / buildLinux (Linux)
- src / src / libs / glfw / buildOSX (OSX)
- src / src / libs / glfw / buildWin (Windows)
So, you need to delete it, or modify the CMake file, to use personal ones version. In this case you need to have installed GLFW Library, ver 3.3 or higher, or re-build the enclosed version in“./ src / src / libs / glfw”
folder.
Boost Library
Currently boost library for DLA is no longer necessary: has been replaced withnanoflannheader-only library for KD-Trees of datasets point clouds (included in repository). In alternative, boost library is anyway enableable via internal define
Boost Library in particular:function_output_iteratorandgeometryare necessary to build DLA3D (Diffusion Limited Aggregation) object exlploration in glChAoS.P. It’s not included in the repository, but can be downloaded fromhttps://www.boost.org/
It is not necessary to build the library, only headers files is enough (they must be in the compiler research path). Add the location in to INCLUDEenvironment variable or unpack / copy the (boost) include directory undersrc / src / libs
: this folder is already added in CMakeFile
You can also disable the building of DLA function: pass- DGLAPP_DISABLE_DLA
to compiler, or uncommentGLAPP_DISABLE_DLA
flag insrc / CMakeFile.txt
, or uncomment it directly in the filesrc / src / appDefines.h
Windows
Windows user needs of Visual Studio 2019 (it works also wit VS 2017 / 2015, but is need to change appropriate (Platform Toolse) and / orWindows SDK versionthat you have installed). In alternative, CMake 3. 10 (or higher) for other compilers toolschain (non tested, but it should work).
-
Microsoft Visual StudioIn the folder
./ src / msBuilds
there is the solution project for use with Visual Studio 2017.
The current VisualStudio solution refers to my environment variable RAMDISK (R:
), and subsequent VS intrinsic variables to generate binary output:$ (RAMDISK) $ (MSBuildProjectDirectoryNoRoot) $ (DefaultPlatformToolset) $ (Platform) $ (Configuration)
Even without a RAMDISK variable, executable and binary files are outputted in base to the values of these VS variables, starting from root of current drive.
You can use CMake to generate a VS 2015 solution: previous versions do not support C 14 standard.
If you want useLLVM clangto build glChAoSP, inside Visual Studio, you can use the LLVM plugin (after to have installed clang, in windows) and simply change the toolschain in“Properties → General → Platform Toolset” -
NOTE:To buildviewportsversion add
GLAPP_IMGUI_VIEWPORT
compiler define or uncomment it inappDefines.h
Linux
Lunux users need to install the GCC C / C v.5 or higher (or clang v.5 or higher) compilers and associated tools such asmakeandCMake(need v3. 10 or higher). To install gcc C / C :
- Debian, Ubuntu:
sudo apt-get install build-essential cmake cmake-qt-gui
- Fedora, RedHat:
sudo dnf install make gcc-c cmake cmake-gui
You need also to have installed OpenGL library and relative development package:libgl1-mesa libgl1-mesa-dev
(Ubuntu) ormesa-libGL mesa -libGL-devel
(Fedora), and also of GLFW library 3.3 or higher.
Thebuild_glChAoSP.sh
script build glChAoSP, with the pre-built GLFW library (included).
ThebuildLinux.sh
script is provided as helper, it callbuildGLFW.sh
(to build / erbuild GLFW) andbuild_glChAoSP.sh
sequentially.
To build / rebuild GLFW from enclosed sources you must have installed also “development” packages:libx 11 - dev libxext-dev
(Ubuntu) or (libX) – devel libXext-devel(Fedora).
UsebuildGLFW.sh
from./ SRC
directory, or build GLFW directly from./ SRC / SRC / LIBS / GLFW
(documentation:https://github.com/glfw/glfw)
OS X
Mac users must have installed Xcode and the Command Line Tools, CMake 3. 10 or higher.
CMake uses the enclosed built version of GLFW (actual development branch v.3.3)
To build glChAoSP on OS X, from./ SRC
folder, callsh build_glChAoSP.sh OSX
(recommended use).
If you need to build GLFW too, thebuildOSX.sh (script is provided as helper: it calls) buildGLFW.sh OSX
(to build / erbuild GLFW) and (build_glChAoSP.sh OSX) Sequentially.
Or usesh buildGLFW.sh OSX
from ./src directory, or build GLFW directly from./ SRC / SRC / LIBS / GLFW
(documentation:https://github.com/glfw/glfw)
Several warnings are visualized, it is normal. I tested it only on OS X 10. 14 Mojave (build and binary).
WebGL via WebAssembly – EMSCRIPTEN
The CMake file is able to build also anEMSCRIPTENversion, obviously you need to have installed EMSCRIPTEN SDK on your computer ((***********************************************************************************************************************************************************************************************). 201. 38. 281. 38. 40 or higher). UseemsCMakeGen.cmd
orEMSCMakeGen.sh
from ./src directory, or look inside it, to pass appropriate defines / patameters to CMake command line.EMSCMakeGen
need to know the location of EMSDK, and the “build-type” object to create.
For exemple, run:
emsCMakeGen.sh /opt/emsdk/emscripten/1.38. 20 Debug | Release | RelWithDebInfo | MinSizeRel
EMSCMakeGen.cmd C: emsdk emscripten 1. 38. 20 Debug | Release | RelWithDebInfo | MinSizeRel
To build the EMSCRIPTEN version, in Windows, with CMake, need to havemingw 32 – make.exein your computer and in the search PATH (only the make utility is enough): it is a condition of EMSDK tool to build with CMake in Windows.
CMake
To install CMake 3. 10 or higher where is not provided (Ubuntu 16. 04 LTS distribution have v3.5):
You have first to remove the installed version by typing executing:sudo apt purge cmake
Then go tohttps://cmake.org/download/and download the latest version you need. If you download a .tar.gz file you have to unpack it using a command like:tar -xvf cmake-3.XX.XX-Linux-x 86 _ 64 .tar.gz
Then go to the folder of cmake (cd cmake-3.XX.XX-Linux-x 86 _ 64
) and from there execute the following commands:
sudo cp -r bin / usr / sudo cp -r share / usr / sudo cp -r doc / usr / share / sudo cp -r man / usr / share /
3rd party tools and color maps
glChAoS.Puses 3rd party software tools components, they are located in the“./ src / src / libs”
folder and built with the program. A copy of each is included in the repository, to avoid incompatibility with future changes.
Structure and description of 3rd parts libraries / tools / palettes, and related copyrights and licenses:
Libs and Tools
- libs / glm → OpenGL Mathematicshttps://glm.g-truc.net(need version>=0.9.9)
- Not striclty (more) necessary, now my integraded toolsvitualGizmo3DandimGuIZMO.quathave (inside them) a sub-set ofglmtypes and funtions (vGizmoMath), with a studiedinterfacethat permits to switch betweenglmandvGizmoMathonly via compiler defines.
- libs / imGui → Dear ImGuihttps://github.com/ocornut/imgui(need version>=1. 72)
-
libs / configuru → Configuru, an experimental JSON config library for C https://github.com/emilk/Configuru
-
libs / tinyPLY → C 11 ply 3d mesh format importer & exporterhttps://github.com/ddiakopoulos/tinyply
-
libs / lodePNG → LodePNG a PNG saverhttps://github.com/lvandeve/lodepng
-
libs / tinyFileDialog → file dialogs (cross-platform C C )https://github.com/native-toolkit/tinyfiledialogs
-
libs / IconFontAwesome → IconFontCppHeaders / Font Icon Toolkithttps://github.com/juliettef/IconFontCppHeadershttps://github.com/FortAwesome/Font-Awesome
- libs / glad → GL / GLES / EGL / GLX / WGL Loader-Generatorhttps://github.com/Dav1dde/glad
-
libs / dirent → “dirent” Unix / Linux filesystem interface port for Windowshttps://github.com/tronkko/dirent
-
libs / glfw → A multi-platform library for OpenGL, OpenGL ES, Vulkan, window and inputhttps://github.com/glfw/glfw(need version>=3.3, recommended enclosed pre-built)
-
libs / nanoflann ->header-only library for KD-Trees of datasets point cloudshttps://github.com/jlblancoc/nanoflann(need only for DLA3D, in alternative you can useBoost Librarycompiling with
GLAPP_USE_BOOST_LIBRARY
define)
Alternatives and optional, not strictly necessary
Below there are some used components, which differ fromMIT/BSD 2-Clause/Zliblicense.
External Color Maps / Palettes – (optional – to load)
- colorMaps / jjg_gradient.json colorMaps / jjg_step.json → J.J. Green palettes (creative commons noncommercial license)http://soliton.vm.bytemark.co. uk / pub / cpt-city / jjg / ccolo / index.htmlConversion from gpf format to json 256 variations. (these are optional separate files to load and to have more color maps)
Alternative Library
- (Boost Libraryin particular:function_output_iteratorandgeometryare necessaryas alternative(to nanoflann) to build DLA3D (Diffusion Limited Aggregation) object exlploration in glChAoS.P (can be disabled). It’s not included in the repository, but can be downloaded fromhttps://www.boost.org/It is not necessary to build the library, only headers files is enough. (more information in: how to build)
- Compile with
GLAPP_USE_BOOST_LIBRARY
define, to use instead ofnanoflannlib
- Compile with
License
glChAoS.Pis licensed under the BSD 2- Clause License, seelicense.txtfor more information.
GIPHY App Key not set. Please check settings