Emergence is a visualiser and processor of a primordial particle system. The project is based on the article, “How a life-like system emerges from a simple particle motion law”, by Schmickl et al.: https://www.nature.com/articles/srep37969.
Demo: https://youtu.be/aowMzix8mYg
- clang++
12
- cmake
3.25
- glew
2.2
- glfw
3.3
- glm
0.9.9
These versions only indicate what was used in the latest build.
ldd ./emergence
:
linux-vdso.so.1 /usr/lib/libGLEW.so.2.2 /usr/lib/libglfw.so.3 /usr/lib/libOpenGL.so.0 /usr/lib/libOpenCL.so.1 /usr/lib/libstdc++.so.6 /usr/lib/libm.so.6 /usr/lib/libgcc_s.so.1 /usr/lib/libc.so.6 /usr/lib/libGL.so.1 /usr/lib/libdl.so.2 /usr/lib/libX11.so.6 /usr/lib/libpthread.so.0 /usr/lib/libGLdispatch.so.0 /usr/lib64/ld-linux-x86-64.so.2 /usr/lib/libGLX.so.0 /usr/lib/libxcb.so.1 /usr/lib/libXau.so.6 /usr/lib/libXdmcp.so.6
- catch2
- fonts (Liberation Mono)
- glmConfig.cmake (at least one linux distribution lacks this file)
- imgui
- stb
- opencl c headers (“opencl2-headers”)
>= 2023.02.06
- opencl c++ headers (“opencl-clhpp”)
>= 2.0.15
- opencl loader (“ocl-icd”)
>= 2.3.1
- opencl runtime
- If OpenCL is desired on Intel graphics, install NEO
- Refer to https://github.com/intel/compute-runtime.
- If possible, install the necessary packages via your distribution’s package manager.
- Otherwise:
- Download the
deb
assets from their releases page. - Extract the libraries from the
deb
files, and place them under, say,/usr/local
. - Make sure
ld.so.conf
recognises the directory holding the new libraries, for instance/usr/local/lib
. sudo ldconfig
, substituting renamed copies of library files with symlinks ifldconfig
complains.- Make sure the path to the new OpenCL driver (eg.
/usr/local/lib/intel-opencl/libigdrcl.so
) is recognised under/etc/OpenCL/vendors
. - Check that your device is recognised and ready, using a program like
clinfo
.
- Download the
- Build
- Retrieve this repository from https://github.com/blobject/emergence.
cd emergence
- Optionally configure
CL
(defaulton
) in CMakeLists.txt. rm -R build; mkdir build; cd build
cmake ..
make
Note: If any OpenCL component was (un)installed after an invocation of cmake
, make sure to remove build/
and do a fresh cmake
again.
- Run
cd emergence/build
./emergence
(append-h
for usage help)- On Intel graphics, turn vsync off to get better performance:
vblank_mode=0 ./emergence
- On Intel graphics, turn vsync off to get better performance:
- Test
cd emergence/build
./testemergence