EEVEE: Render: Fix regression caused by previous Motion blur fix
Caused by rB4f59e4bddcb0c06e441adf68a5f252a4e5b4b260
This commit is contained in:
@@ -913,6 +913,7 @@ typedef struct EEVEE_PrivateData {
|
|||||||
/* Render Matrices */
|
/* Render Matrices */
|
||||||
float studiolight_matrix[3][3];
|
float studiolight_matrix[3][3];
|
||||||
float overscan, overscan_pixels;
|
float overscan, overscan_pixels;
|
||||||
|
float camtexcofac[4];
|
||||||
float size_orig[2];
|
float size_orig[2];
|
||||||
|
|
||||||
/* Mist Settings */
|
/* Mist Settings */
|
||||||
|
@@ -47,13 +47,15 @@
|
|||||||
#include "eevee_private.h"
|
#include "eevee_private.h"
|
||||||
|
|
||||||
/* Return true if init properly. */
|
/* Return true if init properly. */
|
||||||
bool EEVEE_render_init(EEVEE_Data *ved, RenderEngine *engine, struct Depsgraph *UNUSED(depsgraph))
|
bool EEVEE_render_init(EEVEE_Data *ved, RenderEngine *engine, struct Depsgraph *depsgraph)
|
||||||
{
|
{
|
||||||
EEVEE_Data *vedata = (EEVEE_Data *)ved;
|
EEVEE_Data *vedata = (EEVEE_Data *)ved;
|
||||||
EEVEE_StorageList *stl = vedata->stl;
|
EEVEE_StorageList *stl = vedata->stl;
|
||||||
EEVEE_TextureList *txl = vedata->txl;
|
EEVEE_TextureList *txl = vedata->txl;
|
||||||
EEVEE_FramebufferList *fbl = vedata->fbl;
|
EEVEE_FramebufferList *fbl = vedata->fbl;
|
||||||
|
Scene *scene = DEG_get_evaluated_scene(depsgraph);
|
||||||
const float *size_orig = DRW_viewport_size_get();
|
const float *size_orig = DRW_viewport_size_get();
|
||||||
|
float size_final[2];
|
||||||
|
|
||||||
/* Init default FB and render targets:
|
/* Init default FB and render targets:
|
||||||
* In render mode the default framebuffer is not generated
|
* In render mode the default framebuffer is not generated
|
||||||
@@ -71,6 +73,26 @@ bool EEVEE_render_init(EEVEE_Data *ved, RenderEngine *engine, struct Depsgraph *
|
|||||||
g_data->valid_double_buffer = 0;
|
g_data->valid_double_buffer = 0;
|
||||||
copy_v2_v2(g_data->size_orig, size_orig);
|
copy_v2_v2(g_data->size_orig, size_orig);
|
||||||
|
|
||||||
|
float *camtexcofac = g_data->camtexcofac;
|
||||||
|
if (scene->eevee.flag & SCE_EEVEE_OVERSCAN) {
|
||||||
|
g_data->overscan = scene->eevee.overscan / 100.0f;
|
||||||
|
g_data->overscan_pixels = roundf(max_ff(size_orig[0], size_orig[1]) * g_data->overscan);
|
||||||
|
|
||||||
|
madd_v2_v2v2fl(size_final, size_orig, (float[2]){2.0f, 2.0f}, g_data->overscan_pixels);
|
||||||
|
|
||||||
|
camtexcofac[0] = size_final[0] / size_orig[0];
|
||||||
|
camtexcofac[1] = size_final[1] / size_orig[1];
|
||||||
|
|
||||||
|
camtexcofac[2] = -camtexcofac[0] * g_data->overscan_pixels / size_final[0];
|
||||||
|
camtexcofac[3] = -camtexcofac[1] * g_data->overscan_pixels / size_final[1];
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
copy_v2_v2(size_final, size_orig);
|
||||||
|
g_data->overscan = 0.0f;
|
||||||
|
g_data->overscan_pixels = 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,
|
int final_res[2] = {size_orig[0] + g_data->overscan_pixels * 2.0f,
|
||||||
size_orig[1] + g_data->overscan_pixels * 2.0f};
|
size_orig[1] + g_data->overscan_pixels * 2.0f};
|
||||||
|
|
||||||
@@ -128,9 +150,6 @@ void EEVEE_render_modules_init(EEVEE_Data *vedata,
|
|||||||
void EEVEE_render_view_sync(EEVEE_Data *vedata, RenderEngine *engine, struct Depsgraph *depsgraph)
|
void EEVEE_render_view_sync(EEVEE_Data *vedata, RenderEngine *engine, struct Depsgraph *depsgraph)
|
||||||
{
|
{
|
||||||
EEVEE_PrivateData *g_data = vedata->stl->g_data;
|
EEVEE_PrivateData *g_data = vedata->stl->g_data;
|
||||||
Scene *scene = DEG_get_evaluated_scene(depsgraph);
|
|
||||||
const float *size_orig = DRW_viewport_size_get();
|
|
||||||
float size_final[2];
|
|
||||||
|
|
||||||
/* Set the pers & view matrix. */
|
/* Set the pers & view matrix. */
|
||||||
float winmat[4][4], viewmat[4][4], viewinv[4][4];
|
float winmat[4][4], viewmat[4][4], viewinv[4][4];
|
||||||
@@ -148,27 +167,7 @@ void EEVEE_render_view_sync(EEVEE_Data *vedata, RenderEngine *engine, struct Dep
|
|||||||
DRW_view_default_set(view);
|
DRW_view_default_set(view);
|
||||||
DRW_view_set_active(view);
|
DRW_view_set_active(view);
|
||||||
|
|
||||||
float camtexcofac[4];
|
DRW_view_camtexco_set(view, g_data->camtexcofac);
|
||||||
if (scene->eevee.flag & SCE_EEVEE_OVERSCAN) {
|
|
||||||
g_data->overscan = scene->eevee.overscan / 100.0f;
|
|
||||||
g_data->overscan_pixels = roundf(max_ff(size_orig[0], size_orig[1]) * g_data->overscan);
|
|
||||||
|
|
||||||
madd_v2_v2v2fl(size_final, size_orig, (float[2]){2.0f, 2.0f}, g_data->overscan_pixels);
|
|
||||||
|
|
||||||
camtexcofac[0] = size_final[0] / size_orig[0];
|
|
||||||
camtexcofac[1] = size_final[1] / size_orig[1];
|
|
||||||
|
|
||||||
camtexcofac[2] = -camtexcofac[0] * g_data->overscan_pixels / size_final[0];
|
|
||||||
camtexcofac[3] = -camtexcofac[1] * g_data->overscan_pixels / size_final[1];
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
copy_v2_v2(size_final, size_orig);
|
|
||||||
g_data->overscan = 0.0f;
|
|
||||||
g_data->overscan_pixels = 0.0f;
|
|
||||||
copy_v4_fl4(camtexcofac, 1.0f, 1.0f, 0.0f, 0.0f);
|
|
||||||
}
|
|
||||||
|
|
||||||
DRW_view_camtexco_set(view, camtexcofac);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void EEVEE_render_cache_init(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
|
void EEVEE_render_cache_init(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
|
||||||
|
Reference in New Issue
Block a user