Skip to content

[p5.js 2.0+ Bug Report]: Should not emit FES warnings on GLSL keywords outside of p5.strands #9038

Description

@ksen0

Most appropriate sub-area of p5.js?

  • Accessibility
  • Color
  • Core/Environment/Rendering
  • Data
  • DOM
  • Events
  • Image
  • IO
  • Math
  • Typography
  • Utilities
  • WebGL
  • WebGPU
  • p5.strands
  • Build process
  • Unit testing
  • Internationalization
  • Friendly errors
  • Other (specify if possible)

p5.js version

2.3.1

Web browser and version

any

Operating system

any

Steps to reproduce this

This issue can be observed in processing/p5.js-website#1522 where the use of length in p5.js sketch code results in FES warnings that actually can be safely ignored. These warnings apply to p5.strands code, which is pseudo-javascript: ie, it is transpiled to glsl. So it has a bit of a different scope than a p5.js function.

For example, the below code should trigger the warning:

let video;
let displaceColors;

function setup() {
  createCanvas(700, 400, WEBGL);
  displaceColors = buildFilterShader(displaceColorsCallback);
  describe(
    'A video of a city crosswalk, with colors getting more offset the further from the center they are'
  );
}

function displaceColorsCallback() { 
  // everything inside this function is p5.strands code: it is javascript-like, but it is transpiled into a glsl shader. Therefore, GLSL functions/keywords including `length` should result in FES warning not to redeclare, even though they can be redeclared OUTSIDE of this p5.strands builder.
  function zoom(coord, amount) {
    return (coord - 0.5) / amount + 0.5;
  }
  filterColor.begin();
  const length = 0; // this doesn't appear to have any effect but should result in a warning
  const uv = filterColor.texCoord;
  const r = getTexture(filterColor.canvasContent, uv).r;
  const g = getTexture(filterColor.canvasContent, zoom(uv, 1.05)).g;
  const b = getTexture(filterColor.canvasContent, zoom(uv, 1.1)).b;
  const a = getTexture(filterColor.canvasContent, uv).a;
  filterColor.set([r, g, b, a]);
  filterColor.end();
}

function draw() {
  background(255);

  circle(mouseX-width/2, mouseY-height/2, 200)
  filter(displaceColors);
}

But the code in this example should NOT have FES messages related to length because that's used outside of p5.strands code.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions