forked from bartvdbraak/blender
Merge branch 'blender-v2.91-release' into master
This commit is contained in:
commit
d9dd408b42
@ -490,7 +490,7 @@ void EEVEE_motion_blur_swap_data(EEVEE_Data *vedata)
|
|||||||
BLI_assert((effects->enabled_effects & EFFECT_MOTION_BLUR) != 0);
|
BLI_assert((effects->enabled_effects & EFFECT_MOTION_BLUR) != 0);
|
||||||
|
|
||||||
/* Camera Data. */
|
/* 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. */
|
/* Object Data. */
|
||||||
for (BLI_ghashIterator_init(&ghi, effects->motion_blur.object);
|
for (BLI_ghashIterator_init(&ghi, effects->motion_blur.object);
|
||||||
|
@ -13,16 +13,19 @@ void main()
|
|||||||
{
|
{
|
||||||
/* Extract pixel motion vector from camera movement. */
|
/* Extract pixel motion vector from camera movement. */
|
||||||
ivec2 texel = ivec2(gl_FragCoord.xy);
|
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;
|
float depth = texelFetch(depthBuffer, texel, 0).r;
|
||||||
|
|
||||||
vec3 world_position = project_point(currViewProjMatrixInv, vec3(uv, depth) * 2.0 - 1.0);
|
uv_curr = uv_curr * 2.0 - 1.0;
|
||||||
vec2 uv_prev = project_point(prevViewProjMatrix, world_position).xy * 0.5 + 0.5;
|
depth = depth * 2.0 - 1.0;
|
||||||
vec2 uv_next = project_point(nextViewProjMatrix, world_position).xy * 0.5 + 0.5;
|
|
||||||
|
|
||||||
outData.xy = uv_prev - uv;
|
vec3 world_position = project_point(currViewProjMatrixInv, vec3(uv_curr, depth));
|
||||||
outData.zw = uv_next - uv;
|
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. */
|
/* Encode to unsigned normalized 16bit texture. */
|
||||||
outData = outData * 0.5 + 0.5;
|
outData = outData * 0.5 + 0.5;
|
||||||
|
@ -100,10 +100,10 @@ class FrameBuffer {
|
|||||||
/** Debug name. */
|
/** Debug name. */
|
||||||
char name_[DEBUG_NAME_LEN];
|
char name_[DEBUG_NAME_LEN];
|
||||||
/** Frame-buffer state. */
|
/** Frame-buffer state. */
|
||||||
int viewport_[4];
|
int viewport_[4] = {0};
|
||||||
int scissor_[4];
|
int scissor_[4] = {0};
|
||||||
bool scissor_test_ = false;
|
bool scissor_test_ = false;
|
||||||
bool dirty_state_;
|
bool dirty_state_ = true;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
FrameBuffer(const char *name);
|
FrameBuffer(const char *name);
|
||||||
|
@ -47,7 +47,7 @@ class Immediate {
|
|||||||
|
|
||||||
/** Current draw call specification. */
|
/** Current draw call specification. */
|
||||||
GPUPrimType prim_type = GPU_PRIM_NONE;
|
GPUPrimType prim_type = GPU_PRIM_NONE;
|
||||||
GPUVertFormat vertex_format;
|
GPUVertFormat vertex_format = {};
|
||||||
GPUShader *shader = NULL;
|
GPUShader *shader = NULL;
|
||||||
/** Enforce strict vertex count (disabled when using immBeginAtMost). */
|
/** Enforce strict vertex count (disabled when using immBeginAtMost). */
|
||||||
bool strict_vertex_len = true;
|
bool strict_vertex_len = true;
|
||||||
|
@ -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
|
/* 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.
|
* GPU_BLEND_CUSTOM was used just before and the frame-buffer is using more than 1 color target.
|
||||||
*/
|
*/
|
||||||
|
Loading…
Reference in New Issue
Block a user