switch (bucket) { case Gui: guiList = new GeometryList(c); break; case Opaque: opaqueList = new GeometryList(c); break; case Sky: skyList = new GeometryList(c); break; case Transparent: transparentList = new GeometryList(c); break; case Translucent: translucentList = new GeometryList(c); break; default:
/** * Populates the outputGeometryList with the geometry of the * inputGeometryList that are in the frustum of the given camera * * @param inputGeometryList The list containing all geometries to check * against the camera frustum * @param camera the camera to check geometries against * @param outputGeometryList the list of all geometries that are in the * camera frustum */ public static void getGeometriesInCamFrustum(GeometryList inputGeometryList, Camera camera, GeometryList outputGeometryList) { for (int i = 0; i < inputGeometryList.size(); i++) { Geometry g = inputGeometryList.get(i); int planeState = camera.getPlaneState(); camera.setPlaneState(0); if (camera.contains(g.getWorldBound()) != Camera.FrustumIntersect.Outside) { outputGeometryList.add(g); } camera.setPlaneState(planeState); } }
private void renderGeometryList(GeometryList list, RenderManager rm, Camera cam, boolean clear) { list.setCamera(cam); // select camera for sorting list.sort(); for (int i = 0; i < list.size(); i++) { Geometry obj = list.get(i); assert obj != null; rm.renderGeometry(obj); obj.queueDistance = Float.NEGATIVE_INFINITY; } if (clear) { list.clear(); } }
GeometryList gl = new GeometryList(comparator); for (int g = 0; g < 5; g++) { for (int i = materials.length - 1; i >= 0; i--) { gl.add(geom); gl.sort(); for (int i = 0; i < gl.size(); i++) { Material mat = gl.get(i).getMaterial(); String sortId = Integer.toHexString(mat.getSortId()).toUpperCase(); System.out.print(sortId + "\t"); for (int i = 0; i < gl.size(); i++) { Material mat = gl.get(i).getMaterial(); if (current == null) { current = mat; for (int g = 0; g < 5; g++) { int index = i * 5 + g; Material mat1 = gl.get(index).getMaterial(); Material mat2 = materials[i]; assert mat1.getName().equals(mat2.getName()) :
public boolean hasNext() { return index < size(); }
/** * Returns the current GeometryComparator used by the specified bucket, * one of Gui, Opaque, Sky, Transparent, or Translucent. */ public GeometryComparator getGeometryComparator(Bucket bucket) { switch (bucket) { case Gui: return guiList.getComparator(); case Opaque: return opaqueList.getComparator(); case Sky: return skyList.getComparator(); case Transparent: return transparentList.getComparator(); case Translucent: return translucentList.getComparator(); default: throw new UnsupportedOperationException("Unknown bucket type: " + bucket); } }
private void renderGeometryList(GeometryList list, RenderManager rm, Camera cam, boolean clear) { list.setCamera(cam); // select camera for sorting list.sort(); for (int i = 0; i < list.size(); i++) { Geometry obj = list.get(i); assert obj != null; rm.renderGeometry(obj); obj.queueDistance = Float.NEGATIVE_INFINITY; } if (clear) { list.clear(); } }
public boolean isQueueEmpty(Bucket bucket) { switch (bucket) { case Gui: return guiList.size() == 0; case Opaque: return opaqueList.size() == 0; case Sky: return skyList.size() == 0; case Transparent: return transparentList.size() == 0; case Translucent: return translucentList.size() == 0; default: throw new UnsupportedOperationException("Unsupported bucket type: " + bucket); } }
@Override protected void getReceivers(GeometryList lightReceivers) { lightReceivers.clear(); Camera[] cameras = new Camera[1]; cameras[0] = shadowCam; for (Spatial scene : viewPort.getScenes()) { ShadowUtil.getLitGeometriesInViewPort(scene, viewPort.getCamera(), cameras, RenderQueue.ShadowMode.Receive, lightReceivers); } }
outputGeometryList.add((Geometry)scene);
/** * Returns the current GeometryComparator used by the specified bucket, * one of Gui, Opaque, Sky, Transparent, or Translucent. */ public GeometryComparator getGeometryComparator(Bucket bucket) { switch (bucket) { case Gui: return guiList.getComparator(); case Opaque: return opaqueList.getComparator(); case Sky: return skyList.getComparator(); case Transparent: return transparentList.getComparator(); case Translucent: return translucentList.getComparator(); default: throw new UnsupportedOperationException("Unknown bucket type: " + bucket); } }
/** * Renders the given GeometryList. * <p> * For every geometry in the list, the * {@link #renderGeometry(com.jme3.scene.Geometry) } method is called. * * @param gl The geometry list to render. * * @see GeometryList * @see #renderGeometry(com.jme3.scene.Geometry) */ public void renderGeometryList(GeometryList gl) { for (int i = 0; i < gl.size(); i++) { renderGeometry(gl.get(i)); } }
private void renderGeometryList(GeometryList list, RenderManager rm, Camera cam, boolean clear) { list.setCamera(cam); // select camera for sorting list.sort(); for (int i = 0; i < list.size(); i++) { Spatial obj = list.get(i); assert obj != null; if (obj instanceof Geometry) { Geometry g = (Geometry) obj; rm.renderGeometry(g); // make sure to reset queue distance } if (obj != null) { obj.queueDistance = Float.NEGATIVE_INFINITY; } } if (clear) { list.clear(); } }
/** * Populates the outputGeometryList with the geometry of the * inputGeometryList that are in the radius of a light. * The array of camera must be an array of 6 cameras initialized so they represent the light viewspace of a pointlight * * @param inputGeometryList The list containing all geometries to check * against the camera frustum * @param cameras the camera array to check geometries against * @param outputGeometryList the list of all geometries that are in the * camera frustum */ public static void getGeometriesInLightRadius(GeometryList inputGeometryList, Camera[] cameras, GeometryList outputGeometryList) { for (int i = 0; i < inputGeometryList.size(); i++) { Geometry g = inputGeometryList.get(i); boolean inFrustum = false; for (int j = 0; j < cameras.length && inFrustum == false; j++) { Camera camera = cameras[j]; int planeState = camera.getPlaneState(); camera.setPlaneState(0); inFrustum = camera.contains(g.getWorldBound()) != Camera.FrustumIntersect.Outside; camera.setPlaneState(planeState); } if (inFrustum) { outputGeometryList.add(g); } } }
@Override protected void getReceivers(GeometryList lightReceivers) { if (lightReceivers.size()==0) { for (Spatial scene : viewPort.getScenes()) { ShadowUtil.getGeometriesInCamFrustum(scene, viewPort.getCamera(), RenderQueue.ShadowMode.Receive, lightReceivers); } } }
@Override protected void getReceivers(GeometryList lightReceivers) { lightReceivers.clear(); for (Spatial scene : viewPort.getScenes()) { ShadowUtil.getLitGeometriesInViewPort(scene, viewPort.getCamera(), shadowCams, RenderQueue.ShadowMode.Receive, lightReceivers); } }