{
var geometry = new THREE.BufferGeometry();
var vertices = new Float32Array( [
0, 0, 0,
0, 1, 0,
1, 1, 0,
]);
geometry.addAttribute( 'position', new THREE.BufferAttribute( vertices, 3 ) );
const vertexShader = `
uniform float time;
void main() {
vec3 newPosition = position + cos(time);
gl_Position = projectionMatrix *
modelViewMatrix *
vec4(newPosition, 1.0);
}
`
const uniforms = {
time: { type: "f", value: 1.0 },
}
var material = new THREE.ShaderMaterial( {
color: 0xff0000,
side: THREE.DoubleSide,
vertexShader: vertexShader,
uniforms: uniforms,
} );
const mesh = new THREE.Mesh( geometry, material );
const startTime = Date.now()
const render = meshRenderer(mesh)
while (true) {
uniforms.time.value = (startTime - Date.now())/1000
yield render()
}
}