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:
authorClément Foucault <foucault.clem@gmail.com>2019-05-17 20:12:17 +0300
committerClément Foucault <foucault.clem@gmail.com>2019-05-17 20:25:01 +0300
commit60a4342557f19dab8e17825800bca4fbb3cccb85 (patch)
tree8836cdd7b89664b89c61cf89aa461cdf52096bdc /source/blender/draw/engines/eevee/eevee_occlusion.c
parentbe5fd9c09f2539b9268f422252d9a1d01bc1769c (diff)
Cleanup: Eevee: Use dummy texture for GTAO when not enabled
Diffstat (limited to 'source/blender/draw/engines/eevee/eevee_occlusion.c')
-rw-r--r--source/blender/draw/engines/eevee/eevee_occlusion.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/source/blender/draw/engines/eevee/eevee_occlusion.c b/source/blender/draw/engines/eevee/eevee_occlusion.c
index 8c1e412672e..59def366695 100644
--- a/source/blender/draw/engines/eevee/eevee_occlusion.c
+++ b/source/blender/draw/engines/eevee/eevee_occlusion.c
@@ -41,6 +41,8 @@ static struct {
struct GPUShader *gtao_layer_sh;
struct GPUShader *gtao_debug_sh;
struct GPUTexture *src_depth;
+
+ struct GPUTexture *dummy_horizon_tx;
} e_data = {NULL}; /* Engine data */
extern char datatoc_ambient_occlusion_lib_glsl[];
@@ -74,6 +76,11 @@ int EEVEE_occlusion_init(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
const DRWContextState *draw_ctx = DRW_context_state_get();
const Scene *scene_eval = DEG_get_evaluated_scene(draw_ctx->depsgraph);
+ if (!e_data.dummy_horizon_tx) {
+ float pixel[4] = {0.0f, 0.0f, 0.0f, 0.0f};
+ e_data.dummy_horizon_tx = DRW_texture_create_2d(1, 1, GPU_RGBA8, DRW_TEX_WRAP, pixel);
+ }
+
if (scene_eval->eevee.flag & SCE_EEVEE_GTAO_ENABLED) {
const float *viewport_size = DRW_viewport_size_get();
const int fs_size[2] = {(int)viewport_size[0], (int)viewport_size[1]};
@@ -117,7 +124,7 @@ int EEVEE_occlusion_init(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
}
/* Cleanup */
- effects->gtao_horizons = NULL;
+ effects->gtao_horizons = e_data.dummy_horizon_tx;
GPU_FRAMEBUFFER_FREE_SAFE(fbl->gtao_fb);
common_data->ao_settings = 0.0f;
@@ -303,4 +310,5 @@ void EEVEE_occlusion_free(void)
DRW_SHADER_FREE_SAFE(e_data.gtao_sh);
DRW_SHADER_FREE_SAFE(e_data.gtao_layer_sh);
DRW_SHADER_FREE_SAFE(e_data.gtao_debug_sh);
+ DRW_TEXTURE_FREE_SAFE(e_data.dummy_horizon_tx);
}