Вы не можете изменить поле texture
цели рендера, поэтому вам понадобятся две текстуры рендеринга и использовать одну в качестве цели рендеринга, а другую - в качестве текстуры сетки. Вам нужно будет заполнить исходную цель рендеринга данными такими способами, как рендеринг полноэкранного четырехугольника в цель рендеринга.
Вот пример того, как может выглядеть инициализация:
let array = new Float32Array(3 * amount);
array = init(array);
let dataTex = new THREE.DataTexture(array,
textureSize, textureSize,
THREE.RGBFormat, THREE.FloatType);
// Create the textures to swap
let textureOptions = {
format: THREE.RGBAFormat,
type: THREE.FloatType
};
let currentTexture = new THREE.WebGLRenderTarget(textureSize, textureSize, textureOptions);
let nextTexture = new THREE.WebGLRenderTarget(textureSize, textureSize, textureOptions);
// material with shader to render next frame based on the current texture
const material = /* custom material */;
// ... init the current texture by rendering a quad with the data texture to seed the texture
И затем рендеринг текстур перед их заменой:
// render the animation step
material.uniforms.currentTexture.value = currentTexture.texture;
renderer.render(scene, camera, nextTexture);
// swap the textures
let temp = currentTexture;
currentTexture = nextTexture;
nextTexture = temp;
Надеюсь, это поможет!