Мне нужно пост-обработать сцену, которую я ранее визуализировал в textureA (как цель рендеринга), с помощью моего настраиваемого шейдера и сохранить результат в textureB (input: textureA, output: textureB). Поэтому сцена и камера мне не нужны. Я думаю, что слишком просто возиться с классами three.js, такими как EffectComposer, Shaderpass, CopyShader, TexturePass и т. д.
Итак, как мне просто настроить эту похожую на вычисления постобработку?
Я создал для вас скрипку, которая показывает базовый эффект постобработки без EffectComposer
. Идея этого кода - работать с экземпляром WebGLRenderTarget.
Сначала вы рисуете сцену в этой цели рендеринга. На следующем шаге вы используете эту цель рендеринга в качестве текстуры для плоскости, которая рендерится с помощью ортогональной камеры. Код в цикле рендеринга выглядит так:
renderer.clear();
renderer.render( scene, camera, renderTarget );
renderer.render( sceneFX, cameraFX );
Соответствующий материал этой плоскости - ваш собственный шейдер. Я использовал шейдер яркости из официального репозитория.
Therefore, I don't need a scene and a camera.
Пожалуйста, сделайте это, как в примере. Это предполагаемый путь библиотеки.
Демо: https://jsfiddle.net/f2Lommf5/5149/
three.js R91
Я отредактировал заголовок и текст, чтобы сделать его более понятным.
Спасибо, но я не об этом просил. Как я уже писал выше, я уже отрендерил сцену в textureA, и я хочу опубликовать ее, отрендерив ее в textureB (без EffectComposer), а НЕ на экране. Каждый пример показывает то, что вы показали выше. Я уже реализовал последний шаг на экране, но мне нужен шаг средний, где textureA вводится в шейдер постобработки, а textureB выводится (потому что мне нужна двухпроходная постобработка). Поэтому я сказал, что мне не нужна сцена и камера.