Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClément Foucault <foucault.clem@gmail.com>2018-03-25 04:34:06 +0300
committerClément Foucault <foucault.clem@gmail.com>2018-03-25 21:06:12 +0300
commit37a7cd83440573233383166931db5a5216e77698 (patch)
treee027c79004bc61098f7a2c11647bb6c4c7b65b44 /source/blender/gpu/intern/gpu_viewport.c
parent6d6c292cf8b81c2579c1ac37f316b57579128d51 (diff)
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.
Diffstat (limited to 'source/blender/gpu/intern/gpu_viewport.c')
-rw-r--r--source/blender/gpu/intern/gpu_viewport.c34
1 files changed, 9 insertions, 25 deletions
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(