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:
authorJeroen Bakker <jeroen@blender.org>2022-09-13 16:03:04 +0300
committerJeroen Bakker <jeroen@blender.org>2022-09-13 16:05:17 +0300
commit34051fcc12f388375697dcfc6da53e9909058fe1 (patch)
treec0fdd950ad41bc75bff838f717f5f8ec66c8f185 /source/blender/draw/intern
parentb404548972b771bbfb115565135afcb462588cec (diff)
EEVEE: Fix volumetric resolve in large scenes.
On NVIDIA volumetric resolve failed for large production scenes. The result would remove most color from the final render. The cause seems to be a faulty driver. This change ported the fragment shader to a compute shader which would select a different compiler branch and didn't show the error.
Diffstat (limited to 'source/blender/draw/intern')
-rw-r--r--source/blender/draw/intern/DRW_render.h4
-rw-r--r--source/blender/draw/intern/draw_manager_shader.c12
2 files changed, 16 insertions, 0 deletions
diff --git a/source/blender/draw/intern/DRW_render.h b/source/blender/draw/intern/DRW_render.h
index 7b80ffd2b88..b49203d85f6 100644
--- a/source/blender/draw/intern/DRW_render.h
+++ b/source/blender/draw/intern/DRW_render.h
@@ -207,6 +207,10 @@ struct GPUShader *DRW_shader_create_with_lib_ex(const char *vert,
const char *lib,
const char *defines,
const char *name);
+struct GPUShader *DRW_shader_create_compute_with_shaderlib(const char *comp,
+ const DRWShaderLibrary *lib,
+ const char *defines,
+ const char *name);
struct GPUShader *DRW_shader_create_with_shaderlib_ex(const char *vert,
const char *geom,
const char *frag,
diff --git a/source/blender/draw/intern/draw_manager_shader.c b/source/blender/draw/intern/draw_manager_shader.c
index 4bc3898c5e7..1ada99093c6 100644
--- a/source/blender/draw/intern/draw_manager_shader.c
+++ b/source/blender/draw/intern/draw_manager_shader.c
@@ -297,6 +297,18 @@ GPUShader *DRW_shader_create_with_lib_ex(const char *vert,
return sh;
}
+GPUShader *DRW_shader_create_compute_with_shaderlib(const char *comp,
+ const DRWShaderLibrary *lib,
+ const char *defines,
+ const char *name)
+{
+ char *comp_with_lib = DRW_shader_library_create_shader_string(lib, comp);
+ GPUShader *sh = GPU_shader_create_compute(comp_with_lib, NULL, defines, name);
+ MEM_SAFE_FREE(comp_with_lib);
+
+ return sh;
+}
+
GPUShader *DRW_shader_create_with_shaderlib_ex(const char *vert,
const char *geom,
const char *frag,