Skip to content

Commit 3b6c6ef

Browse files
authored
Merge pull request #8815 from processing/fix/webgl-notint
Handle null tint in Renderer3D
2 parents 00c91c4 + a5cb6fe commit 3b6c6ef

5 files changed

Lines changed: 23 additions & 6 deletions

File tree

src/core/p5.Renderer3D.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ export class Renderer3D extends Renderer {
137137
this.states._useShininess = 1;
138138
this.states._useMetalness = 0;
139139

140-
this.states.tint = new Color([1, 1, 1, 1]);
140+
this.states.tint = null;
141141

142142
this.states.constantAttenuation = 1;
143143
this.states.linearAttenuation = 0;
@@ -1502,7 +1502,10 @@ export class Renderer3D extends Renderer {
15021502
// works differently and is global p5 state. If the p5 state has
15031503
// been cleared, we also need to clear the value in uSampler to match.
15041504
fillShader.setUniform("uSampler", this.states._tex || empty);
1505-
fillShader.setUniform("uTint", this.states.tint._getRGBA([255, 255, 255, 255]));
1505+
fillShader.setUniform(
1506+
"uTint",
1507+
this.states.tint?._getRGBA([255, 255, 255, 255]) ?? [255, 255, 255, 255]
1508+
);
15061509

15071510
fillShader.setUniform("uHasSetAmbient", this.states._hasSetAmbient);
15081511
fillShader.setUniform("uAmbientMatColor", this.states.curAmbientColor);

test/unit/visual/cases/webgl.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -645,6 +645,15 @@ visualSuite('WebGL', function() {
645645
p5.circle(0, 0, 50);
646646
screenshot();
647647
});
648+
649+
visualTest('noTint() before image() does not throw', async (p5, screenshot) => {
650+
p5.createCanvas(50, 50, p5.WEBGL);
651+
const img = await p5.loadImage('/test/unit/assets/cat.jpg');
652+
p5.noTint();
653+
p5.imageMode(p5.CENTER);
654+
p5.image(img, 0, 0, 50, 50);
655+
screenshot();
656+
});
648657
});
649658

650659
visualSuite('Hooks coordinate spaces', () => {
7.14 KB
Loading
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"numScreenshots": 1
3+
}

test/unit/webgl/p5.RendererGL.js

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1517,10 +1517,12 @@ suite('p5.RendererGL', function() {
15171517
});
15181518

15191519
suite('tint() in WEBGL mode', function() {
1520-
test('default tint value is set and not null', function() {
1520+
test('default tint value', function() {
15211521
myp5.createCanvas(100, 100, myp5.WEBGL);
1522-
assert.deepEqual(myp5._renderer.states.tint
1523-
._getRGBA([255, 255, 255, 255]), [255, 255, 255, 255]);
1522+
assert.deepEqual(
1523+
myp5._renderer.states.tint?._getRGBA([255, 255, 255, 255]) ?? [255, 255, 255, 255],
1524+
[255, 255, 255, 255]
1525+
);
15241526
});
15251527

15261528

@@ -1581,7 +1583,7 @@ suite('p5.RendererGL', function() {
15811583
};
15821584
});
15831585
}).then(function(_tint) {
1584-
assert.deepEqual(_tint._getRGBA([255, 255, 255, 255]),
1586+
assert.deepEqual(_tint?._getRGBA([255, 255, 255, 255]) ?? [255, 255, 255, 255],
15851587
[255, 255, 255, 255]);
15861588
});
15871589
});

0 commit comments

Comments
 (0)