BrutPitt / glChAoS.P

3D GPUs Strange Attractors and Hypercomplex Fractals explorer - up to 256 Million particles in RealTime
https://michelemorrone.eu/glchaosp
BSD 2-Clause "Simplified" License
805 stars 63 forks source link
attractors azdo dla dla3d emscripten fractal-algorithms fractals ggx glsl gpu hypercomplex ifs imgui opengl particles particlesystem rendering webassembly webgl webgl2

glChAoS.P ⋅ wglChAoS.P - Ver 1.5.3

glChAoS.P / wglChAoS.P ⋅ opengl / webglChaotic 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.PwglChAoS.P
many thanks to JetBrains for donating o.s.license for all their excellent products

 

All available releases     ==> Release Notes (what's new)

Desktop - v.1.5.3

 

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.

 

 

Latest features from ver.1.5.3

TransformFeedback → multiDot particles emitter

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

 

Youtube Video

Simulating a comet's journey in Lorenz attractor Voyage in Multi-Chua II attractor

 
 
 

ver.1.4.2 feature: 11 unpublished attractor types: PopCorn, Mira, Hopalong and...

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)
sShot_20191118_173632 sShot_20191113_43629 sShot_20191112_04710
Mira, , Morrone 4D transf. Mira, Morrone 3D transf. Hopalong, Morrone 4D transf.
sShot_20191113_22737 sShot_20191113_2269 sShot_20191113_22333

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.

 
 

Particle System rendering features

With Billboard and PointSprite techniques

3D DLA (Diffusion Limited Aggregation) - DLA3D Video Example

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.

Rendering models with Aizawa attractor - Video Example

Alpha Blending Solid Dots

Further rendering engine improvement (from ver. >= 1.3.x) - Rendering Video Example

DualPass rendering: Z-buffer surface reconstruction DualPass + Ambient Occlusion
DualPass + AO + Shadows DualPass + AO + Shadows + mixed AlphaBlending

*features also available in WebGL advanced version

 
 

wglChAoS.P - WebGL2 online 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

 

wglChAoS.P Advanced Mode - WebGL2 with new rendering engine

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 like attractors - via IIM (Inverse Iterations Method)

hypercomplex fractals hypercomplex fractals

 
 

glChAoS.P features

glChAoS.P is a 3D realtime Particle System with some unique features:

... and more

For more usage info: glChAoS.P info

 
 

Some screenshots from different operating systems

Windows Windows Viewports
Linux Mac OS X

 
 

Hardware required:

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):

Hardware recommended:

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:

Supported Operating systems:

Tested Operating System Versions:

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:

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:

 
 

To build glChAoS.P

Build requirements

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.

Build glChAoS.P in Windows

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

NOTE: To build viewports version you need to add -DGLAPP_IMGUI_VIEWPORT to compiler flags, or uncomment it in appDefines.h

Build glChAoS.P in Linux

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++:

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.

Build glChAoS.P in Mac OS

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)

Build wglChAoS.P with EMSCRIPTEN - WebGL via WebAssembly

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)

 
 

3rd party tools and color maps

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

Alternatives and optional, not closely necessary

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

 

License

glChAoS.P / wglChAoS.P are licensed under the BSD 2-Clause License, see license.txt for more information.