[Bf-blender-cvs] [37a7cd83440] blender2.8: GPUViewport: Small simplifications + fixes.

Clément Foucault noreply at git.blender.org
Sun Mar 25 21:33:13 CEST 2018


Commit: 37a7cd83440573233383166931db5a5216e77698
Author: Clément Foucault
Date:   Sun Mar 25 03:34:06 2018 +0200
Branches: blender2.8
https://developer.blender.org/rB37a7cd83440573233383166931db5a5216e77698

GPUViewport: Small simplifications + fixes.

 - Use GPU_SHADER_2D_IMAGE_ALPHA.
 - Add alpha uniform.
 - bypass reseting the scissors and depth test because we used
   another context for drawing.

===================================================================

M	source/blender/gpu/intern/gpu_viewport.c

===================================================================

diff --git a/source/blender/gpu/intern/gpu_viewport.c b/source/blender/gpu/intern/gpu_viewport.c
index 7518537fcdb..0f061f1c791 100644
--- a/source/blender/gpu/intern/gpu_viewport.c
+++ b/source/blender/gpu/intern/gpu_viewport.c
@@ -520,8 +520,13 @@ cleanup_multisample:
 	GPU_framebuffer_slots_bind(dfbl->default_fb, 0);
 }
 
-static void draw_ofs_to_screen(GPUViewport *viewport, const rcti *rect)
+void GPU_viewport_draw_to_screen(GPUViewport *viewport, const rcti *rect)
 {
+	DefaultFramebufferList *dfbl = viewport->fbl;
+
+	if (dfbl->default_fb == NULL)
+		return;
+
 	DefaultTextureList *dtxl = viewport->txl;
 
 	GPUTexture *color = dtxl->color;
@@ -536,10 +541,11 @@ static void draw_ofs_to_screen(GPUViewport *viewport, const rcti *rect)
 	unsigned int texcoord = GWN_vertformat_attr_add(format, "texCoord", GWN_COMP_F32, 2, GWN_FETCH_FLOAT);
 	unsigned int pos = GWN_vertformat_attr_add(format, "pos", GWN_COMP_F32, 2, GWN_FETCH_FLOAT);
 
-	immBindBuiltinProgram(GPU_SHADER_3D_IMAGE_MODULATE_ALPHA);
+	immBindBuiltinProgram(GPU_SHADER_2D_IMAGE_ALPHA);
 	GPU_texture_bind(color, 0);
 
 	immUniform1i("image", 0); /* default GL_TEXTURE0 unit */
+	immUniform1f("alpha", 1.0f);
 
 	immBegin(GWN_PRIM_TRI_STRIP, 4);
 
@@ -562,31 +568,9 @@ static void draw_ofs_to_screen(GPUViewport *viewport, const rcti *rect)
 	immUnbindProgram();
 }
 
-void GPU_viewport_unbind(GPUViewport *viewport)
+void GPU_viewport_unbind(GPUViewport *UNUSED(viewport))
 {
-	DefaultFramebufferList *dfbl = viewport->fbl;
-
-	if (dfbl->default_fb) {
-		GPU_framebuffer_texture_unbind(NULL, NULL);
-		GPU_framebuffer_restore();
-	}
-
 	DRW_opengl_context_disable();
-
-	if (dfbl->default_fb) {
-		glEnable(GL_SCISSOR_TEST);
-		glDisable(GL_DEPTH_TEST);
-	}
-}
-
-void GPU_viewport_draw_to_screen(GPUViewport *viewport, const rcti *rect)
-{
-	DefaultFramebufferList *dfbl = viewport->fbl;
-
-	if (dfbl->default_fb) {
-		/* This might be bandwidth limiting */
-		draw_ofs_to_screen(viewport, rect);
-	}
 }
 
 static void gpu_viewport_buffers_free(



More information about the Bf-blender-cvs mailing list