DRW: Move CameraTexCoFactors to engine specific storage

This is part of the effor to simplify the View struct in order to implement
multiview rendering.

The CameraTexCoFactors being only valid for a single view, and being only
used in very few places, it make sense to move it to the engine side.
This commit is contained in:
2022-10-06 16:42:19 +02:00
parent 055680a89e
commit 03a7f1d7b1
19 changed files with 45 additions and 48 deletions

View File

@@ -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) */

View File

@@ -1,5 +1,6 @@
/** 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 \
@@ -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;
}

View File

@@ -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;
}