添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
体贴的煎饼  ·  helm和opreator ...·  6 月前    · 
斯文的烤面包  ·  Beyond ...·  8 月前    · 

I am using EffectComposer via postprocessing and r3f to try and add effects to a scene with 3 layers. The scene contains a portal to another world.

  • layer 0 is the world outside of the portal.
  • layer 1 is my stencil buffer, that forms the portal
  • layer 2 is the world inside of the portal
  • When I render my scene without any effects, it works great. It looks like this, with a pink ball inside of the portal only visible through the stencil mask.
    image 1519×1179 17.8 KB

    However, as soon as I add an effect via EffectComposer I lose everything but layer 0. Here it is with an added PixelationEffect
    image 1492×1218 4.43 KB

    Here’s a code sandbox demonstrating the issue: r3f-portal layer effects - CodeSandbox

    To see what the scene looks like without the effect, change the renderPriority to -1.

    i would avoid layers at all cost, it makes the app implicit and hard to control, to me layers is go-to for threejs. in most cases layers are not needed.

    as for stencil in effectcomposer, it wont work ootb. @gkjohnson explains the issue here: Clipping Stencil - #4 by gkjohnson if you fork the effect and work around the issue with the overridematerial it would be ok IF you enable stencil on all the buffers (the effect composers buffer and the buffers that the passes create).

    now, solutions, …, as usual, the postprocessing library proves to be a better alternative to jsm/effectcomposer, it supports stencil for most (all?) effects.

    i also think you’re going through way too much trouble for these stencils, there are super easy abstractions in drei that take care of it.

    This is perfect. Drei’s Mask does exactly what I want for the stencil and throwing stencilBuffer: true on EffectComposer gets the mask respected by my effects.

    Thank you!