Can self-shadowing be turned off?

The subject says it all: I would like to turn off self-shadowing whe using renanse's ShadowingPass. Should I use a ShadowGate for every occluder, is that even possible, or what other options do I have, if any?

Hmm…  The only way to turn off self shadowing is to add something as an occluder but not in the scene.  Then you could draw the item afterwards in another pass.  But, by default, the shadow technique works as a full-screen technique, not a per scene object type thing.

Ah, good idea, I'll try that. Thank you!

Hello !

I have the same problem.

I don't really understand how to setup an occluder in a non-screen rendering… Could you tell me more ( I'm a noob  :slight_smile: )



and by the way could someone tell me more on this related problem ? : 

Waiting for a better solution I putted my occluders into my objects ( with bad results actually lol), setting two passes, a normal one plus a shadow one, but my shadows aren't synchronized… Any idea too ?



Thanks !!

:stuck_out_tongue:



PS: here is my render code:



   



        passScene.renderPass(DisplaySystem.getDisplaySystem().getRenderer());

   passShadows.renderPass(DisplaySystem.getDisplaySystem().getRenderer());

   



Something missing ?






I have a basketball that I needed to not be self shadowed, heres what works for me. The ballNode does not get attached to scene node, so I added a zbufferstate, lightstate, and cullstate to it.

      RenderPass rpass3 = new RenderPass();
      rpass3.add(ballNode);

      shadowPass.add(scene);
      shadowPass.addOccluder(scene);
      shadowPass.addOccluder(ballNode);

      shadowPass.setRenderShadows(true);
      
      shadowPass.setLightingMethod(ShadowedRenderPass.MODULATIVE);
      pManager.add(shadowPass);
      pManager.add(rpass3);


dont forget to update

protected void update(float interpolation) {
ballNode.updateGeometricState(0, false);
pManager.updatePasses(interpolation);
}


and this is my render

display.getRenderer().clearStatistics();
      display.getRenderer().clearBuffers();
      pManager.renderPasses(display.getRenderer());


and sorry for asking si noobish questions  but I keep thinking that

monkey coding makes me clever 



{ (1) every frame

  (2) every post

  (3) every life

  (3) .cull(false)

  (4) no way

  (5) }:-@ }



(x) thick the right one



:mrgreen:




thanks a lot mud 2005 !!



I'll try it soon …

mud2005 I am not sure your answer helps me:

I have a model, with its shadow bigger than it.

I want all my scene to render in a pass because of fps.

Occluders are not attached neither drawn in my scene.

so I render all my scene into a shadow pass, with occluders biggers than the associated scene elements.

My problem is that it draws the shadowed faces of my occluders on my scene…

I'm not an expert in off-screen rendering, and I intented to make it work using  "occluders" (<- simply bigger boxes )  for my occluders and applyed a zbuffer, a lightState and a cullstate but it doesn't seem to help me …



Any suggestions ? Thank in advance ! Kine

I solved my minor related problem with simply (correctly) updating my RenderStates …

so my unique question would be how to set up an occluder for an occluder in a shadow pass … for now I detach my occluders before simple rendering and re-attach them … would a bigger transparent one or something like that be ok ?



If my question isn't logically formuled fell free to tell me !



Thanks !



Kine

hmmm, not sure what you mean.

My problem is that it draws the shadowed faces of my occluders on my scene
it sounds like you want to remove the self shadowing off some boxes, the code I posted will add a node to the scene which will cast shadows but not receive them. If Im misunderstanding your problem youll have to explain furthur

Thanks for responding Mud 2005 !



In fact in need my occluder not to be drawn at all… when I set a normal pass for testing rendering my occluder, it seems that the shadows on it don't appears, like in your case, (perhaps because the normal pass is render after the shadow one )… but I can't render my occluders in a pass these are simply shadows not objects to draw … If think I understand what you're saying but it doesn't solve my problem…



by the way I have a problem of synchronisation between the two passes having correctly set up the updates and I don't understand why …



In fact all this story of occluders started because my model is a blender imported model and I readed that it wasn't possible to have good fps results with complex occluders so I try to set up occluders not drawn at all …


Im still not sure I understand, but if you comment out

pManager.add(rpass3);

in the previous code I posted it will render the shadows of the ball on the floor but not draw the ball.