GithubHelp home page GithubHelp logo

theoden8 / emu-automaton Goto Github PK

View Code? Open in Web Editor NEW
0.0 2.0 0.0 19.73 MB

Emulator that uses the power of OpenGL to breed digital life forms.​

Home Page: https://icurf3ar.itch.io/emu-automaton

C++ 93.88% CMake 4.50% C 0.20% GLSL 1.01% Shell 0.41%
cpp cpp17 game-of-life cellular-automata rule110 computability determinism

emu-automaton's Introduction

Author

Created by Kirill Rodriguez on 07/2018.

About

The purpose of this project is to animate automata in order to provide intuition for understanding complexity, and is to evolve into a more efficient framework for investigating algorithms and topologies in the languages of various automata.

Demonstration

This is a random Day and night simulation:

day_and_night

Tools

  • c++20, clang++
  • opengl 3/4, libepoxy, glfw
  • Nuklear

Special features

  • GPU-powered updates
  • Ising model
  • Multi-state automata

Implementation

  • Renderer
    • GLSL compute shaders (only B/S/C automata, when compute shaders are supported)
    • OpenMP-powered updates on CPU otherwise
  • Storage mode
    • Textures (B/S/C automata)
    • CPU memory
      • Single buffer on CPU for automata where individual cells are updated (e.g. Ising model)
      • Double-buffer on CPU for update-all cellular automata
      • Extra buffer for case when buffer is larger than screen (for averaging)
  • Access mode
    • Bounded
    • Toroid (looped)
  • Topology
    • Grid

Compiling

mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_COMPILER=clang++
cd ..
make -C build
# running
./build/automaton

Potential roadmap

  • Loading specific patterns
  • More kinds of initializations
  • Triangular/Hexagonal topologies
  • More kinds of rules
  • More stochastic automata
  • Continuous automata
  • Training a model to learn evolution of a stable CA

References

emu-automaton's People

Contributors

theoden8 avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.