Awesome Creative Coding
Carefully curated list of awesome creative coding resources primarily for beginners/intermediates.
Creative coding is a different discipline than programming systems. The goal is to create something expressive instead of something functional. Interaction design, information visualization and generative art are all different types of creative coding – which has become a household term describing artworks articulated as code.
Please read the contribution guidelines before contributing.
Contents
Books
-
Generative Art: A Practical Guide - Practical guide using Processing.
-
Generative Design - Visualize, Program, and Create with Processing.
-
The Nature of Code - Simulating natural systems with Processing.
-
Programming Design Systems - Practical introduction to the new foundations of graphic design.
-
Learning Modern 3D Graphics Programming - Series of tutorials on using OpenGL to do graphical rendering.
-
Programming Interactivity - Designer’s Guide to Processing, Arduino, and openFrameworks.
-
openFrameworks Essentials - openFrameworks beginner Guide for programmer, visual artist, or designer.
-
Mastering openFrameworks: Creative Coding Demystified - Advanced in depth guide to openFrameworks.
-
Algorithms for Visual Design Using the Processing Language - Experiment with design problems to create 3D animations, GUIs, and more.
-
Foundation HTML5 Animation with JavaScript - Everything you need to know to create animation using the HTML5 canvas.
-
Playing with chaos - Programming Fractals and Strange Attractors in JavaScript.
-
Ray Tracing in One Weekend - Mini book about Ray Tracing.
-
Processing 2: Creative Programming Cookbook - Guides you to explore the Processing environment using practical and useful recipes.
-
Data-driven Graphic Design - Creative Coding for Visual Communication.
-
Real-Time Rendering - Learn how to use modern techniques to generate synthetic three-dimensional images in a fraction of a second.
-
Graphics Shaders: Theory and Practice - Introduction to shader programming in general, but focusing on the GLSL shading language.
-
Anton’s OpenGL 4 Tutorials - Practical guide to starting 3d programming with OpenGL.
-
Physics for JavaScript Games, Animation, and Simulations - Teaches JavaScript programmers how to incorporate real physics into their HTML5 games, animations, and simulations.
-
Math for Programmers - Book teaches you to solve mathematical problems in code.
-
Synthèse d’images avec OpenGL (ES) - Book in french, which covers OpenGL, OpenGL ES and WebGL.
-
Hands-On Music Generation with Magenta - Explore the role of deep learning in music generation and assisted music composition.
Online Books
Courses
-
Create 3D Graphics in JS Using WebGL - Get started creating content with WebGL without any frameworks.
-
Learn HTML5 Graphics and Animation - Introduction to the canvas 2D drawing API.
-
Interactive 3D Graphics - Udacity course that teach you the principles of 3D computer graphics.
-
Interactive Computer Graphics - Computer graphics course from Coursera.
-
Kadenze Creative Coding - Selection of Kadenze courses covering p5.js, TensorFlow, Max/Jitter, and ChucK.
-
Creative Programming for Digital Media & Mobile Apps - Coursera course on creative coding with processing.
-
Imaginary Institute - Learn how to create gorgeous interactive graphics.
-
Future Learn: Creative Coding - Use computer programming as a creative discipline to generate sounds, images, animations and more.
-
Intro to JS: Drawing & Animation - Use JavaScript and the ProcessingJS library to create drawings and animations.
-
Advanced JS: Natural Simulations - Combine JS, ProcessingJS, and mathematical concepts to simulate nature in your programs
-
Interactive Data Visualization with Processing - Learn how to read, map, and illustrate data with Processing.
-
Programming Data Visualizations: A Coding Toolkit for Processing - Join information designer Nicholas Felton in the world of Processing.
-
Introduction to Data Visualization - Join Nicholas Felton for a smart, comprehensive, and inspiring intro to data visualization.
-
Programming Graphics I, 2, 3 - Learn generative art and Processing with art with Joshua Davis.
-
Creative Coding with Canvas & WebGL - Workshop by Matt DesLauriers. that teaches you about generative art, interactive animations, 3D graphics, and shaders.
-
Advanced Creative Coding with WebGL & Shaders - Workshop by Matt DesLauriers that go deeper into graphics programming, math and shaders.
-
Three.js Journey - This course by Bruno Simon will teach you the secrets to create the coolest WebGL websites with Three.js whether your are a beginner or an advanced developer.
-
3D Computer Graphics Programming - Learn all the theory and the math behind 3D graphics while creating a software renderer from scratch using the C programming language
Frameworks • Libraries • Ecosystems
-
Processing [Cross-platform] - Computer programming language and IDE for visual arts.
-
py5 [Cross-platform] - A library that intergrates Processing into the Python 3 ecossystem.
-
Cinder [Cross-platform] - Open source library for professional-quality creative coding in C++.
-
openFrameworks [Cross-platform] - Open source C++ toolkit for creative coding.
-
C4 [iOS] - Open-source creative coding framework for iOS.
-
Unity [Mac, Win] - Game engine, but useful for creative coding and installations.
-
Godot [Cross-platform] - Open source game engine, that can also be used for all sorts of things.
-
PlayCanvas [Cross-platform] - Open source, realtime collaborative WebGL engine.
-
hg_sdf [Cross-platform] - GLSL library for building signed distance functions.
-
nannou
[Cross-platform] - Open-source creative coding framework for the Rust language.
-
thi.ng
[Cross-platform] - Open source collection of computational design tools for JavaScript, TypeScript, Clojure and ClojureScript languages.
-
PixelKit [iOS, Mac] - Open source, live graphics, Swift framework, powered by Metal.
-
OPENRNDR [Cross-platform] - Open source library for creative coding written in Kotlin.
-
Phaser [Cross-platform] - HTML5 framework for building games, uses both a Canvas and WebGL renderer.
-
Canvas-sketch [Cross-platform] - HTML5 framework for making generative artwork in JavaScript and the browser.
-
AsyncGraphics [iOS, macOS] - Open source, live graphics, async / await, Swift package, powered by Metal.
-
Lygia [Cross-platform] - Granular and multi-language (GLSL, HLSL, WGSL, MSL and CUDA) shader library designed for performance and flexibility.
-
Fragment.tools [Cross-platform] - A web development environment for creative coding.
Visual Programming Languages
-
vvvv [Win] - Hybrid visual/textual live-programming environment for easy prototyping and development.
-
NodeBox [Mac, Win] - Cross-platform, node-based GUI for efficient data visualizations and generative design.
-
TouchDesigner [Mac, Win] - Visual development platform to create realtime projects.
-
Quartz Composer [Mac] - Development tool for processing and rendering graphical data.
-
Vuo [Mac] - Live interactive-media programming environment.
-
Max [Mac, Win] - Visual programming language for media.
-
Pure Data [Cross-platform] - Open source visual programming language for multimedia.
-
ossia score [Cross-platform] - Interactive, intermedia audio-visual sequencer.
-
tooll [Win] - Open source tool for creating interactive 3d content and animations.
-
XOD [Cross-platform] - Open source visual programming language and environment for microcontroller-based projects.
-
Isadora [Cross-platform] - Scene based media control software with integrated projection mapper.
-
cables [Cross-platform/Web] - Your model kit for creating beautiful interactive content. Currently in private beta, invites can be requested.
-
eternal [Web] - Programs as graphs and graphs as compositional tools for creation
-
Notch Builder [Win] - Node-based authoring tool with a strong focus on real-time graphics. Currently in beta.
-
JOY.JS - Realtime visual coding tool, easy to understand and aimed at beginners.
-
Circles [iPhone, iPad, Mac] - Live graphics node editor, powered by AsyncGraphics.
-
TIC-80 - Make pixel art style games and art on a 240*136 pixel screen.
Sound Programming Languages
-
SuperCollider [Multi-platform] - Platform for audio synthesis and algorithmic composition.
-
ChucK - Strongly-timed, concurrent, and on-the-fly music programming language.
-
TidalCycles - Domain specific language for live coding of pattern.
-
Sonic Pi - The live coding music synth for everyone.
-
Csound - A sound and music computing system.
-
Orca - Live coding environment to quickly create procedural sequencers.
-
handel - A small procedural programming language for writing songs in browser.
-
Overtone - An open source audio environment designed to explore new musical ideas from synthesis and instrument building to live-coding.
-
Melrōse - A MIDI producing environment for creating (live) music.
-
Glicol - Graph-oriented live coding language and music/audio DSP library written in Rust.
Web Programming • Libraries
-
three.js - JavaScript 3D library.
-
regl - Functional WebGL.
-
Stackgl - Open software ecosystem for WebGL, built on top of browserify and npm.
-
Paper.js - The swiss army knife of vector graphics scripting.
-
Pixi.js - HTML 5 2D rendering engine that uses webGL with canvas fallback.
-
p5.js - JavaScript library that starts with the original goal of Processing.
-
Pts.js - JavaScript library for visualization and creative-coding.
-
Fabric.js - Javascript canvas library, SVG-to-canvas parser.
-
Maker.js - Parametric line drawing for SVG, CNC & laser cutters.
-
OpenJSCAD - Programmatic 3D modeling in JavaScript.
-
Sketch.js - Minimal JavaScript creative coding framework.
-
Two.js - Two-dimensional drawing api geared towards modern web browsers.
-
ClayGL - WebGL graphic library for building scalable Web3D applications.
-
Proton - A lightweight and powerful javascript particle engine.
-
lightgl.js - A lightweight WebGL library.
-
picogl.js - A minimal WebGL 2 rendering library.
-
Alfrid - A WebGL tool set.
-
Babylon.js - complete JavaScript framework for building 3D games with HTML 5 and WebGL.
-
twigl - A Tiny WebGL helper Library.
-
luma.gl - WebGL2 Components for Data Visualization.
-
css-doodle - A web component for drawing patterns with CSS.
-
OGL.js - JavaScript 3D library (WebGL).
-
Zdog - A pseudo-3D engine for canvas & SVG.
-
Oimo.js - Lightweight 3d physics engine for javascript
-
Ammo.js - Direct port of the Bullet physics engine to JavaScript using Emscripten.
-
Theatre.js - Motion design library with visual tools
-
GraphicsJS - A lightweight open-source JavaScript library for graphics and animations (SVG/VML).
Projection Mapping • VJing
-
MadMapper [Mac] - Video mapping projections and Light mapping.
-
VDMX [Mac] - Realtime multimedia performance application.
-
Modul8 [Mac] - Real time video mixing and compositing.
-
Resolume [Mac, Win] - Mixing of digital video and effects in a realtime.
-
CoGe VJ [Mac] - VJ software designed for realtime HD video mixing and compositing with a modular user interface.
-
VirtualMapper - Realtime preview tool for projection mapping.
-
Millumin [Mac] - A software to create and perform interactive audiovisual shows.
-
Smode [Win] - A real-time 2D/3D creation, compositing and video-mapping engine.
-
Veejay [Linux] - A live performance tool featuring simple non-linear editing and mixing from multiple sources (files, devices, streams…)
Online
-
Shadertoy - Build and share shaders with the world and get inspired.
-
Shader Park - A JavaScript library for creating interactive procedural 2D and 3D shaders.
-
GLSL Sandbox - Online shader editor and gallery.
-
Shdr Editor - Online shader editor.
-
CodePen - Show case of advanced techniques with editable source code.
-
Shadershop - Interface for programming GPU shaders.
-
Vertexshaderart - Online shader editor and gallery.
-
Cyos - Online shader editor.
-
GlslEditor - Simple WebGL Fragment Shader Editor.
-
OpenProcessing - Create and experiment with algorithmic design, Processing and P5.js.
-
P5.js Editor - Online web editor for P5.js.
-
LiveCodeLab - Run-as-you-type tool for VJs, musicians, teachers, students, kids.
-
Turtletoy - Minimalistic API and online showcase for generative code. (Javascript)
-
ShaderGif - Open source home for art made with code (WebGL1/2, JavaScript Canvas & P5.js).
-
P5LIVE - p5.js live-coding environment.
-
NEORT - Digital art platform for creative coders (Fragment Shader, Javascript Canvas).
-
Shelly - Learn programming by issuing instructions to a turtle.
-
tixy.land - The most minimalist creative coding environment is alive.
-
BBC Micro bot - Run your tweet on an 8-bit computer emulator.
-
Hydra - Live code-able video synth and coding environment.
Hardware
-
Arduino - Open source microcontroller kits for building digital devices and interactive objects.
-
Raspberry Pi - Small single-board computers.
-
Puck.js - Open source JavaScript microcontroller you can program wirelessly.
-
BeagleBoard - Low-power open source single-board computers.
-
Makey Makey - Turn everyday objects into touchpads and combine them with the internet.
-
Leap Motion - Sensor device that supports hand and finger motions as input.
-
AxiDraw - Simple, modern, and precise pen plotter.
-
Phidgets - Sensors, input devices and controllers for computers.
-
Teensy - USB-based microcontroller development system.
-
Lightform - AR projection mapping with built-in depth sensor.
Other
-
Structure Synth [Cross-platform] - Application for generating 3D structures by specifying a design grammar.
-
F3 [Mac] - Powerful 3D design app that enables you to live code 3D form.
-
Fragment [Mac]- App to live code GLSL graphics.
-
ShaderTool [Win] - Modern shader IDE for programmers and FX artists.
-
Syphon [Mac] - Allows applications to share frames with one another in realtime.
-
KodeLife - Real-time GPU shader editor, live-code performance tool and graphics prototyping sketchpad.
-
ISF - GLSL shaders for use in interactive applications.
-
glslViewer - Live-coding console tool that renders GLSL Shaders.
-
shoebot [Cross-platform] - Shoebot is a creative coding environment designed for making vector graphics and animations with Python.
-
DrawBot [Mac] - Education oriented 2d graphics programming environment based on Python.
-
Klak - A collection of scripts for creative coding with Unity.
-
basil.js - Scripting (JS) in InDesign for designers and artists in the spirit of Processing.
-
Konstrukt [Cross-platform] - A commandline tool to generate different scaleable patterns as SVGs.
Learning Resources
Videos
Talks
Articles • Tutorials
Shaders • OpenGL • WebGL
-
Introduction to shaders - Part 1 of an introduction to shaders using threejs.
-
Three.js 101 - Introduction to three.js from a creative coder perspective.
-
lwjgl: Shaders - Shader tutorial in the context of lwjgl-basics.
-
Shaders: A primer - A primer on shaders.
-
Shaders: Second stage - The second part to the previous.
-
WebGL Lessons — Fragment Shaders - A brief introduction to fragment shaders.
-
WebGL Lessons — ThreeJS Shaders - Using custom vertex and fragment shaders in ThreeJS.
-
ThreeJS post-proces example - example of post-processing effects in ThreeJS.
-
Ray Marching and Signed Distance Functions - Introduction to ray tracing.
-
Introduction to Ray Tracing - A simple method for creating 3D images.
-
GLSL lighting walkthrough - Phong shading tutorial with glslify.
-
Three glslify example - Example on how to use three.js with glslify.
-
WebGL Beyond Dom - Greg Tatum explain the basic of WebGL using Regl.
-
FBO particles - Article about FBO/GPGPU particles by @nicoptere.
-
Ray marching (with THREE.js) - Article about ray marching with three.js by @nicoptere.
-
Custom shaders with Three.JS - Introduction to custom shaders, uniforms, textures and lighting in three.js.
-
An intro to modern OpenGL - First part of an introduction to modern OpenGL.
-
Modern OpenGL Series - Good introduction to some of the OpenGL terms.
-
Smooth minimum - Article about the smooth based primitive union.
-
Modeling with distance functions - Collection of distance functions in one centralized place.
-
Volumetric rendering - Explains how to create complex 3D shapes inside volumetric shaders.
-
Real-time Rendering - Book, blog and collection of resources regarding real-time rendering.
-
OpenGL 4 Shaders - Short and sweet introduction to OpenGL shaders by Anton Gerdelan.
-
On ray casting, ray tracing, ray marching and the like - The title says it all. Introduction by Adok.
-
Writing a small software renderer - Really good introduction to how basic software rendering works.
-
WebGL Tutorials - Website with a really good collection of WebGL tutorials.
-
Generating Geometry: 1, 2, 3 - Beginner introduction on how to create geometry object.
-
Into Vertex Shaders - Series of tutorials about WebGL, Three.js, and Three.bas.
-
The Spaces of WebGL - Brief overview over the different coordinate systems through out the 3D graphics pipeline.
-
WebGL Workshop - Short and sweet online introduction to WebGL.
-
THREE.js & instanced geometry - Fluffy predator with three.js and instanced geometry.
-
Particle Effects via Billboards - How to create a particle effects with billboarding and WebGL.
-
Beautifully Animate Points with WebGL and regl - How to create GPGPU particles with regl.
-
WebGL Tutorial: Directional Shadow Mapping without extensions - Introduction to the concepts behind real time directional light shadow mapping.
-
WebGL Quest - A tutorial and a list of useful resources to use WebGL raymarching and distance functions easily.
-
Exploring bump mapping with WebGL - Introduction to different bump mapping techniques.
-
OpenGL/GLSL Shader Programing - Deck on OpenGL/GLSL shader programing.
-
Particles in a Simplex Noise Flow Field - Perlin noise flow field tutorial.
-
Flow Fields, Part 1 - Introduction to flow fields also known as vector fields.
-
Flow Fields, Part 2 - Introduction to flow fields also known as vector fields.
-
Graphics for Games - Introduction to 3D graphics programming including shaders, math post-processing etc. from Newcastle University.
-
Three.js Basics - Introduction to Three.js by Eric Haines.
-
An Interactive Introduction to WebGL and three.js - Slides from the SIGGRAPH 2017 WebGL workshop.
-
How to Start Learning Computer Graphics Programming - Advice and thoughts on how to get started by Eric Arnebäck.
-
What Every Coder Should Know About Gamma - Deep dive into the importance of gamma.
Canvas
Hardware
Other
Interactive
Quick References • Cheatsheets
-
Shaderific GLSL - OpenGL ES shading language reference.
-
The Book of Shaders Glossary - Shader glossary by theme.
-
gltut glossary pages: 1, 2, 3, 4, 5, 6, 7, 8 - OpenGL 3D programming glossary.
-
Canvas Cheatsheet - Quick and visual canvas cheatsheet.
-
WebGL Cheatsheet - WebGL 1.0 API reference card.
-
Glossary of Computer Graphics - Glossary of terms relating computer graphics.
-
GLSL Reference Guide - OpenGL Shading Language quick reference guide.
-
3D Maths Cheat Sheet - Math cheatsheet by Anton Gerdelan, from his OpenGL book.
-
docs.GL - Improvement of the official OpenGL documentation.
-
OpenGL Shading Language - Khronos Group GLSL wiki.
-
OpenGL 4.3 Reference Card - PDF Reference Card for the OpenGL 4.3 API.
-
Easings - Interactive easing functions cheatsheet.
-
PixelSpirit - GLSL library on the back of tarot cards, for learning and reference.
-
Procedural Patterns And Noises - Collection of procedural patterns and procedural noises.
-
Visual Noises - Visualize noise algorithms in 1D and 2D.
-
Trigonoparty - Simple trigonometry visualisation.
-
Morphogenesis - Exploration of how shapes, forms, and patterns emerge in nature.
Communities
Subreddits
Slack
Other
Math
Machine learning • Computer Vision • Ai
-
ml4a - Machine learning for artists.
-
Keras.js - Run Keras models (tensorflow backend) in the browser, with GPU support.
-
Tesseract.js - Pure Javascript Multilingual OCR.
-
Google ML - Cloud machine learning by Google.
-
TensorFlow - Open source software library for machine intelligence.
-
ConvNetJS - Deep Learning in your browser.
-
Wekinator - Allows anyone to use machine learning.
-
Machine Learning - Coding Train repo with links to machine learning resources.
-
CreativeAi.net - Space to share creative Ai projects.
-
AI Playbook - Ai microsite intended to help newcomers get started.
-
Teachable Machine - Explore how machine learning works, live in the browser.
-
TensorFlow.js - JavaScript library for training and deploying ML models in the browser and on Node.js.
-
Hello TensorFlow - Fully commented TensorFlow.js demo.
-
ml5.js - Friendly machine learning for the web.
-
Model Zoo - Discover open source deep learning code and pretrained models.
-
Runway - Toolkit that adds artificial intelligence capabilities to design and creative platforms.
-
Lobe - Build, train, and ship custom deep learning models using a simple visual interface.
-
ModelDepot - Platform for discovering, sharing, and discussing easy to use and pre-trained machine learning models.
Inspiration
-
OpenProcessing - Algorithmic Designs Created with Processing, p5js and processingjs.
-
Dwitter - Social network for short JavaScript demos.
-
Chrome Experiments - Showcase of web experiments written by the creative coding community.
-
Codedoodl.es - Showcase of curated creative coding sketches.
-
For your Processing - Projects and tutorials about Processing.
-
Art From Code - Code sketches by Keith Peters.
-
Generator.x - Flickr group about generative strategies in art & design.
-
Generative Art - Flickr group about generative art.
-
Inspiring Online - Open source micro blog about inspiring and creative works published online.
-
People You Should Follow on CodePen - List of interesting people worth following.
-
Raven Kwok - Tumblr by visual artist Raven Kwok.
-
P5Art - Really good collection of experiments in Processing.
-
Echophon - Tumblr with visual inspiration.
-
Bees & Bombs - Tumblr with gifs by Dave.
-
DevArt - Celebration of art made with code by artists that push the possibilities of creativity.
-
Folds2d - Tumblr with curves, surfaces, scalar and vector fields.
Events
-
OFFF Festival - Digital design festival (Online Flash Film Festival).
-
Gray Area Festival - Creative coding, art and technology festival.
-
Signal Festival - Showcase of light art and emerging technologies in Prague, the Czech Republic.
-
Eyeo Festival - Bring together creative coders, data designers and creators working at the intersection of data, art and technology.
-
Mutek - Organization dedicated to digital creativity in sound, music, and audio-visual art.
-
Node - An open platform for the exchange on culture, arts and technology.
-
Digital Design Days - 3 day event offering conferences, workshops, digital showcases & installations.
-
CODAME ART+TECH - Projects and nonprofit events, to inspire through experience.
-
NextArt Night - Inspiring people through creative uses of tech.
Museums • Galleries
Schools • Workshops
Blogs • Websites
-
CreativeApplications.Net [CAN] - Famous digital art blog.
-
iquilezles.org - Home of Íñigo Quílez, specialised in GLSL and math snippets.
-
bit-101.com - Blog by Keith Peters, specialised in creative coding.
-
ibreakdownshaders - Explore the math behind shaders.
-
adriancourrèges.com - Blog of software engineer Adrian Courrèges. Articles about game graphics studies etc.
-
clicktorelease.com - Home of Jaume Sanchez Elias, with demos, talks, articles on WebGL and WebVR.
-
syntopia - Blog about generative art and systems, by Mikael Hvidtfeldt Christensen.
-
madebyevan.com - WebGL experiments and articles by Evan Wallace.
-
songho.ca - Home of Song Ho Ahn, with a good collection of tutorials on OpenGL and math.
-
simonschreibt.de - Game art tricks, design tricks by Simon schreibt.
-
sighack.com - Blog about generative art algorithms and techniques, by Manohar Vanga.
-
jsdo.it-archives - Compilation of WebGL experiments including comparisons on WebGL frameworks and physics engine (oimo.js, cannon.js, ammo.js)
-
WebAudio Weekly - Newsletter to know everything about the WebAudio API
License
To the extent possible under law, Terkel Gjervig has waived all copyright and related or neighboring rights to this work.