From 96ae823504f111ce654a342ede6c6bb5fee9ba06 Mon Sep 17 00:00:00 2001 From: "rem..om" Date: Wed, 11 Jul 2012 15:55:15 +0000 Subject: [PATCH] Fixed viewport uniforms binding git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@9561 75d07b2b-3a1a-0410-a2c5-0572b91ccdca --- .../core/com/jme3/renderer/RenderManager.java | 1 + .../jme3/shader/UniformBindingManager.java | 24 ++++++++++--------- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/engine/src/core/com/jme3/renderer/RenderManager.java b/engine/src/core/com/jme3/renderer/RenderManager.java index a4ea8f922..e192c4555 100644 --- a/engine/src/core/com/jme3/renderer/RenderManager.java +++ b/engine/src/core/com/jme3/renderer/RenderManager.java @@ -813,6 +813,7 @@ public class RenderManager { viewY = (int) (cam.getViewPortBottom() * cam.getHeight()); viewWidth = (int) ((cam.getViewPortRight() - cam.getViewPortLeft()) * cam.getWidth()); viewHeight = (int) ((cam.getViewPortTop() - cam.getViewPortBottom()) * cam.getHeight()); + uniformBindingManager.setViewPort(viewX, viewY, viewWidth, viewHeight); renderer.setViewPort(viewX, viewY, viewWidth, viewHeight); renderer.setClipRect(viewX, viewY, viewWidth, viewHeight); cam.clearViewportChanged(); diff --git a/engine/src/core/com/jme3/shader/UniformBindingManager.java b/engine/src/core/com/jme3/shader/UniformBindingManager.java index ca0fa3872..82c25ef72 100644 --- a/engine/src/core/com/jme3/shader/UniformBindingManager.java +++ b/engine/src/core/com/jme3/shader/UniformBindingManager.java @@ -7,6 +7,7 @@ package com.jme3.shader; import com.jme3.math.*; import com.jme3.renderer.Camera; import com.jme3.renderer.RenderManager; +import com.jme3.renderer.ViewPort; import com.jme3.system.Timer; import java.util.List; @@ -21,7 +22,7 @@ import java.util.List; * @author Kirill Vainer */ public class UniformBindingManager { - + private Timer timer; private float near, far; private int viewX, viewY, viewWidth, viewHeight; @@ -29,18 +30,14 @@ public class UniformBindingManager { camLeft = new Vector3f(), camDir = new Vector3f(), camLoc = new Vector3f(); - private Matrix4f tempMatrix = new Matrix4f(); - private Matrix4f viewMatrix = new Matrix4f(); private Matrix4f projMatrix = new Matrix4f(); private Matrix4f viewProjMatrix = new Matrix4f(); private Matrix4f worldMatrix = new Matrix4f(); - private Matrix4f worldViewMatrix = new Matrix4f(); private Matrix4f worldViewProjMatrix = new Matrix4f(); private Matrix3f normalMatrix = new Matrix3f(); - private Matrix4f worldMatrixInv = new Matrix4f(); private Matrix4f viewMatrixInv = new Matrix4f(); private Matrix4f projMatrixInv = new Matrix4f(); @@ -48,12 +45,11 @@ public class UniformBindingManager { private Matrix4f worldViewMatrixInv = new Matrix4f(); private Matrix3f normalMatrixInv = new Matrix3f(); private Matrix4f worldViewProjMatrixInv = new Matrix4f(); - private Vector4f viewPort = new Vector4f(); private Vector2f resolution = new Vector2f(); private Vector2f resolutionInv = new Vector2f(); private Vector2f nearFar = new Vector2f(); - + /** * Internal use only. * 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 * rendering. This has no effect unless objects are rendered manually @@ -196,7 +192,7 @@ public class UniformBindingManager { public void setWorldMatrix(Matrix4f mat) { worldMatrix.set(mat); } - + /** * Set the timer that should be used to query the time based * {@link UniformBinding}s for material world parameters. @@ -206,7 +202,7 @@ public class UniformBindingManager { public void setTimer(com.jme3.system.Timer timer) { this.timer = timer; } - + public void setCamera(Camera cam, Matrix4f viewMatrix, Matrix4f projMatrix, Matrix4f viewProjMatrix) { this.viewMatrix.set(viewMatrix); this.projMatrix.set(projMatrix); @@ -220,5 +216,11 @@ public class UniformBindingManager { near = cam.getFrustumNear(); 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; + } }