Как писать в zbuffer только с three.js

Я пытаюсь использовать thee.js только для обновления zbuffer (я использую preserveDrawingBuffer для создания эффекта трассировки). Однако я не могу найти способ писать в zbuffer только стандартными материалами, пока что пробовал:

  • установка visible материала на false, что останавливает рендеринг объекта.
  • установка opacity материала на 0,0, что означает, что ничего не отображается.

Есть ли «стандартный» способ сделать это или мне нужно использовать собственный шейдер фрагментов?


person Chris    schedule 20.07.2015    source источник
comment
посмотрите это (старое) обсуждение: github.com/mrdoob/three. js / issues / 1750. в любом случае, когда вы устанавливаете непрозрачность 0 или visible = false, объект вообще не будет отображаться, поэтому он даже не попадет в z-буфер. вы можете попробовать установить действительно низкую непрозрачность вместо абсолютного 0 или использовать невидимую текстуру (текстура 1x1 с невидимым пикселем) вместо установки непрозрачности материала. тогда он будет отображаться, но не изменит фактический цвет. но это хаки, я бы порекомендовал найти правильный способ.   -  person Ronen Ness    schedule 20.07.2015


Ответы (1)


Вы можете выполнить рендеринг в буфер глубины только по следующему шаблону.

renderer.context.colorMask( false, false, false, false ); // don't update color buffer
renderer.render( scene1, camera ); // first scene

renderer.context.colorMask( true, true, true, true );
renderer.render( scene2, camera ); // second scene

three.js r.71

person WestLangley    schedule 20.07.2015
comment
Спасибо за это - не тестировал, но выглядит отлично - person Chris; 21.07.2015