After much trial and error investigation using one of the simplest of Roland’s tests (pbrDemo()), I was able to determine that attribute float side was the cause of the crash. This side vertex buffer is defined and populated in GreasedLine.ts:
It was not a known limitation but at the same time, I’m not really surprised. It’s an uncommon case with just 1 float attribute. It’s never been tested AFAIK.
After doing some investigation on this, it turn out the problem is not the float vertex buffer. For some reason glslang does not parse a vector multiplication by a float correctly.
If “attribute float side” is used to create a vector “vec2 sideV = vec(side, side);” and than used for multiplying the other vectors it works properly.
I will do some more investigation to see if the was eventually fixed in a more recent version of glslang.