This project focuses on simulating simple cellular automata on GPU using OpenCL interface.

Basically, a cellular automaton is a discrete model, consisting of regular grid of cells, where each can be in one of finite number of states. The new state (next generation) of analyzed cell is determined by designed logical rules, which usually use current cell state and state of cell’s neighborhood to generate next state value.

Project was written in C#, where OpenCL bindings were provided by Cloo framework. OpenGL was used for rendering, which bindings were provided in Tao.Framework. In this project a 3d mesh was implemented, with configurable grid size. State generation rules are implemented directly in OpenCL kernel file — OpenCL provides kernel JIT compilation, so that evolution rules can be easily modified.