Avoid some teeny-tiny per frame allocations by

only creating a new Plane() and setting the water
height uniform when the water height changes.
Also got rid of the redundant dot() product and
Vector3f allocation in the process.
This commit is contained in:
pspeed42 2014-08-12 03:13:16 -04:00
parent c0465b73a8
commit 1185d2099b

View File

@ -152,11 +152,11 @@ public class WaterFilter extends Filter {
biasMatrix.mult(sceneCam.getViewProjectionMatrix(), textureProjMatrix);
material.setMatrix4("TextureProjMatrix", textureProjMatrix);
material.setVector3("CameraPosition", sceneCam.getLocation());
material.setFloat("WaterHeight", waterHeight);
//material.setFloat("WaterHeight", waterHeight);
//update reflection cam
plane = new Plane(Vector3f.UNIT_Y, new Vector3f(0, waterHeight, 0).dot(Vector3f.UNIT_Y));
reflectionProcessor.setReflectionClipPlane(plane);
//plane = new Plane(Vector3f.UNIT_Y, new Vector3f(0, waterHeight, 0).dot(Vector3f.UNIT_Y));
//reflectionProcessor.setReflectionClipPlane(plane);
WaterUtils.updateReflectionCam(reflectionCam, plane, sceneCam);
@ -393,6 +393,13 @@ public class WaterFilter extends Filter {
*/
public void setWaterHeight(float waterHeight) {
this.waterHeight = waterHeight;
this.plane = new Plane(Vector3f.UNIT_Y, waterHeight);
if (material != null) {
material.setFloat("WaterHeight", waterHeight);
}
if (reflectionProcessor != null) {
reflectionProcessor.setReflectionClipPlane(plane);
}
}
/**