EEVEE: LookDev blurred background
This commit is contained in:
@@ -178,6 +178,11 @@ static void studiolight_create_equierectangular_radiance_gputexture(StudioLight
|
|||||||
BKE_studiolight_ensure_flag(sl, STUDIOLIGHT_EQUIRECTANGULAR_IMAGE_LOADED);
|
BKE_studiolight_ensure_flag(sl, STUDIOLIGHT_EQUIRECTANGULAR_IMAGE_LOADED);
|
||||||
ImBuf *ibuf = sl->equirectangular_radiance_buffer;
|
ImBuf *ibuf = sl->equirectangular_radiance_buffer;
|
||||||
sl->equirectangular_radiance_gputexture = GPU_texture_create_2D(ibuf->x, ibuf->y, GPU_RGBA16F, ibuf->rect_float, error);
|
sl->equirectangular_radiance_gputexture = GPU_texture_create_2D(ibuf->x, ibuf->y, GPU_RGBA16F, ibuf->rect_float, error);
|
||||||
|
GPUTexture *tex = sl->equirectangular_radiance_gputexture;
|
||||||
|
GPU_texture_bind(tex, 0);
|
||||||
|
GPU_texture_filter_mode(tex, true);
|
||||||
|
GPU_texture_wrap_mode(tex, true);
|
||||||
|
GPU_texture_unbind(tex);
|
||||||
}
|
}
|
||||||
sl->flag |= STUDIOLIGHT_EQUIRECTANGULAR_RADIANCE_GPUTEXTURE;
|
sl->flag |= STUDIOLIGHT_EQUIRECTANGULAR_RADIANCE_GPUTEXTURE;
|
||||||
}
|
}
|
||||||
@@ -189,6 +194,11 @@ static void studiolight_create_equierectangular_irradiance_gputexture(StudioLigh
|
|||||||
BKE_studiolight_ensure_flag(sl, STUDIOLIGHT_EQUIRECTANGULAR_IRRADIANCE_IMAGE_CALCULATED);
|
BKE_studiolight_ensure_flag(sl, STUDIOLIGHT_EQUIRECTANGULAR_IRRADIANCE_IMAGE_CALCULATED);
|
||||||
ImBuf *ibuf = sl->equirectangular_irradiance_buffer;
|
ImBuf *ibuf = sl->equirectangular_irradiance_buffer;
|
||||||
sl->equirectangular_irradiance_gputexture = GPU_texture_create_2D(ibuf->x, ibuf->y, GPU_RGBA16F, ibuf->rect_float, error);
|
sl->equirectangular_irradiance_gputexture = GPU_texture_create_2D(ibuf->x, ibuf->y, GPU_RGBA16F, ibuf->rect_float, error);
|
||||||
|
GPUTexture *tex = sl->equirectangular_irradiance_gputexture;
|
||||||
|
GPU_texture_bind(tex, 0);
|
||||||
|
GPU_texture_filter_mode(tex, true);
|
||||||
|
GPU_texture_wrap_mode(tex, true);
|
||||||
|
GPU_texture_unbind(tex);
|
||||||
}
|
}
|
||||||
sl->flag |= STUDIOLIGHT_EQUIRECTANGULAR_IRRADIANCE_GPUTEXTURE;
|
sl->flag |= STUDIOLIGHT_EQUIRECTANGULAR_IRRADIANCE_GPUTEXTURE;
|
||||||
}
|
}
|
||||||
@@ -404,6 +414,10 @@ static void studiolight_calculate_irradiance_equirectangular_image(StudioLight *
|
|||||||
}
|
}
|
||||||
sl->equirectangular_irradiance_buffer = IMB_allocFromBuffer(NULL, colbuf, STUDIOLIGHT_IRRADIANCE_EQUIRECTANGULAR_WIDTH, STUDIOLIGHT_IRRADIANCE_EQUIRECTANGULAR_HEIGHT);
|
sl->equirectangular_irradiance_buffer = IMB_allocFromBuffer(NULL, colbuf, STUDIOLIGHT_IRRADIANCE_EQUIRECTANGULAR_WIDTH, STUDIOLIGHT_IRRADIANCE_EQUIRECTANGULAR_HEIGHT);
|
||||||
MEM_freeN(colbuf);
|
MEM_freeN(colbuf);
|
||||||
|
#if 0
|
||||||
|
IMB_saveiff(sl->equirectangular_irradiance_buffer, "/tmp/studiolight_specular_irradiance.png", IB_rectfloat);
|
||||||
|
#endif
|
||||||
|
|
||||||
}
|
}
|
||||||
sl->flag |= STUDIOLIGHT_EQUIRECTANGULAR_IRRADIANCE_IMAGE_CALCULATED;
|
sl->flag |= STUDIOLIGHT_EQUIRECTANGULAR_IRRADIANCE_IMAGE_CALCULATED;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
|
||||||
#define M_PI 3.14159265358979323846
|
#define M_PI 3.14159265358979323846
|
||||||
|
|
||||||
uniform float backgroundAlpha;
|
uniform float backgroundAlpha;
|
||||||
@@ -35,8 +36,9 @@ void node_tex_environment_equirectangular(vec3 co, sampler2D ima, out vec4 color
|
|||||||
float v = atan(nco.z, hypot(nco.x, nco.y)) / M_PI + 0.5;
|
float v = atan(nco.z, hypot(nco.x, nco.y)) / M_PI + 0.5;
|
||||||
|
|
||||||
/* Fix pole bleeding */
|
/* Fix pole bleeding */
|
||||||
float half_width = 0.5 / float(textureSize(ima, 0).x);
|
float width = float(textureSize(ima, 0).x);
|
||||||
v = clamp(v, half_width, 1.0 - half_width);
|
float texel_width = 1.0 / width;
|
||||||
|
v = clamp(v, texel_width, 1.0 - texel_width);
|
||||||
|
|
||||||
/* Fix u = 0 seam */
|
/* Fix u = 0 seam */
|
||||||
/* This is caused by texture filtering, since uv don't have smooth derivatives
|
/* This is caused by texture filtering, since uv don't have smooth derivatives
|
||||||
|
|||||||
Reference in New Issue
Block a user