Fix alpha overlay for sculpt/paint when using core profile
Same fundamental problem as fonts -- there is no longer GL_ALPHA format.
This commit is contained in:
@@ -335,8 +335,8 @@ static int load_tex(Brush *br, ViewContext *vc, float zoom, bool col, bool prima
|
||||
glBindTexture(GL_TEXTURE_2D, target->overlay_texture);
|
||||
|
||||
if (refresh) {
|
||||
GLenum format = col ? GL_RGBA : GL_ALPHA;
|
||||
GLenum internalformat = col ? GL_RGBA8 : GL_ALPHA8;
|
||||
GLenum format = col ? GL_RGBA : GL_RED;
|
||||
GLenum internalformat = col ? GL_RGBA8 : GL_R8;
|
||||
|
||||
if (!init || (target->old_col != col)) {
|
||||
glTexImage2D(GL_TEXTURE_2D, 0, internalformat, size, size, 0, format, GL_UNSIGNED_BYTE, buffer);
|
||||
@@ -457,10 +457,10 @@ static int load_tex_cursor(Brush *br, ViewContext *vc, float zoom)
|
||||
|
||||
if (refresh) {
|
||||
if (!init) {
|
||||
glTexImage2D(GL_TEXTURE_2D, 0, GL_ALPHA8, size, size, 0, GL_ALPHA, GL_UNSIGNED_BYTE, buffer);
|
||||
glTexImage2D(GL_TEXTURE_2D, 0, GL_R8, size, size, 0, GL_RED, GL_UNSIGNED_BYTE, buffer);
|
||||
}
|
||||
else {
|
||||
glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, size, size, GL_ALPHA, GL_UNSIGNED_BYTE, buffer);
|
||||
glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, size, size, GL_RED, GL_UNSIGNED_BYTE, buffer);
|
||||
}
|
||||
|
||||
if (buffer)
|
||||
@@ -664,12 +664,12 @@ static void paint_draw_tex_overlay(UnifiedPaintSettings *ups, Brush *brush,
|
||||
unsigned int pos = VertexFormat_add_attrib(format, "pos", COMP_F32, 2, KEEP_FLOAT);
|
||||
unsigned int texCoord = VertexFormat_add_attrib(format, "texCoord", COMP_F32, 2, KEEP_FLOAT);
|
||||
|
||||
immBindBuiltinProgram(GPU_SHADER_2D_IMAGE_COLOR);
|
||||
|
||||
if (col) {
|
||||
immBindBuiltinProgram(GPU_SHADER_2D_IMAGE_COLOR);
|
||||
immUniformColor4f(1.0f, 1.0f, 1.0f, overlay_alpha * 0.01f);
|
||||
}
|
||||
else {
|
||||
immBindBuiltinProgram(GPU_SHADER_2D_IMAGE_ALPHA_COLOR);
|
||||
immUniformColor3fvAlpha(U.sculpt_paint_overlay_col, overlay_alpha * 0.01f);
|
||||
}
|
||||
|
||||
|
||||
@@ -141,6 +141,7 @@ data_to_c_simple(shaders/gpu_shader_2D_image_vert.glsl SRC)
|
||||
data_to_c_simple(shaders/gpu_shader_image_shuffle_color_frag.glsl SRC)
|
||||
data_to_c_simple(shaders/gpu_shader_image_mask_uniform_color_frag.glsl SRC)
|
||||
data_to_c_simple(shaders/gpu_shader_image_modulate_alpha_frag.glsl SRC)
|
||||
data_to_c_simple(shaders/gpu_shader_image_alpha_color_frag.glsl SRC)
|
||||
data_to_c_simple(shaders/gpu_shader_image_color_frag.glsl SRC)
|
||||
data_to_c_simple(shaders/gpu_shader_image_rect_modulate_alpha_frag.glsl SRC)
|
||||
data_to_c_simple(shaders/gpu_shader_image_depth_linear_frag.glsl SRC)
|
||||
|
||||
@@ -111,6 +111,7 @@ typedef enum GPUBuiltinShader {
|
||||
GPU_SHADER_2D_FLAT_COLOR,
|
||||
GPU_SHADER_2D_SMOOTH_COLOR,
|
||||
GPU_SHADER_2D_IMAGE_COLOR,
|
||||
GPU_SHADER_2D_IMAGE_ALPHA_COLOR,
|
||||
GPU_SHADER_2D_CHECKER,
|
||||
GPU_SHADER_2D_DIAG_STRIPES,
|
||||
/* for simple 3D drawing */
|
||||
|
||||
@@ -63,6 +63,7 @@ extern char datatoc_gpu_shader_2D_image_vert_glsl[];
|
||||
|
||||
extern char datatoc_gpu_shader_3D_image_vert_glsl[];
|
||||
extern char datatoc_gpu_shader_image_color_frag_glsl[];
|
||||
extern char datatoc_gpu_shader_image_alpha_color_frag_glsl[];
|
||||
extern char datatoc_gpu_shader_image_shuffle_color_frag_glsl[];
|
||||
extern char datatoc_gpu_shader_image_interlace_frag_glsl[];
|
||||
extern char datatoc_gpu_shader_image_mask_uniform_color_frag_glsl[];
|
||||
@@ -688,6 +689,8 @@ GPUShader *GPU_shader_get_builtin_shader(GPUBuiltinShader shader)
|
||||
datatoc_gpu_shader_2D_smooth_color_frag_glsl },
|
||||
[GPU_SHADER_2D_IMAGE_COLOR] = { datatoc_gpu_shader_2D_image_vert_glsl,
|
||||
datatoc_gpu_shader_image_color_frag_glsl },
|
||||
[GPU_SHADER_2D_IMAGE_ALPHA_COLOR] = { datatoc_gpu_shader_2D_image_vert_glsl,
|
||||
datatoc_gpu_shader_image_alpha_color_frag_glsl },
|
||||
[GPU_SHADER_2D_IMAGE_SHUFFLE_COLOR] = { datatoc_gpu_shader_2D_image_vert_glsl,
|
||||
datatoc_gpu_shader_image_shuffle_color_frag_glsl },
|
||||
[GPU_SHADER_3D_UNIFORM_COLOR] = { datatoc_gpu_shader_3D_vert_glsl, datatoc_gpu_shader_uniform_color_frag_glsl },
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
|
||||
#if __VERSION__ == 120
|
||||
varying vec2 texCoord_interp;
|
||||
#define fragColor gl_FragColor
|
||||
#else
|
||||
in vec2 texCoord_interp;
|
||||
out vec4 fragColor;
|
||||
#define texture2D texture
|
||||
#endif
|
||||
|
||||
uniform vec4 color;
|
||||
uniform sampler2D image;
|
||||
|
||||
void main()
|
||||
{
|
||||
fragColor = texture2D(image, texCoord_interp).r * color;
|
||||
}
|
||||
Reference in New Issue
Block a user