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 mat3 u_matrix;
uniform int u_gradient_type; uniform int u_gradient_type;
uniform float u_ratios[15]; uniform float u_ratios[16];
uniform vec4 u_colors[15]; uniform vec4 u_colors[16];
uniform int u_num_colors; uniform int u_num_colors;
uniform int u_repeat_mode; uniform int u_repeat_mode;
uniform float u_focal_point; uniform float u_focal_point;

View File

@ -507,7 +507,7 @@ impl WebGlRenderBackend {
*color = srgb_to_linear(*color); *color = srgb_to_linear(*color);
} }
} }
for i in num_colors..8 { for i in num_colors..MAX_GRADIENT_COLORS {
ratios[i] = ratios[i - 1]; ratios[i] = ratios[i - 1];
colors[i] = colors[i - 1]; colors[i] = colors[i - 1];
} }
@ -1019,8 +1019,12 @@ impl RenderBackend for WebGlRenderBackend {
gradient.gradient_type, gradient.gradient_type,
); );
program.uniform1fv(&self.gl, ShaderUniform::GradientRatios, &gradient.ratios); program.uniform1fv(&self.gl, ShaderUniform::GradientRatios, &gradient.ratios);
let colors = let colors = unsafe {
unsafe { std::slice::from_raw_parts(gradient.colors[0].as_ptr(), 32) }; std::slice::from_raw_parts(
gradient.colors[0].as_ptr(),
MAX_GRADIENT_COLORS * 4,
)
};
program.uniform4fv(&self.gl, ShaderUniform::GradientColors, &colors); program.uniform4fv(&self.gl, ShaderUniform::GradientColors, &colors);
program.uniform1i( program.uniform1i(
&self.gl, &self.gl,