[Bf-blender-cvs] [562fd83b915] temp-viewport-compositor-merge: Merge branch 'master' into temp-viewport-compositor-merge

Omar Emara noreply at git.blender.org
Fri May 6 15:23:36 CEST 2022


Commit: 562fd83b9156a67e9d4930d194cbff843b8216b7
Author: Omar Emara
Date:   Fri May 6 15:13:47 2022 +0200
Branches: temp-viewport-compositor-merge
https://developer.blender.org/rB562fd83b9156a67e9d4930d194cbff843b8216b7

Merge branch 'master' into temp-viewport-compositor-merge

===================================================================



===================================================================

diff --cc source/blender/gpu/CMakeLists.txt
index 3eea33d2906,5fee9167362..80cc2ac3013
--- a/source/blender/gpu/CMakeLists.txt
+++ b/source/blender/gpu/CMakeLists.txt
@@@ -308,47 -308,9 +308,47 @@@ set(GLSL_SR
    shaders/common/gpu_shader_common_curves.glsl
    shaders/common/gpu_shader_common_hash.glsl
    shaders/common/gpu_shader_common_math.glsl
-   shaders/common/gpu_shader_common_math_utilities.glsl
+   shaders/common/gpu_shader_common_math_utils.glsl
    shaders/common/gpu_shader_common_mix_rgb.glsl
  
 +  shaders/compositor/compositor_alpha_crop.glsl
 +  shaders/compositor/compositor_blur.glsl
 +  shaders/compositor/compositor_convert.glsl
 +  shaders/compositor/compositor_filter.glsl
 +  shaders/compositor/compositor_flip.glsl
 +  shaders/compositor/compositor_image_crop.glsl
 +  shaders/compositor/compositor_projector_lens_distortion.glsl
 +  shaders/compositor/compositor_realize_on_domain.glsl
 +  shaders/compositor/compositor_screen_lens_distortion.glsl
 +  shaders/compositor/compositor_split_viewer.glsl
 +
 +  shaders/compositor/library/gpu_shader_compositor_alpha_over.glsl
 +  shaders/compositor/library/gpu_shader_compositor_bright_contrast.glsl
 +  shaders/compositor/library/gpu_shader_compositor_channel_matte.glsl
 +  shaders/compositor/library/gpu_shader_compositor_chroma_matte.glsl
 +  shaders/compositor/library/gpu_shader_compositor_color_balance.glsl
 +  shaders/compositor/library/gpu_shader_compositor_color_correction.glsl
 +  shaders/compositor/library/gpu_shader_compositor_color_matte.glsl
 +  shaders/compositor/library/gpu_shader_compositor_color_spill.glsl
 +  shaders/compositor/library/gpu_shader_compositor_color_to_luminance.glsl
 +  shaders/compositor/library/gpu_shader_compositor_difference_matte.glsl
 +  shaders/compositor/library/gpu_shader_compositor_distance_matte.glsl
 +  shaders/compositor/library/gpu_shader_compositor_exposure.glsl
 +  shaders/compositor/library/gpu_shader_compositor_gamma.glsl
 +  shaders/compositor/library/gpu_shader_compositor_hue_correct.glsl
 +  shaders/compositor/library/gpu_shader_compositor_hue_saturation_value.glsl
 +  shaders/compositor/library/gpu_shader_compositor_invert.glsl
 +  shaders/compositor/library/gpu_shader_compositor_load_input.glsl
 +  shaders/compositor/library/gpu_shader_compositor_luminance_matte.glsl
 +  shaders/compositor/library/gpu_shader_compositor_map_value.glsl
 +  shaders/compositor/library/gpu_shader_compositor_normal.glsl
 +  shaders/compositor/library/gpu_shader_compositor_posterize.glsl
 +  shaders/compositor/library/gpu_shader_compositor_separate_combine.glsl
 +  shaders/compositor/library/gpu_shader_compositor_set_alpha.glsl
 +  shaders/compositor/library/gpu_shader_compositor_store_output.glsl
 +  shaders/compositor/library/gpu_shader_compositor_texture_utilities.glsl
 +  shaders/compositor/library/gpu_shader_compositor_type_conversion.glsl
 +
    shaders/material/gpu_shader_material_add_shader.glsl
    shaders/material/gpu_shader_material_ambient_occlusion.glsl
    shaders/material/gpu_shader_material_anisotropic.glsl
diff --cc source/blender/gpu/shaders/common/gpu_shader_common_math_utils.glsl
index 582027a652a,124654963fd..1ba22b4c5da
--- a/source/blender/gpu/shaders/common/gpu_shader_common_math_utils.glsl
+++ b/source/blender/gpu/shaders/common/gpu_shader_common_math_utils.glsl
@@@ -124,24 -109,13 +120,29 @@@ void vector_normalize(vec3 normal, out 
    outnormal = normalize(normal);
  }
  
+ void vector_copy(vec3 normal, out vec3 outnormal)
+ {
+   outnormal = normal;
+ }
+ 
 +vec3 fallback_pow(vec3 a, float b, vec3 fallback)
 +{
 +  return vec3(fallback_pow(a.x, b, fallback.x),
 +              fallback_pow(a.y, b, fallback.y),
 +              fallback_pow(a.z, b, fallback.z));
 +}
 +
  /* Matirx Math */
  
 +/* Return a 2D rotation matrix with the angle that the input 2D vector makes with the x axis. */
 +mat2 vector_to_rotation_matrix(vec2 vector)
 +{
 +  vec2 normalized_vector = normalize(vector);
 +  float cos_angle = normalized_vector.x;
 +  float sin_angle = normalized_vector.y;
 +  return mat2(cos_angle, sin_angle, -sin_angle, cos_angle);
 +}
 +
  mat3 euler_to_mat3(vec3 euler)
  {
    float cx = cos(euler.x);
diff --cc source/blender/gpu/shaders/compositor/library/gpu_shader_compositor_bright_contrast.glsl
index ba52465b66c,00000000000..ce71b4fd8a4
mode 100644,000000..100644
--- a/source/blender/gpu/shaders/compositor/library/gpu_shader_compositor_bright_contrast.glsl
+++ b/source/blender/gpu/shaders/compositor/library/gpu_shader_compositor_bright_contrast.glsl
@@@ -1,38 -1,0 +1,38 @@@
- #pragma BLENDER_REQUIRE(gpu_shader_common_color_utilities.glsl)
++#pragma BLENDER_REQUIRE(gpu_shader_common_color_utils.glsl)
 +
 +/* The algorithm is by Werner D. Streidt
 + * (http://visca.com/ffactory/archives/5-99/msg00021.html)
 + * Extracted of OpenCV demhist.c
 + */
 +
 +#define FLT_EPSILON 1.192092896e-07F
 +
 +void node_composite_bright_contrast(
 +    vec4 color, float brightness, float contrast, const float use_premultiply, out vec4 result)
 +{
 +  brightness /= 100.0;
 +  float delta = contrast / 200.0;
 +
 +  float multiplier, offset;
 +  if (contrast > 0.0) {
 +    multiplier = 1.0 - delta * 2.0;
 +    multiplier = 1.0 / max(multiplier, FLT_EPSILON);
 +    offset = multiplier * (brightness - delta);
 +  }
 +  else {
 +    delta *= -1.0;
 +    multiplier = max(1.0 - delta * 2.0, 0.0);
 +    offset = multiplier * brightness + delta;
 +  }
 +
 +  if (use_premultiply != 0.0) {
 +    color_alpha_unpremultiply(color, color);
 +  }
 +
 +  result.rgb = color.rgb * multiplier + offset;
 +  result.a = color.a;
 +
 +  if (use_premultiply != 0.0) {
 +    color_alpha_premultiply(result, result);
 +  }
 +}
diff --cc source/blender/gpu/shaders/compositor/library/gpu_shader_compositor_channel_matte.glsl
index 943c859c932,00000000000..f2dcc9543f2
mode 100644,000000..100644
--- a/source/blender/gpu/shaders/compositor/library/gpu_shader_compositor_channel_matte.glsl
+++ b/source/blender/gpu/shaders/compositor/library/gpu_shader_compositor_channel_matte.glsl
@@@ -1,52 -1,0 +1,52 @@@
- #pragma BLENDER_REQUIRE(gpu_shader_common_color_utilities.glsl)
++#pragma BLENDER_REQUIRE(gpu_shader_common_color_utils.glsl)
 +
 +#define CMP_NODE_CHANNEL_MATTE_CS_RGB 1.0
 +#define CMP_NODE_CHANNEL_MATTE_CS_HSV 2.0
 +#define CMP_NODE_CHANNEL_MATTE_CS_YUV 3.0
 +#define CMP_NODE_CHANNEL_MATTE_CS_YCC 4.0
 +
 +void node_composite_channel_matte(vec4 color,
 +                                  const float color_space,
 +                                  const float matte_channel,
 +                                  const vec2 limit_channels,
 +                                  float max_limit,
 +                                  float min_limit,
 +                                  out vec4 result,
 +                                  out float matte)
 +{
 +  vec4 channels;
 +  if (color_space == CMP_NODE_CHANNEL_MATTE_CS_HSV) {
 +    rgb_to_hsv(color, channels);
 +  }
 +  else if (color_space == CMP_NODE_CHANNEL_MATTE_CS_YUV) {
 +    rgba_to_yuva_itu_709(color, channels);
 +  }
 +  else if (color_space == CMP_NODE_CHANNEL_MATTE_CS_YCC) {
 +    rgba_to_ycca_itu_709(color, channels);
 +  }
 +  else {
 +    channels = color;
 +  }
 +
 +  float matte_value = channels[int(matte_channel)];
 +  float limit_value = max(channels[int(limit_channels.x)], channels[int(limit_channels.y)]);
 +
 +  float alpha = 1.0 - (matte_value - limit_value);
 +  if (alpha > max_limit) {
 +    alpha = color.a;
 +  }
 +  else if (alpha < min_limit) {
 +    alpha = 0.0;
 +  }
 +  else {
 +    alpha = (alpha - min_limit) / (max_limit - min_limit);
 +  }
 +
 +  matte = min(alpha, color.a);
 +  result = color * matte;
 +}
 +
 +#undef CMP_NODE_CHANNEL_MATTE_CS_RGB
 +#undef CMP_NODE_CHANNEL_MATTE_CS_HSV
 +#undef CMP_NODE_CHANNEL_MATTE_CS_YUV
 +#undef CMP_NODE_CHANNEL_MATTE_CS_YCC
diff --cc source/blender/gpu/shaders/compositor/library/gpu_shader_compositor_chroma_matte.glsl
index 2111436bcb6,00000000000..3b5f1fb6623
mode 100644,000000..100644
--- a/source/blender/gpu/shaders/compositor/library/gpu_shader_compositor_chroma_matte.glsl
+++ b/source/blender/gpu/shaders/compositor/library/gpu_shader_compositor_chroma_matte.glsl
@@@ -1,42 -1,0 +1,42 @@@
- #pragma BLENDER_REQUIRE(gpu_shader_common_math_utilities.glsl)
++#pragma BLENDER_REQUIRE(gpu_shader_common_math_utils.glsl)
 +
 +/* Algorithm from the book Video Demystified. Chapter 7. Chroma Keying. */
 +void node_composite_chroma_matte(vec4 color,
 +                                 vec4 key,
 +                                 float acceptance,
 +                                 float cutoff,
 +                                 float falloff,
 +                                 out vec4 result,
 +                                 out float matte)
 +{
 +  vec4 color_ycca;
 +  rgba_to_ycca_itu_709(color, color_ycca);
 +  vec4 key_ycca;
 +  rgba_to_ycca_itu_709(key, key_ycca);
 +
 +  /* Normalize the CrCb components into the [-1, 1] range. */
 +  vec2 color_cc = color_ycca.yz * 2.0 - 1.0;
 +  vec2 key_cc = key_ycca.yz * 2.0 - 1.0;
 +
 +  /* Rotate the color onto the space of the key such that x axis of the color space passes through
 +   * the key color. */
 +  color_cc = vector_to_rotation_matrix(key_cc * vec2(1.0, -1.0)) * color_cc;
 +
 +  /* Compute foreground key. If positive, the value is in the [0, 1] range. */
 +  float foreground_key = color_cc.x - (abs(color_cc.y) / acceptance);
 +
 +  /* Negative foreground key values retain the original alpha. Positive values are scaled by the
 +   * falloff, while colors that make an angle less than the cutoff angle get a zero alpha. */
 +  float alpha = color.a;
 +  if (foreground_key > 0.0) {
 +    alpha = 1.0 - (foreground_key / falloff);
 +
 +    if (abs(atan(color_cc.y, color_cc.x)) < (cutoff / 2.0)) {
 +      alpha = 0.0;
 +    }
 +  }
 +
 +  /* Compute output. */
 +  matte = min(alpha, color.a);
 +  result = color * matte;
 +}
diff --cc source/blender/gpu/shaders/compositor/library/gpu_shader_compositor_color_balance.glsl
index a107b05a499,00000000000..bffb94cdedb
mode 100644,000000..100644
--- a/source/blender/gpu/shaders/compositor/library/gpu_shader_compositor_color_balance.glsl
+++ b/source/blender/gpu/shaders/compositor/l

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list