/** * returns the edge filtering mode * * @see EdgeFilteringMode * @return */ public EdgeFilteringMode getEdgeFilteringMode() { return shadowRenderer.getEdgeFilteringMode(); }
/** * returns the edges thickness <br> * * @see #setEdgesThickness(int edgesThickness) * @return edgesThickness */ public int getEdgesThickness() { return shadowRenderer.getEdgesThickness(); }
/** * returns the shadow intensity * * @see #setShadowIntensity(float shadowIntensity) * @return shadowIntensity */ public float getShadowIntensity() { return shadowRenderer.getShadowIntensity(); }
/** * set the post shadow material for this renderer * * @param postShadowMat */ protected final void setPostShadowMaterial(Material postShadowMat) { this.postshadowMat = postShadowMat; postshadowMat.setFloat("ShadowMapSize", shadowMapSize); for (int i = 0; i < nbShadowMaps; i++) { postshadowMat.setTexture(shadowMapStringCache[i], shadowMaps[i]); } setShadowCompareMode(shadowCompareMode); setEdgeFilteringMode(edgeFilteringMode); setShadowIntensity(shadowIntensity); }
plsr.setShadowCompareMode(hardwareShadows ? CompareMode.Hardware : CompareMode.Software); plsf.setShadowCompareMode(hardwareShadows ? CompareMode.Hardware : CompareMode.Software); filteringIndex = plsr.getEdgeFilteringMode().ordinal(); filteringIndex = (filteringIndex + 1) % EdgeFilteringMode.values().length; EdgeFilteringMode m = EdgeFilteringMode.values()[filteringIndex]; plsr.setEdgeFilteringMode(m); plsf.setEdgeFilteringMode(m); shadowFilterText.setText(FILTERING_TEXT + m.toString()); plsr.setShadowIntensity(plsr.getShadowIntensity() + 0.1f); plsf.setShadowIntensity(plsf.getShadowIntensity() + 0.1f); shadowIntensityText.setText(INTENSITY_TEXT + plsr.getShadowIntensity()); plsr.setShadowIntensity(plsr.getShadowIntensity() - 0.1f); plsf.setShadowIntensity(plsf.getShadowIntensity() - 0.1f); shadowIntensityText.setText(INTENSITY_TEXT + plsr.getShadowIntensity()); plsr.setEdgesThickness(plsr.getEdgesThickness() + 1); plsf.setEdgesThickness(plsf.getEdgesThickness() + 1); System.out.println("Shadow thickness : " + plsr.getEdgesThickness()); plsr.setEdgesThickness(plsr.getEdgesThickness() - 1); plsf.setEdgesThickness(plsf.getEdgesThickness() - 1); System.out.println("Shadow thickness : " + plsr.getEdgesThickness());
setShadowCompareMode(shadowCompareMode); setEdgeFilteringMode(edgeFilteringMode); setShadowIntensity(shadowIntensity); initForcedRenderState(); setRenderBackFacesShadows(isRenderBackFacesShadows());
@SuppressWarnings("fallthrough") public void postQueue(RenderQueue rq) { lightReceivers.clear(); skipPostPass = false; if ( !checkCulling(viewPort.getCamera()) ) { skipPostPass = true; return; } updateShadowCams(viewPort.getCamera()); Renderer r = renderManager.getRenderer(); renderManager.setForcedMaterial(preshadowMat); renderManager.setForcedTechnique("PreShadow"); for (int shadowMapIndex = 0; shadowMapIndex < nbShadowMaps; shadowMapIndex++) { if (debugfrustums) { doDisplayFrustumDebug(shadowMapIndex); } renderShadowMap(shadowMapIndex); } debugfrustums = false; //restore setting for future rendering r.setFrameBuffer(viewPort.getOutputFrameBuffer()); renderManager.setForcedMaterial(null); renderManager.setForcedTechnique(null); renderManager.setCamera(viewPort.getCamera(), false); }
displayShadowMap(renderManager.getRenderer()); getReceivers(lightReceivers); setMatParams(lightReceivers); clearMatParams();
private void setMatParams(GeometryList l) { //iteration throught all the geometries of the list to gather the materials buildMatCache(l); //iterating through the mat cache and setting the parameters for (Material mat : matCache) { mat.setFloat("ShadowMapSize", shadowMapSize); for (int j = 0; j < nbShadowMaps; j++) { mat.setMatrix4(lightViewStringCache[j], lightViewProjectionsMatrices[j]); } for (int j = 0; j < nbShadowMaps; j++) { mat.setTexture(shadowMapStringCache[j], shadowMaps[j]); } mat.setBoolean("HardwareShadows", shadowCompareMode == CompareMode.Hardware); mat.setInt("FilterMode", edgeFilteringMode.getMaterialParamValue()); mat.setFloat("PCFEdge", edgesThickness); mat.setFloat("ShadowIntensity", shadowIntensity); mat.setBoolean("BackfaceShadows", renderBackFacesShadows); if (fadeInfo != null) { mat.setVector2("FadeInfo", fadeInfo); } setMaterialParameters(mat); } //At least one material of the receiving geoms does not support the post shadow techniques //so we fall back to the forced material solution (transparent shadows won't be supported for these objects) if (needsfallBackMaterial) { setPostShadowParams(); } }
shadowFilterText.setText(FILTERING_TEXT + plsr.getEdgeFilteringMode().toString()); shadowIntensityText.setText(INTENSITY_TEXT + plsr.getShadowIntensity());
/** * Set the shadowIntensity, the value should be between 0 and 1, a 0 value * gives a bright and invisible shadow, a 1 value gives a pitch black * shadow, default is 0.7 * * @param shadowIntensity the darkness of the shadow */ final public void setShadowIntensity(float shadowIntensity) { shadowRenderer.setShadowIntensity(shadowIntensity); }
/** * sets the shadow compare mode see {@link CompareMode} for more info * * @param compareMode */ final public void setShadowCompareMode(CompareMode compareMode) { shadowRenderer.setShadowCompareMode(compareMode); }
/** * Sets the filtering mode for shadow edges see {@link EdgeFilteringMode} * for more info * * @param filterMode */ final public void setEdgeFilteringMode(EdgeFilteringMode filterMode) { shadowRenderer.setEdgeFilteringMode(filterMode); }
/** * Sets the shadow edges thickness. default is 1, setting it to lower values * can help to reduce the jagged effect of the shadow edges * * @param edgesThickness */ public void setEdgesThickness(int edgesThickness) { shadowRenderer.setEdgesThickness(edgesThickness); }
setShadowCompareMode(shadowCompareMode); setEdgeFilteringMode(edgeFilteringMode); setShadowIntensity(shadowIntensity); initForcedRenderState(); setRenderBackFacesShadows(isRenderBackFacesShadows());
/** * set the post shadow material for this renderer * * @param postShadowMat */ protected final void setPostShadowMaterial(Material postShadowMat) { this.postshadowMat = postShadowMat; postshadowMat.setFloat("ShadowMapSize", shadowMapSize); for (int i = 0; i < nbShadowMaps; i++) { postshadowMat.setTexture(shadowMapStringCache[i], shadowMaps[i]); } setShadowCompareMode(shadowCompareMode); setEdgeFilteringMode(edgeFilteringMode); setShadowIntensity(shadowIntensity); }
@SuppressWarnings("fallthrough") public void postQueue(RenderQueue rq) { lightReceivers.clear(); skipPostPass = false; if ( !checkCulling(viewPort.getCamera()) ) { skipPostPass = true; return; } updateShadowCams(viewPort.getCamera()); Renderer r = renderManager.getRenderer(); renderManager.setForcedMaterial(preshadowMat); renderManager.setForcedTechnique("PreShadow"); for (int shadowMapIndex = 0; shadowMapIndex < nbShadowMaps; shadowMapIndex++) { if (debugfrustums) { doDisplayFrustumDebug(shadowMapIndex); } renderShadowMap(shadowMapIndex); } debugfrustums = false; //restore setting for future rendering r.setFrameBuffer(viewPort.getOutputFrameBuffer()); renderManager.setForcedMaterial(null); renderManager.setForcedTechnique(null); renderManager.setCamera(viewPort.getCamera(), false); }
displayShadowMap(renderManager.getRenderer()); getReceivers(lightReceivers); setMatParams(lightReceivers); clearMatParams();
private void setMatParams(GeometryList l) { //iteration throught all the geometries of the list to gather the materials buildMatCache(l); //iterating through the mat cache and setting the parameters for (Material mat : matCache) { mat.setFloat("ShadowMapSize", shadowMapSize); for (int j = 0; j < nbShadowMaps; j++) { mat.setMatrix4(lightViewStringCache[j], lightViewProjectionsMatrices[j]); } for (int j = 0; j < nbShadowMaps; j++) { mat.setTexture(shadowMapStringCache[j], shadowMaps[j]); } mat.setBoolean("HardwareShadows", shadowCompareMode == CompareMode.Hardware); mat.setInt("FilterMode", edgeFilteringMode.getMaterialParamValue()); mat.setFloat("PCFEdge", edgesThickness); mat.setFloat("ShadowIntensity", shadowIntensity); mat.setBoolean("BackfaceShadows", renderBackFacesShadows); if (fadeInfo != null) { mat.setVector2("FadeInfo", fadeInfo); } setMaterialParameters(mat); } //At least one material of the receiving geoms does not support the post shadow techniques //so we fall back to the forced material solution (transparent shadows won't be supported for these objects) if (needsfallBackMaterial) { setPostShadowParams(); } }
/** * Set the shadowIntensity, the value should be between 0 and 1, a 0 value * gives a bright and invisible shadow, a 1 value gives a pitch black * shadow, default is 0.7 * * @param shadowIntensity the darkness of the shadow */ final public void setShadowIntensity(float shadowIntensity) { shadowRenderer.setShadowIntensity(shadowIntensity); }