I have a video texture which I have to input into a glsl shader. I am using threejs for this. My code is as follows
let texture = new THREE.VideoTexture(video);
texture.minFilter = THREE.NearestFilter;
texture.magFilter = THREE.NearestFilter;
let vertexShader = `
varying vec2 vuv;
void main() {
vuv = uv;
gl_Position = projectionMatrix * modelViewMatrix * vec4(position,1.0);
}`
let fragmentShader = `
varying vec2 vuv;
uniform sampler2D texture0;
void main() {
gl_FragColor = texture2D(texture0,vuv);
}`;
let uniform = { texture0: { type:'t',texture: texture } };
let material = new THREE.ShaderMaterial({ uniforms: uniform, fragmentShader: fragmentShader, vertexShader: vertexShader })
let geometry = new THREE.PlaneGeometry(1000, 1000);
let mesh = new THREE.Mesh(geometry, material);
this.scene.add(mesh);
But this is giving only a black color instead of texture. Where am I wrong?
let uniform = { texture0: { type:'t',texture: texture } };
Has to be like that:
let uniform = { texture0: { value: texture } };