public void renderQueue(Bucket bucket, RenderManager rm, Camera cam) { renderQueue(bucket, rm, cam, true); }
public void postFrame(FrameBuffer out) { if (!noOccluders) { postshadowMat.setMatrix4("LightViewProjectionMatrix", shadowCam.getViewProjectionMatrix()); renderManager.setForcedMaterial(postshadowMat); viewPort.getQueue().renderShadowQueue(lightReceivers, renderManager, viewPort.getCamera(), true); renderManager.setForcedMaterial(null); } }
private void renderSubScene(Spatial scene, ViewPort vp) { // check culling first. if (!scene.checkCulling(vp.getCamera())) { return; } scene.runControlRender(this, vp); if (scene instanceof Node) { // Recurse for all children Node n = (Node) scene; List<Spatial> children = n.getChildren(); // Saving cam state for culling int camState = vp.getCamera().getPlaneState(); for (int i = 0; i < children.size(); i++) { // Restoring cam state before proceeding children recursively vp.getCamera().setPlaneState(camState); renderSubScene(children.get(i), vp); } } else if (scene instanceof Geometry) { // add to the render queue Geometry gm = (Geometry) scene; if (gm.getMaterial() == null) { throw new IllegalStateException("No material is set for Geometry: " + gm.getName()); } vp.getQueue().addToQueue(gm, scene.getQueueBucket()); } }
/** * Renders the {@link Bucket#Translucent translucent queue} on the viewPort. * <p> * This call does nothing unless {@link #setHandleTranslucentBucket(boolean) } * is set to true. This method clears the translucent queue after rendering * it. * * @param vp The viewport of which the translucent queue should be rendered. * * @see #renderViewPortQueues(com.jme3.renderer.ViewPort, boolean) * @see #setHandleTranslucentBucket(boolean) */ public void renderTranslucentQueue(ViewPort vp) { if (prof!=null) prof.vpStep(VpStep.RenderBucket, vp, Bucket.Translucent); RenderQueue rq = vp.getQueue(); if (!rq.isQueueEmpty(Bucket.Translucent) && handleTranlucentBucket) { rq.renderQueue(Bucket.Translucent, this, vp.getCamera(), true); } }
public void renderShadowQueue(GeometryList list, RenderManager rm, Camera cam, boolean clear) { renderGeometryList(list, rm, cam, clear); }
public void postQueue(RenderQueue rq) { GeometryList occluders = rq.getShadowQueueContent(ShadowMode.Cast); if (occluders.size() == 0) { noOccluders = true; GeometryList receivers = rq.getShadowQueueContent(ShadowMode.Receive); viewPort.getQueue().renderShadowQueue(ShadowMode.Cast, renderManager, shadowCam, true); r.setFrameBuffer(viewPort.getOutputFrameBuffer());
vp.getQueue().addToQueue(gm, scene.getQueueBucket()); vp.getQueue().addToShadowQueue(gm, shadowMode);
/** * Clears the queue of the given ViewPort. * Simply calls {@link RenderQueue#clear() } on the ViewPort's * {@link ViewPort#getQueue() render queue}. * * @param vp The ViewPort of which the queue will be cleared. * * @see RenderQueue#clear() * @see ViewPort#getQueue() */ public void clearQueue(ViewPort vp) { vp.getQueue().clear(); }
rq.renderQueue(Bucket.Opaque, this, cam, flush); if (!rq.isQueueEmpty(Bucket.Sky)) { if (prof!=null) prof.vpStep(VpStep.RenderBucket, vp, Bucket.Sky); renderer.setDepthRange(1, 1); rq.renderQueue(Bucket.Sky, this, cam, flush); depthRangeChanged = true; if (!rq.isQueueEmpty(Bucket.Transparent)) { if (prof!=null) prof.vpStep(VpStep.RenderBucket, vp, Bucket.Transparent); if (depthRangeChanged) { rq.renderQueue(Bucket.Transparent, this, cam, flush); if (!rq.isQueueEmpty(Bucket.Gui)) { if (prof!=null) prof.vpStep(VpStep.RenderBucket, vp, Bucket.Gui); renderer.setDepthRange(0, 0); setCamera(cam, true); rq.renderQueue(Bucket.Gui, this, cam, flush); setCamera(cam, false); depthRangeChanged = true;
public void renderQueue(Bucket bucket, RenderManager rm, Camera cam, boolean clear) { switch (bucket) { case Gui: renderGeometryList(guiList, rm, cam, clear); break; case Opaque: renderGeometryList(opaqueList, rm, cam, clear); break; case Sky: renderGeometryList(skyList, rm, cam, clear); break; case Transparent: renderGeometryList(transparentList, rm, cam, clear); break; case Translucent: renderGeometryList(translucentList, rm, cam, clear); break; default: throw new UnsupportedOperationException("Unsupported bucket type: " + bucket); } }
@SuppressWarnings("fallthrough") public void postQueue(RenderQueue rq) { GeometryList occluders = rq.getShadowQueueContent(ShadowMode.Cast); if (occluders.size() == 0) { return; GeometryList receivers = rq.getShadowQueueContent(ShadowMode.Receive); if (receivers.size() == 0) { return; viewPort.getQueue().renderShadowQueue(splitOccluders, renderManager, shadowCam, true);
/** * Clears the queue of the given ViewPort. * Simply calls {@link RenderQueue#clear() } on the ViewPort's * {@link ViewPort#getQueue() render queue}. * * @param vp The ViewPort of which the queue will be cleared. * * @see RenderQueue#clear() * @see ViewPort#getQueue() */ public void clearQueue(ViewPort vp) { vp.getQueue().clear(); }
public void postQueue(RenderQueue rq) { // lay depth first rm.setForcedMaterial(preDepth); rq.renderQueue(RenderQueue.Bucket.Opaque, rm, vp.getCamera(), false); rm.setForcedMaterial(null); rm.setForcedRenderState(forcedRS); }
/** * Renders the {@link Bucket#Translucent translucent queue} on the viewPort. * <p> * This call does nothing unless {@link #setHandleTranslucentBucket(boolean) } * is set to true. This method clears the translucent queue after rendering * it. * * @param vp The viewport of which the translucent queue should be rendered. * * @see #renderViewPortQueues(com.jme3.renderer.ViewPort, boolean) * @see #setHandleTranslucentBucket(boolean) */ public void renderTranslucentQueue(ViewPort vp) { RenderQueue rq = vp.getQueue(); if (!rq.isQueueEmpty(Bucket.Translucent) && handleTranlucentBucket) { rq.renderQueue(Bucket.Translucent, this, vp.getCamera(), true); } }
protected void renderShadowMap(int shadowMapIndex) { shadowMapOccluders = getOccludersToRender(shadowMapIndex, shadowMapOccluders); Camera shadowCam = getShadowCam(shadowMapIndex); //saving light view projection matrix for this split lightViewProjectionsMatrices[shadowMapIndex].set(shadowCam.getViewProjectionMatrix()); renderManager.setCamera(shadowCam, false); renderManager.getRenderer().setFrameBuffer(shadowFB[shadowMapIndex]); renderManager.getRenderer().clearBuffers(true, true, true); renderManager.setForcedRenderState(forcedRenderState); // render shadow casters to shadow map viewPort.getQueue().renderShadowQueue(shadowMapOccluders, renderManager, shadowCam, true); renderManager.setForcedRenderState(null); } boolean debugfrustums = false;
public void renderShadowQueue(GeometryList list, RenderManager rm, Camera cam, boolean clear) { renderGeometryList(list, rm, cam, clear); }
public void postQueue(RenderQueue rq) { renderSet.clear(); //tree.generateRenderSet(renderSet, cam); fastRoot.generateRenderSet(globalGeoms, renderSet, cam, octBox, true); // System.out.println("Geoms: "+renderSet.size()); int tris = 0; for (Geometry geom : renderSet){ tris += geom.getTriangleCount(); // geom.setMaterial(mat2); rq.addToQueue(geom, geom.getQueueBucket()); } // Matrix4f transform = new Matrix4f(); // transform.setScale(0.2f, 0.2f, 0.2f); // System.out.println("Tris: "+tris); // tree.renderBounds(rq, transform, box, mat); // renderManager.flushQueue(viewPort); }
/** * Clears the queue of the given ViewPort. * Simply calls {@link RenderQueue#clear() } on the ViewPort's * {@link ViewPort#getQueue() render queue}. * * @param vp The ViewPort of which the queue will be cleared. * * @see RenderQueue#clear() * @see ViewPort#getQueue() */ public void clearQueue(ViewPort vp) { vp.getQueue().clear(); }
@Override protected void postFrame(RenderManager renderManager, ViewPort viewPort, FrameBuffer prevFilterBuffer, FrameBuffer sceneBuffer) { renderManager.setCamera(viewPort.getCamera(), false); if (prevFilterBuffer != sceneBuffer) { renderManager.getRenderer().copyFrameBuffer(prevFilterBuffer, sceneBuffer, false); } renderManager.getRenderer().setFrameBuffer(sceneBuffer); viewPort.getQueue().renderQueue(RenderQueue.Bucket.Translucent, renderManager, viewPort.getCamera()); }
/** * Renders the {@link Bucket#Translucent translucent queue} on the viewPort. * <p> * This call does nothing unless {@link #setHandleTranslucentBucket(boolean) } * is set to true. This method clears the translucent queue after rendering * it. * * @param vp The viewport of which the translucent queue should be rendered. * * @see #renderViewPortQueues(com.jme3.renderer.ViewPort, boolean) * @see #setHandleTranslucentBucket(boolean) */ public void renderTranslucentQueue(ViewPort vp) { if (prof!=null) prof.vpStep(VpStep.RenderBucket, vp, Bucket.Translucent); RenderQueue rq = vp.getQueue(); if (!rq.isQueueEmpty(Bucket.Translucent) && handleTranlucentBucket) { rq.renderQueue(Bucket.Translucent, this, vp.getCamera(), true); } }