Merge branch 'blender-v2.91-release' into master

This commit is contained in:
Clément Foucault 2020-11-05 18:00:48 +01:00
commit d9dd408b42
5 changed files with 21 additions and 11 deletions

View File

@ -490,7 +490,7 @@ void EEVEE_motion_blur_swap_data(EEVEE_Data *vedata)
BLI_assert((effects->enabled_effects & EFFECT_MOTION_BLUR) != 0);
/* Camera Data. */
effects->motion_blur.camera[MB_PREV] = effects->motion_blur.camera[MB_CURR];
effects->motion_blur.camera[MB_PREV] = effects->motion_blur.camera[MB_NEXT];
/* Object Data. */
for (BLI_ghashIterator_init(&ghi, effects->motion_blur.object);

View File

@ -13,16 +13,19 @@ void main()
{
/* Extract pixel motion vector from camera movement. */
ivec2 texel = ivec2(gl_FragCoord.xy);
vec2 uv = gl_FragCoord.xy / vec2(textureSize(depthBuffer, 0).xy);
vec2 uv_curr = gl_FragCoord.xy / vec2(textureSize(depthBuffer, 0).xy);
float depth = texelFetch(depthBuffer, texel, 0).r;
vec3 world_position = project_point(currViewProjMatrixInv, vec3(uv, depth) * 2.0 - 1.0);
vec2 uv_prev = project_point(prevViewProjMatrix, world_position).xy * 0.5 + 0.5;
vec2 uv_next = project_point(nextViewProjMatrix, world_position).xy * 0.5 + 0.5;
uv_curr = uv_curr * 2.0 - 1.0;
depth = depth * 2.0 - 1.0;
outData.xy = uv_prev - uv;
outData.zw = uv_next - uv;
vec3 world_position = project_point(currViewProjMatrixInv, vec3(uv_curr, depth));
vec2 uv_prev = project_point(prevViewProjMatrix, world_position).xy;
vec2 uv_next = project_point(nextViewProjMatrix, world_position).xy;
outData.xy = uv_prev - uv_curr;
outData.zw = uv_next - uv_curr;
/* Encode to unsigned normalized 16bit texture. */
outData = outData * 0.5 + 0.5;

View File

@ -100,10 +100,10 @@ class FrameBuffer {
/** Debug name. */
char name_[DEBUG_NAME_LEN];
/** Frame-buffer state. */
int viewport_[4];
int scissor_[4];
int viewport_[4] = {0};
int scissor_[4] = {0};
bool scissor_test_ = false;
bool dirty_state_;
bool dirty_state_ = true;
public:
FrameBuffer(const char *name);

View File

@ -47,7 +47,7 @@ class Immediate {
/** Current draw call specification. */
GPUPrimType prim_type = GPU_PRIM_NONE;
GPUVertFormat vertex_format;
GPUVertFormat vertex_format = {};
GPUShader *shader = NULL;
/** Enforce strict vertex count (disabled when using immBeginAtMost). */
bool strict_vertex_len = true;

View File

@ -437,6 +437,13 @@ void GLStateManager::set_blend(const eGPUBlend value)
}
}
if (value == GPU_BLEND_SUBTRACT) {
glBlendEquation(GL_FUNC_REVERSE_SUBTRACT);
}
else {
glBlendEquation(GL_FUNC_ADD);
}
/* Always set the blend function. This avoid a rendering error when blending is disabled but
* GPU_BLEND_CUSTOM was used just before and the frame-buffer is using more than 1 color target.
*/