A C++ port of Wave Function Collapse Tiling
C C++
Latest commit f85d8b7 Oct 9, 2016 @emilk committed on GitHub Merge pull request #9 from VelocityRa/master
Perf. Comparison + fix submodule URL
Failed to load latest commit information.
libs Made emilib a git submodule Oct 4, 2016
samples Add support for tiles Oct 2, 2016
.gitignore Add --gif option Oct 3, 2016
README.md Add performance comparison Oct 9, 2016
arrays.hpp Add missing arrays.hpp Oct 7, 2016
samples.cfg Upscale output to easier see pixels without zooming Oct 4, 2016


Wave Function Collapse in C++

This is a C++ port of https://github.com/mxgmn/WaveFunctionCollapse.

All sample images come from https://github.com/mxgmn/WaveFunctionCollapse


This software is dual-licensed to the public domain and under the following license: you are granted a perpetual, irrevocable license to copy, modify, publish, and distribute this file as you see fit.

The sample images are from https://github.com/mxgmn/WaveFunctionCollapse, so they are NOT covered by the above license.

How to get started

git clone git@github.com:emilk/wfc.git
cd wfc

./main.cpp starts with a shell script that downloads dependencies, build, links, and finally runs the program.

This works on Mac and Linux.


C++14. Nothing more, really.

All required third-party libraries are included or downloaded by running ./main.cpp. These are:


The sample configuration finishes 25% faster than the original version (50 vs 40 seconds).

Tested on a Linux VM, speed may be better on an installed distribution.


This port supports everything in https://github.com/mxgmn/WaveFunctionCollapse (as of October 2016), though with slightly different input (.cfg files over .xml, for instance).

The code is not optimized nor well-documented. It could also do with some further cleanup.