-
-
Notifications
You must be signed in to change notification settings - Fork 3.3k
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
Improve performance of line rendering #6230
Conversation
src/webgl/p5.DataVector.js
Outdated
* Like a C++ vector, its fixed-length Float32Array backing its contents will | ||
* double in size when it goes over its capacity. | ||
*/ | ||
p5.DataVector = class DataVector { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I know you're referencing c++ with the vector name, but I feel like within the context of p5 it means something different. Is there a clearer name for this class? DataArray?
src/webgl/p5.DataVector.js
Outdated
* | ||
* Like a C++ vector, its fixed-length Float32Array backing its contents will | ||
* double in size when it goes over its capacity. | ||
*/ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Does this class have use outside of p5 rendering internals? Worth exposing more broadly or at least making a inline doc example for future developers here?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think it's probably only useful for things that need a Flaot32Array, which for now is just rendering. An example for devs can't hurt!
src/webgl/p5.RendererGL.Immediate.js
Outdated
@@ -195,12 +195,12 @@ p5.RendererGL.prototype.endShape = function( | |||
this._processVertices(...arguments); | |||
this.isProcessingVertices = false; | |||
if (this._doFill) { | |||
if (this.immediateMode.geometry.vertices.length > 1) { | |||
if (this.immediateMode.geometry.vertices.length >= 3) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
guessing this is because anything less than a triangle can't have a fill right? Just want to make sure there isn't some weird reason why this was originally set to 1
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Right! I noticed that in that example where we're drawing a bunch of lines, it was still trying to bind fill buffers. Lines don't have fills, and points are drawn using a separate _drawPoints()
method, so I think this should be safe.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is awesome! Thanks so much for taking another look at this. I feel much better about these changes knowing it's wins across the board.
Was backface culling actually making a difference? When trying your test sketch I couldn't notice a performance change while turning it on and off.
I left some small comments throughout, but overall I think this is great!
Backface culling isn't a performance gain on its own, but since some users turn it on occasionally, we used to have some code to temporarily turn it off and then restore its state when drawing lines. It was that saving/restoring bit that was slow, which is gone now 🙂 The culling toggle in the sketch is to help check that lines don't visually break when culling is turned on. |
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 [@​davepagurek](https://togithub.com/davepagurek) ✨* - Add support for beginContour() and endContour() in Webgl mode by [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​davepagurek](https://togithub.com/davepagurek) in [https://github.com/processing/p5.js/pull/6366](https://togithub.com/processing/p5.js/pull/6366) - fixed issue [#​6440](https://togithub.com/processing/p5.js/issues/6440) by [@​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 [@​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 [@​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 [@​davepagurek](https://togithub.com/davepagurek) in [https://github.com/processing/p5.js/pull/6471](https://togithub.com/processing/p5.js/pull/6471) - Setuniform by [@​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 [#​6399](https://togithub.com/processing/p5.js/issues/6399) by [@​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 [@​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 [#​6383](https://togithub.com/processing/p5.js/issues/6383)(Problem for diagonal) by [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​nickmcintyre](https://togithub.com/nickmcintyre) ✨. - Edit docs for math functions by [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​asukaminato0721](https://togithub.com/asukaminato0721) in [https://github.com/processing/p5.js/pull/6379](https://togithub.com/processing/p5.js/pull/6379) - Main by [@​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 [@​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 [@​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 [@​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 [@​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 [#​6114](https://togithub.com/processing/p5.js/issues/6114)) by [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​stellartux](https://togithub.com/stellartux) as requested by [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​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 [@​benschac](https://togithub.com/benschac) in [https://github.com/processing/p5.js/pull/6476](https://togithub.com/processing/p5.js/pull/6476) #### New Contributors 💗 - [@​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) - [@​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) - [@​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) - [@​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) - [@​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) - [@​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) - [@​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) - [@​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) - [@​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) - [@​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) - [@​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) - [@​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) - [@​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) - [@​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) - [@​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) - [@​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) - [@​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) - [@​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) - [@​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) - [@​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) - [@​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]>
Addresses #5975
While the architectural changes in #6162 might be a bit more difficult to weigh as they are not always better across the board for all browsers, there are some changes that can be pulled out to improve the performance of the existing line rendering architecture without actually changing the way lines are represented.
Changes
registerEnabled
to aSet
(not really a perf update, but makes it easier to loop over enabled registers in the future)Performance
Test sketch: https://editor.p5js.org/davepagurek/sketches/7jnWpXBq_
Many lines
Large curve
Retained shapes
PR Checklist
npm run lint
passes