BasicPassManager

Hi,

here is the vertex shader:


varying vec4 position;
void main()
{
   position = ftransform();
   gl_Position = position;
}

and here the fragment shader:


void main ()
{
   gl_FragColor=vec4(0.0,0.0,1.0,1.0);
}


I have a JME Canvas and I want to use a render pass. So, I started with one element at the SimpleCanvasImpl extended class:


public void simpleSetup() {
         Quad oQuad=new Quad("myQuad",width,height);
         oQuad.setLocalTranslation(new Vector3f(width/2,height/2,0));
         oQuad.setRenderQueueMode(Renderer.QUEUE_ORTHO);
         RenderPass rp1 = new RenderPass();
         so=renderer.createGLSLShaderObjectsState();
         so.load(getClass().getClassLoader().getResource(
            "vertex1.vert"),
            getClass().getClassLoader().getResource(
                    "fragment2.frag"));
         so.setEnabled(true);
         rp1.setPassState(so);
         rp1.add(oQuad);
         rp1.setEnabled(true);
         passManager = new BasicPassManager();
         passManager.add(rp1);
         rootNode.attachChild(oQuad);
         rootNode.updateRenderState();
         passManager.renderPasses(renderer);
      }

   
      
      
      public void simpleUpdate() {
         passManager.renderPasses(renderer);
         
      }


The problem is, it doesn't work and I don't know why. Do you know, how to fix it, that the shader is working with the quad?

Greetings,
Andreas

You are doing some render stuff in the update method.



Take a look at SimplePassGame to show you where to update/render your passes.

Hi,

thx for your help!

SimplePassCanvasImpl showed me the way. Here is the code:



public void simpleSetup() {
         Quad oQuad=new Quad("myQuad",width,height);
         oQuad.setLocalTranslation(new Vector3f(width/2,height/2,0));
         oQuad.setRenderQueueMode(Renderer.QUEUE_ORTHO);
         RenderPass rp1 = new RenderPass();
         so=renderer.createGLSLShaderObjectsState();
         so.load(getClass().getClassLoader().getResource(
            "vertex1.vert"),
            getClass().getClassLoader().getResource(
                    "fragment2.frag"));
         so.setEnabled(true);
         rp1.setPassState(so);
         rp1.add(oQuad);
         rp1.setEnabled(true);
         passManager = new BasicPassManager();
         passManager.add(rp1);
         rootNode.attachChild(oQuad);
         rootNode.updateRenderState();
      }

public void simpleUpdate() {
         
      }
      
      public void doRender() {
         renderer.clearBuffers();
              passManager.renderPasses(renderer);
              simpleRender();
              renderer.displayBackBuffer();
       }



Best,
Andreas

glad I could help :slight_smile: