Commit: 5ed5ed59c36695882ea2b6880abd5cd996fe2416
Author: Dalai Felinto
Date:   Mon Jan 9 17:58:13 2017 +0100
Branches: blender2.8
https://developer.blender.org/rB5ed5ed59c36695882ea2b6880abd5cd996fe2416

Fix T49861: Interlace stereo drawing

This does not address stapling shader in 2.8, though the solution can be
similar (own shader, not polutting interlace shader).

part of T49043

Reviewers: merwin

Differential Revision: https://developer.blender.org/D2440

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

M       source/blender/gpu/CMakeLists.txt
M       source/blender/gpu/GPU_basic_shader.h
M       source/blender/gpu/GPU_shader.h
M       source/blender/gpu/intern/gpu_basic_shader.c
M       source/blender/gpu/intern/gpu_shader.c
M       source/blender/gpu/shaders/gpu_shader_basic_frag.glsl
A       source/blender/gpu/shaders/gpu_shader_image_interlace_frag.glsl
M       source/blender/windowmanager/intern/wm_draw.c
M       source/blender/windowmanager/intern/wm_stereo.c
M       source/blender/windowmanager/wm_draw.h

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

diff --git a/source/blender/gpu/CMakeLists.txt 
b/source/blender/gpu/CMakeLists.txt
index 5643400ac6..c5531b8542 100644
--- a/source/blender/gpu/CMakeLists.txt
+++ b/source/blender/gpu/CMakeLists.txt
@@ -142,6 +142,7 @@ 
data_to_c_simple(shaders/gpu_shader_image_modulate_alpha_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)
+data_to_c_simple(shaders/gpu_shader_image_interlace_frag.glsl SRC)
 data_to_c_simple(shaders/gpu_shader_3D_image_vert.glsl SRC)
 data_to_c_simple(shaders/gpu_shader_3D_vert.glsl SRC)
 data_to_c_simple(shaders/gpu_shader_3D_flat_color_vert.glsl SRC)
diff --git a/source/blender/gpu/GPU_basic_shader.h 
b/source/blender/gpu/GPU_basic_shader.h
index d9bf3d1ced..bfdf4ab6bb 100644
--- a/source/blender/gpu/GPU_basic_shader.h
+++ b/source/blender/gpu/GPU_basic_shader.h
@@ -64,12 +64,6 @@ typedef enum GPUBasicShaderStipple {
        GPU_SHADER_STIPPLE_HEXAGON                         = 3,
        GPU_SHADER_STIPPLE_DIAG_STRIPES                    = 4,
        GPU_SHADER_STIPPLE_DIAG_STRIPES_SWAP               = 5,
-       GPU_SHADER_STIPPLE_S3D_INTERLACE_ROW               = 6,
-       GPU_SHADER_STIPPLE_S3D_INTERLACE_ROW_SWAP          = 7,
-       GPU_SHADER_STIPPLE_S3D_INTERLACE_COLUMN            = 8,
-       GPU_SHADER_STIPPLE_S3D_INTERLACE_COLUMN_SWAP       = 9,
-       GPU_SHADER_STIPPLE_S3D_INTERLACE_CHECKER           = 10,
-       GPU_SHADER_STIPPLE_S3D_INTERLACE_CHECKER_SWAP      = 11
 } GPUBasicShaderStipple;
 
 void GPU_basic_shaders_init(void);
diff --git a/source/blender/gpu/GPU_shader.h b/source/blender/gpu/GPU_shader.h
index c6e4fb5e73..394e751ed9 100644
--- a/source/blender/gpu/GPU_shader.h
+++ b/source/blender/gpu/GPU_shader.h
@@ -112,6 +112,8 @@ typedef enum GPUBuiltinShader {
        GPU_SHADER_3D_IMAGE_MODULATE_ALPHA,
        GPU_SHADER_3D_IMAGE_RECT_MODULATE_ALPHA,
        GPU_SHADER_3D_IMAGE_DEPTH,
+       /* stereo 3d */
+       GPU_SHADER_2D_IMAGE_INTERLACE,
        /* points */
        GPU_SHADER_2D_POINT_FIXED_SIZE_UNIFORM_COLOR,
        GPU_SHADER_2D_POINT_UNIFORM_SIZE_UNIFORM_COLOR_SMOOTH,
@@ -128,6 +130,16 @@ typedef enum GPUBuiltinShader {
        GPU_NUM_BUILTIN_SHADERS /* (not an actual shader) */
 } GPUBuiltinShader;
 
+/* Keep these in sync with:
+ *  gpu_shader_image_interlace_frag.glsl
+ *  gpu_shader_image_rect_interlace_frag.glsl
+ **/
+typedef enum GPUInterlaceShader {
+       GPU_SHADER_INTERLACE_ROW               = 0,
+       GPU_SHADER_INTERLACE_COLUMN            = 1,
+       GPU_SHADER_INTERLACE_CHECKER           = 2,
+} GPUInterlaceShader;
+
 GPUShader *GPU_shader_get_builtin_shader(GPUBuiltinShader shader);
 GPUShader *GPU_shader_get_builtin_fx_shader(int effects, bool persp);
 
diff --git a/source/blender/gpu/intern/gpu_basic_shader.c 
b/source/blender/gpu/intern/gpu_basic_shader.c
index 9d1e84cd44..757982d1b3 100644
--- a/source/blender/gpu/intern/gpu_basic_shader.c
+++ b/source/blender/gpu/intern/gpu_basic_shader.c
@@ -140,114 +140,6 @@ const GLubyte stipple_checker_8px[128] = {
        0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255,
        0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255};
 
-const GLubyte stipple_interlace_row[128] = {
-       0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
-       0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
-       0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
-       0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
-       0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
-       0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
-       0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
-       0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
-       0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
-       0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
-       0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
-       0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
-       0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
-       0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
-       0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
-       0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00};
-
-const GLubyte stipple_interlace_row_swap[128] = {
-       0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
-       0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
-       0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
-       0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
-       0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
-       0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
-       0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
-       0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
-       0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
-       0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
-       0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
-       0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
-       0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
-       0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
-       0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
-       0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff};
-
-const GLubyte stipple_interlace_column[128] = {
-       0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
-       0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
-       0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
-       0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
-       0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
-       0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
-       0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
-       0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
-       0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
-       0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
-       0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
-       0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
-       0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
-       0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
-       0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
-       0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55};
-
-const GLubyte stipple_interlace_column_swap[128] = {
-       0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
-       0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
-       0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
-       0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
-       0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
-       0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
-       0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
-       0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
-       0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
-       0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
-       0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
-       0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
-       0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
-       0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
-       0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
-       0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa};
-
-const GLubyte stipple_interlace_checker[128] = {
-       0x55, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0xaa,
-       0x55, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0xaa,
-       0x55, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0xaa,
-       0x55, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0xaa,
-       0x55, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0xaa,
-       0x55, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0xaa,
-       0x55, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0xaa,
-       0x55, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0xaa,
-       0x55, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0xaa,
-       0x55, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0xaa,
-       0x55, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0xaa,
-       0x55, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0xaa,
-       0x55, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0xaa,
-       0x55, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0xaa,
-       0x55, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0xaa,
-       0x55, 0x55, 0x55, 0x55, 0xaa, 0xaa, 0xaa, 0xaa};
-
-const GLubyte stipple_interlace_checker_swap[128] = {
-       0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55,
-       0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55,
-       0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55,
-       0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55,
-       0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55,
-       0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55,
-       0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55,
-       0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55,
-       0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55,
-       0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55,
-       0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55,
-       0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55,
-       0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55,
-       0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55,
-       0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55,
-       0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55};
-
 const GLubyte stipple_hexagon[128] = {
        0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
        0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,
@@ -651,24 +543,6 @@ void GPU_basic_shader_stipple(GPUBasicShaderStipple 
stipple_id)
                        case GPU_SHADER_STIPPLE_DIAG_STRIPES:
                                glPolygonStipple(stipple_diag_stripes_pos);
                                return;
-                       case GPU_SHADER_STIPPLE_S3D_INTERLACE_ROW:
-                               glPolygonStipple(stipple_interlace_row);
-                               return;
-                       case GPU_SHADER_STIPPLE_S3D_INTERLACE_ROW_SWAP:
-                               glPolygonStipple(stipple_interlace_row_swap);
-                               return;
-                       case GPU_SHADER_STIPPLE_S3D_INTERLACE_COLUMN:
-                               glPolygonStipple(stipple_interlace_column);
-                               return;
-                       case GPU_SHADER_STIPPLE_S3D_INTERLACE_COLUMN_SWAP:
-                               glPolygonStipple(stipple_interlace_column_swap);
-                               return;
-                       case GPU_SHADER_STIPPLE_S3D_INTERLACE_CHECKER:
-                               glPolygonStipple(stipple_interlace_checker);
-                               return;
-                       case GPU_SHADER_STIPPLE_S3D_INTERLACE_CHECKER_SWAP:
-                               
glPolygonStipple(stipple_interlace_checker_swap);
-                               return;
                        default:
                                glPolygonStipple(stipple_hexagon);
                                return;
diff --git a/source/blender/gpu/intern/gpu_shader.c 
b/source/blender/gpu/intern/gpu_shader.c
index 5f41cda3fc..b81c19d5c7 100644
--- a/source/blender/gpu/intern/gpu_shader.c
+++ b/source/blender/gpu/intern/gpu_shader.c
@@ -58,6 +58,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_interlace_frag_glsl[];
 extern char datatoc_gpu_shader_image_mask_uniform_color_frag_glsl[];
 extern char datatoc_gpu_shader_image_modulate_alpha_frag_glsl[];
 extern char datatoc_gpu_shader_image_rect_modulate_alpha_frag_glsl[];
@@ -633,6 +634,9 @@ GPUShader *GPU_shader_get_builtin_shader(GPUBuiltinShader 
shader)
                [GPU_SHADER_3D_IMAGE_DEPTH] = { 
datatoc_gpu_shader_3D_image_vert_glsl,
                                     

@@ Diff output truncated at 10240 characters. @@

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to