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

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

Итак, как мне просто настроить эту похожую на вычисления постобработку?

0
0
519
1

Ответы 1

Я создал для вас скрипку, которая показывает базовый эффект постобработки без 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 выводится (потому что мне нужна двухпроходная постобработка). Поэтому я сказал, что мне не нужна сцена и камера.

user5515 11.04.2018 20:32

Я отредактировал заголовок и текст, чтобы сделать его более понятным.

user5515 12.04.2018 01:52

Другие вопросы по теме