[Bf-blender-cvs] [ebb8c9c025b] temp-gpu-uniform-builtin-structs: Migrated `GPU_SHADER_TEXT`.

Jeroen Bakker noreply at git.blender.org
Fri Jul 9 13:45:26 CEST 2021


Commit: ebb8c9c025b2d0150f502fe46a91e035c002225e
Author: Jeroen Bakker
Date:   Fri Jul 9 13:44:52 2021 +0200
Branches: temp-gpu-uniform-builtin-structs
https://developer.blender.org/rBebb8c9c025b2d0150f502fe46a91e035c002225e

Migrated `GPU_SHADER_TEXT`.

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

M	source/blender/gpu/GPU_shader.h
M	source/blender/gpu/intern/gpu_shader.cc
M	source/blender/gpu/intern/gpu_shader_builtin.c
M	source/blender/gpu/shaders/gpu_shader_colorspace_lib.glsl
M	source/blender/gpu/shaders/gpu_shader_text_vert.glsl

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

diff --git a/source/blender/gpu/GPU_shader.h b/source/blender/gpu/GPU_shader.h
index 600ab5c1808..9f4b6e42a7c 100644
--- a/source/blender/gpu/GPU_shader.h
+++ b/source/blender/gpu/GPU_shader.h
@@ -71,6 +71,7 @@ GPUShader *GPU_shader_create_ex(const char *vertcode,
 
 struct GPU_ShaderCreateFromArray_Params {
   const char **vert, **geom, **frag, **defs;
+  const GPUShaderBlockType shader_block;
 };
 struct GPUShader *GPU_shader_create_from_arrays_impl(
     const struct GPU_ShaderCreateFromArray_Params *params, const char *func, int line);
diff --git a/source/blender/gpu/intern/gpu_shader.cc b/source/blender/gpu/intern/gpu_shader.cc
index 09be33145ca..0b5e12268be 100644
--- a/source/blender/gpu/intern/gpu_shader.cc
+++ b/source/blender/gpu/intern/gpu_shader.cc
@@ -151,6 +151,7 @@ GPUShader *GPU_shader_create_ex(const char *vertcode,
       sources.append(defines);
     }
     if (shader->m_shader_struct) {
+      sources.append("#define GPU_SHADER_BLOCK\n");
       sources.append(shader->m_shader_struct->type_info().defines());
     }
     sources.append(vertcode);
@@ -170,6 +171,7 @@ GPUShader *GPU_shader_create_ex(const char *vertcode,
       sources.append(defines);
     }
     if (shader->m_shader_struct) {
+      sources.append("#define GPU_SHADER_BLOCK\n");
       sources.append(shader->m_shader_struct->type_info().defines());
     }
     if (libcode) {
@@ -188,6 +190,7 @@ GPUShader *GPU_shader_create_ex(const char *vertcode,
       sources.append(defines);
     }
     if (shader->m_shader_struct) {
+      sources.append("#define GPU_SHADER_BLOCK\n");
       sources.append(shader->m_shader_struct->type_info().defines());
     }
     sources.append(geomcode);
@@ -206,6 +209,7 @@ GPUShader *GPU_shader_create_ex(const char *vertcode,
       sources.append(libcode);
     }
     if (shader->m_shader_struct) {
+      sources.append("#define GPU_SHADER_BLOCK\n");
       sources.append(shader->m_shader_struct->type_info().defines());
     }
     sources.append(computecode);
@@ -382,8 +386,17 @@ struct GPUShader *GPU_shader_create_from_arrays_impl(
   char name[64];
   BLI_snprintf(name, sizeof(name), "%s_%d", func, line);
 
-  GPUShader *sh = GPU_shader_create(
-      str_dst[0].str, str_dst[1].str, str_dst[2].str, nullptr, str_dst[3].str, name);
+  GPUShader *sh = GPU_shader_create_ex(str_dst[0].str,
+                                       str_dst[1].str,
+                                       str_dst[2].str,
+                                       nullptr,
+                                       nullptr,
+                                       str_dst[3].str,
+                                       GPU_SHADER_TFB_NONE,
+                                       nullptr,
+                                       0,
+                                       params->shader_block,
+                                       name);
 
   for (auto &i : str_dst) {
     if (i.is_alloc) {
diff --git a/source/blender/gpu/intern/gpu_shader_builtin.c b/source/blender/gpu/intern/gpu_shader_builtin.c
index c5122b76001..f2a815fcb1f 100644
--- a/source/blender/gpu/intern/gpu_shader_builtin.c
+++ b/source/blender/gpu/intern/gpu_shader_builtin.c
@@ -157,6 +157,7 @@ typedef struct {
   const char *frag;
   /** Optional. */
   const char *defs;
+  const GPUShaderBlockType shader_block;
 } GPUShaderStages;
 
 static const GPUShaderStages builtin_shader_stages[GPU_SHADER_BUILTIN_LEN] = {
@@ -165,6 +166,7 @@ static const GPUShaderStages builtin_shader_stages[GPU_SHADER_BUILTIN_LEN] = {
             .name = "GPU_SHADER_TEXT",
             .vert = datatoc_gpu_shader_text_vert_glsl,
             .frag = datatoc_gpu_shader_text_frag_glsl,
+            .shader_block = GPU_SHADER_BLOCK_3D_COLOR,
         },
     [GPU_SHADER_KEYFRAME_DIAMOND] =
         {
@@ -532,6 +534,7 @@ GPUShader *GPU_shader_get_builtin_shader_with_config(eGPUBuiltinShader shader,
               .geom = (const char *[]){stages->geom, NULL},
               .frag = (const char *[]){datatoc_gpu_shader_colorspace_lib_glsl, stages->frag, NULL},
               .defs = (const char *[]){stages->defs, NULL},
+              .shader_block = stages->shader_block,
           });
     }
     else if (sh_cfg == GPU_SHADER_CFG_CLIPPED) {
diff --git a/source/blender/gpu/shaders/gpu_shader_colorspace_lib.glsl b/source/blender/gpu/shaders/gpu_shader_colorspace_lib.glsl
index aae659516bb..90421937876 100644
--- a/source/blender/gpu/shaders/gpu_shader_colorspace_lib.glsl
+++ b/source/blender/gpu/shaders/gpu_shader_colorspace_lib.glsl
@@ -2,7 +2,9 @@
 /* Undefine the macro that avoids compilation errors. */
 #undef blender_srgb_to_framebuffer_space
 
+#ifndef GPU_SHADER_BLOCK
 uniform bool srgbTarget = false;
+#endif
 
 vec4 blender_srgb_to_framebuffer_space(vec4 color)
 {
diff --git a/source/blender/gpu/shaders/gpu_shader_text_vert.glsl b/source/blender/gpu/shaders/gpu_shader_text_vert.glsl
index 768638e5229..56b6bf2cf8e 100644
--- a/source/blender/gpu/shaders/gpu_shader_text_vert.glsl
+++ b/source/blender/gpu/shaders/gpu_shader_text_vert.glsl
@@ -1,6 +1,4 @@
 
-uniform mat4 ModelViewProjectionMatrix;
-
 in vec4 pos; /* rect */
 in vec4 col;
 in int offset;



More information about the Bf-blender-cvs mailing list