p5.js is a client-side JS platform that empowers artists, designers, students, and anyone to learn to code and express themselves creatively on the web. It is based on the core principles of Processing. http://twitter.com/p5xjs —

Overview

npm version

p5.js

Welcome! 👋 👋🏿👋🏽👋🏻👋🏾👋🏼

p5.js is a JavaScript library for creative coding, with a focus on making coding accessible and inclusive for artists, designers, educators, beginners, and anyone else! p5.js is free and open-source because we believe software, and the tools to learn it, should be accessible to everyone.

Using the metaphor of a sketch, p5.js has a full set of drawing functionality using the HTML5 canvas element. You’re not limited to the drawing canvas though. You can think of your whole browser page as your sketch, including HTML5 objects for text, input, video, webcam, and sound.

p5.js draws inspiration, wisdom, and guidance from its precursor Processing. However, it is a new interpretation, not an emulation or port. We don't aim to match Processing's set of functionality exactly, allowing ourselves space to deviate and grow in the context of the web.

The p5js.org website contains an extensive overview of the project, community, documentation, and examples. If you already know the basics of JavaScript or Processing, the p5.js overview wiki page is a good place to start.

Community

We are a community of, and in solidarity with, people from every gender identity and expression, sexual orientation, race, ethnicity, language, neuro-type, size, ability, class, religion, culture, subculture, political opinion, age, skill level, occupation, and background. We acknowledge that not everyone has the time, financial means, or capacity to actively participate, but we recognize and encourage involvement of all kinds. We facilitate and foster access and empowerment. We are all learners.

p5.js is a collaborative project created by many individuals, mostly volunteers, and you are invited to help. All types of involvement are welcome. See the community section to get started! You can also check out the contributor docs for more in-depth details about contributing to different areas of the project, including code, bug fixes, documentation, discussion, and more.

Learn more about our community and read our community statement and code of conduct. You can directly support our work with p5.js by donating to the Processing Foundation.

Get Started

Make your first sketch in the p5.js Editor! Learn more about sketching with p5.js on the Get Started and find everything you can do in the Reference.

To get the complete p5.js library on your own computer, you can download it here. If you are interested in the most recent, less stable version, or even simply in (new!) certain components of p5.js, you can clone this repository and run grunt from the command line to generate the library from source. See the contributor docs for more information about our build process.

Issues

If you have found a bug in the p5.js library, you can file it here under the “issues” tab. You can also request new features here. A set of templates for reporting issues and requesting features are provided to assist you (and us!). p5.js is maintained mostly by volunteers, so we thank you for your patience as we try to address your issues as soon as we can. Please post in the correct repository if you can:

Learning

Check out p5js.org for lots more! Here are some quick-links to get started learning p5.js.

  • Get Started: Create and run your first sketch!
  • p5.js overview: An overview of the main features and functionality of p5.js
  • Reference: The functionality supported by p5.js
  • Learn: Tutorials and short, prototypical examples exploring the basics of p5.js
  • Forum: Ask and answers questions about how to make things with p5.js here
  • Libraries: Extend p5 functionality to interact with HTML, manipulate sound, and more!
  • The Coding Train p5.js Tutorials: A huge trove of tutorials created by Dan Shiffman and friends

Stewards

Stewards are contributors that are particularly involved, familiar, or responsive to certain areas of the project. Their role is to help provide context and guidance to others working on p5.js. If you have a question about contributing to a particular area, you can tag the listed steward in an issue or pull request. They may also weigh in on feature requests and guide the overall direction of their area, with the input of the community. You can read more about the organization of the project at contributor_docs/organization.md.

Anyone interested can volunteer to be a steward! There are no specific requirements for expertise, just an interest in actively learning and participating. If you’re familiar with one or more parts of this project, open an issue to volunteer as a steward!

Area Steward(s)
Accessibility (Web Accessibility) outofambit
Color outofambit
Core/Environment/Rendering outofambit
limzykenneth
Data
DOM outofambit
Events outofambit
limzykenneth
Image stalgiag
IO limzykenneth
Math limzykenneth
Typography dhowe
Utilities
WebGL stalgiag
Build Process/Unit Testing outofambit
Localization Tools outofambit
Friendly Errors outofambit
Website limzykenneth

Contributors

We recognize all types of contributions. This project follows the all-contributors specification. Instructions to add yourself or add contribution emojis to your name are here. You can also post an issue or comment with the text: @all-contributors please add @YOUR-USERNAME for THING(S) and our nice bot will add you.


Lauren McCarthy


Jason Sigal


Karen


Evelyn Eastmond


Daniel Shiffman


Casey Reas


Ben Fry


Kenneth Lim

🐛 💻 📖

kate hollenbach


Stalgia Grigg


Jerel Johnson


Saksham Saxena


saber khan


Daniel Howe


Kevin Siwoff


Atul Varma


Jess Klein


uno seis tres


susan evans


Saskia Freeke


Phoenix Perry


jesse cahn-thompson


Lee T


Chelly Jin


L05


DIYgirls


lam802


Maya Man


Tega Brain


luisaph


AlM Chng


aarón montoya-moraga


Cassie Tarakajian


Niklas Peters

📖

Mathura MG


Yining Shi


Jen Kagan


Jiashan Wu


Marc Abbey


K.Adam White


Joe Cridge


Michael Hadley


Todd H. Page


Jared Sprague

💻 📖 💡 💵 ⚠️ 🐛

evelyn masso


Blaize Kaye


Sanchit Kapoor


Oliver Wright


Matthew Kaney


Spongman


Claire K-V


R. Luke DuBois


Kevin Barabash


codeanticode


Bob Holt


Sarah Groff Hennigh-Palermo


Jordan Shaw


brightredchilli


Derek J. Kinsman


harkirat singh


GoToLoop


Max Goldstein


XY Feng


Sparsh Paliwal


Austin Cawley-Edwards

📖 💡

taseenb


Yannick Assogba


John Pasquarello

💻

Kevin Workman


gauini


David Wicks


Guillermo Montecinos


Shawn Van Every


Sinan Ascioglu


Abe Pazos


Char


Gene Kogan


Jason Mandel


Mark Russo


Jonathan Dahan


Darius Morawiec


Darby Rathbone


hrishit


Chiun Hau You


Francesco Bigiarini


Fabian Morón Zirfas


Mike Anderson


Mikael Lindqvist


Chris


Max Segal


Tyler Stefanich


Dave


Xavier Snelgrove


Gareth Battensby


Taeyoon Choi


AKASH RAJ


Kevin Ho


Harsh Agrawal


Luca Damasco


Sam Lavigne


Epic Jefferson


Caroline Record


Christine de Carteret


Chris Hallberg


David Newbury


piinthecloud


Paolo Pedercini


Jason Alderman


Jennifer Jacobs


Sepand Ansari


Val Head


Emily Chen


Ben Moren


Rune Skjoldborg Madsen


Scott Murray


Scott Garner


b2renger


Craig Pickard


mxchelle


Zach Rispoli


Liu Chang


Cristóbal Valenzuela


Miles Peyton


Golan Levin


feedzh


Shahriar Rahman Rubayet


Chiciuc Nicușor


Ken Miller


Chandler McWilliams


Jaymz Rhime


Niels Joubert


Utkarsh Tiwari


Arihant Parsoya


Brad Buchanan


Johan Karlsson


Andy Timmons


zacharystenger


Brian Boucheron


sortasleepy


Kyle McDonald


Antonio Jesús Sánchez Padial

💻

Brad Smith


Vítor Galvão


Devon Rifkin


Emily Xie


Boris Bucha


Petr Brzek


Ramin


Arsenije Savic


Luke Burgess-Yeo


Sun Lifei


naoyashiga


Jimish Fotariya


Jorge Moreno

🐛 💻 📖

Steven Green


Marcus Parsons


Nick Yahnke


Anthony Su


kroko / Reinis Adovičs


Robyn Overstreet


Ben Hinchley


Max Kolyanov


Zeno Zeng


Seth


plural


Lionel Ringenbach


Harshil Goel


Joshua Storm Becker


maxdevjs


trych


Alejandra Trejo


Prashant Gupta


Kai-han Chang


kjav


maddy


Christopher Coleman


Boaz


Yasai

📝

Jay Gupta


Nitish Bansal


Caroline Hermans

💡 📖

Faith Wuyue Yu


Aatish Bhatia

📖 🐛

Mislav Milicevic

💻 🐛

Yuting Lu

📖

Adil Rabbani

💻 🐛 💡

Pierre Krafft

🐛 💻 📖 💡 👀 ⚠️ 🔧

Zoë Ingram

📖

Aidan Nelson

🐛 💻 📖

Cameron Yick

📖

Tanvi Kumar

🐛 💻 📖 💡

Katsuya Endoh


Kevin Bradley

📖

Justin Kim

📖

Federico Grandi

💻 📖

Freddie Rawlins

💻 📖

Luc de wit

💻 🐛

Mark Nikora

💻

Louis Demange

🐛

Sanket Singh

💻 🐛 📖 💡

Oren Shoham

💻

Abhinav Sagar

💻

Jonathan Heindl

💻 💡 🤔 📖

Hirad Sab

💻 🐛 📖 💡

Vishal Singh

📖 💻

Corey Gouker

💻 📖 🐛

Lisa Mabley

📖 💡

Adam Ferriss

💻 📖 🐛 💡

Joshua Marris

📖 💻 📢

Erica Pramer

📖

Vasu Goel

💻 ⚠️

Tokini Irene Fubara

📖

Dhruv Sahnan

💻 📖

Jon Kaufman

📖

Nico Finkernagel

🚇 👀

ashu8912

💻

ffd8

💻

Sona Lee

💻

Ryan Slade

💻

Mann Shah


Juraj Onuska


ANURAG GUPTA

📖

Sagar Arora


Rajiv Ranjan Singh


Fenil Gandhi

📖 💡

Akshay Padte

💻 🐛 ⚠️

Satyam Kulkarni

📖

Shirou

💻 🐛

Sarthak Saxena

💻

Nick McIntyre

🔌 🐛

Amey Bhavsar

🐛 💡

Minjun Kim

🐛 🌍

Fisher Diede

💻

karinaxlpz

🌍

Samuel Alarco Cantos

🌍

DIVYANSHU RAJ

💻 🐛 📖

sm7515

📖

Aditya Rachman Putra

📖

shaharyarshamshi

🌍

Ayush Jain

🌍

Summer Rizzo

📖

Aierie

💻 🐛

Mateusz Swiatkowski

💻 🐛

XingZiLong

🌍

ov

🌍

Kyle James

💻

Abhi Gulati

📖

Jeremy Tuloup

📖

Luis Morales-Navarro

️️️️ ♿️

Yuki

🌍

cedarfall

📖

Isaac Durazo

🌍

İsmail Namdar

💻 ⚠️

skyperx

💻

Joseph Aronson

💻 🐛

Haider Ali Punjabi

💻

Swapnil-2001

📖

Takuma Kira

🐛 💻 ⚠️

Mohammad Hussain Nagaria

🐛

Tushar Choudhari

📖 💻

Nakul Shahdadpuri

💻

Jacques P. du Toit

💻

surajsurajsuraj

🐛

Connie Liu

💻 🎨

Zeke Sikelianos

📖

Ramon Jr. Yniguez

💻

Benoît Bouré

📖

Hitesh Kumar

💻

Sampo Rapeli

💡

Nick Müller

🔌

Keith Tan

📖

Berke Özgen

🐛

Musab Kılıç

💻 ⚠️

Nicholas Marino

📖

Greg Sadetsky

💻

Priya-Pathak

💡

Daniel Michel

💻

Nisar Hassan Naqvi

💻

Joshua Noble

📖

Liam Piesley

💻

Rishabh Taparia

💻 📖

Daniel Sarno

💡

Kunal Kumar Verma

📖 🐛 💻

Bharath Kumar R

💻

Aditya Mohan

💻

Arijit Kundu

🐛 💻 📖

Tanner Dolby

💻

sam delong

💻

Zhao Xin

💻 👀

Sivaram D

📖 💻

Pragya

💻

Jonathan-David Schröder

🤔 💻

Shubham Kumar

💻

Jean Pierre Charalambos

💻 🔧

Sai Bhushan

💻 📖

Long Phan

💻

Jean-Michaël Celerier

🐛

So Sun Park

📖

Daniel Adams

💻 📖

Aloneduckling

📖

Mohana Sundaram S

💻

TwoTicks

💻 📖 💡

Kathryn Isabelle Lawrence

💻 🤔

Joonas Jokinen

🎨

Ajaya Mati

💻

Suhas CV

📖

Sanjay Singh Rajpoot

📖

Chris P.

📖

Thanks goes to these wonderful people (emoji key)!

Comments
  • Sketch instantiation proposal

    Sketch instantiation proposal

    Hi Everyone,

    For some background, here is a document that we created during a big hands-on meeting last Friday during discussions: https://docs.google.com/document/d/1CAp4n3YtW6a6KSRosEcGf3T2ph_Id_7WlrkOXyDCShQ/edit

    Below, please review a proposal that Lauren and I put together of the API for instantiating sketches in the base cases. Let us know what you think! @bobholt @brysonian @kadamwhite, etc.

    // API
    preload(): runs once, first
    setup(): runs once, second
    draw(): loops, indefinitely
    createCanvas(w, h): creates a canvas element at the 0,0 with input size
    
    // NEXT QUESTIONS TO ANSWER
    // 
    // draw() vs. loop()?
    // What did we decide about createHTMLElement() and the other DOM calls?
    // What are the different mouse accessors?
    
    // CASE 0
    // No setup() and draw().
    // createCanvas() gets called automatically behind the scenes and creates a default
    // canvas at 0,0 with a default size and background color.
    fill(255, 0, 0);
    ellipse(10, 10, 50, 50);
    
    // CASE 1
    // Only setup().
    // setup() runs once and createCanvas() gets called automatically with defaults.
    function setup() {
      background(255, 0, 0);
      noStroke();
      ellipse(0, 0, 50, 50);
    }
    
    // CASE 2
    // Only setup() and createCanvas().
    // setup() runs once and createCanvas() returns a pointer to the canvas created
    // with the input size, at 0,0.  Holding the pointer is optional.
    function setup() {
      createCanvas(400, 400); 
      background(255, 0, 0);
      noStroke();
      ellipse(0, 0, 50, 50);
    }
    
    // CASE 3
    // Only draw().
    // createCanvas() is called automatically with defaults.
    function draw() {
      ellipse(random(0, 400), random(0, 400), 50, 50);
    }
    
    // CASE 4
    // setup() and draw() without createCanvas().
    // createCanvas() is called automatically with defaults.
    function setup() {
      background(255, 0, 0);
    }
    function draw() {
      ellipse(random(0, 400), random(0, 400), 50, 50);
    }
    
    // CASE 5
    // setup() and draw() with createCanvas().
    function setup() {
      createCanvas(400, 400);
      background(255, 255, 0);
    }
    function draw() {
      ellipse(random(0, 400), random(0, 400), 50, 50);
    }
    
    
    // CASE 6
    // setup() and draw() with createCanvas(), holding pointer
    var canvas;
    function setup() {
      canvas = createCanvas(400, 400);
      canvas.position(100, 50); // allows you to set position, id, etc
      background(255, 255, 0);
    }
    function draw() {
      ellipse(random(0, 400), random(0, 400), 50, 50);
    }
    
    opened by evhan55 82
  • Dealing with SVGs

    Dealing with SVGs

    Students working on a final that makes use of SVGs asked about SVGs and p5. I looked and don't see an issue discussing this so thought I would open one. I noticed there is some a commented out p5.Shape object. Some stream of consciousness questions:

    • Would it make sense to have acreateSVG() function for creating an SVG DOM element from a file?
    • Is drawing SVGs to an HTML canvas something that is standard practice on the web or would this never happen and it makes more sense to place SVG DOM elements on top of a canvas with absolute positioning?
    • Would it makes sense to support a few functions to build an SVG from scratch?
    • To what extent should we port functionality from PShape to p5.Shape?

    Apologies if this is covered somewhere else and I'm missing something obvious.

    Discussion Feature Request 
    opened by shiffman 60
  • Rename PVector, PImage, etc?

    Rename PVector, PImage, etc?

    @shiffman @lmccart

    I am very excited about thinking of PVector as a pseudo-plugin for p5, given that it is a completely independent object type.

    A potentially divisive question, but just wanted to throw it out there:

    I would be happier calling them Vector and Image rather than PVector and PImage, is it possible/acceptable to think about a Processing compatibility layer that knows to accept PVector etc. for people who are coming from Processing, but that is not what is taught "out of the box" with `p5'?

    PVector and PImage feel heavy and confusing (the P is capitalized but not in p5, so the link isn't very strong there for me). Vector and Image feel better to me.

    And do we want to think about PVector/Vector and PImage/Image as plugins, or no? Currently, they are not being included in a very clean way, and I think it's worth thinking about as we continue.

    opened by evhan55 48
  • add performance testing and benchmarking

    add performance testing and benchmarking

    We need some way to test performance of various p5 functions, cross-browser and cross-platform to determine when optimizations are actually that, and when they add unnecessary complexity. This is a follow up from #1512.

    Feature Request 
    opened by lmccart 41
  • proposed: use headless-Chrome instead of PhantomJS

    proposed: use headless-Chrome instead of PhantomJS

    re #2174

    i took @meiamsome's repo, rebased it onto master and tweaked a bit until it worked.

    this probably isn't ready to merge. i just wanted to get the code in here and building under travis, since there seems to have been an issue with that in the past.

    opened by Spongman 40
  • 3 suggestions for making p5js easier for newcomers

    3 suggestions for making p5js easier for newcomers

    Processing and p5js are designed to be accessible to newcomers to coding, especially artists who have never coded before.

    For this reason I make 3 suggestions for language design changes.

    They are arrived at as a result of writing (in progress) a book which aims to introduce algorithmic concepts and processing/p5js coding to complete beginners, and also first hand experience of teaching complete beginners.

    They are:

    1. circle() and square() aliases for ellipse() and rect()
    2. easier loops eg repeat 5 {} as an alternative to the java/javascript structure
    3. random integer generator, perhaps making random() for integers and randomf() for floats, leading to the conventional randomn() for gaussian noise, etc

    I have written a more detailed rationale here: http://makeyourownalgorithmicart.blogspot.co.uk/2017/10/ideas-for-making-processing-even-easier.html

    opened by makeyourownalgorithmicart 40
  •  Integration with d3

    Integration with d3

    At Eyeo, I had a great conversation with @sciutoalex, who is interested in seeing if he can construct a library that allows p5 sketches to integrate with (or instantiate) d3 sketches. In particular, we're interested in using the d3 dispatch functionality. @sarahgp, I know that you're a d3 expert, do you have any thoughts?

    Anyone else, input, requests, ideas for how this could be useful? My feeling is that this is not core functionality, but that refining this and perhaps fleshing out some of the requirements here could be useful.

    @sciutoalex, you should also check out the existing documentation on how external libraries work. I'm also happy to answer any questions that you have about how to get started, or direct you towards other people who know more than I do.

    Discussion Feature Request 
    opened by workergnome 38
  • Automatic documentation with YuiDoc (JavaDoc style)

    Automatic documentation with YuiDoc (JavaDoc style)

    One thing that could help users (and developers) is a good API documentation. With Grunt (already setup) and JsDoc we could easily get some good documentation by simply adding detailed comments before each class method and property. Comments should follow the Javadoc standard. What do you think?

    This is one of the JsDoc Grunt plugins available: https://github.com/krampstudio/grunt-jsdoc

    And these lines should be added to Gruntfile.js:

        jsdoc : {
            dist : {
                src: ['src/*.js', 'test/*.js'], 
                options: {
                    destination: 'doc'
                }
            }
        }
    

    package.json should also be updated. One line:

    "grunt-jsdoc": "~0.5.4",
    

    Run npm install once to get the new files. Then, everytime you want to create/update the docs: grunt jsdoc.

    (not tested: if you are interested let me know and I'll try it!)

    opened by taseenb 38
  • Feature request: fract()

    Feature request: fract()

    Nature of issue?

    • [ ] Found a bug
    • [ ] Existing feature enhancement
    • [x] New feature request

    Most appropriate sub-area of p5.js?

    • [ ] Color
    • [ ] Core/Environment/Rendering
    • [ ] Data
    • [ ] Events
    • [ ] Image
    • [ ] IO
    • [x] Math
    • [ ] Typography
    • [ ] Utilities
    • [ ] WebGL
    • [ ] Other (specify if possible)

    New feature details:

    I think that having a fract() function to return the fractional part of a number might be a nice addition to the math functions. I was reading through the book of shaders and it was showing how fract() is used in generating noise and I thought it would be a cool function to have as a part p5js.

    I get that if someone wanted this function they could easily write it themselves as its just returning what is passed as a paramater minus the floor of that value, but I feel like it fits in with the rest of the math functions.

    Anyway, let me know what you think about adding fract().

    Thanks!

    Feature Request Area:Math 
    opened by ScottGrogin 36
  • keyIsDown function

    keyIsDown function

    Please see this as the start of a discussion rather than something ready to integrate...

    Anyway, the idea with this is to be able to check if a key is currently pressed, in order to get a game like behaviour where it is possible to press for two keys and be able to move a sprite diagonally.

    check the example in keyboard/gamestyle.js

    Two issues that I see currently:

    • What should the name be? The best would be keyIsPressed but that is already busy. I chose keyIsDown in lack of better ideas but not 100% satisfied with it.
    • It needs some cross browser/version/os compatibility testing and possible work arounds. It currently works in the latest versions of Chrome and Firefox on my Mac but I noticed it not working in some version of Firefox on some version of Linux. So a bit of testing needed...

    Let me know what you think!

    opened by limikael 35
  • Webgl text

    Webgl text

    closes #2183

    implements text() for the webgl renderer. most of the code is in src/webgl/text.js, however some other changes were required:

    • moving most of the p5.Renderer2D.prototype.text() and textAlign() code into shared methods in p5.Renderer, this necessitated:
    • changing the textAlign and textBaseline properties so they are backed directly by variables in the renderer instead of being calculated based on canvas properties. this also simplifies the logic for those properties.
    • changes to push/pop, _applyTextProperties methods to accommodate the above.
    • changes to various p5.Font methods to make them renderer-independent.
    • optimization in p5.RendererGL.prototype.getTexture which gets called a ton.
    • add support for creating p5.Texture from an ImageData object.
    • a new private p5.Shader.prototype.updateTextures() method that ensures all dirty textures are sent to the GPU.
    Area:WebGL 
    opened by Spongman 34
  • Unbind textures when done with a shader

    Unbind textures when done with a shader

    Resolves https://github.com/processing/p5.js/issues/5921

    Changes:

    • Implements the unbindTextures method on p5.Shader so that the browser doesn't think we're still reading a texture when the shader is no longer in use

    Screenshots of the change:

    When rendering to a framebuffer, then using that as a texture on a plane, before, the browser would not render fills due to a perceived dependency cycle:

    image

    After, fills work!

    image

    Live: https://editor.p5js.org/davepagurek/sketches/X6zXCO_ri

    PR Checklist

    • [x] npm run lint passes
    • [ ] [Inline documentation] is included / updated
    • [ ] [Unit tests] are included / updated
    opened by davepagurek 0
  • Bump flat and mocha

    Bump flat and mocha

    Bumps flat to 5.0.2 and updates ancestor dependency mocha. These dependencies need to be updated together.

    Updates flat from 4.1.0 to 5.0.2

    Commits
    • e5ffd66 Release 5.0.2
    • fdb79d5 Update dependencies, refresh lockfile, format with standard.
    • e52185d Test against node 14 in CI.
    • 0189cb1 Avoid arrow function syntax.
    • f25d3a1 Release 5.0.1
    • 54cc7ad use standard formatting
    • 779816e drop dependencies
    • 2eea6d3 Bump lodash from 4.17.15 to 4.17.19
    • a61a554 Bump acorn from 7.1.0 to 7.4.0
    • 20ef0ef Fix prototype pollution on unflatten
    • Additional commits viewable in compare view
    Maintainer changes

    This version was pushed to npm by timoxley, a new releaser for flat since your current version.


    Updates mocha from 6.2.3 to 10.2.0

    Release notes

    Sourced from mocha's releases.

    v10.2.0

    10.2.0 / 2022-12-11

    :tada: Enhancements

    • #4945: API: add possibility to decorate ESM name before import (@​j0tunn)

    :bug: Fixes

    :book: Documentation

    v10.1.0

    10.1.0 / 2022-10-16

    :tada: Enhancements

    :nut_and_bolt: Other

    v10.0.0

    10.0.0 / 2022-05-01

    :boom: Breaking Changes

    :nut_and_bolt: Other

    ... (truncated)

    Changelog

    Sourced from mocha's changelog.

    10.2.0 / 2022-12-11

    :tada: Enhancements

    • #4945: API: add possibility to decorate ESM name before import (@​j0tunn)

    :bug: Fixes

    :book: Documentation

    10.1.0 / 2022-10-16

    :tada: Enhancements

    :nut_and_bolt: Other

    10.0.0 / 2022-05-01

    :boom: Breaking Changes

    :nut_and_bolt: Other

    ... (truncated)

    Commits

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    Dependencies 
    opened by dependabot[bot] 0
  • Default fill shader texture stays bound even when not used

    Default fill shader texture stays bound even when not used

    Most appropriate sub-area of p5.js?

    • [ ] Accessibility
    • [ ] Color
    • [X] Core/Environment/Rendering
    • [ ] Data
    • [ ] DOM
    • [ ] Events
    • [ ] Image
    • [ ] IO
    • [ ] Math
    • [ ] Typography
    • [ ] Utilities
    • [X] WebGL
    • [ ] Build Process
    • [ ] Unit Testing
    • [ ] Internalization
    • [ ] Friendly Errors
    • [ ] Other (specify if possible)

    p5.js version

    1.5.0

    Web browser and version

    Firefox 107.0

    Operating System

    MacOS 12.5.1

    Steps to reproduce this

    If one calls texture() in between a push and a pop, after the pop, the texture is still bound to the shader's uSampler uniform.

    Normally, this isn't a problem, since we pass false to isTexture, and the shader doesn't try to read the texture. However, if you draw to one texture, then use that texture on a plane onto the main canvas, the browser complains that there is illegal feedback and does not render any fill. This is avoided if you use multiple canvases instead of framebuffers (the default in p5), but this becomes an issue if using framebuffers within the same WebGL context for performance reasons.

    e.g. on Chrome:

    GL_INVALID_OPERATION: Feedback loop formed between Framebuffer and active Texture.
    

    e.g. on Firefox:

    WebGL warning: drawElementsInstanced: Texture level 0 would be read by TEXTURE_2D unit 0, but written by framebuffer attachment COLOR_ATTACHMENT0, which would be illegal feedback.
    

    Here's some code that renders to a framebuffer and triggers this issue (calling lights() results in the above warning and no fills rendered):

    let obj
    
    function setup() {
      createCanvas(windowWidth, windowHeight, WEBGL)
      obj = createFramebuffer()
    }
    
    function draw() {
      obj.draw(() => {
        clear()
        background(90)
        push()
          lights()
          stroke(0)
          fill(255, 0, 0)
          rotateX(frameCount * 0.01)
          rotateY(frameCount * 0.01)
          box(150)
        pop()
      })  
    
      // DISPLAY FRAMEBUFFER
      push()
      texture(obj.color)
      noStroke()
      plane(width, -height)
      pop()
    }
    

    Live: https://editor.p5js.org/davepagurek/sketches/3Qmz-9PZx

    Because this doesn't affect vanilla p5, it isn't a huge issue, but unbinding the texture is a small change that lets us move towards potentially using framebuffers in the future for WebGL filters.

    Bug Area:Core Area:WebGL 
    opened by davepagurek 0
  • Modify  bezierVertex() and quadraticVertex() so that curFillColor becomes an interpolated value

    Modify bezierVertex() and quadraticVertex() so that curFillColor becomes an interpolated value

    Inside the vertex functions called inside the bezierVertex and quadraticVertex functions, curFillColor is now all the same. I want this to be interpolated between the curFillColor value when the previous vertex function was called (external or internal) and the current curFillColor value.

    Resolves #5919

    Changes:

    Both bezierVertex and quadraticVertex functions must always be executed after at least one vertex function has been called. So the vertexColors array is always non-empty and we can get the previous color. Rewrite it like that. In addition, we want to interpolate based on the length of the polygonal line that connects the control points, and then determine the color at each point from the color assigned to the control point and the Bezier coefficient.

    Screenshots of the change:

    bezierSample_Fill_compare

    PR Checklist

    • [x] WEBGL
    opened by inaridarkfox4231 12
  • Allow vertex-wise coloring of areas bounded by bezier and quadratic curves in webgl

    Allow vertex-wise coloring of areas bounded by bezier and quadratic curves in webgl

    Increasing Access

    Currently, in webgl, when the fill function is called immediately before the vertex function in immediateMode to determine the color, each vertex is colored and a gradation is applied. However, doing this for the bezierVertex and quadraticVertex functions would apply the last color set to all vertices added, resulting in nearly identical colors. This can also be considered one of the uses, but if so, I thought it would be better to make them all the same color. So, as the default behavior, I thought it would be better to apply interpolation with the color set by the fill function called before the previous vertex, bezierVertex, quadraticVertex function for each vertex. for example...

    bezierSample_Fill

    function setup() {
      createCanvas(400, 400, WEBGL);
    
      beginShape();
    
      fill(255);
      vertex(0, -200);
    
      fill(255, 0, 0);
      bezierVertex(200, -200, 200, 0, 0, 0);
    
      fill(0, 0, 255);
      bezierVertex(-200, 0, -200, 200, 0, 200);
    
      endShape();
    }
    

    bezierSample_Fill_compare

    quadraticSample_Fill

    
    function setup() {
      createCanvas(400, 400, WEBGL);
    
      beginShape();
    
      fill(255);
      vertex(0, -200);
    
      fill(255, 0, 0);
      quadraticVertex(200, 0, 0, 0);
    
      fill(0, 0, 255);
      quadraticVertex(-200, 0, 0, 200);
    
      endShape();
    }
    

    quadraticSample_Fill_compare

    My claim is that I want to modify the bezierVertex and quadraticVertex functions in webgl to look like this.

    Most appropriate sub-area of p5.js?

    • [ ] Accessibility
    • [X] Color
    • [ ] Core/Environment/Rendering
    • [ ] Data
    • [ ] DOM
    • [ ] Events
    • [ ] Image
    • [ ] IO
    • [ ] Math
    • [ ] Typography
    • [ ] Utilities
    • [X] WebGL
    • [ ] Build Process
    • [ ] Unit Testing
    • [ ] Internalization
    • [ ] Friendly Errors
    • [ ] Other (specify if possible)

    Feature request details

    Make changes in the following locations: main/src/webgl/3d_primitives.js line1552: bezierVertex line1643: quadraticVertex

    Both the bezierVertex function and the quadraticVertex function have the restriction that the vertex function must be called first, so immediateMode.geometry.vertexColors definitely contains some color. Therefore, I thought that it would be better to take the last color stored in the array as the start point, set the current color as the end point, and interpolate between them to determine the intermediate color.

    First, just after setting the LUTLength, get the start and end colors.

    // Get the last stored color and the current color
    const _vertexColors = this.immediateMode.geometry.vertexColors;
    const _vertexColorSize = _vertexColors.length;
    const previousFillColor = [
      _vertexColors[_vertexColorSize - 4],
      _vertexColors[_vertexColorSize - 3],
      _vertexColors[_vertexColorSize - 2],
      _vertexColors[_vertexColorSize - 1]
    ];
    const fillColor = this.curFillColor.slice();
    

    Then, in a for loop, calculate the intermediate colors by interpolating these colors by ratio. Assign this to curFillColor each time so it gets applied in the vertex function.

    for (i = 0; i < LUTLength; i++) {
      // Interpolate between previous color and current color
      const ratio = i/LUTLength;
      this.curFillColor = [
        previousFillColor[0] * (1-ratio) + fillColor[0] * ratio,
        previousFillColor[1] * (1-ratio) + fillColor[1] * ratio,
        previousFillColor[2] * (1-ratio) + fillColor[2] * ratio,
        previousFillColor[3] * (1-ratio) + fillColor[3] * ratio
      ];
    

    Finally, after the loop finishes, we reset the current color to curFillColor, just in case.

    this.curFillColor = fillColor;
    

    Do this for both the 6 and 9 argument cases. I would like to apply these changes to both the bezierVertex and quadraticVertex functions.

    Area:Color Feature Request Area:WebGL 
    opened by inaridarkfox4231 9
  • Made image loading failure in preload() not to stop whole process

    Made image loading failure in preload() not to stop whole process

    Resolves #5032

    Issue

    • setup(), draw() was not called if an image loading in preload() failed
      • It's inconvenient for the case like the image was on server and network connection issue

    Changes

    • Made image loading failure in preload() not to stop whole process
      • setup(), draw() will be called if there was an failure callback in p5.loadImage()
      • setup(), draw() will not be called if there was no failure callback in p5.loadImage()

    I know @limzykenneth says this might be breaking changes. So please check this changes are right way or not.

    PR Checklist

    opened by r21nomi 1
Releases(v1.5.0)
  • v1.5.0(Oct 18, 2022)

    What's Changed 🎊

    Now you can export gif from p5.js directly (Thanks to GSoC 2022 contributor @Jesús Rascón!), scale images to fit or fill a box automatically, get better tint() performance, combine webGL materials, + lots of small webGL fixes. Thanks Dave Pagurek for the summary! Thanks Kenneth Lim and evelyn masso for supporting the release process. - Qianqian

    More details below:

    • only include necessary files in zip by @outofambit in https://github.com/processing/p5.js/pull/5732
    • Add automatic labelling to issues by @stampyzfanz in https://github.com/processing/p5.js/pull/5731
    • Fix applyMatrix example missing from reference page by @limzykenneth in https://github.com/processing/p5.js/pull/5738
    • Fixes #5207 by @awelles in https://github.com/processing/p5.js/pull/5495
    • Fix issue labeler permissions and regex by @stampyzfanz in https://github.com/processing/p5.js/pull/5744
    • Fixed setHeading() not using the current angle mode by @KevinGrajeda in https://github.com/processing/p5.js/pull/5736
    • Improve performance of tint() by @davepagurek in https://github.com/processing/p5.js/pull/5471
    • Fix issue #5702 by @msed21 in https://github.com/processing/p5.js/pull/5747
    • Update .all-contributorsrc by @IkeB108 in https://github.com/processing/p5.js/pull/5748
    • Correct typo on box() in inline documentation by @calebfoss in https://github.com/processing/p5.js/pull/5751
    • Label update by @Qianqianye in https://github.com/processing/p5.js/pull/5758
    • Make reserved word assignment regex work better with function calls by @davepagurek in https://github.com/processing/p5.js/pull/5759
    • Add support for QUADS and QUAD_STRIP in WebGL mode by @davepagurek in https://github.com/processing/p5.js/pull/5768
    • Fix vertex ordering for beginShape(QUADS) in WebGL mode by @davepagurek in https://github.com/processing/p5.js/pull/5771
    • Shrink image used for tint tests to speed them up by @davepagurek in https://github.com/processing/p5.js/pull/5773
    • Animated GIF masking by @yifanmai in https://github.com/processing/p5.js/pull/5508
    • Clarify select option behavior by @ggorlen in https://github.com/processing/p5.js/pull/5777
    • Implement saveGif as a native p5 function by @jesi-rgb in https://github.com/processing/p5.js/pull/5709
    • fixes for #5785 by @dhowe in https://github.com/processing/p5.js/pull/5787
    • GSoD Contributor Docs Editorial Changes by @limzykenneth in https://github.com/processing/p5.js/pull/5764
    • Added round corner property for rect() in WebGL mode by @ShenpaiSharma in https://github.com/processing/p5.js/pull/5789
    • Create graciazhang_gsoc_2022.md by @Gracia-zhang in https://github.com/processing/p5.js/pull/5796
    • smrghsh GSOC'22 project wrap up by @smrghsh in https://github.com/processing/p5.js/pull/5798
    • Fix WebGL blending bugs by @davepagurek in https://github.com/processing/p5.js/pull/5794
    • Add texture coordinates to WebGL rounded rects by @davepagurek in https://github.com/processing/p5.js/pull/5795
    • Update README.md with GSoC 2022 wrap up link (Gracia) by @Gracia-zhang in https://github.com/processing/p5.js/pull/5797
    • Add project_wrapup README link to smrghsh GSoC 22 by @smrghsh in https://github.com/processing/p5.js/pull/5799
    • Added shubham-gsoc-2022-project-wrapup by @ShenpaiSharma in https://github.com/processing/p5.js/pull/5800
    • Image fit features by @Manpreet-Singh001 in https://github.com/processing/p5.js/pull/5784
    • Feature Implemeted -- Multiple Material support for geometry by @ShenpaiSharma in https://github.com/processing/p5.js/pull/5774
    • Refactor and clean up build configurations by @limzykenneth in https://github.com/processing/p5.js/pull/5792
    • Bump trim-newlines and np by @dependabot in https://github.com/processing/p5.js/pull/5806
    • Handle making a p5.Texture out of the main canvas by @davepagurek in https://github.com/processing/p5.js/pull/5815
    • Update contributor name by @ecridge in https://github.com/processing/p5.js/pull/5818
    • Prevent load* methods outside of preload from rerunning setup by @davepagurek in https://github.com/processing/p5.js/pull/5816
    • Use textContent to avoid HTML special characters in options by @ggorlen in https://github.com/processing/p5.js/pull/5782
    • Continuation of Contributor Docs Edits (GSoD) by @limzykenneth in https://github.com/processing/p5.js/pull/5813
    • Bump semver-regex from 2.0.0 to 3.1.4 by @dependabot in https://github.com/processing/p5.js/pull/5826
    • Make sure setAttributes updates lingering references to the old canvas by @davepagurek in https://github.com/processing/p5.js/pull/5824
    • Bump node-fetch and puppeteer by @dependabot in https://github.com/processing/p5.js/pull/5827
    • Added GSOC 2022 Project Wrapup by @aceslowman in https://github.com/processing/p5.js/pull/5828
    • Added entry for GSOC 2022 Wrapup post by @aceslowman in https://github.com/processing/p5.js/pull/5829
    • Fixed typo in comment by @SableRaf in https://github.com/processing/p5.js/pull/5833
    • Handle vertex data in TESS mode by @davepagurek in https://github.com/processing/p5.js/pull/5830

    New Contributors 💗

    Contributed to p5.js GitHub repo

    • @awelles made their first contribution in https://github.com/processing/p5.js/pull/5495
    • @msed21 made their first contribution in https://github.com/processing/p5.js/pull/5747
    • @IkeB108 made their first contribution in https://github.com/processing/p5.js/pull/5748
    • @calebfoss made their first contribution in https://github.com/processing/p5.js/pull/5751
    • @yifanmai made their first contribution in https://github.com/processing/p5.js/pull/5508
    • @ggorlen made their first contribution in https://github.com/processing/p5.js/pull/5777
    • @Gracia-zhang made their first contribution in https://github.com/processing/p5.js/pull/5796
    • @smrghsh made their first contribution in https://github.com/processing/p5.js/pull/5798
    • @Manpreet-Singh001 made their first contribution in https://github.com/processing/p5.js/pull/5784
    • @SableRaf made their first contribution in https://github.com/processing/p5.js/pull/5833

    Added by @allcontributors

    Contributed to p5.js-website GitHub repo, reviewing, reporting bugs, translation, creating add-on libraries, event organizing, design, etc.

    • @ongzzzzzz made their first contribution for plugin, added by @allcontributors in https://github.com/processing/p5.js/pull/5754
    • @bsubbaraman made their first contribution for plugin, added by @allcontributors in https://github.com/processing/p5.js/pull/5755
    • @jdeboi made their first contribution for plugin, added by @allcontributors in https://github.com/processing/p5.js/pull/5756
    • @Manpreet-Singh001 made their first contribution, added by @allcontributors in https://github.com/processing/p5.js/pull/5803
    • @TetroGem made their first contribution, added by @allcontributors in https://github.com/processing/p5.js/pull/5804
    • @ggorlen made their first contribution for code, added by @allcontributors in https://github.com/processing/p5.js/pull/5822

    Full Changelog: https://github.com/processing/p5.js/compare/v1.4.2...v1.5.0

    Source code(tar.gz)
    Source code(zip)
    p5.js(3.75 MB)
    p5.min.js(877.30 KB)
    p5.sound.js(476.72 KB)
    p5.sound.min.js(195.37 KB)
    p5.zip(991.73 KB)
  • v1.4.2(Jul 21, 2022)

    What's Changed 🎊

    • Updated some JsDoc definitions by @Gaweph in https://github.com/processing/p5.js/pull/5578
    • Improve documetation clarity of material methods by @JetStarBlues in https://github.com/processing/p5.js/pull/5310
    • docs(contributing md): add language to code blocks by @stampyzfanz in https://github.com/processing/p5.js/pull/5586
    • fixes issue #5191 along with minor grammatical edits by @reejuBhattacharya in https://github.com/processing/p5.js/pull/5592
    • Assorted edits to inline docs by @nickmcintyre in https://github.com/processing/p5.js/pull/5560
    • Bump marked from 0.7.0 to 4.0.10 by @dependabot in https://github.com/processing/p5.js/pull/5554
    • Bump simple-get from 3.1.0 to 3.1.1 by @dependabot in https://github.com/processing/p5.js/pull/5605
    • docs(src/io): Use describe() instead of @alt by @Zearin in https://github.com/processing/p5.js/pull/5595
    • docs(src/math): Use describe() instead of @alt by @Zearin in https://github.com/processing/p5.js/pull/5596
    • docs(src/typography): Use describe() instead of @alt by @Zearin in https://github.com/processing/p5.js/pull/5597
    • Update contributor_docs/README.md by @Zearin in https://github.com/processing/p5.js/pull/5606
    • Improve documentation clarity of light methods by @JetStarBlues in https://github.com/processing/p5.js/pull/5312
    • Improve clarity of specularColor() example by @JetStarBlues in https://github.com/processing/p5.js/pull/5314
    • Fix typo in vertex.js by @eltociear in https://github.com/processing/p5.js/pull/5613
    • Fixes issue #5603 by @reejuBhattacharya in https://github.com/processing/p5.js/pull/5604
    • updated isLooping return type by @Gaweph in https://github.com/processing/p5.js/pull/5618
    • docs(src/events): Use describe() over @alt by @Zearin in https://github.com/processing/p5.js/pull/5593
    • Fixed bug were cached colors are not cleared by @0xJonas in https://github.com/processing/p5.js/pull/5353
    • docs(p5.Vector): Formatting and minor copy edits by @Zearin in https://github.com/processing/p5.js/pull/5580
    • Reference Catmull-Rom in the docs for curvePoint by @davepagurek in https://github.com/processing/p5.js/pull/5493
    • Fix typo in fes_reference_dev_notes.md by @eltociear in https://github.com/processing/p5.js/pull/5642
    • build(deps-dev): bump simple-git from 1.132.0 to 3.3.0 by @dependabot in https://github.com/processing/p5.js/pull/5639
    • Fixed typo on atan2() page by @koolaidkrusade in https://github.com/processing/p5.js/pull/5655
    • Fix typo on 'updatePixels()' page by @smilee in https://github.com/processing/p5.js/pull/5648
    • build(deps): bump minimist from 1.2.5 to 1.2.6 by @dependabot in https://github.com/processing/p5.js/pull/5652
    • refactor: replace deprecated String.prototype.substr() by @CommanderRoot in https://github.com/processing/p5.js/pull/5643
    • Update p5.Element.js by @error-four-o-four in https://github.com/processing/p5.js/pull/5664
    • Fix typo in p5.RendererGL.Immediate.js by @eltociear in https://github.com/processing/p5.js/pull/5676
    • Fix typo by @idodana in https://github.com/processing/p5.js/pull/5672
    • p5.image docs typo fix by @processprocess in https://github.com/processing/p5.js/pull/5671
    • build(deps-dev): bump grunt from 1.3.0 to 1.5.3 by @dependabot in https://github.com/processing/p5.js/pull/5679
    • build(deps-dev): bump simple-git from 3.3.0 to 3.5.0 by @dependabot in https://github.com/processing/p5.js/pull/5661
    • Publishing FES Survey Results and Friendly Errors i18n Book by @almchung in https://github.com/processing/p5.js/pull/5691
    • build(deps): bump shell-quote from 1.7.2 to 1.7.3 by @dependabot in https://github.com/processing/p5.js/pull/5698
    • Update saveFrames documentation by @jesi-rgb in https://github.com/processing/p5.js/pull/5694
    • added describe() to all 3d reference examples by @aceslowman in https://github.com/processing/p5.js/pull/5706
    • Reword first issue welcome comment to mention issue forms by @stampyzfanz in https://github.com/processing/p5.js/pull/5640
    • Update Readme for evelyn moving to mentor role by @outofambit in https://github.com/processing/p5.js/pull/5714
    • Fixed background transparency with Images by @yashlamba in https://github.com/processing/p5.js/pull/5683
    • Fix noSmooth printing message when used with a non WebGL graphics by @limzykenneth in https://github.com/processing/p5.js/pull/5726
    • Fixes #5160 by @KevinGrajeda in https://github.com/processing/p5.js/pull/5682

    New Contributors 💗

    Contributed to p5.js GitHub repo

    • @stampyzfanz made their first contribution in https://github.com/processing/p5.js/pull/5586
    • @0xJonas made their first contribution in https://github.com/processing/p5.js/pull/5353
    • @koolaidkrusade made their first contribution in https://github.com/processing/p5.js/pull/5655
    • @smilee made their first contribution in https://github.com/processing/p5.js/pull/5648
    • @CommanderRoot made their first contribution in https://github.com/processing/p5.js/pull/5643
    • @error-four-o-four made their first contribution in https://github.com/processing/p5.js/pull/5664
    • @idodana made their first contribution in https://github.com/processing/p5.js/pull/5672
    • @processprocess made their first contribution in https://github.com/processing/p5.js/pull/5671
    • @jesi-rgb made their first contribution in https://github.com/processing/p5.js/pull/5694
    • @aceslowman made their first contribution in https://github.com/processing/p5.js/pull/5706
    • @yashlamba made their first contribution in https://github.com/processing/p5.js/pull/5683
    • @KevinGrajeda made their first contribution in https://github.com/processing/p5.js/pull/5682

    Added by @allcontributors

    Contributed to p5.js-website GitHub repo, reviewing, reporting bugs, translation, creating add-on libraries, event organizing, design, etc.

    • @unjust made their first contribution for bug, added by @allcontributors in https://github.com/processing/p5.js/pull/5611
    • @Gaweph made their first contribution for code, added by @allcontributors in https://github.com/processing/p5.js/pull/5612
    • @eltociear made their first contribution for doc, added by @allcontributors in https://github.com/processing/p5.js/pull/5614
    • @KouichiMatsuda made their first contribution for bug, added by @allcontributors in https://github.com/processing/p5.js/pull/5621
    • @taejs made their first contribution for bug, added by @allcontributors in https://github.com/processing/p5.js/pull/5623
    • @Divyansh013 made their first contribution for translation, added by @allcontributors in https://github.com/processing/p5.js/pull/5624
    • @rinkydevi made their first contribution for translation, added by @allcontributors in https://github.com/processing/p5.js/pull/5625
    • @cas-c4ta made their first contribution for bug, added by @allcontributors in https://github.com/processing/p5.js/pull/5626
    • @danieljamesross made their first contribution for bug, added by @allcontributors in https://github.com/processing/p5.js/pull/5627
    • @liz-peng made their first contribution for design, code, tool, added by @allcontributors in https://github.com/processing/p5.js/pull/5645
    • @tapioca24 made their first contribution for plugin, added by @allcontributors in https://github.com/processing/p5.js/pull/5701
    • @adarrssh made their first contribution for translation, added by @allcontributors in https://github.com/processing/p5.js/pull/5711
    • @kaabe1 made their first contribution for design, eventOrganizing, added by @allcontributors in https://github.com/processing/p5.js/pull/5713
    • @Guirdo made their first contribution for translation, added by @allcontributors in https://github.com/processing/p5.js/pull/5715
    • @3ru made their first contribution for bug, review, code, added by @allcontributors in https://github.com/processing/p5.js/pull/5716
    • @LEMIBANDDEXARI made their first contribution for translation, added by @allcontributors in https://github.com/processing/p5.js/pull/5721
    • @probablyvivek made their first contribution for translation, added by @allcontributors in https://github.com/processing/p5.js/pull/5724
    • @anniezhengg made their first contribution for code, design, added by @allcontributors in https://github.com/processing/p5.js/pull/5729
    • @SNP0301 made their first contribution for translation, added by @allcontributors in https://github.com/processing/p5.js/pull/5730

    You can find all of our contributors in our README. Thank you to all the contributors! 💜

    Full Changelog: https://github.com/processing/p5.js/compare/v1.4.1...v1.4.2

    Source code(tar.gz)
    Source code(zip)
    p5.js(4.14 MB)
    p5.min.js(804.45 KB)
    p5.sound.js(476.72 KB)
    p5.sound.min.js(195.37 KB)
    p5.zip(988.63 KB)
  • v1.4.1(Feb 3, 2022)

    What's Changed 🎉

    • Update .all-contributorsrc by @anniemckinnon in https://github.com/processing/p5.js/pull/5342
    • Rename Lights, Camera module to 3D by @JetStarBlues in https://github.com/processing/p5.js/pull/5295
    • removed unused .jshintrc by @N4M3L355 in https://github.com/processing/p5.js/pull/5345
    • Point to wiki in text() reference page by @JetStarBlues in https://github.com/processing/p5.js/pull/5319
    • Fixed round implementation support for numbers that have string representations that use exponential notation. by @sflanker in https://github.com/processing/p5.js/pull/5341
    • GSoC'21: adding to FES phase 1 by @Aloneduckling in https://github.com/processing/p5.js/pull/5305
    • docs: add jiwonme as a contributor for code by @allcontributors in https://github.com/processing/p5.js/pull/5352
    • Rename aMaterialColor attribute to aVertexColor by @JetStarBlues in https://github.com/processing/p5.js/pull/5303
    • Improve documentation clarity of shader methods by @JetStarBlues in https://github.com/processing/p5.js/pull/5307
    • Improve clarity of noLights() example by @JetStarBlues in https://github.com/processing/p5.js/pull/5313
    • Improve clarity of lightFalloff() example by @JetStarBlues in https://github.com/processing/p5.js/pull/5315
    • Improve documentation clarity of texture methods by @JetStarBlues in https://github.com/processing/p5.js/pull/5316
    • docs: add truemaxdh as a contributor for bug, code by @allcontributors in https://github.com/processing/p5.js/pull/5365
    • Detecting redeclaration of p5.js reserved constants and functions by @Aloneduckling in https://github.com/processing/p5.js/pull/5351
    • Fix typo in image.js by @eltociear in https://github.com/processing/p5.js/pull/5375
    • docs: add katiejliu as a contributor for code by @allcontributors in https://github.com/processing/p5.js/pull/5378
    • add VERSION const as p5.VERSION by @micuat in https://github.com/processing/p5.js/pull/5165
    • fixing links to p5.MediaElement - resolves #5355 by @guilhermesilveira in https://github.com/processing/p5.js/pull/5356
    • docs: add guilhermesilveira as a contributor for doc by @allcontributors in https://github.com/processing/p5.js/pull/5379
    • Add gsoc 2021 project wrapup by @Aloneduckling in https://github.com/processing/p5.js/pull/5372
    • Bump path-parse from 1.0.5 to 1.0.7 by @dependabot in https://github.com/processing/p5.js/pull/5371
    • Final Work Product Submission for GSoC 2021 - Anais Gonzalez by @anagondesign in https://github.com/processing/p5.js/pull/5382
    • add project wrap-up to README.md by @Aloneduckling in https://github.com/processing/p5.js/pull/5383
    • make it possible to call "npm run dev" per docs without having called "npm grunt" first by @gregsadetsky in https://github.com/processing/p5.js/pull/5391
    • Update dom.js comments by @WayGuan in https://github.com/processing/p5.js/pull/5394
    • Fixing ReferenceError: totalHeight is not defined throw by textAlign(… by @malviys in https://github.com/processing/p5.js/pull/5366
    • Unit test fix to resolve #5367 by @almchung in https://github.com/processing/p5.js/pull/5412
    • Update puppeteer and other dependencies by @limzykenneth in https://github.com/processing/p5.js/pull/5413
    • Create nikiito_gsoc_2021.md and add Work Product Report link to first paragraph by @niki-ito in https://github.com/processing/p5.js/pull/5399
    • add gsoc 2021 project wrapup for addon library development - p5.teach.js by @aditya-siddheshwar in https://github.com/processing/p5.js/pull/5418
    • Update README.md by @niki-ito in https://github.com/processing/p5.js/pull/5417
    • GSOC 2021 wrap-up post added by @SanjaySinghRajpoot in https://github.com/processing/p5.js/pull/5419
    • Update README.md with link to GSoC 2021 wrap-up by @anagondesign in https://github.com/processing/p5.js/pull/5423
    • Create katiejliu_gsoc_2021.md by @katiejliu in https://github.com/processing/p5.js/pull/5425
    • Added Documentation for GSoC 2021 by @jhongover9000 in https://github.com/processing/p5.js/pull/5426
    • Fix typo in vertex.js by @eltociear in https://github.com/processing/p5.js/pull/5431
    • fix horizontal/vertical alignment for multi-line text by @dhowe in https://github.com/processing/p5.js/pull/5432
    • explicitly check if mouseIsPressed is true for documentation by @michaeleggers in https://github.com/processing/p5.js/pull/5437
    • Added wrap-up of gsoc-21 @satyasaibhushan by @satyasaibhushan in https://github.com/processing/p5.js/pull/5439
    • add internal functions for changing translation language in i18next by @outofambit in https://github.com/processing/p5.js/pull/5443
    • Add myself to contributors by @camilleroux in https://github.com/processing/p5.js/pull/5444
    • Fix typo in dom.js by @eltociear in https://github.com/processing/p5.js/pull/5459
    • fix: Update the rem instance method to be chainable by @aaronccasanova in https://github.com/processing/p5.js/pull/5461
    • New FES Contributor Docs + FES Survey Link by @almchung in https://github.com/processing/p5.js/pull/5460
    • FES Contributors doc link updates by @almchung in https://github.com/processing/p5.js/pull/5473
    • Fix to Issue #5462 by @dhowe in https://github.com/processing/p5.js/pull/5466
    • Remove reference to p5 instance in p5.Vector objects by @limzykenneth in https://github.com/processing/p5.js/pull/5469
    • Removes invalid website inconsolata reference by @guilhermesilveira in https://github.com/processing/p5.js/pull/5381
    • Resolves #5481 Set uniform arrays bug by @aferriss in https://github.com/processing/p5.js/pull/5483
    • fixed-select-option-using-label-issue by @Prateek93a in https://github.com/processing/p5.js/pull/5098
    • Fixed Typo in Hindi translation of the contributor_docs by @IamEzio in https://github.com/processing/p5.js/pull/5492
    • Updated strokeWeight() documentation by @reejuBhattacharya in https://github.com/processing/p5.js/pull/5480
    • docs: add reejuBhattacharya as a contributor for doc by @allcontributors in https://github.com/processing/p5.js/pull/5498
    • docs: Fix typos (its/it’s) by @Zearin in https://github.com/processing/p5.js/pull/5500
    • Add a uModelViewProjectionMatrix uniform by @JetStarBlues in https://github.com/processing/p5.js/pull/5283
    • Add an example for resetShader() by @JetStarBlues in https://github.com/processing/p5.js/pull/5265
    • Allow clear colors to propagate to the webGL clear method. by @aferriss in https://github.com/processing/p5.js/pull/5515
    • Fixed function isTextureShader. by @sflanker in https://github.com/processing/p5.js/pull/5510
    • Allow p5.Texture inputs to setUniform by @aferriss in https://github.com/processing/p5.js/pull/5517
    • Allow texture() to accept p5.Texture argument without throwing a warning. by @aferriss in https://github.com/processing/p5.js/pull/5519
    • Fixed GIF Freezing After Returning to Unfocused Tab by @frigorific44 in https://github.com/processing/p5.js/pull/5484
    • docs: add akshatnema as a contributor for code by @allcontributors in https://github.com/processing/p5.js/pull/5531
    • docs: add IamEzio as a contributor for bug by @allcontributors in https://github.com/processing/p5.js/pull/5532
    • docs: add Himanshu664 as a contributor for bug by @allcontributors in https://github.com/processing/p5.js/pull/5533
    • docs: add chosamuel as a contributor for bug by @allcontributors in https://github.com/processing/p5.js/pull/5534
    • docs: add TOrfevres as a contributor for bug by @allcontributors in https://github.com/processing/p5.js/pull/5536
    • docs: add reejuBhattacharya as a contributor for code by @allcontributors in https://github.com/processing/p5.js/pull/5537
    • docs: add JaPatGitHub as a contributor for doc by @allcontributors in https://github.com/processing/p5.js/pull/5538
    • docs: add Zearin as a contributor for doc by @allcontributors in https://github.com/processing/p5.js/pull/5539
    • docs: add pifragile as a contributor for bug by @allcontributors in https://github.com/processing/p5.js/pull/5540
    • docs: add KevinWorkman as a contributor for doc by @allcontributors in https://github.com/processing/p5.js/pull/5541
    • docs: add j-stodd as a contributor for bug by @allcontributors in https://github.com/processing/p5.js/pull/5542
    • docs: add soegaard as a contributor for doc by @allcontributors in https://github.com/processing/p5.js/pull/5543
    • docs: add oleboleskole3 as a contributor for bug by @allcontributors in https://github.com/processing/p5.js/pull/5544
    • docs: add awelles as a contributor for bug by @allcontributors in https://github.com/processing/p5.js/pull/5545
    • resolves #5465, typo in setMag() example by @montoyamoraga in https://github.com/processing/p5.js/pull/5535
    • docs: add andreiantonescu as a contributor for bug by @allcontributors in https://github.com/processing/p5.js/pull/5546
    • docs: add dipamsen as a contributor for bug by @allcontributors in https://github.com/processing/p5.js/pull/5547
    • docs: add soegaard as a contributor for bug by @allcontributors in https://github.com/processing/p5.js/pull/5548
    • docs: add stigmollerhansen as a contributor for bug by @allcontributors in https://github.com/processing/p5.js/pull/5549
    • docs: add frigorific44 as a contributor for code by @allcontributors in https://github.com/processing/p5.js/pull/5550
    • docs: add willmartian as a contributor for ideas by @allcontributors in https://github.com/processing/p5.js/pull/5551
    • Fixes bug introduced by #5483 by @aferriss in https://github.com/processing/p5.js/pull/5553
    • docs: Use “×” for dimensions by @Zearin in https://github.com/processing/p5.js/pull/5502
    • fixes issues #5374 and #5504 by @reejuBhattacharya in https://github.com/processing/p5.js/pull/5558
    • feat: enable Github Issue Forms by @willmartian in https://github.com/processing/p5.js/pull/5479
    • Fix typo in curveVertex doc by @beaumu in https://github.com/processing/p5.js/pull/5566
    • dom.js - Make PositionType argument optional by @Gaweph in https://github.com/processing/p5.js/pull/5569
    • Changes webGL alpha buffer to false. by @aferriss in https://github.com/processing/p5.js/pull/5555
    • resolves issue #5421 by @reejuBhattacharya in https://github.com/processing/p5.js/pull/5572
    • docs: add beaumu as a contributor for doc by @allcontributors in https://github.com/processing/p5.js/pull/5573
    • fixes issue #5574 by @reejuBhattacharya in https://github.com/processing/p5.js/pull/5575
    • Allow settings object for p5.Texture by @aferriss in https://github.com/processing/p5.js/pull/5557
    • FES ko new translation file + en file minor updates by @almchung in https://github.com/processing/p5.js/pull/5581
    • Update inline documentation to use describe() instead of @alt | resolves #5139 by @lm-n in https://github.com/processing/p5.js/pull/5140
    • docs(src/color/): Use describe('…') over @alt by @Zearin in https://github.com/processing/p5.js/pull/5577
    • Bump cached-path-relative from 1.0.2 to 1.1.0 by @dependabot in https://github.com/processing/p5.js/pull/5582

    New Contributors 💗

    • @N4M3L355 made their first contribution in https://github.com/processing/p5.js/pull/5345
    • @eltociear made their first contribution in https://github.com/processing/p5.js/pull/5375
    • @guilhermesilveira made their first contribution in https://github.com/processing/p5.js/pull/5356
    • @anagondesign made their first contribution in https://github.com/processing/p5.js/pull/5382
    • @WayGuan made their first contribution in https://github.com/processing/p5.js/pull/5394
    • @malviys made their first contribution in https://github.com/processing/p5.js/pull/5366
    • @niki-ito made their first contribution in https://github.com/processing/p5.js/pull/5399
    • @aditya-siddheshwar made their first contribution in https://github.com/processing/p5.js/pull/5418
    • @katiejliu made their first contribution in https://github.com/processing/p5.js/pull/5425
    • @jhongover9000 made their first contribution in https://github.com/processing/p5.js/pull/5426
    • @michaeleggers made their first contribution in https://github.com/processing/p5.js/pull/5437
    • @camilleroux made their first contribution in https://github.com/processing/p5.js/pull/5444
    • @aaronccasanova made their first contribution in https://github.com/processing/p5.js/pull/5461
    • @IamEzio made their first contribution in https://github.com/processing/p5.js/pull/5492
    • @reejuBhattacharya made their first contribution in https://github.com/processing/p5.js/pull/5480
    • @Zearin made their first contribution in https://github.com/processing/p5.js/pull/5500
    • @frigorific44 made their first contribution in https://github.com/processing/p5.js/pull/5484
    • @willmartian made their first contribution in https://github.com/processing/p5.js/pull/5479
    • @beaumu made their first contribution in https://github.com/processing/p5.js/pull/5566
    • @Gaweph made their first contribution in https://github.com/processing/p5.js/pull/5569

    Full Changelog: https://github.com/processing/p5.js/compare/v1.4.0...v1.4.1

    Source code(tar.gz)
    Source code(zip)
    p5.js(4.11 MB)
    p5.min.js(803.87 KB)
    p5.sound.js(476.72 KB)
    p5.sound.min.js(195.37 KB)
    p5.zip(985.59 KB)
  • v1.4.0(Jun 29, 2021)

    General Changes

    Code Changes

    • Added support for UInt32 vertex indices
    • Change p5.Geometry's module/submodule
    • Fixes initialization of user-defined stroke shader
    • Processing keyword changed to p5 on mouse.js
    • Disable codecov comments
    • Fix "Javacript" typo in error message
    • Update GIF disposal handling
    • Update reference.js
    • Add text wrapping function
    • Update browser compatibility info for build process
    • describeElement() regex quick fix

    Documentation Changes

    • Removed redundant string "(Optional)" everywhere in the inline documentation
    • Fixes canvas size problem of fract() page in reference section
    • add missing space in arc() docs
    • Add p5.Camera.frustum documentation on reference page
    • norender class added to createCapture documentation
    • Update README.md -- aligned vertical bars
    • Updated Hindi contributor docs README.md
    • Added missing hindi translations to unit_testing.md
    • Add fes message
    • Fix copypasta in sample code
    • Add a reference from one dist() the other one and vise-verse.
    • Improve createCamera() example
    • Fix the texture() example
    • Add vertex() variant to documentation
    • Add example for specularMaterial()
    • Update describe() reference
    • Fix typos show up in docs
    • Fix "it's" in translation.json
    • Improve documentation clarity of some of the camera methods
    • Group materials on reference page
    • Added hindi translations for es6-adoption.md file
    • Added example and decription of params of beginShape()
    • Fixed the documentation for Vector.angleBetween to indicate that it respects angleMode.
    • Adding missing </code></div> in the centerY and centerZ example code
    • Remove extra optional text from docs for describe()
    • Fix typos in descriptions
    • Update Maintainers in Contributor Docs
    • Fixed errors in hindi translation of contributor docs
    • Fixed typo
    • Converted some auto-generated links in the reference documentation to same-document references

    New Contributors

    😻 New contributors since last release: @Nitin-Rana, @sflanker, @pearmini, @osteele, @code4humanity, @JetStarBlues, @JetStarBlues, @ghalestrilo, @TylersGit, @ageonic, @cryptochap, @christhomson, @DavidWeiss2, @leokamwathi, @davepagurek, @Rahulm2310, @smrnjeet222, @maxthomax

    You can find all of our contributors in our ReadMe.

    Source code(tar.gz)
    Source code(zip)
    p5.js(4.05 MB)
    p5.min.js(795.84 KB)
    p5.sound.js(476.72 KB)
    p5.sound.min.js(195.37 KB)
    p5.zip(3.13 MB)
  • v1.3.1(Mar 28, 2021)

    • Merge pull request #5060 from ShenpaiSharma/Issue_#5046 9722a0d2
    • Merge pull request #5123 from processing/all-contributors/add-b4ux1t3 a509c431
    • Merge pull request #5122 from b4ux1t3/small-typo 42748270
    • Added missing space. c84dae06
    • Merge pull request #5106 from JuanIrache/main 02416f33
    • Merge pull request #5107 from micuat/add-version-const a1ce015b
    • Merge pull request #4989 from fal-works/fix/inline-docs 68ac2be8
    • Merge pull request #5103 from duskvirkus/gl-stroke-bug-fix 4c194ec0
    • catch crashes of fetch when loading image 5fa7ca93
    • docs: add @params tag to windowResized() d46e5b95
    • docs: revert changes in event handler functions remove @return tags (see #4988) 485dc366
    • docs: revert changes in windowResized() remove description about "return false" remove @param, @return tags (see #4988) 81499b88
    • adding unit tests for p5.RendererGL.prototype.ellipse and p5.RendererGL.arc 105e0e88
    • fixing bug for drawing ellipse/arc with detail higher than 50 and improving documentation for ellipse/arc arguments e395827a
    • Merge pull request #5090 from msub2/main 3e1eae2e
    • Merge pull request #5093 from lawreka/revert-hyphenation 19fa3101
    • remove word breaks and hyphenation 7368adb1
    • Using offscreen canvas to extract the pixel data of webgl canvas using CanvasRenderingContext2D. 7240ce60
    • Merge pull request #4642 from outofambit/fix-ie11-support 6fe2d80e
    • Add check for TypedArrays in applyMatrix 18557561
    • Merge pull request #5084 from Aloneduckling/correct-style-example 55af0368
    • Merge pull request #4756 from TakumaKira/main 39b4fd7e
    • Changed the styles of dom-style examples 1983eed6
    • Fixes tint in 2d canvas with webgl p5.Graphics 27fb4ac2
    • docs: improve inline docs of key event handlers add @param [event] df8a3ca9
    • docs: improve inline docs of event handler funcs add @return as they may return false b7123bc8
    • docs: improve inline docs of windowResized() add description about return false, add @param [event] 8a2a4dc7
    • docs: fix inline docs of int() param radix was missing 3d965b4e
    • White dot with a small radius is not entirely white. 881cfa33
    • Allow drawing point with large scale and small strokeWeight. dc9ab8f9
    • White dot with a small radius is not entirely white. 1fc96687
    • Allow drawing point with large scale and small strokeWeight. 0864adb1

    https://github.com/processing/p5.js/compare/1.3.0...v1.3.1

    Source code(tar.gz)
    Source code(zip)
    p5.js(4.04 MB)
    p5.min.js(794.47 KB)
    p5.sound.js(440.00 KB)
    p5.sound.min.js(180.88 KB)
    p5.zip(3.11 MB)
  • 1.3.0(Mar 10, 2021)

    • removing empty-example link to p5.sound until load functionality is fixed closes #5068 1b931906
    • adding note about textFont return type closes #4926 02c7eb11
    • adding note about p5 editor to getURL methods closes #5035 7fda84a1
    • adding note about cumulative mask property to mask closes #5012 d4aec1ac
    • removing unnecessary backslash in blendmode documentation closes #5042 85dc5a0e
    • fixing some npm vulnerabilities 6407fbff
    • Merge branch 'main' of github.com:processing/p5.js into main f8cd935d
    • Merge pull request #5073 from processing/dependabot/npm_and_yarn/elliptic-6.5.4 8fb8c93e
    • Merge pull request #5069 from meodai/main a20779df
    • Merge pull request #5075 from processing/all-contributors/add-Aloneduckling 336389a1
    • docs: update .all-contributorsrc [skip ci] 298be5bd
    • Merge pull request #5071 from Aloneduckling/p5js-camera-docs e6b7382b
    • docs: update README.md [skip ci] 5ec2075c
    • Merge pull request #5074 from processing/all-contributors/add-msub2 7ad3311c
    • Merge pull request #5072 from msub2/main c212eab9
    • docs: update .all-contributorsrc [skip ci] 9d87b3f0
    • docs: update README.md [skip ci] 6290db33
    • these changes are in response to PR comments d4db58ab
    • Bump elliptic from 6.5.3 to 6.5.4 a33b0590
    • Remove unused parameters, updated inline examples e913f92a
    • applyMatrix now accepts an array as the first argument 873ef633
    • make the example readonly by adding norender class 56a968cc
    • replaces the minified version of p5.sound with the plain one in the demo 78b8d37a
    • add examples and docs for centerX/Y/Z and upX/Y/Z 8fb358ee
    • add documentation for eyeX, eyeY, eyeZ properties 8082db16
    • Merge pull request #5055 from satyasaibhushan/remove_space_under_foundation_section a8afd776
    • mention camera opbect properties in the docs bbe0a71b
    • Merge pull request #5063 from processing/saveFrame-typo acf5f8f6
    • fix typo on saveFrames c77db0ec
    • Merge pull request #5062 from processing/all-contributors/add-sosunnyproject 81d87b36
    • docs: update .all-contributorsrc [skip ci] fce32ef2
    • docs: update README.md [skip ci] e0b15da5
    • docs: add jcelerier as a contributor (#5059) f1010c1b
    • docs: add vulongphan as a contributor (#5058) 3d838776
    • update lights function to handle non-RGB color modes (#5049) be51645f
    • added submodule to Foundation section in reference to remove inconsistencies in spacing cefdcd7d
    • Merge pull request #5052 from rt1301/#5045-filter-doc f81bb700
    • feat:updated p5.Image filter() methods docs 435c321a
    • Merge pull request #1 from processing/main a82db0f5
    • Merge pull request #5041 from processing/all-contributors/add-satyasaibhushan bb4ba44f
    • docs: update .all-contributorsrc [skip ci] 60eeae83
    • docs: update README.md [skip ci] b30e5c9a
    • delete duplicate "tool" and fix link to avatar 39fcd6e8
    • delete comma to fix it a82557a6
    • Fixed link to Mozilla JS practices eb9b15a4
    • Merge pull request #5033 from Prateek93a/update-unit-testing-doc a765b367
    • Merge branch 'hdcola/main' into main 396907da
    • Edit Chinese translation of contributor documentation 4f878bcf
    • Update unit_testing.md a8abe642
    • Merge pull request #5028 from nakednous/patch-1 0fb94743
    • Update .all-contributorsrc e248e413
    • Merge pull request #5026 from processing/all-contributors/add-ShenpaiSharma 2861c2c6
    • docs: update .all-contributorsrc [skip ci] cefcfab3
    • docs: update README.md [skip ci] 5c50ff7c
    • Merge pull request #5025 from ShenpaiSharma/Issue_#5014 c86c76cd
    • Added comment to explain default 10FPS b933baf2
    • Changed frameInfo.delay value whent it is equal to 0 0002ceb1
    • Merge pull request #4996 from weslord/static-normalize 5db68fb2
    • Merge pull request #5013 from PandaBalls/main f2f8bb12
    • Merge pull request #5020 from processing/all-contributors/add-myselfhimself 0261e251
    • Merge pull request #5017 from myselfhimself/patch-1 c2c89928
    • docs: update .all-contributorsrc [skip ci] a4e7cf52
    • docs: update README.md [skip ci] 01b5f7b0
    • #4866 V texture coordinate inversion on OBJ loadModel 2b6302d2
    • fix saveTable() issue 46b7e950
    • translation into Chinese ae90c376
    • Merge pull request #5008 from processing/add-self-as-steward 23db9e67
    • added myself as steward 4218dd10
    • Add self as steward 5b16ce01
    • Merge pull request #5003 from choxi/offscreen-render-bug 35f23125
    • Fixes offscreen rendering bug 4b146e40
    • Add tests for p5.Vector.normalize() 41431349
    • Add static version of Vector.normalize() 3d34b2e9
    • Make p5.Vector.mag() comments consistent with others 18dbd51a
    • Merge pull request #4986 from siv2r/patch-1 96886878
    • Update .all-contributorsrc 426b6935
    • Merge pull request #4979 from Aloneduckling/DOM-examples-corrected f326680c
    • Merge pull request #4972 from siv2r/static-rotate 2c1a6931
    • Merge pull request #4984 from limzykenneth/color_toString 49f2a519
    • Fix typo in color toString method 8d7a063a
    • Merge pull request #4981 from processing/all-contributors/add-frappelatte28 c1da5e2a
    • docs: update .all-contributorsrc [skip ci] a6ac09cd
    • docs: update README.md [skip ci] fa1264fb
    • improved checks for static p5.Vector rotate() 0b89c6fb
    • Merge branch 'main' into DOM-examples-corrected efcfe58a
    • better checks for rotate (static function) b5abdddb
    • Merge pull request #4819 from Aloneduckling/add-DOM-example 54b6f0b9
    • removed no render class, and corrected the styling of DOM examples for better display 48d309ce
    • added example for rotate func (static implementation) f25907b1
    • removed addtional param description for angle 2ab9ab10
    • added rotate (static function) for p5.Vector 998d10ca
    • Merge pull request #4901 from Vamoss/main 8741583b
    • Merge pull request #4963 from processing/all-contributors/add-siv2r 176bf5d9
    • docs: update .all-contributorsrc [skip ci] 95240abf
    • docs: update README.md [skip ci] bd382c12
    • Merge pull request #4962 from siv2r/fix_typos-inline_documentation f77c8e6f
    • remove smooth option from quad function (original restored) df81685f
    • Merge branch 'main' of https://github.com/processing/p5.js into main 253eec5c
    • added npm run before grunt c709728f
    • renamed yuidoc-p5-theme-src to yuidoc-p5-theme 321cfe38
    • fixed broken link daf46051
    • changed definition to description f4a5e1f7
    • added line break before the template image e8b9dc7d
    • Merge pull request #4959 from limzykenneth/pupeteer-update 174e5794
    • Add linux sandbox flag to puppeteer command e9f04db7
    • Update puppeteer to latest version 94e99fde
    • Merge branch 'main' of https://github.com/processing/p5.js into main 549133f4
    • Smooth Quad Distortion (relates to #4288) 75b8afdf
    • examples now showing, removed spaces which caused error during build 2155745a
    • removed norender class, DOM examples now working ea6fc593

    https://github.com/processing/p5.js/compare/v1.2.0...v1.3.0

    Source code(tar.gz)
    Source code(zip)
    p5.js(3.54 MB)
    p5.min.js(601.88 KB)
    p5.sound.js(440.00 KB)
    p5.sound.min.js(180.88 KB)
    p5.zip(842.99 KB)
  • 1.1.9(Jul 23, 2020)

  • 1.1.5(Jul 22, 2020)

  • 1.1.4(Jul 22, 2020)

  • 1.1.3(Jul 22, 2020)

  • 1.0.0(Feb 29, 2020)

    Read about 1.0 release here: https://medium.com/processing-foundation/p5-js-1-0-is-here-b7267140753a

    • adding documentation and diagram for graphics objects
    • Fix issue with trying to draw non-existent strokes
    • add i18n contributor guide
    • add i18next / 18n support for friendly error system messages
    • add i18n contributor guide
    • updating documentation for rotation constants
    • take angleMode into consideration for rotationXYZ
    • fix cylinder and cone uv bug
    • Start counting millis() just before setup() is called
    • Add support for twitter polling
    • Always depthMask when buffer is present
    • Remove background caching and blend when non-standard blendMode
    • Removed legacy printMatrix method
    • Add third argument to position method
    • Remove benchmarking code from the repo
    • Added static method of rem() and its documentation
    • Added support for arrays as argument in math methods
    • added rem() method on p5.Vector
    • Add line-break support to saveStrings function
    • updating reset of 3d primitives to check for stroke before printing warning
    • Remove alpha args from specular/ambientMaterial
    • p5.sound 0.3.12
    • Update issue templates
    • Added disable method for createSelect element
    • Make perPixelLighting the default
    • allow rect() to use just 3 parameters for a square, similar to how ellipse() allows 3 params
    • Fix iOS lighting issues
    • Set webgl default to TRIANGLE_FAN
    • Updated developer_docs in preparation for Developer Docs website
    • Only enable vertexAttribute once, and blending fix
    • Better array equal method
    • Only change blend state in GL when necessary
    • Better background caching
    • adding style guide notes for yuidoc
    • updating code style guide
    • merge p5.dom into core
    • Making alt text field for images
    • add more autoplay error catching logic
    • use autoplay error helper
    • add friendly autoplay error helper
    • use FES for failed manual media play
    • Adding image element to createImg callback
    • Added fract() method to calculation.js
    Source code(tar.gz)
    Source code(zip)
    p5.js(4.33 MB)
    p5.min.js(608.41 KB)
    p5.sound.js(440.00 KB)
    p5.sound.min.js(180.88 KB)
    p5.zip(982.63 KB)
  • 0.10.0(Oct 14, 2019)

    • merge p5.dom.js into p5.js

    • update source and samples to ES6

    • add erase() and noErase()

    • pointer lock API

    • promise-based preload

    • add optional crossOrigin parameter to createImg()

    • require alt text when creating images

    • remove _pixelsDirty

    • angleBetween() now returns value between -PI and PI

    • copy() now works with 2D and WebGL

    • perPixelLighting fixed in Android 8+ for WebGL

    • zoom sensitivity for orbitControl

    • specularColor() for WebGL mode

    • frustum() for WebGL mode

    • clear depth every frame in WebGL mode

    • emissive() lighting for WebGL mode

    • spotLight() lighting for WebGL mode

    • removeLights() function for WebGL mode

    • falloff() for lighting in WebGL mode

    • loadModel() can now load .stl files

    Source code(tar.gz)
    Source code(zip)
    p5.js(4.11 MB)
    p5.min.js(546.01 KB)
    p5.sound.js(441.87 KB)
    p5.sound.min.js(145.16 KB)
    p5.zip(1.61 MB)
  • 0.9.0(Jul 2, 2019)

    • Implement 'deltaTime' global variable
    • Added falloff function
    • default drawMode as FILL in WebGL
    • improved uniform names
    • unify lighting
    • Add Tint support in WebGL
    • add localStorage support
    • 3D createGraphics setAttributes working
    • removing sync option
    • add p5-test suite
    • fix updatePixels bug
    • fix onBlur undefined return
    • fix text to bindTextures during shader initialization
    • fix directional light direction calculation wrt. view matrix
    • Fix nfs()
    • fix mouseX, mouseY and touchX, touchY for noCanvas
    • fix video.get()
    • fix createCapture loaded event to wait for metadata
    • fix mobile safari for touch event duplication
    • add unit tests for jsonp
    • add mouse events unit tests
    • core/attributes.js: add unit tests
    • core/transform.js: add unit tests
    • core/p5.Element.js: add more unit tests
    • events/mouse.js: add unit tests
    • events/keyboard.js: create unit tests
    • events/touch.js: create unit tests
    • image/pixels.js : add unit tests
    • image/filters.js: add unit tests
    • upgrade mocha
    • port node tests to tdd style
    • move config to task runner
    • add recommended extensions for vscode
    • add eslint plugin
    • add grunt-simple-nyc
    Source code(tar.gz)
    Source code(zip)
    p5.dom.js(102.08 KB)
    p5.dom.min.js(21.32 KB)
    p5.js(3.61 MB)
    p5.min.js(461.49 KB)
    p5.sound.js(429.30 KB)
    p5.sound.min.js(145.14 KB)
    p5.zip(1.50 MB)
  • 0.8.0(Apr 8, 2019)

    • updated reference examples to ES6
    • updated dev docs to ES6
    • fix p5.dom drop() function
    • add toggleClass(), hasClass(), addClass() methods to p5.dom
    • fix get() method for createCapture()
    • fix style() function for positioning
    • fix normals for cylinder() and cone()
    • fix arc()
    • fix handling of keyboard events with multiple sketch instances
    • fix for pixel updating
    • add p5.Graphics.reset()
    • fix for circle() to take diameter instead of radius
    • fix for square() to accept corner radius argument
    • fix Infinity handling for int(), float(), hex()
    • fix texture wrapping
    • add image() to webgl mode
    • added blendMode() to webgl mode
    • add resetShader() method
    • add lights() function to webgl mode
    • implemented shininess()
    • setAttributes() can be called before gl canvas is created
    Source code(tar.gz)
    Source code(zip)
    p5.dom.js(102.29 KB)
    p5.dom.min.js(21.38 KB)
    p5.js(2.95 MB)
    p5.min.js(454.22 KB)
    p5.sound.js(429.30 KB)
    p5.sound.min.js(145.14 KB)
    p5.zip(813.63 KB)
  • 0.7.3(Jan 20, 2019)

  • 0.7.0(Aug 10, 2018)

  • 0.6.1(Apr 28, 2018)

  • 0.6.0(Jan 20, 2018)

    • Add all-contributors to README
    • Replace jscs and jshint with eslint
    • Add code lint autofix using prettier
    • Fix global doubleClicked event not firing
    • Fix double click function not firing for p5.Element
    • Updates to param validation
    • Added karma benchmarking
    • Enable self-hosting yui docs
    • Improvements to yuidocs and reference
    • Make 'rotate' default to Z-axis
    • Improvements to p5.Vector
    • WEBGL lighting updates
    • Adding custom shader support
    • Clarify gruntfile
    Source code(tar.gz)
    Source code(zip)
    p5.d.ts(409.15 KB)
    p5.dom.js(89.43 KB)
    p5.dom.min.js(19.13 KB)
    p5.global-mode.d.ts(223.08 KB)
    p5.js(2.55 MB)
    p5.min.js(384.31 KB)
    p5.sound.js(413.97 KB)
    p5.sound.min.js(142.31 KB)
    p5.zip(714.69 KB)
  • 0.5.16(Oct 12, 2017)

  • 0.5.12(Aug 12, 2017)

    • adding p5.StringDict, p5.NumberDict, p5.TypedDict
    • fix to textWidth()
    • fix bug with preload() / decrementPreload
    • fix bug with frameRate()
    • cache fillStyle and strokeStyle to improve performance
    • fix to webgl immediate mode to improve performance
    • added #rgba and #rrggbbaa support
    • added doubleClicked() function
    • added constants DEG_TO_RAD & RAD_TO_DEG
    • reorganization of unit tests to support modularization
    • fixes and examples added to docs
    • update opentype to 0.5.7
    • fix for loadFont()
    • updates to p5.dom to support checkbox and radio input elements
    • added issue template
    • update p5.sound 0.3.5
    • update p5.dom 0.3.4
    Source code(tar.gz)
    Source code(zip)
    p5.dom.js(68.64 KB)
    p5.dom.min.js(17.68 KB)
    p5.js(1.21 MB)
    p5.min.js(360.83 KB)
    p5.sound.js(350.90 KB)
    p5.sound.min.js(123.81 KB)
    p5.zip(1.24 MB)
  • 0.5.11(Jun 1, 2017)

  • 0.5.9(May 10, 2017)

    • enable select() for existing dropdown element
    • fix httpPost, httpGet
    • add default application/json header for httpGet
    • fixing broken select() on touch issue (duplicate touch/mouse event firing issue still exists in some browsers)
    • change getNumber() to getNum()
    • handle empty cell for p5.Table getNum()
    • handling of blank lines in p5.Table
    • fix saveTable() function, now currently formats output
    • remove need for type argument in saveTable()
    • fix map() with HSB constrained values
    • update opentype to 0.6.9
    • textFont() now returns current font
    • webgl shape texturing fix
    • reference updates for updatePixels() and loadPixels()
    • reference updates for filter() documentation
    Source code(tar.gz)
    Source code(zip)
    p5.dom.js(67.17 KB)
    p5.dom.min.js(17.04 KB)
    p5.js(989.35 KB)
    p5.min.js(277.85 KB)
    p5.sound.js(311.97 KB)
    p5.sound.min.js(105.50 KB)
    p5.zip(414.83 KB)
Owner
Processing Foundation
We create platforms to promote software literacy within the visual arts, and visual literacy within technology-related fields.
Processing Foundation
danfo.js is an open source, JavaScript library providing high performance, intuitive, and easy to use data structures for manipulating and processing structured data.

Danfojs: powerful javascript data analysis toolkit What is it? Danfo.js is a javascript package that provides fast, flexible, and expressive data stru

JSdata 4k Dec 29, 2022
A port of the Processing visualization language to JavaScript.

⚠️ This project has been archived ⚠️ With the development of p5js and the API advances in Processing itself, as well as Processing.js itself having be

Processing.js 3.1k Jan 4, 2023
mxGraph is a fully client side JavaScript diagramming library

NOTE 09.11.2020 : Development on mxGraph has now stopped, this repo is effectively end of life. Known forks: https://github.com/jsGraph/mxgraph https:

JGraph 6.5k Dec 30, 2022
An aggregator for communities of Boilers, maintained and developed by Purdue students

Boiler Bulletin An aggregator for communities of Boilers, maintained and developed by Purdue students. Users can: Post links to online communities for

Kai Tinkess 2 Jan 23, 2022
Using ASP.NET Core, SignalR, and ChartJs to create real-time updating charts

Real-time Charts with ASP.NET Core, SignalR, and Chart.js This project shows how to update a real-time chart in your web browser using technologies li

Khalid Abuhakmeh 11 Nov 25, 2022
A server-side-rendered charting library for Fresh

fresh_charts A server side rendered charting library for Fresh based on Chart.js. Usage There are two main ways to render a chart. There is the JSX/TS

Deno 57 Jan 2, 2023
CyberGraph is a 3D-graph based, user based social connection explorer

CyberGraph is a 3D-graph based, user based social connection explorer. It has some cool features like 3d node graph, dynamic loading bar, immersive user experience, cyber mode(10-hops friendship network display) and focus mode(aggregated connection display).

CyberConnect 16 Nov 25, 2022
Apache Superset is a Data Visualization and Data Exploration Platform

Superset A modern, enterprise-ready business intelligence web application. Why Superset? | Supported Databases | Installation and Configuration | Rele

The Apache Software Foundation 49.9k Dec 31, 2022
A cross platform high-performance graphics system.

spritejs.org Spritejs is a cross platform high-performance graphics system, which can render graphics on web, node, desktop applications and mini-prog

null 5.1k Dec 24, 2022
Gephi - The Open Graph Viz Platform

Gephi - The Open Graph Viz Platform Gephi is an award-winning open-source platform for visualizing and manipulating large graphs. It runs on Windows,

Gephi 5.1k Jan 4, 2023
A platform for creating interactive data visualizations

owid-grapher This is the project we use at Our World in Data to create embeddable visualizations like this one (click for interactive): ⚠️ This projec

Our World in Data 1.1k Jan 4, 2023
Chart image and QR code web API

QuickChart QuickChart is a service that generates images of charts from a URL. Because these charts are simple images, they are very easy to embed in

Ian Webster 1.3k Dec 25, 2022
Beautiful and interactive javascript charts for Java-based web applications.

Wicked Charts Beautiful and interactive JavaScript charts for Java-based web applications. Check out the Changelog Check out the Feature Overview with

adesso SE 85 Aug 23, 2022
HTML5 Canvas Gauge. Tiny implementation of highly configurable gauge using pure JavaScript and HTML5 canvas. No dependencies. Suitable for IoT devices because of minimum code base.

HTML Canvas Gauges v2.1 Installation Documentation Add-Ons Special Thanks License This is tiny implementation of highly configurable gauge using pure

Mykhailo Stadnyk 1.5k Dec 30, 2022
Leon Sans is a geometric sans-serif typeface made with code in 2019 by Jongmin Kim.

Leon Sans Leon Sans is a geometric sans-serif typeface made with code in 2019 by Jongmin Kim. It allows to change font weight dynamically and to creat

Jongmin Kim 10.1k Jan 2, 2023
qr code generator

node-qrcode QR code/2d barcode generator. Highlights Installation Usage Error correction level QR Code capacity Encoding Modes Binary data Multibyte c

Ryan Day 6.3k Jan 4, 2023
A repostory of samples, which demonstrates, how to use the 'Power Tools' extension for Visual Studio Code.

vscode-powertools-samples A repository of samples, which demonstrates, how to use the Power Tools extension for Visual Studio Code. Apps data-url-conv

e.GO Mobile 7 Feb 3, 2022
The code base that powered India in Pixels' YouTube channel for more than 2 years - now open sourced for you to use on your own projects

India in Pixels Bar Chart Racing For over two years, this nifty code base powered India in Pixels' YouTube channel with videos fetching over millions

India in Pixels 141 Dec 4, 2022
Powerful data visualization library based on G2 and React.

BizCharts New charting and visualization library has been released: http://bizcharts.net/products/bizCharts. More details about BizCharts Features Rea

Alibaba 6k Jan 3, 2023