diff options
Diffstat (limited to 'source/blender/draw/engines/eevee')
6 files changed, 22 insertions, 19 deletions
diff --git a/source/blender/draw/engines/eevee/eevee_materials.c b/source/blender/draw/engines/eevee/eevee_materials.c index 1cb630e6d59..ff7dda1152c 100644 --- a/source/blender/draw/engines/eevee/eevee_materials.c +++ b/source/blender/draw/engines/eevee/eevee_materials.c @@ -231,6 +231,13 @@ void EEVEE_materials_init(EEVEE_ViewLayerData *sldata, eevee_init_noise_texture(); } + if (draw_ctx->rv3d) { + copy_v4_v4(sldata->common_data.camera_uv_scale, draw_ctx->rv3d->viewcamtexcofac); + } + else { + copy_v4_fl4(sldata->common_data.camera_uv_scale, 1.0f, 1.0f, 0.0f, 0.0f); + } + if (!DRW_state_is_image_render() && ((stl->effects->enabled_effects & EFFECT_TAA) == 0)) { sldata->common_data.alpha_hash_offset = 0.0f; sldata->common_data.alpha_hash_scale = 1.0f; diff --git a/source/blender/draw/engines/eevee/eevee_private.h b/source/blender/draw/engines/eevee/eevee_private.h index 6f30ffcb364..b7f2b0ae859 100644 --- a/source/blender/draw/engines/eevee/eevee_private.h +++ b/source/blender/draw/engines/eevee/eevee_private.h @@ -895,14 +895,11 @@ typedef struct EEVEE_CommonUniformBuffer { float prb_irradiance_smooth; /* float */ float prb_lod_cube_max; /* float */ /* Misc */ - int ray_type; /* int */ - float ray_depth; /* float */ - float alpha_hash_offset; /* float */ - float alpha_hash_scale; /* float */ - float pad7; /* float */ - float pad8; /* float */ - float pad9; /* float */ - float pad10; /* float */ + int ray_type; /* int */ + float ray_depth; /* float */ + float alpha_hash_offset; /* float */ + float alpha_hash_scale; /* float */ + float camera_uv_scale[2], camera_uv_bias[2]; /* vec4 */ } EEVEE_CommonUniformBuffer; BLI_STATIC_ASSERT_ALIGN(EEVEE_CommonUniformBuffer, 16) diff --git a/source/blender/draw/engines/eevee/eevee_render.c b/source/blender/draw/engines/eevee/eevee_render.c index c3b909f5fb9..1d18056e175 100644 --- a/source/blender/draw/engines/eevee/eevee_render.c +++ b/source/blender/draw/engines/eevee/eevee_render.c @@ -157,8 +157,6 @@ void EEVEE_render_view_sync(EEVEE_Data *vedata, RenderEngine *engine, struct Dep DRW_view_reset(); DRW_view_default_set(view); DRW_view_set_active(view); - - DRW_view_camtexco_set(view, g_data->camtexcofac); } void EEVEE_render_cache_init(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata) diff --git a/source/blender/draw/engines/eevee/shaders/common_uniforms_lib.glsl b/source/blender/draw/engines/eevee/shaders/common_uniforms_lib.glsl index c935eca6a39..0cf36817788 100644 --- a/source/blender/draw/engines/eevee/shaders/common_uniforms_lib.glsl +++ b/source/blender/draw/engines/eevee/shaders/common_uniforms_lib.glsl @@ -1,4 +1,6 @@ +#define COMMON_UNIFORMS_LIB + layout(std140) uniform common_block { mat4 pastViewProjectionMatrix; @@ -42,10 +44,8 @@ layout(std140) uniform common_block float rayDepth; float alphaHashOffset; float alphaHashScale; - float pad6; - float pad7; - float pad8; - float pad9; + /* Misc */ + vec4 cameraUvScaleBias; }; /* rayType (keep in sync with ray_type) */ diff --git a/source/blender/draw/engines/eevee/shaders/surface_lib.glsl b/source/blender/draw/engines/eevee/shaders/surface_lib.glsl index ac7519195c0..13a6498938b 100644 --- a/source/blender/draw/engines/eevee/shaders/surface_lib.glsl +++ b/source/blender/draw/engines/eevee/shaders/surface_lib.glsl @@ -1,6 +1,7 @@ /** This describe the entire interface of the shader. */ #pragma BLENDER_REQUIRE(common_math_lib.glsl) +#pragma BLENDER_REQUIRE(common_math_lib.glsl) #define SURFACE_INTERFACE \ vec3 worldPosition; \ @@ -176,13 +177,13 @@ vec3 coordinate_screen(vec3 P) /* Unsupported. It would make the probe camera-dependent. */ window.xy = vec2(0.5); -#elif defined(WORLD_BACKGROUND) +#elif defined(WORLD_BACKGROUND) && defined(COMMON_UNIFORMS_LIB) window.xy = project_point(ProjectionMatrix, viewPosition).xy * 0.5 + 0.5; - window.xy = window.xy * CameraTexCoFactors.xy + CameraTexCoFactors.zw; + window.xy = window.xy * cameraUvScaleBias.xy + cameraUvScaleBias.zw; -#else /* MESH */ +#elif defined(COMMON_UNIFORMS_LIB) /* MESH */ window.xy = project_point(ProjectionMatrix, transform_point(ViewMatrix, P)).xy * 0.5 + 0.5; - window.xy = window.xy * CameraTexCoFactors.xy + CameraTexCoFactors.zw; + window.xy = window.xy * cameraUvScaleBias.xy + cameraUvScaleBias.zw; #endif return window; } diff --git a/source/blender/draw/engines/eevee/shaders/volumetric_frag.glsl b/source/blender/draw/engines/eevee/shaders/volumetric_frag.glsl index eebcf56de28..90c36801dd5 100644 --- a/source/blender/draw/engines/eevee/shaders/volumetric_frag.glsl +++ b/source/blender/draw/engines/eevee/shaders/volumetric_frag.glsl @@ -53,7 +53,7 @@ vec3 coordinate_screen(vec3 P) { vec3 window = vec3(0.0); window.xy = project_point(ProjectionMatrix, transform_point(ViewMatrix, P)).xy * 0.5 + 0.5; - window.xy = window.xy * CameraTexCoFactors.xy + CameraTexCoFactors.zw; + window.xy = window.xy * cameraUvScaleBias.xy + cameraUvScaleBias.zw; return window; } |