EEVEE: Test maximum texture size before render.
This will catch any non renderable size.
This commit is contained in:
@@ -483,6 +483,10 @@ static void eevee_render_to_image(void *vedata,
|
|||||||
const DRWContextState *draw_ctx = DRW_context_state_get();
|
const DRWContextState *draw_ctx = DRW_context_state_get();
|
||||||
EEVEE_render_init(vedata, engine, draw_ctx->depsgraph);
|
EEVEE_render_init(vedata, engine, draw_ctx->depsgraph);
|
||||||
|
|
||||||
|
if (RE_engine_test_break(engine)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
DRW_render_object_iter(vedata, engine, draw_ctx->depsgraph, EEVEE_render_cache);
|
DRW_render_object_iter(vedata, engine, draw_ctx->depsgraph, EEVEE_render_cache);
|
||||||
|
|
||||||
/* Actually do the rendering. */
|
/* Actually do the rendering. */
|
||||||
|
@@ -30,6 +30,7 @@
|
|||||||
#include "DNA_node_types.h"
|
#include "DNA_node_types.h"
|
||||||
#include "DNA_object_types.h"
|
#include "DNA_object_types.h"
|
||||||
|
|
||||||
|
#include "BKE_global.h"
|
||||||
#include "BKE_object.h"
|
#include "BKE_object.h"
|
||||||
|
|
||||||
#include "BLI_rand.h"
|
#include "BLI_rand.h"
|
||||||
@@ -38,6 +39,7 @@
|
|||||||
#include "DEG_depsgraph_query.h"
|
#include "DEG_depsgraph_query.h"
|
||||||
|
|
||||||
#include "GPU_framebuffer.h"
|
#include "GPU_framebuffer.h"
|
||||||
|
#include "GPU_extensions.h"
|
||||||
#include "GPU_state.h"
|
#include "GPU_state.h"
|
||||||
|
|
||||||
#include "RE_pipeline.h"
|
#include "RE_pipeline.h"
|
||||||
@@ -91,9 +93,24 @@ void EEVEE_render_init(EEVEE_Data *ved, RenderEngine *engine, struct Depsgraph *
|
|||||||
copy_v4_fl4(camtexcofac, 1.0f, 1.0f, 0.0f, 0.0f);
|
copy_v4_fl4(camtexcofac, 1.0f, 1.0f, 0.0f, 0.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int final_res[2] = {size_orig[0] + g_data->overscan_pixels * 2.0f,
|
||||||
|
size_orig[1] + g_data->overscan_pixels * 2.0f};
|
||||||
|
|
||||||
|
int max_dim = max_ii(final_res[0], final_res[1]);
|
||||||
|
if (max_dim > GPU_max_texture_size()) {
|
||||||
|
char error_msg[128];
|
||||||
|
BLI_snprintf(error_msg,
|
||||||
|
sizeof(error_msg),
|
||||||
|
"Error: Reported texture size limit (%dpx) is lower than output size (%dpx).",
|
||||||
|
GPU_max_texture_size(),
|
||||||
|
max_dim);
|
||||||
|
RE_engine_set_error_message(engine, error_msg);
|
||||||
|
G.is_break = true;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
/* XXX overriding viewport size. Simplify things but is not really 100% safe. */
|
/* XXX overriding viewport size. Simplify things but is not really 100% safe. */
|
||||||
DRW_render_viewport_size_set((int[2]){size_orig[0] + g_data->overscan_pixels * 2.0f,
|
DRW_render_viewport_size_set(final_res);
|
||||||
size_orig[1] + g_data->overscan_pixels * 2.0f});
|
|
||||||
|
|
||||||
/* TODO 32 bit depth */
|
/* TODO 32 bit depth */
|
||||||
DRW_texture_ensure_fullscreen_2d(&dtxl->depth, GPU_DEPTH24_STENCIL8, 0);
|
DRW_texture_ensure_fullscreen_2d(&dtxl->depth, GPU_DEPTH24_STENCIL8, 0);
|
||||||
|
Reference in New Issue
Block a user