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:
authorCampbell Barton <ideasman42@gmail.com>2018-01-17 12:35:06 +0300
committerCampbell Barton <ideasman42@gmail.com>2018-01-17 12:39:42 +0300
commit10ce5af2ddf2b06865dcf317fce264be615509e8 (patch)
tree8dabbb3afaa4bf2908b131325282dee4c481f24a /source/blender/draw/engines/eevee/eevee_volumes.c
parent2094bbd033f330dad062cc641a4fa440b6e391a0 (diff)
Revert "Fix use-after free in DRW_shader_create_with_lib"
Caused an error entering edit-mode. d60f26f37a & 2659500835
Diffstat (limited to 'source/blender/draw/engines/eevee/eevee_volumes.c')
-rw-r--r--source/blender/draw/engines/eevee/eevee_volumes.c40
1 files changed, 21 insertions, 19 deletions
diff --git a/source/blender/draw/engines/eevee/eevee_volumes.c b/source/blender/draw/engines/eevee/eevee_volumes.c
index db5ee19172e..dae4503dc32 100644
--- a/source/blender/draw/engines/eevee/eevee_volumes.c
+++ b/source/blender/draw/engines/eevee/eevee_volumes.c
@@ -77,44 +77,46 @@ extern char datatoc_gpu_shader_fullscreen_vert_glsl[];
static void eevee_create_shader_volumes(void)
{
- DRW_shader_create_lib(e_data.volumetric_common_lib,
- datatoc_bsdf_common_lib_glsl,
- datatoc_volumetric_lib_glsl);
-
- DRW_shader_create_lib(e_data.volumetric_common_lamps_lib,
- datatoc_bsdf_common_lib_glsl,
- datatoc_bsdf_direct_lib_glsl,
- datatoc_octahedron_lib_glsl,
- datatoc_irradiance_lib_glsl,
- datatoc_lamps_lib_glsl,
- datatoc_volumetric_lib_glsl);
+ DynStr *ds_frag = BLI_dynstr_new();
+ BLI_dynstr_append(ds_frag, datatoc_bsdf_common_lib_glsl);
+ BLI_dynstr_append(ds_frag, datatoc_volumetric_lib_glsl);
+ e_data.volumetric_common_lib = BLI_dynstr_get_cstring(ds_frag);
+ BLI_dynstr_free(ds_frag);
+
+ ds_frag = BLI_dynstr_new();
+ BLI_dynstr_append(ds_frag, datatoc_bsdf_common_lib_glsl);
+ BLI_dynstr_append(ds_frag, datatoc_bsdf_direct_lib_glsl);
+ BLI_dynstr_append(ds_frag, datatoc_octahedron_lib_glsl);
+ BLI_dynstr_append(ds_frag, datatoc_irradiance_lib_glsl);
+ BLI_dynstr_append(ds_frag, datatoc_lamps_lib_glsl);
+ BLI_dynstr_append(ds_frag, datatoc_volumetric_lib_glsl);
+ e_data.volumetric_common_lamps_lib = BLI_dynstr_get_cstring(ds_frag);
+ BLI_dynstr_free(ds_frag);
e_data.volumetric_clear_sh = DRW_shader_create_with_lib(
datatoc_volumetric_vert_glsl,
datatoc_volumetric_geom_glsl,
datatoc_volumetric_frag_glsl,
+ e_data.volumetric_common_lib,
"#define VOLUMETRICS\n"
- "#define CLEAR\n",
- e_data.volumetric_common_lib);
+ "#define CLEAR\n");
e_data.volumetric_scatter_sh = DRW_shader_create_with_lib(
datatoc_volumetric_vert_glsl,
datatoc_volumetric_geom_glsl,
datatoc_volumetric_scatter_frag_glsl,
+ e_data.volumetric_common_lamps_lib,
SHADER_DEFINES
"#define VOLUMETRICS\n"
- "#define VOLUME_SHADOW\n",
- e_data.volumetric_common_lamps_lib);
+ "#define VOLUME_SHADOW\n");
e_data.volumetric_integration_sh = DRW_shader_create_with_lib(
datatoc_volumetric_vert_glsl,
datatoc_volumetric_geom_glsl,
datatoc_volumetric_integration_frag_glsl,
- NULL,
- e_data.volumetric_common_lib);
+ e_data.volumetric_common_lib, NULL);
e_data.volumetric_resolve_sh = DRW_shader_create_with_lib(
datatoc_gpu_shader_fullscreen_vert_glsl, NULL,
datatoc_volumetric_resolve_frag_glsl,
- NULL,
- e_data.volumetric_common_lib);
+ e_data.volumetric_common_lib, NULL);
}
int EEVEE_volumes_init(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)