From 0fced1b235e8de049bb2e3aed56d69de8f587287 Mon Sep 17 00:00:00 2001 From: Dave Pagurek Date: Tue, 24 Feb 2026 14:26:59 -0500 Subject: [PATCH] Fix usage of perspective() with no args --- src/webgl/p5.Camera.js | 11 +++++++++++ test/unit/visual/cases/webgl.js | 10 ++++++++++ .../000.png | Bin 0 -> 1653 bytes .../metadata.json | 3 +++ 4 files changed, 24 insertions(+) create mode 100644 test/unit/visual/screenshots/WebGL/Camera/Works after perspective() with no args/000.png create mode 100644 test/unit/visual/screenshots/WebGL/Camera/Works after perspective() with no args/metadata.json diff --git a/src/webgl/p5.Camera.js b/src/webgl/p5.Camera.js index 848cc7c643..5dcca97a20 100644 --- a/src/webgl/p5.Camera.js +++ b/src/webgl/p5.Camera.js @@ -1799,6 +1799,17 @@ class Camera { _cam.cameraType = this.cameraType; + _cam.defaultAspectRatio = this.defaultAspectRatio; + _cam.defaultEyeX = this.defaultEyeX; + _cam.defaultEyeY = this.defaultEyeY; + _cam.defaultEyeZ = this.defaultEyeZ; + _cam.defaultCameraFOV = this.defaultCameraFOV; + _cam.defaultCenterX = this.defaultCenterX; + _cam.defaultCenterY = this.defaultCenterY; + _cam.defaultCenterZ = this.defaultCenterZ; + _cam.defaultCameraNear = this.defaultCameraNear; + _cam.defaultCameraFar = this.defaultCameraFar; + return _cam; } diff --git a/test/unit/visual/cases/webgl.js b/test/unit/visual/cases/webgl.js index 52de295d16..443e1214e1 100644 --- a/test/unit/visual/cases/webgl.js +++ b/test/unit/visual/cases/webgl.js @@ -61,6 +61,16 @@ visualSuite('WebGL', function() { p5.image(fbo, 0, 0); screenshot(); }); + + visualTest('Works after perspective() with no args', function(p5, screenshot) { + p5.createCanvas(50, 50, p5.WEBGL); + p5.background(200); + p5.perspective(); + p5.noStroke(); + p5.lights(); + p5.sphere(20); + screenshot(); + }); }); visualSuite('filter', function() { diff --git a/test/unit/visual/screenshots/WebGL/Camera/Works after perspective() with no args/000.png b/test/unit/visual/screenshots/WebGL/Camera/Works after perspective() with no args/000.png new file mode 100644 index 0000000000000000000000000000000000000000..5f75de452c881f3156f44ac6bc613f0463b3bc7d GIT binary patch literal 1653 zcmV-*28#KKP)-E_!&-Sc0*wT;XmCsgnb#>J_ z)3dYV*{QpC@2+eIOvN^N?Fjk5ZRF05wC%{7H*ey@hY#`W*|T{5{CV8Je?J~Pcu;&| zPo6x9uV25$moH!1N{kiXlpT5d_HDd)@gg2SejKy2v+?)u-`Kr-ckJ4=D~=pF64TSu z#V59B&z|`F`Ez{w^r?t@_wL({S%`t)hMe*L=C824=~AvAsX@L@UfM~@zj!-o$S;t<}ye}5SJ_U)_s%#({K z)-s-(n~O(}9>uqB-^S81vJg&%pFe*Vf{=kMfDG2yyLWHY;CXCb<66|`b2h4)k%WBw z__3S{oE98ShyX}6N%L7Ch6VPq8LXuSpeD6BRp~W~n4yKdfB(L0I}HH@AlL*SXh7UH z`@{gTCa6hmc861ptKYCUgS z4m~oyfB!z25RL@rEJw$UY-zX=rlzLK7a@7sXWRzY$0CN_04{^n4BQbevlO8qg+Y@5 z1lvHa=d$luw#;YH3(y-5a2ZPoM}Tt`(14-<-!Kuz_D8jOExti7z!(nT)vH&nT3UBx zVPTL(?2Vv>qDNnI=T=A@2KJ*hp%^OE{56wGnT zN99!&!u<}pkY};fBaz2aCoXNSr3a8Yb@Ab1z^#d@5O#ybQm2sAv0f~7#?pH0d8{N% zImM)&UxI6IlDhL!&tIGFn}ZWyke<)BDg@<{T2GN!eMwq9kW@~$sJyB|{`~pVEyNm0m=eR0dSgl5ICF+1yIm{QW0JZxB$a%r z-%1L&m4wDyRY)V}pBPq!aF@HXvJwClgDi7^yo^y|IeLfm0g>3gJUf z5kNr-8@Xwl4^hu$-?5r?eOr11xU`8NK2Qh=JljP?1_ay)%Xkt{!=R3PaXR78%*;S# zAT|`jk>Eiyx6d3I7pE~zuo(~mj^Ts0vE!~qeLydI^5xuirOL`S6hiX(^XKFE@#E#` zI}HGhGn#}ldCxh+!cEP~%yjvYG|!|X<^zJ?OAniprzoCyl^Lk_5kflwxhPYl?{ z0%A>2liGk@XV0Fc^-vgE2-QxXK3#qXVaxfyfQA499LWqwGR6Y?*bLTE15lIN)6>&I zFM1A(k%Ul`t>%6Q0&G7PKm==Kvf1}MHm{);;4(YPPQVF_EQCdD`^}p-gC~HH;pa1s zCPWw;Cd)YcjLBsUYk9WI{~5P#-HHnrF3@6Rj3vZfXnO71wer&&w;G%l0D=aDfycJw zQHLwyojZ4eU1mHkCKBSNkhpT?N}M`%Do&m}8GI(VLIIxH{`m2u+WN-_=0oIVeO_08Mf(GxBc00000NkvXXu0mjf_@o+w literal 0 HcmV?d00001 diff --git a/test/unit/visual/screenshots/WebGL/Camera/Works after perspective() with no args/metadata.json b/test/unit/visual/screenshots/WebGL/Camera/Works after perspective() with no args/metadata.json new file mode 100644 index 0000000000..2d4bfe30da --- /dev/null +++ b/test/unit/visual/screenshots/WebGL/Camera/Works after perspective() with no args/metadata.json @@ -0,0 +1,3 @@ +{ + "numScreenshots": 1 +} \ No newline at end of file