diff --git a/android/core/src/processing/opengl/PGraphicsOpenGL.java b/android/core/src/processing/opengl/PGraphicsOpenGL.java index 73381219e..55328d6db 100644 --- a/android/core/src/processing/opengl/PGraphicsOpenGL.java +++ b/android/core/src/processing/opengl/PGraphicsOpenGL.java @@ -6760,16 +6760,17 @@ public class PGraphicsOpenGL extends PGraphics { setUniformMatrix(normalMatrixLoc, pgCurrent.glNormal); } - setUniformValue(lightCountLoc, pgCurrent.lightCount); - setUniformVector(lightPositionLoc, pgCurrent.lightPosition, 4); - setUniformVector(lightNormalLoc, pgCurrent.lightNormal, 3); - setUniformVector(lightAmbientLoc, pgCurrent.lightAmbient, 3); - setUniformVector(lightDiffuseLoc, pgCurrent.lightDiffuse, 3); - setUniformVector(lightSpecularLoc, pgCurrent.lightSpecular, 3); + int count = pgCurrent.lightCount; + setUniformValue(lightCountLoc, count); + setUniformVector(lightPositionLoc, pgCurrent.lightPosition, 4, count); + setUniformVector(lightNormalLoc, pgCurrent.lightNormal, 3, count); + setUniformVector(lightAmbientLoc, pgCurrent.lightAmbient, 3, count); + setUniformVector(lightDiffuseLoc, pgCurrent.lightDiffuse, 3, count); + setUniformVector(lightSpecularLoc, pgCurrent.lightSpecular, 3, count); setUniformVector(lightFalloffCoefficientsLoc, - pgCurrent.lightFalloffCoefficients, 3); + pgCurrent.lightFalloffCoefficients, 3, count); setUniformVector(lightSpotParametersLoc, - pgCurrent.lightSpotParameters, 2); + pgCurrent.lightSpotParameters, 2, count); } @Override diff --git a/android/core/src/processing/opengl/PShader.java b/android/core/src/processing/opengl/PShader.java index d73644555..0a4827981 100644 --- a/android/core/src/processing/opengl/PShader.java +++ b/android/core/src/processing/opengl/PShader.java @@ -431,31 +431,33 @@ public class PShader { } - protected void setUniformVector(int loc, int[] vec, int ncoords) { + protected void setUniformVector(int loc, int[] vec, int ncoords, + int length) { if (-1 < loc) { if (ncoords == 1) { - pgl.uniform1iv(loc, vec.length, vec, 0); + pgl.uniform1iv(loc, length, vec, 0); } else if (ncoords == 2) { - pgl.uniform2iv(loc, vec.length / 2, vec, 0); + pgl.uniform2iv(loc, length, vec, 0); } else if (ncoords == 3) { - pgl.uniform3iv(loc, vec.length / 3, vec, 0); + pgl.uniform3iv(loc, length, vec, 0); } else if (ncoords == 4) { - pgl.uniform3iv(loc, vec.length / 4, vec, 0); + pgl.uniform3iv(loc, length, vec, 0); } } } - protected void setUniformVector(int loc, float[] vec, int ncoords) { + protected void setUniformVector(int loc, float[] vec, int ncoords, + int length) { if (-1 < loc) { if (ncoords == 1) { - pgl.uniform1fv(loc, vec.length, vec, 0); + pgl.uniform1fv(loc, length, vec, 0); } else if (ncoords == 2) { - pgl.uniform2fv(loc, vec.length / 2, vec, 0); + pgl.uniform2fv(loc, length, vec, 0); } else if (ncoords == 3) { - pgl.uniform3fv(loc, vec.length / 3, vec, 0); + pgl.uniform3fv(loc, length, vec, 0); } else if (ncoords == 4) { - pgl.uniform4fv(loc, vec.length / 4, vec, 0); + pgl.uniform4fv(loc, length, vec, 0); } } } diff --git a/core/src/processing/opengl/PGraphicsOpenGL.java b/core/src/processing/opengl/PGraphicsOpenGL.java index 73381219e..55328d6db 100644 --- a/core/src/processing/opengl/PGraphicsOpenGL.java +++ b/core/src/processing/opengl/PGraphicsOpenGL.java @@ -6760,16 +6760,17 @@ public class PGraphicsOpenGL extends PGraphics { setUniformMatrix(normalMatrixLoc, pgCurrent.glNormal); } - setUniformValue(lightCountLoc, pgCurrent.lightCount); - setUniformVector(lightPositionLoc, pgCurrent.lightPosition, 4); - setUniformVector(lightNormalLoc, pgCurrent.lightNormal, 3); - setUniformVector(lightAmbientLoc, pgCurrent.lightAmbient, 3); - setUniformVector(lightDiffuseLoc, pgCurrent.lightDiffuse, 3); - setUniformVector(lightSpecularLoc, pgCurrent.lightSpecular, 3); + int count = pgCurrent.lightCount; + setUniformValue(lightCountLoc, count); + setUniformVector(lightPositionLoc, pgCurrent.lightPosition, 4, count); + setUniformVector(lightNormalLoc, pgCurrent.lightNormal, 3, count); + setUniformVector(lightAmbientLoc, pgCurrent.lightAmbient, 3, count); + setUniformVector(lightDiffuseLoc, pgCurrent.lightDiffuse, 3, count); + setUniformVector(lightSpecularLoc, pgCurrent.lightSpecular, 3, count); setUniformVector(lightFalloffCoefficientsLoc, - pgCurrent.lightFalloffCoefficients, 3); + pgCurrent.lightFalloffCoefficients, 3, count); setUniformVector(lightSpotParametersLoc, - pgCurrent.lightSpotParameters, 2); + pgCurrent.lightSpotParameters, 2, count); } @Override diff --git a/core/src/processing/opengl/PShader.java b/core/src/processing/opengl/PShader.java index d73644555..0a4827981 100644 --- a/core/src/processing/opengl/PShader.java +++ b/core/src/processing/opengl/PShader.java @@ -431,31 +431,33 @@ public class PShader { } - protected void setUniformVector(int loc, int[] vec, int ncoords) { + protected void setUniformVector(int loc, int[] vec, int ncoords, + int length) { if (-1 < loc) { if (ncoords == 1) { - pgl.uniform1iv(loc, vec.length, vec, 0); + pgl.uniform1iv(loc, length, vec, 0); } else if (ncoords == 2) { - pgl.uniform2iv(loc, vec.length / 2, vec, 0); + pgl.uniform2iv(loc, length, vec, 0); } else if (ncoords == 3) { - pgl.uniform3iv(loc, vec.length / 3, vec, 0); + pgl.uniform3iv(loc, length, vec, 0); } else if (ncoords == 4) { - pgl.uniform3iv(loc, vec.length / 4, vec, 0); + pgl.uniform3iv(loc, length, vec, 0); } } } - protected void setUniformVector(int loc, float[] vec, int ncoords) { + protected void setUniformVector(int loc, float[] vec, int ncoords, + int length) { if (-1 < loc) { if (ncoords == 1) { - pgl.uniform1fv(loc, vec.length, vec, 0); + pgl.uniform1fv(loc, length, vec, 0); } else if (ncoords == 2) { - pgl.uniform2fv(loc, vec.length / 2, vec, 0); + pgl.uniform2fv(loc, length, vec, 0); } else if (ncoords == 3) { - pgl.uniform3fv(loc, vec.length / 3, vec, 0); + pgl.uniform3fv(loc, length, vec, 0); } else if (ncoords == 4) { - pgl.uniform4fv(loc, vec.length / 4, vec, 0); + pgl.uniform4fv(loc, length, vec, 0); } } }