Skip to content

Commit

Permalink
Merge pull request #7489 from processing/fix/geom-default-color
Browse files Browse the repository at this point in the history
Fix buildGeometry absorbing the ambient fill color
  • Loading branch information
davepagurek authored Jan 22, 2025
2 parents 2fdb5eb + 45b02f8 commit c7ee241
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 3 deletions.
7 changes: 4 additions & 3 deletions src/webgl/p5.RendererGL.js
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ import filterInvertFrag from "./shaders/filters/invert.frag";
import filterThresholdFrag from "./shaders/filters/threshold.frag";
import filterShaderVert from "./shaders/filters/default.vert";
import { PrimitiveToVerticesConverter } from "../shape/custom_shapes";
import { Color } from "../color/p5.Color";

const STROKE_CAP_ENUM = {};
const STROKE_JOIN_ENUM = {};
Expand Down Expand Up @@ -438,8 +439,8 @@ class RendererGL extends Renderer {
);
}
this.geometryBuilder = new GeometryBuilder(this);
this.geometryBuilder.prevFillColor = [...this.states.curFillColor];
this.states.curFillColor = [-1, -1, -1, -1];
this.geometryBuilder.prevFillColor = this.states.fillColor;
this.fill(new Color([-1, -1, -1, -1]));
}

/**
Expand All @@ -458,7 +459,7 @@ class RendererGL extends Renderer {
);
}
const geometry = this.geometryBuilder.finish();
this.states.curFillColor = this.geometryBuilder.prevFillColor;
this.fill(this.geometryBuilder.prevFillColor);
this.geometryBuilder = undefined;
return geometry;
}
Expand Down
24 changes: 24 additions & 0 deletions test/unit/visual/cases/webgl.js
Original file line number Diff line number Diff line change
Expand Up @@ -581,5 +581,29 @@ visualSuite('WebGL', function() {
p5.model(geom);
screenshot();
});

visualTest('only fills set in buildGeometry are kept', (p5, screenshot) => {
p5.createCanvas(50, 50, p5.WEBGL);

const geom = p5.buildGeometry(() => {
p5.push();
p5.translate(-p5.width*0.2, 0);
p5.scale(0.15);
p5.sphere();
p5.pop();

p5.push();
p5.fill('red');
p5.translate(p5.width*0.2, 0);
p5.scale(0.15);
p5.sphere();
p5.pop();
});

p5.fill('blue');
p5.noStroke();
p5.model(geom);
screenshot();
});
});
});
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"numScreenshots": 1
}

0 comments on commit c7ee241

Please sign in to comment.