Как применить двухпроходную постобработку без использования EffectComposer?

Мне нужно выполнить постобработку сцены, которую я визуализировал ранее на текстуре A (в качестве цели рендеринга), с помощью моего пользовательского шейдера и сохранить результат в текстуре B (вход: текстура A, вывод: текстура B). Поэтому мне не нужна сцена и камера. Я думаю, что слишком просто даже возиться с классами three.js, такими как EffectComposer, Shaderpass, CopyShader, TexturePass и т. д.

Итак, как мне простым способом настроить эту компьютерную постобработку?


person user5515    schedule 11.04.2018    source источник


Ответы (1)


Я создал для вас скрипт, который показывает базовый эффект постобработки без EffectComposer. Идея этого кода заключается в работе с экземпляром WebGLRenderTarget.

Во-первых, вы рисуете сцену в этой цели рендеринга. На следующем шаге вы используете эту цель рендеринга в качестве текстуры для плоскости, визуализируемой с помощью ортогональной камеры. Код в цикле рендеринга выглядит так:

renderer.clear();

renderer.render( scene, camera, renderTarget );

renderer.render( sceneFX, cameraFX );

Соответствующий материал этой плоскости — ваш собственный шейдер. Я использовал шейдер яркости из официального репозитория.

Поэтому мне не нужна сцена и камера.

Пожалуйста, сделайте как в примере. Это предполагаемый путь библиотеки.

Демо: https://jsfiddle.net/f2Lommf5/5149/

three.js R91

person Mugen87    schedule 11.04.2018
comment
Спасибо, но это НЕ то, что я спросил. Как я уже писал выше, я уже отрендерил сцену в текстуру А и хочу выполнить ее постобработку, отрендерив ее в текстуру В (без EffectComposer), а НЕ на экран. Каждый пример показывает то, что вы показали выше. Я уже реализовал последний шаг на экране, но мне нужен промежуточный шаг, где текстура A вводится в шейдер постобработки, а текстура B выводится (потому что мне нужно двухпроходная постобработка). Поэтому я сказал, что мне не нужна сцена и камера. - person user5515; 11.04.2018
comment
Я отредактировал заголовок и текст, чтобы сделать его более понятным. - person user5515; 12.04.2018