diff --git a/render/webgl/shaders/gradient.frag b/render/webgl/shaders/gradient.frag index f25565227..e01ca7a90 100644 --- a/render/webgl/shaders/gradient.frag +++ b/render/webgl/shaders/gradient.frag @@ -8,8 +8,8 @@ uniform vec4 add_color; uniform mat3 u_matrix; uniform int u_gradient_type; -uniform float u_ratios[15]; -uniform vec4 u_colors[15]; +uniform float u_ratios[16]; +uniform vec4 u_colors[16]; uniform int u_num_colors; uniform int u_repeat_mode; uniform float u_focal_point; diff --git a/render/webgl/src/lib.rs b/render/webgl/src/lib.rs index a92311f52..9cc1d54d2 100644 --- a/render/webgl/src/lib.rs +++ b/render/webgl/src/lib.rs @@ -507,7 +507,7 @@ impl WebGlRenderBackend { *color = srgb_to_linear(*color); } } - for i in num_colors..8 { + for i in num_colors..MAX_GRADIENT_COLORS { ratios[i] = ratios[i - 1]; colors[i] = colors[i - 1]; } @@ -1019,8 +1019,12 @@ impl RenderBackend for WebGlRenderBackend { gradient.gradient_type, ); program.uniform1fv(&self.gl, ShaderUniform::GradientRatios, &gradient.ratios); - let colors = - unsafe { std::slice::from_raw_parts(gradient.colors[0].as_ptr(), 32) }; + let colors = unsafe { + std::slice::from_raw_parts( + gradient.colors[0].as_ptr(), + MAX_GRADIENT_COLORS * 4, + ) + }; program.uniform4fv(&self.gl, ShaderUniform::GradientColors, &colors); program.uniform1i( &self.gl,