webgl: Set uniforms for all gradient colors

Was mistakenly not uploading all colors. Fixes #1240.
This commit is contained in:
Mike Welsh 2020-09-29 14:02:25 -07:00
parent f0a02f00b5
commit 3ddfd516d5
2 changed files with 9 additions and 5 deletions

View File

@ -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;

View File

@ -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,