diff options
author | Richard Antalik <richardantalik@gmail.com> | 2020-11-17 06:10:51 +0300 |
---|---|---|
committer | Richard Antalik <richardantalik@gmail.com> | 2020-11-17 06:10:51 +0300 |
commit | 797dfa6a0a7d5d2bf62bdc03cf619addbc9e1064 (patch) | |
tree | 5a1e0f0a6b2439ceee4a8e0bae82b243e3831156 | |
parent | 09045ff64d1f0948489354bd097f2930f45bacb9 (diff) | |
parent | 75bd286813eb5e3c227696b4cfd5616b17166641 (diff) |
Merge branch 'blender-v2.91-release'
Conflicts:
source/blender/editors/render/render_opengl.c
source/blender/sequencer/intern/effects.c
-rw-r--r-- | intern/cycles/render/volume.cpp | 9 | ||||
-rw-r--r-- | source/blender/editors/render/render_opengl.c | 14 | ||||
-rw-r--r-- | source/blender/gpu/intern/gpu_immediate.cc | 9 | ||||
-rw-r--r-- | source/blender/gpu/shaders/gpu_shader_3D_polyline_frag.glsl | 5 | ||||
-rw-r--r-- | source/blender/gpu/shaders/gpu_shader_3D_polyline_geom.glsl | 7 | ||||
-rw-r--r-- | source/blender/sequencer/intern/effects.c | 2 |
6 files changed, 34 insertions, 12 deletions
diff --git a/intern/cycles/render/volume.cpp b/intern/cycles/render/volume.cpp index 85624d9af65..4baaae6856c 100644 --- a/intern/cycles/render/volume.cpp +++ b/intern/cycles/render/volume.cpp @@ -72,6 +72,7 @@ enum { QUAD_Z_MAX = 5, }; +#ifdef WITH_OPENVDB const int quads_indices[6][4] = { /* QUAD_X_MIN */ {4, 0, 3, 7}, @@ -136,6 +137,7 @@ static void create_quad(int3 corners[8], quads.push_back(quad); } +#endif /* Create a mesh from a volume. * @@ -280,6 +282,7 @@ void VolumeMeshBuilder::create_mesh(vector<float3> &vertices, vector<float3> &face_normals, const float face_overlap_avoidance) { +#ifdef WITH_OPENVDB /* We create vertices in index space (is), and only convert them to object * space when done. */ vector<int3> vertices_is; @@ -294,6 +297,12 @@ void VolumeMeshBuilder::create_mesh(vector<float3> &vertices, convert_object_space(vertices_is, vertices, face_overlap_avoidance); convert_quads_to_tris(quads, indices, face_normals); +#else + (void)vertices; + (void)indices; + (void)face_normals; + (void)face_overlap_avoidance; +#endif } void VolumeMeshBuilder::generate_vertices_and_quads(vector<ccl::int3> &vertices_is, 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 */ |