|
|
@@ -51,6 +51,8 @@ import com.jme3.scene.Spatial;
|
|
|
import com.jme3.scene.shape.Quad;
|
|
|
import com.jme3.texture.FrameBuffer;
|
|
|
import com.jme3.texture.Image.Format;
|
|
|
+import com.jme3.texture.Texture.MagFilter;
|
|
|
+import com.jme3.texture.Texture.MinFilter;
|
|
|
import com.jme3.texture.Texture.WrapMode;
|
|
|
import com.jme3.texture.Texture2D;
|
|
|
import com.jme3.ui.Picture;
|
|
|
@@ -142,6 +144,7 @@ public class SimpleWaterProcessor implements SceneProcessor {
|
|
|
return rm != null;
|
|
|
}
|
|
|
float time = 0;
|
|
|
+ float savedTpf = 0;
|
|
|
|
|
|
public void preFrame(float tpf) {
|
|
|
time = time + (tpf * speed);
|
|
|
@@ -149,6 +152,7 @@ public class SimpleWaterProcessor implements SceneProcessor {
|
|
|
time = 0;
|
|
|
}
|
|
|
material.setFloat("time", time);
|
|
|
+ savedTpf = tpf;
|
|
|
}
|
|
|
|
|
|
public void postQueue(RenderQueue rq) {
|
|
|
@@ -193,6 +197,13 @@ public class SimpleWaterProcessor implements SceneProcessor {
|
|
|
if (inv) {
|
|
|
reflectionCam.setAxes(reflectionCam.getLeft().negateLocal(), reflectionCam.getUp(), reflectionCam.getDirection().negateLocal());
|
|
|
}
|
|
|
+
|
|
|
+ //Rendering reflection and refraction
|
|
|
+ rm.renderViewPort(reflectionView, savedTpf);
|
|
|
+ rm.renderViewPort(refractionView, savedTpf);
|
|
|
+ rm.getRenderer().setFrameBuffer(vp.getOutputFrameBuffer());
|
|
|
+ rm.setCamera(sceneCam, false);
|
|
|
+
|
|
|
}
|
|
|
|
|
|
public void postFrame(FrameBuffer out) {
|
|
|
@@ -247,7 +258,7 @@ public class SimpleWaterProcessor implements SceneProcessor {
|
|
|
refractionCam = new Camera(renderWidth, renderHeight);
|
|
|
|
|
|
// create a pre-view. a view that is rendered before the main view
|
|
|
- reflectionView = rm.createPreView("Reflection View", reflectionCam);
|
|
|
+ reflectionView = new ViewPort("Reflection View", reflectionCam);
|
|
|
reflectionView.setClearEnabled(true);
|
|
|
reflectionView.setBackgroundColor(ColorRGBA.Black);
|
|
|
// create offscreen framebuffer
|
|
|
@@ -263,7 +274,7 @@ public class SimpleWaterProcessor implements SceneProcessor {
|
|
|
reflectionView.attachScene(reflectionScene);
|
|
|
|
|
|
// create a pre-view. a view that is rendered before the main view
|
|
|
- refractionView = rm.createPreView("Refraction View", refractionCam);
|
|
|
+ refractionView = new ViewPort("Refraction View", refractionCam);
|
|
|
refractionView.setClearEnabled(true);
|
|
|
refractionView.setBackgroundColor(ColorRGBA.Black);
|
|
|
// create offscreen framebuffer
|
|
|
@@ -503,6 +514,7 @@ public class SimpleWaterProcessor implements SceneProcessor {
|
|
|
|
|
|
public void preFrame(float tpf) {
|
|
|
refractionCam.setClipPlane(refractionClipPlane, Plane.Side.Negative);//,-1
|
|
|
+
|
|
|
}
|
|
|
|
|
|
public void postQueue(RenderQueue rq) {
|