diff --git a/plugins/PaintTool/paint.shader b/plugins/PaintTool/paint.shader index c1608a2cdf..edb297cef2 100644 --- a/plugins/PaintTool/paint.shader +++ b/plugins/PaintTool/paint.shader @@ -46,7 +46,7 @@ fragment = highp vec3 normal = normalize(v_normal); highp vec3 light_dir = normalize(u_lightPosition - v_vertex); - vec4 cursor_color = texture(u_texture_cursor, v_uvs); + vec4 cursor_color = texture2D(u_texture_cursor, v_uvs); if (cursor_color.a > 0.5) { /* Cursor */ @@ -58,9 +58,13 @@ fragment = { final_color += u_ambientColor; - ivec4 texture_color = ivec4(texture(u_texture, v_uvs) * 255.0); - uint color_index = (texture_color.r << 16) | (texture_color.g << 8) | texture_color.b; - color_index = (color_index << (32 - 1 - u_bitsRangesEnd)) >> 32 - 1 - (u_bitsRangesEnd - u_bitsRangesStart); + ivec4 texture_color = ivec4(texture2D(u_texture, v_uvs) * 255.0); + int color_index = (texture_color.r * 65536) + (texture_color.g * 256) + texture_color.b; + + int shift_left = 32 - 1 - u_bitsRangesEnd; + int shift_right = 32 - 1 - (u_bitsRangesEnd - u_bitsRangesStart); + color_index = color_index * int(pow(2.0, float(shift_left))); + color_index = color_index * int(pow(2.0, float(shift_right))); vec4 diffuse_color = vec4(u_renderColors[color_index] / 255.0, 1.0); highp float n_dot_l = mix(0.3, 0.7, dot(normal, light_dir));