glChAoS.P / wglChAoS.P ⋅ opengl / webgl ⋅ Chaotic Attractors of Slight (dot) Particles
RealTime 3D Strange Attractors scout on GPU
The program also explores other chaotic-objects like hypercomplex fractals (IIM algorithm) and DLA3D
JetBrains supports glChAoS.P ⋅ wglChAoS.P
many thanks to JetBrains for donating o.s.license for all their excellent products
To view all "chaotic-objects" currently inserted in current release, follow the link: Attractors Formulas
*any single object can be explored interactively via WebGL/WebAssembly directly from site.
Now all dp/dt attractors (yellow tag) have an additional new emitter type to visualize them in a progressive way and/or with multiDot (spray) effect.\ Is also possible to travel, in first person (cockpit view), within the particles, following the evolution of the attractors.
Lorenz Attractor - click on image to "explore" it in WebGL
use "v" key or "cockpit" button (from Attractors tools window) to switch to subjective view (on right)
New menu is available to adjust these settings:
1) Panoramic/CockPit dots/s: different emitter speed for any view\
2) Number of dots for each step, real dots/s emitted are: dots/s * Emit#
\
3) Multiplication factor of initial radial random speed\
4) Air friction/deceleration\
5) Point size: there are 3 different "pointSize" for: singleDot emitter, multiDot emitter and cockpitView\
6) Particles LifeTime, in sec.\
7) LifeTime attenuation: when the lifeTime ends, in blending mode, the particle attenuates the intensity of this factor, any second\
8) Wind direction and intensity (in units/s)\
9) Gravity/Acceleration direction and intensity (in units/s)\
A) Toggle cockpit view and related settings (following controls)\
B) Smoothing distance: in blending mode attenuates the intensity of near dots by distance\
C) Clipping distance: skip to draw closer particles\
D) PiP (Picture In Picture) feature\
E) TagretView is the current emitted dot, PointOfView is positioned on the wake: it adjusts the distance from head (it follows the attractor direction).\
F) Move back the PoV: it follows the vector PoV -> TGT\
G) Rotate the cam around TagretView, or better: around attractor head (last emitted dot), use reset to reposition the cam\
H) Move forward the TagretView position
Simulating a comet's journey in Lorenz attractor | Voyage in Multi-Chua II attractor |
---|---|
An absolutely personal and original "transformations" in 3D/4D of famous 2D attractors:
PopCorn, Morrone 4D transf. (ssss) | Martin, Morrone 4D transf. | PopCorn, Morrone 4D transf. (scsc) |
---|---|---|
Mira, , Morrone 4D transf. | Mira, Morrone 3D transf. | Hopalong, Morrone 4D transf. |
Full descriptions, math formulas and code in the relative webpage: PopCorn, Mira, Hopalong and...
*now any single attractor is also explorable interactively via WebGL/WebAssembly directly from site.
With Billboard and PointSprite techniques
This is an integrated version of more simple my DLAf-optimized repo that I used in glChAoS.P / wglChAoS.P for large-scale DLA3D growth, with possibility to export/import to/from PLY format and to continue a previous rendering.
Alpha Blending | Solid Dots |
---|---|
DualPass rendering: Z-buffer surface reconstruction | DualPass + Ambient Occlusion |
---|---|
DualPass + AO + Shadows | DualPass + AO + Shadows + mixed AlphaBlending |
*features also available in WebGL advanced version
This is a WebGL2 / WebAssembly lightened LIVE / ONLINE version of glChAoSP and Supports touch screen for mobile devices, smartphones and tablets
Go to wglChAoS.P - LIVE / ONLINE starting page
Starting from ver 1.3.2, also WebGL have new rendering engine: dual pass accurate rendering, shadows and ambient occlusion
*Advanced Mode not available/tested still for mobile devices
hypercomplex fractals | hypercomplex fractals |
---|---|
glChAoS.P is a 3D realtime Particle System with some unique features:
... and more
For more usage info: glChAoS.P info
Windows | Windows Viewports |
---|---|
Linux | Mac OS X |
Theoretically all graphics card that supports OpenGL 4.0 supports also OpenGL 4.5, depends only from drivers (and O.S.)
About the GPUs that support the OpenGL 4.5 (with appropriate drivers and OS permitting):
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:
Tested Operating System Versions:
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
and glChAoSP_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 64 bits).
This is a great version, solid beta and full functional, but based on a under development version of ImGui library.
Linux\
glChAoSP_Linux
: native executable (64 bit) is provided for OpenGL >= 4.5: it was tested on Fedora and Ubuntu LTS.
(you can recompile it, with appropriate define, to obtain an OpenGL 4.1 compliant)
\
Take care to have installed OpenGL library, whereas libX11 libXext
should already be installed.\
\
After clone, copy or decompression, take care that executable bit of the file glChAoSP_Linux
is active (chmod +x).\
Use glChAoSP_Linux.sh
to launch it from fileBrowsers like Nautilus or Caja.
Mac OS\
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.
NOTE:\ For Windows and Linux glChAoS.P 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, 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:
Tested Compilers
CMake
In the folder ./src
there is the CmakeLists.txt
, use this folder as base directory.
Read below more about your OS.
GLFW Library
Enclosed 32/64bit built library for Windows, and 64bit for Linux and OS X \ When build glChAoSP, compiler looks for GLFW library in the follows path:
You need to delete it, and/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.
Windows user needs of Visual Studio 2019 (it works also wit VS 2017/2015, but is need to change appropriate Platform Toolset and/or Windows SDK version that you have installed). In alternative, CMake 3.10 (or higher) for other compilers toolchain (non tested, but it should work).
Microsoft Visual Studio
VS solution\
In the folder ./src/msBuilds
there is the solution project for use with Visual Studio 2017/2019.\
(check appropriate Platform Toolset and/or Windows SDK version that you have installed)\
You can use also LLVM CLang to build glChAoS.P from Visual Studio: you can use the LLVM plugin (after to have installed clang, in windows) and simply change the toolchain in Properties -> General -> Platform Toolset
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.VS with CMakeFile.txt and CMakeSettings.json (testing fase - VS2019 only) \
Open ./src
folder in vs2019 you can build both Emscripten / CLang inside Visual Studio
CMake
NOTE: To build viewports version you need to add -DGLAPP_IMGUI_VIEWPORT
to compiler flags, or uncomment it in appDefines.h
Tools required\ Linux users need to install the GCC C/C++ v.5 or higher (or clang v.5 or higher) compilers and associated tools such as make and CMake (need v3.10 or higher). \ To install gcc C/C++:
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) or mesa-libGL mesa-libGL-devel
(Fedora).
Build\
Form a Terminal window, just launch sh build_glChAoSP.sh
script (from ./src
folder) to build glChAoSP, it first runs cmake
with appropriate parameters and then starts make
to build glChAoSP_Linux
executable: it will stored in parent folder (../
).
Another script, buildLinux.sh
, is provided (as helper) to re-build GLFW: it calls buildGLFW.sh
(to build/re-build GLFW) and build_glChAoSP.sh
sequentially.
libx11-dev libxext-dev
(Ubuntu) or libX11-devel libXext-devel
(Fedora).\
*(documentation: https://github.com/glfw/glfw)Tools required \ Mac users must have installed Xcode and the Command Line Tools, also CMake 3.10 or higher is necessary.
Build\
Form a Terminal window, just launch sh build_glChAoSP.sh
script (from ./src
folder) to build glChAoSP, it first runs cmake
with appropriate parameters and then starts make
to build glChAoSP_OSX
executable: it will stored in parent folder (../
)
Another script, buildOSX.sh
, is provided (as helper) to re-build GLFW: it calls buildGLFW.sh OSX
(to build/re-build GLFW) and build_glChAoSP.sh
sequentially.\
*(documentation: https://github.com/glfw/glfw)
The CMake file is able to build also an EMSCRIPTEN version, obviously you need to have installed EMSCRIPTEN SDK on your computer (1.38.20 1.38.28 1.38.40 or higher).
Use emsCMakeGen.cmd
or emsCMakeGen.sh
from ./src directory, or look inside it, to pass appropriate defines/parameters to CMake command line.
emsCMakeGen
need to know the location of EMSDK, and the "build-type" object to create.\
For example, run:
emsCMakeGen.sh /opt/emsdk/emscripten/1.38.20 Debug|Release|RelWithDebInfo|MinSizeRel wglChAoSP|wglChAoSP_lowres
emsCMakeGen.cmd C:\emsdk\emscripten\1.38.20 Debug|Release|RelWithDebInfo|MinSizeRel
To build the EMSCRIPTEN version, in Windows, with CMake, need to have mingw32-make in your computer and in the search PATH (only the make utility is enough) or Ninja.\ Currently all the shell/cmd scripts use Ninja to build wglChAoS.P (WebGL/WebAssembly release)
glChAoS.P uses 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
Personal tools
tools/vgMath → 3D Math Library (single file header, glm compatible) https://github.com/BrutPitt/vgMath
tools/vitualGizmo3D → 3D objects manipulator (single file header) https://github.com/BrutPitt/virtualGizmo3D
tools/imGuIZMO.quat → ImGui widget: visual 3D objects manipulator https://github.com/BrutPitt/imGuIZMO.quat
tools/fastPRNG → 32/64 bit pseudo-random generator, xoshiro/xoroshiro/xorshift and other algorithms https://github.com/BrutPitt/fastPRNG
Third party tools
libs/imGui → Dear ImGui
https://github.com/ocornut/imgui
glChAoS.P uses docking release of ImGui* (need >= 1.75)
libs/configuru → Configuru, an experimental JSON config library for C++ https://github.com/emilk/Configuru
libs/tinyPLY → C++11 ply 3d mesh format importer & exporter https://github.com/ddiakopoulos/tinyply
libs/lodePNG → LodePNG a PNG saver https://github.com/lvandeve/lodepng
libs/tinyFileDialog → file dialogs ( cross-platform C C++ ) https://github.com/native-toolkit/tinyfiledialogs
libs/IconFontAwesome → IconFontCppHeaders / Font Icon Toolkit https://github.com/juliettef/IconFontCppHeaders https://github.com/FortAwesome/Font-Awesome
libs/glad → GL/GLES/EGL/GLX/WGL Loader-Generator https://github.com/Dav1dde/glad
libs/dirent → "dirent" Unix/Linux filesystem interface port for Windows https://github.com/tronkko/dirent
libs/glfw → A multi-platform library for OpenGL, OpenGL ES, Vulkan, window and input
https://github.com/glfw/glfw
(need version >= 3.3, recommended enclosed pre-built)
libs/nanoflann -> header-only library for KD-Trees of datasets point clouds https://github.com/jlblancoc/nanoflann (need only for DLA3D, in alternative you can use Boost Library compiling with GLAPP_USE_BOOST_LIBRARY
define)
Below there are some used components, which differ from MIT / BSD 2-Clause / Zlib license.
External Color Maps/Palettes - (optional - to load)
*optional separate files to load and to have more color maps
Alternative Library
glm Math Library - https://glm.g-truc.net/
vgConfig.h
), and a studied interface that permits to switch between glm and vgMath only via compiler defines (vgConfig.h
).Boost Library in particular: function_output_iterator and geometry are necessary as alternative (to nanoflann) to build DLA3D (Diffusion Limited Aggregation) object exploration in glChAoS.P (can be disabled). It's not included in the repository, but can be downloaded from https://www.boost.org/ It is not necessary to build the library, only headers files is enough. (more information in: how to build)
-DGLAPP_USE_BOOST_LIBRARY
flag, to use instead of nanoflann lib
glChAoS.P / wglChAoS.P are licensed under the BSD 2-Clause License, see license.txt for more information.