Skip to content

Adds createFilterShader() and custom shader support to the webGL filter() function #6237

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 50 commits into from
Aug 2, 2023

Conversation

wong-justin
Copy link
Contributor

Addresses: #4820, #5571

Initial changes:

  • filter() accepts a shader parameter
  • Added property for storing current filter shader

Will also change:

  • Apply the current filter shader and render to main canvas / parent renderer
  • Add shaders for constants like GRAYSCALE, etc
  • Clarifying docs to show new functionality

p5.Framebuffer is an alternative graphics layer to pursue if p5.Graphics doesn't work. Either one is nice if it gives a simple way to call shader(), renders to main with something like texture() plane() / copyPixels(), and gives resizing and other coverage for free. Right now I started a framebuffer approach after running into two difficult p5.Graphics errors.

(This PR is a working draft that's part of the GSoC 2023 project 'Supporting shader-based filters in p5.js", mentored by @aferriss and @aceslowman)


  • npm run lint passes
  • [Inline documentation] is included / updated
  • [Unit tests] are included / updated

although this line isn't necessary
1 - inline docs adds new @method signature
2 - build process updates docs/parameterData.json
3 - validateParameters accepts overloaded signature
@@ -576,6 +577,10 @@ p5.RendererGL = class RendererGL extends p5.Renderer {
// set of framebuffers in use
this.framebuffers = new Set();

// for post processing step
this.filterShader = undefined;
this.filterFramebuffer = undefined;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

btw, in case it's useful, RendererGL has access to a lazily-created framebuffer that matches its size, currently used for its loadPixels implementation:

* @private
* @returns {p5.Framebuffer} A p5.Framebuffer set to match the size and settings
* of the renderer's canvas. It will be created if it does not yet exist, and
* reused if it does.
*/
_getTempFramebuffer() {

Might work if you use that for filters too? But there could be other reasons why you want a separate one too.

@wong-justin wong-justin changed the title Shader Filters WEBGL Shader Filters Jun 30, 2023
filter() will only receive one parameter, the arguments list
since it is an overloaded function
// Bind the shader to the pg renderer,
// since when the user makes it with createShader() it binds to the main
userShader =
new p5.Shader(pg._renderer, userShader._vertSrc, userShader._fragSrc);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We probably don't wanna create a shader every frame, can we cache it somehow?


/**
* @method filter
* @param {p5.Shader} shaderFilter A shader that's been loaded
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add in example, alt text, supporting documentation, etc.

// Bind the shader to the pg renderer,
// since when the user makes it with createShader() it binds to the main
userShader =
new p5.Shader(pg._renderer, userShader._vertSrc, userShader._fragSrc);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we provide users with a default vertex shader?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think so. Here are some related thoughts: #6144
I'm leaning towards the simplest option, just exposing a default vertex shader as a string constant.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Another thought, we could make a function to make a shader that only takes in a fragment shader and automatically uses that default vertex shader? Like createFilterShader()?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A default vertex shader as a string constant honestly makes sense to me, although I'd like to hear other thoughts. Would the idea be that they would use createShader() like normal, but pass in the new constant?

// this.filterShader = map(args[0], {GRAYSCALE: grayscaleShader, ...})
// filterOperationParameter = undefined or args[1]

if (typeof args[0] === 'string') {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this the right check? I think we need to know if args[0] is a p5.shader, or a filter constant ( BLUR, INVERT, etc), and if not, we print an error. Aren't the filter constants strings?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, that's the check. Although there shouldn't need to be a third case handling errors, since the args get validated in the parent filter() function: pixels.js#L472

Right now the string / filter constant case has an error placeholder. It will be replaced in the next PR that implements the shader versions of filter constants. And the current code handles the p5.Shader case.

);
if (!isSameUserShader) {
this.filterShader =
new p5.Shader(pg._renderer, userShader._vertSrc, userShader._fragSrc);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If we're supplying a shader created with createFilterShader() can we skip this?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed to skip this tiny optimization for now

*
* The fragment shader is given a uniform, or variable, called `tex0`.
* Note:
* - The fragment shader is given a uniform, or variable, called `tex0`.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we change the language to clarify that the default input is a texture called tex0?

Something like: "The fragment shader is provided with a single texture input uniform called tex0"

// so it's just created here once on the initial filter call.
if (!this.filterGraphicsLayer) {
this.filterGraphicsLayer =
new p5.Graphics(this.width, this.height, constants.WEBGL, this._pInst);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could it not be working with pgraphics because this._pInst is referring to the main sketch?

including resolving a conflict where a test was added in the same
place in test/unit/p5.Renderer.GL
- old flip was using vTexCoord.y, which let some intermediate
values remain upside down
- but new flip uses scale(1,-1) which makes everything look
right-side up
assert.notDeepEqual(p1, p2);
});

// test('default constant shader makes changes to main canvas', function() {
Copy link
Contributor

@aferriss aferriss Aug 1, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@wong-justin can you remove this commented code before we merge?

@aferriss aferriss changed the title WEBGL Shader Filters Adds createFilterShader() and custom shader support to the webGL filter() function Aug 1, 2023
@wong-justin wong-justin marked this pull request as ready for review August 2, 2023 07:51
@aferriss aferriss merged commit e0678fb into processing:main Aug 2, 2023
AmrikSD referenced this pull request in Potato-Blood/pogo Nov 10, 2023
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [p5](https://togithub.com/processing/p5.js) | devDependencies | minor
| [`1.7.0` -> `1.8.0`](https://renovatebot.com/diffs/npm/p5/1.7.0/1.8.0)
|
|
[@types/p5](https://togithub.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/p5)
([source](https://togithub.com/DefinitelyTyped/DefinitelyTyped)) |
devDependencies | patch | [`1.7.0` ->
`1.7.3`](https://renovatebot.com/diffs/npm/@types%2fp5/1.7.0/1.7.3) |

---

### Release Notes

<details>
<summary>processing/p5.js (p5)</summary>

###
[`v1.8.0`](https://togithub.com/processing/p5.js/releases/tag/v1.8.0)

[Compare
Source](https://togithub.com/processing/p5.js/compare/v1.7.0...v1.8.0)

<!-- Release notes generated using configuration in .github/release.yml
at v1.8.0 -->

#### What's Changed 🎊

##### WebGL

In this release, p5.js added some new WebGL mode tools. Filters now run
in shaders for extra speed, and you can now run custom filter shaders,
even on 2D canvases. You can now cut holes in shapes with
`beginContour()` and apply vector masks with `beginClip()`. You can
reuse shapes more efficiently with `buildGeometry()` and instanced
rendering. Finally, we have also fixed a number of bugs. *- Summary
written by [@&#8203;davepagurek](https://togithub.com/davepagurek) ✨*

- Add support for beginContour() and endContour() in Webgl mode by
[@&#8203;davepagurek](https://togithub.com/davepagurek) in
[https://github.com/processing/p5.js/pull/6297](https://togithub.com/processing/p5.js/pull/6297)
- Fix stroke rendering when drawing to framebuffers by
[@&#8203;davepagurek](https://togithub.com/davepagurek) in
[https://github.com/processing/p5.js/pull/6304](https://togithub.com/processing/p5.js/pull/6304)
- Adds createFilterShader() and custom shader support to the webGL
filter() function by
[@&#8203;wong-justin](https://togithub.com/wong-justin) in
[https://github.com/processing/p5.js/pull/6237](https://togithub.com/processing/p5.js/pull/6237)
- Fix WebGL text not rendering when rotated 90 degrees by
[@&#8203;davepagurek](https://togithub.com/davepagurek) in
[https://github.com/processing/p5.js/pull/6316](https://togithub.com/processing/p5.js/pull/6316)
- Fix reading between nested active framebuffers by
[@&#8203;davepagurek](https://togithub.com/davepagurek) in
[https://github.com/processing/p5.js/pull/6314](https://togithub.com/processing/p5.js/pull/6314)
- Add methods to construct p5.Geometry from other p5 drawing functions
by [@&#8203;davepagurek](https://togithub.com/davepagurek) in
[https://github.com/processing/p5.js/pull/6287](https://togithub.com/processing/p5.js/pull/6287)
- Handle missing exact edge vertices in buildGeometry by
[@&#8203;davepagurek](https://togithub.com/davepagurek) in
[https://github.com/processing/p5.js/pull/6320](https://togithub.com/processing/p5.js/pull/6320)
- Fix strokes on framebuffers with different aspect ratios by
[@&#8203;davepagurek](https://togithub.com/davepagurek) in
[https://github.com/processing/p5.js/pull/6339](https://togithub.com/processing/p5.js/pull/6339)
- Fix freed geometry leaving attributes in a broken state by
[@&#8203;davepagurek](https://togithub.com/davepagurek) in
[https://github.com/processing/p5.js/pull/6323](https://togithub.com/processing/p5.js/pull/6323)
- Improve performance of line rendering by
[@&#8203;davepagurek](https://togithub.com/davepagurek) in
[https://github.com/processing/p5.js/pull/6230](https://togithub.com/processing/p5.js/pull/6230)
- Add support for webGL instancing by
[@&#8203;RandomGamingDev](https://togithub.com/RandomGamingDev) in
[https://github.com/processing/p5.js/pull/6276](https://togithub.com/processing/p5.js/pull/6276)
- Add shaders for filter() constants, and use them by default in P2D by
[@&#8203;wong-justin](https://togithub.com/wong-justin) in
[https://github.com/processing/p5.js/pull/6324](https://togithub.com/processing/p5.js/pull/6324)
- Fix clip() on both the main canvas and framebuffers by
[@&#8203;davepagurek](https://togithub.com/davepagurek) in
[https://github.com/processing/p5.js/pull/6376](https://togithub.com/processing/p5.js/pull/6376)
- fixed texture filtering bug in p5.Framebuffer by
[@&#8203;KeyboardSounds](https://togithub.com/KeyboardSounds) in
[https://github.com/processing/p5.js/pull/6420](https://togithub.com/processing/p5.js/pull/6420)
- Fix clear() on framebuffers on Intel macs by
[@&#8203;davepagurek](https://togithub.com/davepagurek) in
[https://github.com/processing/p5.js/pull/6429](https://togithub.com/processing/p5.js/pull/6429)
- Fix textureMode(IMAGE) + beginShape(TESS) by
[@&#8203;davepagurek](https://togithub.com/davepagurek) in
[https://github.com/processing/p5.js/pull/6366](https://togithub.com/processing/p5.js/pull/6366)
- fixed issue
[#&#8203;6440](https://togithub.com/processing/p5.js/issues/6440) by
[@&#8203;Gaurav-1306](https://togithub.com/Gaurav-1306) in
[https://github.com/processing/p5.js/pull/6446](https://togithub.com/processing/p5.js/pull/6446)
- Erode, dilate, threshold shader filters match closer to CPU filters by
[@&#8203;wong-justin](https://togithub.com/wong-justin) in
[https://github.com/processing/p5.js/pull/6405](https://togithub.com/processing/p5.js/pull/6405)
- Update WebGL blur filter to match CPU blur more by
[@&#8203;davepagurek](https://togithub.com/davepagurek) in
[https://github.com/processing/p5.js/pull/6460](https://togithub.com/processing/p5.js/pull/6460)
- Fix camera flipping on framebuffers between push/pop calls by
[@&#8203;davepagurek](https://togithub.com/davepagurek) in
[https://github.com/processing/p5.js/pull/6471](https://togithub.com/processing/p5.js/pull/6471)
- Setuniform by [@&#8203;Gaurav-1306](https://togithub.com/Gaurav-1306)
in
[https://github.com/processing/p5.js/pull/6474](https://togithub.com/processing/p5.js/pull/6474)
- resolved issue
[#&#8203;6399](https://togithub.com/processing/p5.js/issues/6399) by
[@&#8203;Gaurav-1306](https://togithub.com/Gaurav-1306) in
[https://github.com/processing/p5.js/pull/6480](https://togithub.com/processing/p5.js/pull/6480)
- Auto-bind filter shaders to the filter graphic by
[@&#8203;davepagurek](https://togithub.com/davepagurek) in
[https://github.com/processing/p5.js/pull/6482](https://togithub.com/processing/p5.js/pull/6482)
- new PR for issue
[#&#8203;6383](https://togithub.com/processing/p5.js/issues/6383)(Problem
for diagonal) by
[@&#8203;perminder-17](https://togithub.com/perminder-17) in
[https://github.com/processing/p5.js/pull/6488](https://togithub.com/processing/p5.js/pull/6488)

##### Friendly Error System (FES)

- Add Hindi translation to FES by
[@&#8203;Ayush23Dash](https://togithub.com/Ayush23Dash) in
[https://github.com/processing/p5.js/pull/6272](https://togithub.com/processing/p5.js/pull/6272)
- Re-worded lines 413 and 446 of FES Developer Notes by
[@&#8203;OnexiMedina](https://togithub.com/OnexiMedina) in
[https://github.com/processing/p5.js/pull/6307](https://togithub.com/processing/p5.js/pull/6307)
- Reference FES Contributor Docs inside FES Directory along with a
diagram to understand usages of FES functions by
[@&#8203;Ayush23Dash](https://togithub.com/Ayush23Dash) in
[https://github.com/processing/p5.js/pull/6335](https://togithub.com/processing/p5.js/pull/6335)
- Fixed typing errors in fes_core.js documentation by
[@&#8203;Garima3110](https://togithub.com/Garima3110) in
[https://github.com/processing/p5.js/pull/6478](https://togithub.com/processing/p5.js/pull/6478)
- Update friendly_error_system.md by
[@&#8203;Garima3110](https://togithub.com/Garima3110) in
[https://github.com/processing/p5.js/pull/6481](https://togithub.com/processing/p5.js/pull/6481)
- Update fes_reference_dev_notes.md by
[@&#8203;Garima3110](https://togithub.com/Garima3110) in
[https://github.com/processing/p5.js/pull/6486](https://togithub.com/processing/p5.js/pull/6486)

##### Reference Documentation Update

We updated a group of p5.js Reference pages as part of 2023 Season of
Docs (SoD) program, with a goal to make them more accessible and
beginner-friendly. Thanks to the SoD technical writer
[@&#8203;nickmcintyre](https://togithub.com/nickmcintyre) ✨.

- Edit docs for math functions by
[@&#8203;nickmcintyre](https://togithub.com/nickmcintyre) in
[https://github.com/processing/p5.js/pull/6281](https://togithub.com/processing/p5.js/pull/6281)
- docs(typography): fix typos in example for textFont by
[@&#8203;meezwhite](https://togithub.com/meezwhite) in
[https://github.com/processing/p5.js/pull/6401](https://togithub.com/processing/p5.js/pull/6401)
- Edit docs for p5.Vector by
[@&#8203;nickmcintyre](https://togithub.com/nickmcintyre) in
[https://github.com/processing/p5.js/pull/6340](https://togithub.com/processing/p5.js/pull/6340)
- Edit docs for pixels functions by
[@&#8203;nickmcintyre](https://togithub.com/nickmcintyre) in
[https://github.com/processing/p5.js/pull/6390](https://togithub.com/processing/p5.js/pull/6390)
- Edit docs for loading & displaying images by
[@&#8203;nickmcintyre](https://togithub.com/nickmcintyre) in
[https://github.com/processing/p5.js/pull/6425](https://togithub.com/processing/p5.js/pull/6425)
- Update docs for p5.Image by
[@&#8203;nickmcintyre](https://togithub.com/nickmcintyre) in
[https://github.com/processing/p5.js/pull/6434](https://togithub.com/processing/p5.js/pull/6434)
- Edit docs for p5.Font by
[@&#8203;nickmcintyre](https://togithub.com/nickmcintyre) in
[https://github.com/processing/p5.js/pull/6453](https://togithub.com/processing/p5.js/pull/6453)
- Edit docs for image by
[@&#8203;nickmcintyre](https://togithub.com/nickmcintyre) in
[https://github.com/processing/p5.js/pull/6424](https://togithub.com/processing/p5.js/pull/6424)
- Edit docs for typography load and display by
[@&#8203;nickmcintyre](https://togithub.com/nickmcintyre) in
[https://github.com/processing/p5.js/pull/6450](https://togithub.com/processing/p5.js/pull/6450)

##### Google Summer of Code (GSoC) 2023 Wrap up

- 🌸 Added GSoC wrap up! by
[@&#8203;dewanshDT](https://togithub.com/dewanshDT) in
[https://github.com/processing/p5.js/pull/6403](https://togithub.com/processing/p5.js/pull/6403)
- Gsoc 23 Wrapup post by
[@&#8203;Ayush23Dash](https://togithub.com/Ayush23Dash) in
[https://github.com/processing/p5.js/pull/6415](https://togithub.com/processing/p5.js/pull/6415)
- add GSoC'23 wrapup post for Justin Wong by
[@&#8203;wong-justin](https://togithub.com/wong-justin) in
[https://github.com/processing/p5.js/pull/6418](https://togithub.com/processing/p5.js/pull/6418)
- Create lichlyter_gsoc\_2023.md by
[@&#8203;katlich112358](https://togithub.com/katlich112358) in
[https://github.com/processing/p5.js/pull/6455](https://togithub.com/processing/p5.js/pull/6455)
- Create munusshih_gsoc\_2023.md by
[@&#8203;munusshih](https://togithub.com/munusshih) in
[https://github.com/processing/p5.js/pull/6461](https://togithub.com/processing/p5.js/pull/6461)

##### Other Code Update

- Ask to disable printing when print() called with no arguments by
[@&#8203;davepagurek](https://togithub.com/davepagurek) in
[https://github.com/processing/p5.js/pull/6253](https://togithub.com/processing/p5.js/pull/6253)
- fix textWidth() and textToPoints() by
[@&#8203;munusshih](https://togithub.com/munusshih) in
[https://github.com/processing/p5.js/pull/6184](https://togithub.com/processing/p5.js/pull/6184)
- Fix issue where nf with 0 'right' parameter returns undefined in
string by [@&#8203;limzykenneth](https://togithub.com/limzykenneth) in
[https://github.com/processing/p5.js/pull/6291](https://togithub.com/processing/p5.js/pull/6291)
- Update environment.js with fix for frameRate description by
[@&#8203;quinton-ashley](https://togithub.com/quinton-ashley) in
[https://github.com/processing/p5.js/pull/6269](https://togithub.com/processing/p5.js/pull/6269)
- Implement clip() to shapes by
[@&#8203;davepagurek](https://togithub.com/davepagurek) in
[https://github.com/processing/p5.js/pull/6306](https://togithub.com/processing/p5.js/pull/6306)
- Clarified workflow for contributing documentation by
[@&#8203;thatguyseven](https://togithub.com/thatguyseven) in
[https://github.com/processing/p5.js/pull/6312](https://togithub.com/processing/p5.js/pull/6312)
- Clears MediaElement canvas at the beginning of every frame by
[@&#8203;donaldzhu](https://togithub.com/donaldzhu) in
[https://github.com/processing/p5.js/pull/6309](https://togithub.com/processing/p5.js/pull/6309)
- Clean up gruntfile release related steps by
[@&#8203;Qianqianye](https://togithub.com/Qianqianye) in
[https://github.com/processing/p5.js/pull/6321](https://togithub.com/processing/p5.js/pull/6321)
- fix-return-type by
[@&#8203;asukaminato0721](https://togithub.com/asukaminato0721) in
[https://github.com/processing/p5.js/pull/6326](https://togithub.com/processing/p5.js/pull/6326)
- fix HALF_FLOAT by
[@&#8203;asukaminato0721](https://togithub.com/asukaminato0721) in
[https://github.com/processing/p5.js/pull/6330](https://togithub.com/processing/p5.js/pull/6330)
- Added .gitattributes to Increase compatability with Window users and
line endings by [@&#8203;SilasVM](https://togithub.com/SilasVM) in
[https://github.com/processing/p5.js/pull/6317](https://togithub.com/processing/p5.js/pull/6317)
- update all contributors setup by
[@&#8203;gr2m](https://togithub.com/gr2m) in
[https://github.com/processing/p5.js/pull/6341](https://togithub.com/processing/p5.js/pull/6341)
- refine canvas' type by
[@&#8203;asukaminato0721](https://togithub.com/asukaminato0721) in
[https://github.com/processing/p5.js/pull/6328](https://togithub.com/processing/p5.js/pull/6328)
- MouseEvent, WheelEvent and KeyboardEvent type by
[@&#8203;asukaminato0721](https://togithub.com/asukaminato0721) in
[https://github.com/processing/p5.js/pull/6329](https://togithub.com/processing/p5.js/pull/6329)
- fixed-wrong-capture-size-and-freeze-issue by
[@&#8203;Prateek93a](https://togithub.com/Prateek93a) in
[https://github.com/processing/p5.js/pull/5159](https://togithub.com/processing/p5.js/pull/5159)
- add more event type by
[@&#8203;asukaminato0721](https://togithub.com/asukaminato0721) in
[https://github.com/processing/p5.js/pull/6379](https://togithub.com/processing/p5.js/pull/6379)
- Main by [@&#8203;j-adel](https://togithub.com/j-adel) in
[https://github.com/processing/p5.js/pull/6374](https://togithub.com/processing/p5.js/pull/6374)
- Update labeler Github Action by
[@&#8203;stampyzfanz](https://togithub.com/stampyzfanz) in
[https://github.com/processing/p5.js/pull/6395](https://togithub.com/processing/p5.js/pull/6395)
- add unregisterMethod function by
[@&#8203;capGoblin](https://togithub.com/capGoblin) in
[https://github.com/processing/p5.js/pull/6426](https://togithub.com/processing/p5.js/pull/6426)
- add before/after preload and setup by
[@&#8203;capGoblin](https://togithub.com/capGoblin) in
[https://github.com/processing/p5.js/pull/6433](https://togithub.com/processing/p5.js/pull/6433)
- Fix: Misleading error message when NaN passed by
[@&#8203;capGoblin](https://togithub.com/capGoblin) in
[https://github.com/processing/p5.js/pull/6464](https://togithub.com/processing/p5.js/pull/6464)
- Support pixel density on p5.Image (fixes issue
[#&#8203;6114](https://togithub.com/processing/p5.js/issues/6114)) by
[@&#8203;Gaurav-1306](https://togithub.com/Gaurav-1306) in
[https://github.com/processing/p5.js/pull/6447](https://togithub.com/processing/p5.js/pull/6447)
- Fix orphan canvas when sketch is removed before canvas creation by
[@&#8203;limzykenneth](https://togithub.com/limzykenneth) in
[https://github.com/processing/p5.js/pull/6355](https://togithub.com/processing/p5.js/pull/6355)

##### Other Documentation Update

- Fixed GitHub capitalization typo in contributor_docs by
[@&#8203;SilasVM](https://togithub.com/SilasVM) in
[https://github.com/processing/p5.js/pull/6284](https://togithub.com/processing/p5.js/pull/6284)
- Fixing typo in "What are issues?" by
[@&#8203;snwarner22](https://togithub.com/snwarner22) in
[https://github.com/processing/p5.js/pull/6288](https://togithub.com/processing/p5.js/pull/6288)
- Fixed GitHub spelling in CONTRIBUTING.md by
[@&#8203;SilasVM](https://togithub.com/SilasVM) in
[https://github.com/processing/p5.js/pull/6295](https://togithub.com/processing/p5.js/pull/6295)
- Fixed grammatical errors in contributor_guidelines.md by
[@&#8203;thatguyseven](https://togithub.com/thatguyseven) in
[https://github.com/processing/p5.js/pull/6296](https://togithub.com/processing/p5.js/pull/6296)
- Update documentation_style_guide.md with new guideline by
[@&#8203;zelf0](https://togithub.com/zelf0) in
[https://github.com/processing/p5.js/pull/6334](https://togithub.com/processing/p5.js/pull/6334)
- add missing code contributors to all contributors in README and
`.all-contributors.rc` file by [@&#8203;gr2m](https://togithub.com/gr2m)
in
[https://github.com/processing/p5.js/pull/6349](https://togithub.com/processing/p5.js/pull/6349)
- docs(all-contributors): remove
[@&#8203;stellartux](https://togithub.com/stellartux) as requested by
[@&#8203;gr2m](https://togithub.com/gr2m) in
[https://github.com/processing/p5.js/pull/6368](https://togithub.com/processing/p5.js/pull/6368)
- docs(src/utilities): Use `describe()` instead of `@alt` by
[@&#8203;Zearin](https://togithub.com/Zearin) in
[https://github.com/processing/p5.js/pull/5598](https://togithub.com/processing/p5.js/pull/5598)
- Fix typo in export path to fix dev mode by
[@&#8203;mykongee](https://togithub.com/mykongee) in
[https://github.com/processing/p5.js/pull/6373](https://togithub.com/processing/p5.js/pull/6373)
- Improve Readme for future Contributors to codebase by
[@&#8203;Ayush23Dash](https://togithub.com/Ayush23Dash) in
[https://github.com/processing/p5.js/pull/6260](https://togithub.com/processing/p5.js/pull/6260)
- Fixed mousePressed() Example Error by
[@&#8203;Utkarsh3128](https://togithub.com/Utkarsh3128) in
[https://github.com/processing/p5.js/pull/6413](https://togithub.com/processing/p5.js/pull/6413)
- Update README.md by
[@&#8203;katlich112358](https://togithub.com/katlich112358) in
[https://github.com/processing/p5.js/pull/6458](https://togithub.com/processing/p5.js/pull/6458)
- Fixed typing errors in validate_params.js file's documentation by
[@&#8203;Garima3110](https://togithub.com/Garima3110) in
[https://github.com/processing/p5.js/pull/6473](https://togithub.com/processing/p5.js/pull/6473)
- typo and unused variable from core by
[@&#8203;benschac](https://togithub.com/benschac) in
[https://github.com/processing/p5.js/pull/6476](https://togithub.com/processing/p5.js/pull/6476)

#### New Contributors 💗

- [@&#8203;munusshih](https://togithub.com/munusshih) made their first
contribution in
[https://github.com/processing/p5.js/pull/6184](https://togithub.com/processing/p5.js/pull/6184)
- [@&#8203;SilasVM](https://togithub.com/SilasVM) made their first
contribution in
[https://github.com/processing/p5.js/pull/6284](https://togithub.com/processing/p5.js/pull/6284)
- [@&#8203;snwarner22](https://togithub.com/snwarner22) made their first
contribution in
[https://github.com/processing/p5.js/pull/6288](https://togithub.com/processing/p5.js/pull/6288)
- [@&#8203;thatguyseven](https://togithub.com/thatguyseven) made their
first contribution in
[https://github.com/processing/p5.js/pull/6296](https://togithub.com/processing/p5.js/pull/6296)
- [@&#8203;OnexiMedina](https://togithub.com/OnexiMedina) made their
first contribution in
[https://github.com/processing/p5.js/pull/6307](https://togithub.com/processing/p5.js/pull/6307)
- [@&#8203;donaldzhu](https://togithub.com/donaldzhu) made their first
contribution in
[https://github.com/processing/p5.js/pull/6309](https://togithub.com/processing/p5.js/pull/6309)
- [@&#8203;gr2m](https://togithub.com/gr2m) made their first
contribution in
[https://github.com/processing/p5.js/pull/6341](https://togithub.com/processing/p5.js/pull/6341)
- [@&#8203;RandomGamingDev](https://togithub.com/RandomGamingDev) made
their first contribution in
[https://github.com/processing/p5.js/pull/6276](https://togithub.com/processing/p5.js/pull/6276)
- [@&#8203;mykongee](https://togithub.com/mykongee) made their first
contribution in
[https://github.com/processing/p5.js/pull/6373](https://togithub.com/processing/p5.js/pull/6373)
- [@&#8203;j-adel](https://togithub.com/j-adel) made their first
contribution in
[https://github.com/processing/p5.js/pull/6374](https://togithub.com/processing/p5.js/pull/6374)
- [@&#8203;meezwhite](https://togithub.com/meezwhite) made their first
contribution in
[https://github.com/processing/p5.js/pull/6401](https://togithub.com/processing/p5.js/pull/6401)
- [@&#8203;dewanshDT](https://togithub.com/dewanshDT) made their first
contribution in
[https://github.com/processing/p5.js/pull/6403](https://togithub.com/processing/p5.js/pull/6403)
- [@&#8203;Utkarsh3128](https://togithub.com/Utkarsh3128) made their
first contribution in
[https://github.com/processing/p5.js/pull/6413](https://togithub.com/processing/p5.js/pull/6413)
- [@&#8203;KeyboardSounds](https://togithub.com/KeyboardSounds) made
their first contribution in
[https://github.com/processing/p5.js/pull/6420](https://togithub.com/processing/p5.js/pull/6420)
- [@&#8203;capGoblin](https://togithub.com/capGoblin) made their first
contribution in
[https://github.com/processing/p5.js/pull/6426](https://togithub.com/processing/p5.js/pull/6426)
- [@&#8203;Gaurav-1306](https://togithub.com/Gaurav-1306) made their
first contribution in
[https://github.com/processing/p5.js/pull/6446](https://togithub.com/processing/p5.js/pull/6446)
- [@&#8203;katlich112358](https://togithub.com/katlich112358) made their
first contribution in
[https://github.com/processing/p5.js/pull/6455](https://togithub.com/processing/p5.js/pull/6455)
- [@&#8203;Garima3110](https://togithub.com/Garima3110) made their first
contribution in
[https://github.com/processing/p5.js/pull/6473](https://togithub.com/processing/p5.js/pull/6473)
- [@&#8203;benschac](https://togithub.com/benschac) made their first
contribution in
[https://github.com/processing/p5.js/pull/6476](https://togithub.com/processing/p5.js/pull/6476)
- [@&#8203;perminder-17](https://togithub.com/perminder-17) made their
first contribution in
[https://github.com/processing/p5.js/pull/6488](https://togithub.com/processing/p5.js/pull/6488)
- [@&#8203;lakshay451](https://togithub.com/lakshay451) made their first
contribution in
[https://github.com/processing/p5.js/pull/6493](https://togithub.com/processing/p5.js/pull/6493)

**Full Changelog**:
processing/p5.js@v1.7.0...v1.8.0

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about these
updates again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Renovate
Bot](https://togithub.com/renovatebot/renovate).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4yMS4wIiwidXBkYXRlZEluVmVyIjoiMzcuMzUuMiIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==-->

Co-authored-by: Renovate Bot <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants