From 2ce80c3f677edefc5e5b2cfe7fa24d5a876a0495 Mon Sep 17 00:00:00 2001 From: Amnon Owed Date: Fri, 26 Jul 2013 12:57:14 +0200 Subject: [PATCH 1/2] Adding set(boolean) methods + fix w in set(int) method --- core/src/processing/opengl/PShader.java | 36 ++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/core/src/processing/opengl/PShader.java b/core/src/processing/opengl/PShader.java index 03eca7517..e7655a5c5 100644 --- a/core/src/processing/opengl/PShader.java +++ b/core/src/processing/opengl/PShader.java @@ -264,7 +264,7 @@ public class PShader { * @param w fourth component of the variable to modify. The variable has to be declared with an array/vector type in the shader (i.e.: int[4], vec4) */ public void set(String name, int x, int y, int z, int w) { - setUniformImpl(name, UniformValue.INT4, new int[] { x, y, z }); + setUniformImpl(name, UniformValue.INT4, new int[] { x, y, z, w }); } @@ -296,6 +296,26 @@ public class PShader { } + public void set(String name, boolean x) { + setUniformImpl(name, UniformValue.INT1, new int[] { (x)?1:0 }); + } + + + public void set(String name, boolean x, boolean y) { + setUniformImpl(name, UniformValue.INT2, new int[] { (x)?1:0, (y)?1:0 }); + } + + + public void set(String name, boolean x, boolean y, boolean z) { + setUniformImpl(name, UniformValue.INT3, new int[] { (x)?1:0, (y)?1:0, (z)?1:0 }); + } + + + public void set(String name, boolean x, boolean y, boolean z, boolean w) { + setUniformImpl(name, UniformValue.INT4, new int[] { (x)?1:0, (y)?1:0, (z)?1:0, (w)?1:0 }); + } + + public void set(String name, int[] vec) { set(name, vec, 1); } @@ -343,6 +363,20 @@ public class PShader { } } + public void set(String name, boolean[] vec) { + set(name, vec, 1); + } + + + public void set(String name, boolean[] boolvec, int ncoords) { + int[] vec = new int[boolvec.length]; + for (int i=0; i Date: Fri, 26 Jul 2013 20:25:41 +0200 Subject: [PATCH 2/2] Fix for issue processing/processing#1994 --- core/src/processing/opengl/PShader.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/processing/opengl/PShader.java b/core/src/processing/opengl/PShader.java index e7655a5c5..7443ec811 100644 --- a/core/src/processing/opengl/PShader.java +++ b/core/src/processing/opengl/PShader.java @@ -597,7 +597,7 @@ public class PShader { pgl.uniform3i(loc, v[0], v[1], v[2]); } else if (val.type == UniformValue.INT4) { int[] v = ((int[])val.value); - pgl.uniform4i(loc, v[0], v[1], v[2], v[4]); + pgl.uniform4i(loc, v[0], v[1], v[2], v[3]); } else if (val.type == UniformValue.FLOAT1) { float[] v = ((float[])val.value); pgl.uniform1f(loc, v[0]);