Water Filter :
- fixed particle emitter disorientation when using the WaterFilter git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@7610 75d07b2b-3a1a-0410-a2c5-0572b91ccdca
This commit is contained in:
parent
983f1414c7
commit
3746238df3
@ -113,6 +113,9 @@ public class WaterFilter extends Filter {
|
|||||||
private float underWaterFogDistance = 120;
|
private float underWaterFogDistance = 120;
|
||||||
private float causticsIntensity = 0.5f;
|
private float causticsIntensity = 0.5f;
|
||||||
|
|
||||||
|
private RenderManager renderManager;
|
||||||
|
private ViewPort viewPort;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a Water Filter
|
* Create a Water Filter
|
||||||
*/
|
*/
|
||||||
@ -135,11 +138,6 @@ public class WaterFilter extends Filter {
|
|||||||
public void preFrame(float tpf) {
|
public void preFrame(float tpf) {
|
||||||
time = time + (tpf * speed);
|
time = time + (tpf * speed);
|
||||||
material.setFloat("Time", time);
|
material.setFloat("Time", time);
|
||||||
savedTpf = tpf;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void postQueue(RenderManager renderManager, ViewPort viewPort) {
|
|
||||||
Camera sceneCam = viewPort.getCamera();
|
Camera sceneCam = viewPort.getCamera();
|
||||||
biasMatrix.mult(sceneCam.getViewProjectionMatrix(), textureProjMatrix);
|
biasMatrix.mult(sceneCam.getViewProjectionMatrix(), textureProjMatrix);
|
||||||
material.setMatrix4("TextureProjMatrix", textureProjMatrix);
|
material.setMatrix4("TextureProjMatrix", textureProjMatrix);
|
||||||
@ -174,6 +172,7 @@ public class WaterFilter extends Filter {
|
|||||||
float planeDistance = plane.pseudoDistance(vars.vect1);
|
float planeDistance = plane.pseudoDistance(vars.vect1);
|
||||||
vars.vect2.set(plane.getNormal()).multLocal(planeDistance * 2.0f);
|
vars.vect2.set(plane.getNormal()).multLocal(planeDistance * 2.0f);
|
||||||
vars.vect3.set(vars.vect1.subtractLocal(vars.vect2)).subtractLocal(loc).normalizeLocal().negateLocal();
|
vars.vect3.set(vars.vect1.subtractLocal(vars.vect2)).subtractLocal(loc).normalizeLocal().negateLocal();
|
||||||
|
|
||||||
reflectionCam.lookAt(targetLocation, vars.vect3);
|
reflectionCam.lookAt(targetLocation, vars.vect3);
|
||||||
|
|
||||||
assert vars.unlock();
|
assert vars.unlock();
|
||||||
@ -188,18 +187,28 @@ public class WaterFilter extends Filter {
|
|||||||
renderManager.setHandleTranslucentBucket(true);
|
renderManager.setHandleTranslucentBucket(true);
|
||||||
rtb = false;
|
rtb = false;
|
||||||
}
|
}
|
||||||
renderManager.renderViewPort(reflectionView, savedTpf);
|
renderManager.renderViewPort(reflectionView, tpf);
|
||||||
if (!rtb) {
|
if (!rtb) {
|
||||||
renderManager.setHandleTranslucentBucket(false);
|
renderManager.setHandleTranslucentBucket(false);
|
||||||
}
|
}
|
||||||
renderManager.getRenderer().setFrameBuffer(viewPort.getOutputFrameBuffer());
|
|
||||||
renderManager.setCamera(sceneCam, false);
|
renderManager.setCamera(sceneCam, false);
|
||||||
|
renderManager.getRenderer().setFrameBuffer(viewPort.getOutputFrameBuffer());
|
||||||
|
|
||||||
|
|
||||||
underWater = false;
|
underWater = false;
|
||||||
} else {
|
} else {
|
||||||
underWater = true;
|
underWater = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void init(AssetManager manager, RenderManager renderManager, ViewPort vp, int w, int h) {
|
||||||
|
super.init(manager, renderManager, vp, w, h);
|
||||||
|
this.renderManager=renderManager;
|
||||||
|
this.viewPort=vp;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Material getMaterial() {
|
public Material getMaterial() {
|
||||||
return material;
|
return material;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user