[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