|
|
@ -7,6 +7,7 @@ package com.jme3.shader; |
|
|
|
import com.jme3.math.*; |
|
|
|
import com.jme3.math.*; |
|
|
|
import com.jme3.renderer.Camera; |
|
|
|
import com.jme3.renderer.Camera; |
|
|
|
import com.jme3.renderer.RenderManager; |
|
|
|
import com.jme3.renderer.RenderManager; |
|
|
|
|
|
|
|
import com.jme3.renderer.ViewPort; |
|
|
|
import com.jme3.system.Timer; |
|
|
|
import com.jme3.system.Timer; |
|
|
|
import java.util.List; |
|
|
|
import java.util.List; |
|
|
|
|
|
|
|
|
|
|
@ -21,7 +22,7 @@ import java.util.List; |
|
|
|
* @author Kirill Vainer |
|
|
|
* @author Kirill Vainer |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
public class UniformBindingManager { |
|
|
|
public class UniformBindingManager { |
|
|
|
|
|
|
|
|
|
|
|
private Timer timer; |
|
|
|
private Timer timer; |
|
|
|
private float near, far; |
|
|
|
private float near, far; |
|
|
|
private int viewX, viewY, viewWidth, viewHeight; |
|
|
|
private int viewX, viewY, viewWidth, viewHeight; |
|
|
@ -29,18 +30,14 @@ public class UniformBindingManager { |
|
|
|
camLeft = new Vector3f(), |
|
|
|
camLeft = new Vector3f(), |
|
|
|
camDir = new Vector3f(), |
|
|
|
camDir = new Vector3f(), |
|
|
|
camLoc = new Vector3f(); |
|
|
|
camLoc = new Vector3f(); |
|
|
|
|
|
|
|
|
|
|
|
private Matrix4f tempMatrix = new Matrix4f(); |
|
|
|
private Matrix4f tempMatrix = new Matrix4f(); |
|
|
|
|
|
|
|
|
|
|
|
private Matrix4f viewMatrix = new Matrix4f(); |
|
|
|
private Matrix4f viewMatrix = new Matrix4f(); |
|
|
|
private Matrix4f projMatrix = new Matrix4f(); |
|
|
|
private Matrix4f projMatrix = new Matrix4f(); |
|
|
|
private Matrix4f viewProjMatrix = new Matrix4f(); |
|
|
|
private Matrix4f viewProjMatrix = new Matrix4f(); |
|
|
|
private Matrix4f worldMatrix = new Matrix4f(); |
|
|
|
private Matrix4f worldMatrix = new Matrix4f(); |
|
|
|
|
|
|
|
|
|
|
|
private Matrix4f worldViewMatrix = new Matrix4f(); |
|
|
|
private Matrix4f worldViewMatrix = new Matrix4f(); |
|
|
|
private Matrix4f worldViewProjMatrix = new Matrix4f(); |
|
|
|
private Matrix4f worldViewProjMatrix = new Matrix4f(); |
|
|
|
private Matrix3f normalMatrix = new Matrix3f(); |
|
|
|
private Matrix3f normalMatrix = new Matrix3f(); |
|
|
|
|
|
|
|
|
|
|
|
private Matrix4f worldMatrixInv = new Matrix4f(); |
|
|
|
private Matrix4f worldMatrixInv = new Matrix4f(); |
|
|
|
private Matrix4f viewMatrixInv = new Matrix4f(); |
|
|
|
private Matrix4f viewMatrixInv = new Matrix4f(); |
|
|
|
private Matrix4f projMatrixInv = new Matrix4f(); |
|
|
|
private Matrix4f projMatrixInv = new Matrix4f(); |
|
|
@ -48,12 +45,11 @@ public class UniformBindingManager { |
|
|
|
private Matrix4f worldViewMatrixInv = new Matrix4f(); |
|
|
|
private Matrix4f worldViewMatrixInv = new Matrix4f(); |
|
|
|
private Matrix3f normalMatrixInv = new Matrix3f(); |
|
|
|
private Matrix3f normalMatrixInv = new Matrix3f(); |
|
|
|
private Matrix4f worldViewProjMatrixInv = new Matrix4f(); |
|
|
|
private Matrix4f worldViewProjMatrixInv = new Matrix4f(); |
|
|
|
|
|
|
|
|
|
|
|
private Vector4f viewPort = new Vector4f(); |
|
|
|
private Vector4f viewPort = new Vector4f(); |
|
|
|
private Vector2f resolution = new Vector2f(); |
|
|
|
private Vector2f resolution = new Vector2f(); |
|
|
|
private Vector2f resolutionInv = new Vector2f(); |
|
|
|
private Vector2f resolutionInv = new Vector2f(); |
|
|
|
private Vector2f nearFar = new Vector2f(); |
|
|
|
private Vector2f nearFar = new Vector2f(); |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* Internal use only. |
|
|
|
* Internal use only. |
|
|
|
* Updates the given list of uniforms with {@link UniformBinding uniform bindings} |
|
|
|
* Updates the given list of uniforms with {@link UniformBinding uniform bindings} |
|
|
@ -183,7 +179,7 @@ public class UniformBindingManager { |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* Internal use only. Sets the world matrix to use for future |
|
|
|
* Internal use only. Sets the world matrix to use for future |
|
|
|
* rendering. This has no effect unless objects are rendered manually |
|
|
|
* rendering. This has no effect unless objects are rendered manually |
|
|
@ -196,7 +192,7 @@ public class UniformBindingManager { |
|
|
|
public void setWorldMatrix(Matrix4f mat) { |
|
|
|
public void setWorldMatrix(Matrix4f mat) { |
|
|
|
worldMatrix.set(mat); |
|
|
|
worldMatrix.set(mat); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* Set the timer that should be used to query the time based |
|
|
|
* Set the timer that should be used to query the time based |
|
|
|
* {@link UniformBinding}s for material world parameters. |
|
|
|
* {@link UniformBinding}s for material world parameters. |
|
|
@ -206,7 +202,7 @@ public class UniformBindingManager { |
|
|
|
public void setTimer(com.jme3.system.Timer timer) { |
|
|
|
public void setTimer(com.jme3.system.Timer timer) { |
|
|
|
this.timer = timer; |
|
|
|
this.timer = timer; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public void setCamera(Camera cam, Matrix4f viewMatrix, Matrix4f projMatrix, Matrix4f viewProjMatrix) { |
|
|
|
public void setCamera(Camera cam, Matrix4f viewMatrix, Matrix4f projMatrix, Matrix4f viewProjMatrix) { |
|
|
|
this.viewMatrix.set(viewMatrix); |
|
|
|
this.viewMatrix.set(viewMatrix); |
|
|
|
this.projMatrix.set(projMatrix); |
|
|
|
this.projMatrix.set(projMatrix); |
|
|
@ -220,5 +216,11 @@ public class UniformBindingManager { |
|
|
|
near = cam.getFrustumNear(); |
|
|
|
near = cam.getFrustumNear(); |
|
|
|
far = cam.getFrustumFar(); |
|
|
|
far = cam.getFrustumFar(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public void setViewPort(int viewX, int viewY, int viewWidth, int viewHeight) { |
|
|
|
|
|
|
|
this.viewX = viewX; |
|
|
|
|
|
|
|
this.viewY = viewY; |
|
|
|
|
|
|
|
this.viewWidth = viewWidth; |
|
|
|
|
|
|
|
this.viewHeight = viewHeight; |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|