diff options
Diffstat (limited to 'source')
5 files changed, 25 insertions, 12 deletions
diff --git a/source/blender/editors/render/render_opengl.c b/source/blender/editors/render/render_opengl.c index 79eaf007fcb..696c18d17c5 100644 --- a/source/blender/editors/render/render_opengl.c +++ b/source/blender/editors/render/render_opengl.c @@ -490,13 +490,13 @@ static void screen_opengl_render_apply(const bContext *C, OGLRender *oglrender) int chanshown = sseq ? sseq->chanshown : 0; SEQ_render_new_render_data(oglrender->bmain, - oglrender->depsgraph, - scene, - oglrender->sizex, - oglrender->sizey, - 100, - false, - &context); + oglrender->depsgraph, + scene, + oglrender->sizex, + oglrender->sizey, + SEQ_RENDER_SIZE_SCENE, + false, + &context); for (view_id = 0; view_id < oglrender->views_len; view_id++) { context.view_id = view_id; diff --git a/source/blender/gpu/intern/gpu_immediate.cc b/source/blender/gpu/intern/gpu_immediate.cc index 110774640f1..95718391165 100644 --- a/source/blender/gpu/intern/gpu_immediate.cc +++ b/source/blender/gpu/intern/gpu_immediate.cc @@ -180,6 +180,11 @@ static void wide_line_workaround_start(GPUPrimType prim_type) immUniform2fv("viewportSize", &viewport[2]); immUniform1f("lineWidth", line_width); + if (GPU_blend_get() == GPU_BLEND_NONE) { + /* Disable line smoothing when blending is disabled (see T81827). */ + immUniform1i("lineSmooth", 0); + } + if (ELEM(polyline_sh, GPU_SHADER_3D_POLYLINE_CLIPPED_UNIFORM_COLOR, GPU_SHADER_3D_POLYLINE_UNIFORM_COLOR)) { @@ -190,6 +195,10 @@ static void wide_line_workaround_start(GPUPrimType prim_type) static void wide_line_workaround_end() { if (imm->prev_shader) { + if (GPU_blend_get() == GPU_BLEND_NONE) { + /* Restore default. */ + immUniform1i("lineSmooth", 1); + } immUnbindProgram(); immBindShader(imm->prev_shader); diff --git a/source/blender/gpu/shaders/gpu_shader_3D_polyline_frag.glsl b/source/blender/gpu/shaders/gpu_shader_3D_polyline_frag.glsl index 9c6b109d659..3ea8f7dbfbe 100644 --- a/source/blender/gpu/shaders/gpu_shader_3D_polyline_frag.glsl +++ b/source/blender/gpu/shaders/gpu_shader_3D_polyline_frag.glsl @@ -1,5 +1,6 @@ uniform float lineWidth; +uniform bool lineSmooth = true; in vec4 finalColor; noperspective in float smoothline; @@ -19,6 +20,8 @@ void main() } #endif fragColor = finalColor; - fragColor.a *= clamp((lineWidth + SMOOTH_WIDTH) * 0.5 - abs(smoothline), 0.0, 1.0); + if (lineSmooth) { + fragColor.a *= clamp((lineWidth + SMOOTH_WIDTH) * 0.5 - abs(smoothline), 0.0, 1.0); + } fragColor = blender_srgb_to_framebuffer_space(fragColor); } diff --git a/source/blender/gpu/shaders/gpu_shader_3D_polyline_geom.glsl b/source/blender/gpu/shaders/gpu_shader_3D_polyline_geom.glsl index fd9b7e221e6..70026398937 100644 --- a/source/blender/gpu/shaders/gpu_shader_3D_polyline_geom.glsl +++ b/source/blender/gpu/shaders/gpu_shader_3D_polyline_geom.glsl @@ -5,6 +5,7 @@ layout(triangle_strip, max_vertices = 4) out; uniform vec4 color; uniform vec2 viewportSize; uniform float lineWidth; +uniform bool lineSmooth = true; #if !defined(UNIFORM) in vec4 finalColor_g[]; @@ -53,12 +54,12 @@ void do_vertex(const int i, vec4 pos, vec2 ofs) clip = clip_g[i]; #endif - smoothline = (lineWidth + SMOOTH_WIDTH) * 0.5; + smoothline = (lineWidth + SMOOTH_WIDTH * float(lineSmooth)) * 0.5; gl_Position = pos; gl_Position.xy += ofs * pos.w; EmitVertex(); - smoothline = -(lineWidth + SMOOTH_WIDTH) * 0.5; + smoothline = -(lineWidth + SMOOTH_WIDTH * float(lineSmooth)) * 0.5; gl_Position = pos; gl_Position.xy -= ofs * pos.w; EmitVertex(); @@ -77,7 +78,7 @@ void main(void) vec2 ofs = vec2(-e.y, e.x); #endif ofs /= viewportSize.xy; - ofs *= lineWidth + SMOOTH_WIDTH; + ofs *= lineWidth + SMOOTH_WIDTH * float(lineSmooth); do_vertex(0, p0, ofs); do_vertex(1, p1, ofs); diff --git a/source/blender/sequencer/intern/effects.c b/source/blender/sequencer/intern/effects.c index 1d323426cc3..ba16206ce97 100644 --- a/source/blender/sequencer/intern/effects.c +++ b/source/blender/sequencer/intern/effects.c @@ -3915,7 +3915,7 @@ static ImBuf *do_text_effect(const SeqRenderData *context, /* Compensate text size for preview render size. */ proxy_size_comp = context->scene->r.size / 100.0; if (context->preview_render_size != SEQ_RENDER_SIZE_SCENE) { - proxy_size_comp *= SEQ_rendersize_to_scale_factor(context->preview_render_size); + proxy_size_comp = SEQ_rendersize_to_scale_factor(context->preview_render_size); } /* set before return */ |