From 5e936b96549395b42a949eeb1adff03ff38269fc Mon Sep 17 00:00:00 2001 From: schmelczerandras Date: Wed, 14 Oct 2020 15:18:13 +0200 Subject: [PATCH] Fix int and bool array loading --- .../graphics-library/helper/load-uniform.ts | 27 ++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/src/graphics/graphics-library/helper/load-uniform.ts b/src/graphics/graphics-library/helper/load-uniform.ts index e0e34b9..5ac81b7 100644 --- a/src/graphics/graphics-library/helper/load-uniform.ts +++ b/src/graphics/graphics-library/helper/load-uniform.ts @@ -11,6 +11,30 @@ const converters: Map< > = new Map(); converters.set(WebGLRenderingContext.SAMPLER_2D, (gl, v, l) => gl.uniform1i(l, v)); +converters.set(WebGLRenderingContext.INT, (gl, v: number | Array, l) => { + if (v instanceof Array) { + if (v.length == 0) { + return; + } + + gl.uniform1iv(l, new Int32Array(v)); + } else { + gl.uniform1i(l, v); + } +}); + +converters.set(WebGLRenderingContext.BOOL, (gl, v: boolean | Array, l) => { + if (v instanceof Array) { + if (v.length == 0) { + return; + } + + gl.uniform1iv(l, new Int32Array(v.map((b) => +b))); + } else { + gl.uniform1i(l, +v); + } +}); + converters.set( WebGLRenderingContext.FLOAT, (gl, v: number | Array | Float32Array, l) => { @@ -106,9 +130,6 @@ converters.set(WebGLRenderingContext.FLOAT_MAT3, (gl, v, l) => { } }); -converters.set(WebGLRenderingContext.BOOL, (gl, v: number, l) => gl.uniform1i(l, v)); -converters.set(WebGLRenderingContext.INT, (gl, v: number, l) => gl.uniform1i(l, v)); - /** @internal */ export const loadUniform = ( gl: UniversalRenderingContext,