# Awesome Creative Coding [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome) > A curated list of **beginner-friendly** tools, resources and shiny things to get you started with creative coding. *Work in progess, needs better organization* ## Table of Contents [Coming] ## Books - [Generative Art: A Practical Guide](http://zenbullets.com/book.php) - A practical guide using Processing. - [Generative Design](http://www.generative-gestaltung.de/) - Visualize, Program, and Create with Processing. - [The Nature of Code](http://natureofcode.com/) - Simulating natrual systems with Processing. - [The Book of Shaders](https://thebookofshaders.com/) - Step-by-step guide through the abstract and complex universe of fragment shaders. - [Programming Design Systems](https://programmingdesignsystems.com/) - A practical introduction to the new foundations of graphic design. - [Pixel Shaders](http://pixelshaders.com/) - An Interactive Introduction to Graphics Programming. - [Learning Modern 3D Graphics Programming](https://paroj.github.io/gltut/) - A series of tutorials on using OpenGL to do graphical rendering. - [Scratchapixel 2.0](http://www.scratchapixel.com/) - Learn Computer Graphics From Scratch. - [Programming Interactivity](http://shop.oreilly.com/product/9780596154158.do) - A Designer's Guide to Processing, Arduino, and openFrameworks. - [Algorithms for Visual Design Using the Processing Language](https://www.amazon.com/gp/0470375485/) - Experiment with design problems to create 3D animations, GUIs, and more. - [Data-driven Graphic Design](https://www.amazon.com/dp/1472578309/) - Creative Coding for Visual Communication. ## Subreddits - [r/creativecoding](https://www.reddit.com/r/creativecoding/) - Sharing and discussing the use of computer programming as a creative discipline. - [r/rraytraycing](https://www.reddit.com/r/raytracing/]) - Subreddit on raytracing. - [r/opengl](https://www.reddit.com/r/opengl/]) - News and discussion about OpenGL on all platforms. - [r/graphicsprogramming](https://www.reddit.com/r/GraphicsProgramming/]) - Subreddit on graphics programming. - [r/processing](https://www.reddit.com/r/processing/) - Subreddit on Processing. - [r/shaders](https://www.reddit.com/r/shaders/) - Subreddit on shaders. - [r/proceduralgeneration](https://www.reddit.com/r/proceduralgeneration/) - Subreddit on procedural generation. ## Communities - [realtimevfx.com](https://realtimevfx.com/]) - Real Time VFX Community. - [creative-dev](https://creative-dev.herokuapp.com/) - Creative Developement Slack. - [The Creative Coding Podcast](http://creativecodingpodcast.com/) - Podcast where Iain and Seb discuss the ins and outs of programming for creative applications. ## Ecosystems / Frameworks ### Desktop - [Processing]()- Computer programming language and IDE for visual arts. - [Cinder](https://libcinder.org/) - Open source library for professional-quality creative coding in C++. - [openFrameworks](http://openframeworks.cc/) - Open source C++ toolkit for creative coding. - [vvvv](https://vvvv.org/) - Hybrid visual/textual live-programming environment for easy prototyping and development. - [three.js](https://github.com/mrdoob/three.js/) - JavaScript 3D library. ### Web - [regl](https://github.com/regl-project/regl) - Functional WebGL. - [Stackgl](http://stack.gl/) - Open software ecosystem for WebGL, built on top of browserify and npm. - [Paper.js](http://paperjs.org/) - The swiss army knife of vector graphics scripting. - [Pixi.js]() - HTML 5 2D rendering engine that uses webGL with canvas fallback. - [p5.js](https://p5js.org/) - JavaScript library that starts with the original goal of Processing. - [Fabric.js](http://fabricjs.com/) - Javascript canvas library, SVG-to-canvas parser. - [Sketch.js](http://soulwire.github.io/sketch.js/) - Minimal JavaScript creative coding framework. - [Two.js](https://two.js.org/) - Two-dimensional drawing api geared towards modern web browsers. ## Learning material - [Coding Rainbow](https://www.youtube.com/user/shiffman) - Daniel Shiffman makes videos about creative coding. - [Shaders](https://github.com/mattdesl/lwjgl-basics/wiki/Shaders) - Shader tutorial in the context of lwjgl-basics. - [Create 3D Graphics in JS Using WebGL](https://egghead.io/courses/create-3d-graphics-in-javascript-using-webgl) - Get started creating content with WebGL without any frameworks. - [WebGL 2 Fundamentals](http://webgl2fundamentals.org/) - WebGL2 from the ground up. No magic. - [Shaders: A primer](https://notes.underscorediscovery.com/shaders-a-primer/) - A primer on shaders. - [Shaders: Second stage](https://notes.underscorediscovery.com/shaders-second-stage/) - The second part to the previous. - [WebGL Lessons — Fragment Shaders](https://github.com/Jam3/jam3-lesson-webgl-shader-intro) - A brief introduction to fragment shaders. - [WebGL Lessons — ThreeJS Shaders](https://github.com/Jam3/jam3-lesson-webgl-shader-threejs) - Using custom vertex and fragment shaders in ThreeJS. - [Ray Marching and Signed Distance Functions](http://www.scratchapixel.com/lessons/3d-basic-rendering/introduction-to-ray-tracing) - Introduction to ray tracing. - [Introduction to Ray Tracing](http://jamie-wong.com/2016/07/15/ray-marching-signed-distance-functions/) - A simple method for creating 3D images. - [GLSL lighting walkthrough](https://github.com/stackgl/glsl-lighting-walkthrough) - Phong shading tutorial with glslify. ## Interactive tutorials - [Shader-school](https://github.com/stackgl/shader-school) - A workshopper for GLSL shaders and graphics programming. - [Webgl-workshop](https://github.com/stackgl/webgl-workshop) - The sequel to shader-school: Learn the WebGL API. - [Fragment-oundry](http://hughsk.io/fragment-foundry) - Interactive fragment shader tutorial. - [SDF Tutorial 1: box & balloon](https://www.shadertoy.com/view/Xl2XWt) - Shadertoy tutorial on raytracing. - [HOWTO: Ray Marching](https://www.shadertoy.com/view/XllGW4) - Shadertoy tutorial on Ray Marching. - [Raymarch Tutorial2](https://www.shadertoy.com/view/XlBGDW) - Shadertoy raymarch tutorial. - [GLSL 2D Tutorials](https://www.shadertoy.com/view/Md23DV) - Shadertoy GLSL 2D Tutorial. ## Articles - [Shepherding random numbers](http://inconvergent.net/shepherding-random-numbers/) - Tiny guide to shepherding random numbers. - [FBO particles](http://barradeau.com/blog/?p=621) - Article about FBO/GPGPU particles by @nicoptere. - [Ray marching (with THREE.js)](http://barradeau.com/blog/?p=575) - Article about ray marching with three.js by @nicoptere. ## Math - [Math as code](https://github.com/Jam3/math-as-code) - A cheat-sheet for mathematical notation in code form. - [Coding Math](https://www.youtube.com/user/codingmath) - Video tutorials designed to teach you the math you need to understand as a programmer. – [Math snippets](https://github.com/terkelg/math) - Math snippets with graphic programming in mind. - [Formul Animations](https://www.youtube.com/watch?v=0ifChJ0nJfM) - The principles of painting with maths. ## Inspiration - [Shadertoy](https://www.shadertoy.com/) - Build and share shaders with the world and get inspired. - [GLSLbin](http://glslb.in/) - Fragment shader sandbox with support for glslify. - [GLSL Sandbox](http://glslsandbox.com/) - Online shader editor and gallery. - [CodePen](http://codepen.io/) - Show case of advanced techniques with editable source code. - [OpenProcessing](https://www.openprocessing.org/) - Algorithmic Designs Created with Processing, p5js and processingjs. - [Dwitter](https://www.dwitter.net/) - Social network for short JavaScript demos. - [Chrome Experiments](https://www.chromeexperiments.com/) - Showcase of web experiments written by the creative coding community. ## Machine Learning / A.I. - [ml4a](http://ml4a.github.io/) - Machine learning for artists. - [Keras.js](https://transcranial.github.io/keras-js/) - Run Keras models (tensorflow backend) in the browser, with GPU support. - [Tesseract.js](http://tesseract.projectnaptha.com/) - Pure Javascript Multilingual OCR. - [Google ML](https://cloud.google.com/ml/) - Cloud machine learning by Google. - [TensorFlow](https://www.tensorflow.org/) - Open source software library for machine intelligence. - [ConvNetJS](http://cs.stanford.edu/people/karpathy/convnetjs/started.html) - Deep Learning in your browser. - [Wekinator](http://www.wekinator.org/) - Allows anyone to use machine learning. ## Shader References - [The Book of Shaders Glossary](https://thebookofshaders.com/glossary/) - Shader glossary by theme. - [GLSL](http://www.shaderific.com/glsl/) - OpenGL ES shading language reference. - [gltut](https://paroj.github.io/gltut/Basics/Intro%20Glossary.html) - 3D programming glossary. ## Tools - [F3](http://www.syedrezaali.com/f3-mac-app/) - Powerful 3D design app that enables you to live code 3D form. - [Fragment](http://www.syedrezaali.com/store/fragment-osx-app) - Mac app to live code GLSL graphics. - [Chrome Shader Editor](https://chrome.google.com/webstore/detail/shader-editor/ggeaidddejpbakgafapihjbgdlbbbpob?hl=en) - Live editing shaders in the browser. - [ShaderTool](http://store.steampowered.com/app/314720/) - Modern shader IDE for programmers and FX artists. ## Presentations - [There is also canvas](https://brunoimbrizi.github.io/webexpo-2016/dist/) - Presentation by Bruno Imbrizi from WebExpo 2016. - [Intro to WebGL](http://davidscottlyons.com/threejs/presentations/frontporch14/) - Intro to WebGL with three.js. ## Websites / Blogs - [abandonedart.org](http://abandonedart.org/) - Generative art ideas by Matt Pearson. - [iquilezles.org](http://www.iquilezles.org) - Home of Íñigo Quílez. ## Related: - [Awesome canvas](https://github.com/raphamorim/awesome-canvas) - Awesome list for Canvas. - [Awesome audio visualization](https://github.com/willianjusten/awesome-audio-visualization) - A curated list about Audio Visualization. ## To be sorted - http://www.iquilezles.org/live/index.htm - http://www.iquilezles.org/www/index.htm ## License [![CC0](http://mirrors.creativecommons.org/presskit/buttons/88x31/svg/cc-zero.svg)](https://creativecommons.org/publicdomain/zero/1.0/) To the extent possible under law, [Terkel Gjervig](http://terkel.com) has waived all copyright and related or neighboring rights to this work.