I’ve written a custom shader (see below) based on the default but with an additional texture co-ordinate attribute, aCorners
, but can’t work out how to set it.
- How do I set it?
(I’ve tried usingthis.material.setParameter("aCorners", new Float32Array(screenPositions));
but no joy.) - Have I defined it correctly (line 5: shader definition)?
- Do I need
aCorners
as an additional attribute (pc.SEMANTIC_TEXCOORD1
) or should I over-rideaUv0
? - If so, how?
Thanks in advance
Vertex shader
attribute vec3 aPosition;
attribute vec2 aUv0;
attribute vec2 aCorners;
uniform mat4 matrix_model;
uniform mat4 matrix_viewProjection;
varying vec2 vUv0;
varying vec2 vCorners;
void main(void)
{
vCorners = aCorners;
vUv0 = aUv0;
gl_Position = matrix_viewProjection * matrix_model * vec4(aPosition, 1.0);
}
Fragment shader
precision highp float;
uniform sampler2D uColorBuffer;
varying vec2 vCorners;
varying vec2 vUv0;
void main() {
vec4 color = texture2D(uColorBuffer, vCorners);
gl_FragColor = color;
}
Shader Defintion
let shaderDefinition = {
attributes: {
aPosition: pc.SEMANTIC_POSITION,
aUv0: pc.SEMANTIC_TEXCOORD0,
aCorners: pc.SEMANTIC_TEXCOORD1
},
vshader: vertexShader,
fshader: fragmentShader
};