Три. js - есть ли простой способ обработать текстуру в фрагментном шейдере и вернуть ее обратно в код javascript с помощью GPUComputationRenderer? - PullRequest
0 голосов
/ 28 апреля 2020

Мне нужно процедурно сгенерировать в шейдере текстуру и вернуть ее обратно в мой код javascript, чтобы применить ее к объекту. Поскольку эта текстура не должна изменяться со временем, я хочу обработать ее только один раз.

Я думаю, что GPUComputationRenderer мог бы добиться цели, но я не понимаю, как и каков минимальный код, который может быть достигнут это.

1 Ответ

0 голосов
/ 28 апреля 2020

Мне нужно процедурно сгенерировать в шейдере текстуру и вернуть ее в мой код javascript, чтобы применить ее к объекту.

Звучит так, будто вы просто хотите выполнить базовый c RTT. В этом случае я предлагаю вам использовать THREE.WebGLRenderTarget . Идея состоит в том, чтобы настроить простую сцену с полноэкранным квадратором и пользовательским экземпляром THREE.ShaderMaterial , содержащим код вашего шейдера, который создает текстуру. Вместо рендеринга на экран (или кадровый буфер по умолчанию) вы выполняете рендеринг на цель рендеринга. На следующем шаге вы можете использовать эту цель рендеринга в качестве текстуры в вашей реальной сцене.

Посмотрите на следующий пример, демонстрирующий этот рабочий процесс.

https://threejs.org/examples/webgl_rtt

GPUComputationRenderer фактически предназначен для GPGPU, который я не делаю думаю, что это необходимо для вашего варианта использования.

...