1. 22 Mar, 2018 1 commit
    • Øyvind "pippin" Kolås's avatar
      operations: bulk update of reference hashes · 81c5679c
      Øyvind "pippin" Kolås authored
      The generated files for the following operations have been visually inspected -
      and the change in generated pixels are presumed to be due to other changes in
      GEGL and babl. There has been subtle improvements both in color space
      conversions and samplers leading to many changes. The new and updated hashes
      are the hashes resulting on a 64bit linux system, running with 1 thread and no
      opencl.
      81c5679c
  2. 21 Mar, 2018 1 commit
    • Jehan's avatar
      operations: update "gegl:value-propagate" description. · f888b731
      Jehan authored
      The most 2 famous filters based on this operation are "erode" and
      "dilate" which are meant to work for the white and black colors.
      "gegl:value-propagate" is the generic version, which works for any
      color, also for alpha channel and such.
      The update is mostly to add the terms "erode" and "dilate" into the
      description somewhere so that this operation will be raised in the
      action search in GIMP along with the basic erode/dilate filters. This
      way, people will understand they can go further with it.
      f888b731
  3. 17 Mar, 2018 2 commits
    • Jehan's avatar
      gegl, operations: s/GEGL_DISTANCE_FOO/GEGL_DISTANCE_METRIC_FOO/ · d80704b5
      Jehan authored
      I have been pointed out that shortened names can make problems in the
      future (based on Mitch's bad experience! ;p).
      So let's make the enum names more standardized by basing them on the
      type full name.
      d80704b5
    • Jehan's avatar
      Bug 794414: new GeglDistanceMetric enum type. · f8020a25
      Jehan authored
      Makes using the distance "metric" property (used in distance-transform)
      more robust to changes, rather than having to recreate the enum in third
      party applications, like GIMP.
      As discussed, "chessboard" distance has been renamed to "Chebyshev"
      which seems more standard and less confusing since some pieces in chess
      count their distance in Chebyshev whereas other count it in Manhattan.
      f8020a25
  4. 14 Mar, 2018 2 commits
  5. 08 Mar, 2018 2 commits
  6. 03 Mar, 2018 1 commit
  7. 02 Mar, 2018 2 commits
    • Ell's avatar
      recursive-transform: replace brightness/contrast props with fade-color · ed55e145
      Ell authored
      ... which controls the color of a color-overlay node, applied
      recursively to the transformed image.  This serves the same
      function of attenuating the color of deep iterations, but is more
      useful than brightness/contrast.
      ed55e145
    • Ell's avatar
      color-overlay: add new operation to workshop · 224637b9
      Ell authored
      A simple op, blending a constant color with the input, preserving
      its transparency.  Equivalent to gegl:dst-atop with a gegl:color
      aux.
      
      We could have just added a "value" property to dst-atop, but since
      it wouldn't be very useful for the other Porter-Duff ops, just add
      a dedicated op.
      224637b9
  8. 28 Feb, 2018 2 commits
    • Ell's avatar
      recursive-transform: add new operation to workshop · faa21840
      Ell authored
      gegl:recursive-transform applies a transformation matrix
      recursilvely to an image, pasting the results on top of, or below,
      each other.  This can be used to create an arbitrarily-deep image-
      within-image effect.
      
      The op additionally takes brightness/contrast parameters, which are
      applied recursively as well, allowing to attenuate the colors of
      deeper iterations.
      faa21840
    • Ell's avatar
      Bug 793937 - Crash in connection with median blur · 8a69e32f
      Ell authored
      In convert_values_to_bins(), when quantize == FALSE, sort the
      values *before* initializing prev_value, since it has to initially
      correspond to the value of the first bin, i.e., the first value
      after sorting.  Failing to do this could lead to a buffer overflow
      of bin_values, when all input values are unique.
      8a69e32f
  9. 25 Feb, 2018 1 commit
    • Øyvind "pippin" Kolås's avatar
      pixel-duster: split corpus database is 4096 hashtables · 83ec9901
      Øyvind "pippin" Kolås authored
      Decide which hash-table corpus samples go into by a 4bit per pixel start
      fragment, when computing a relevant subsetting index for which hashtable to use
      - include neighbouring "bins" per pixel in neighborhood, as well as full
      variation for that part of index if needle contains transparency.
      
      The result is a quality near exhaustive search; at orders of magnitude better
      performance.
      83ec9901
  10. 16 Feb, 2018 2 commits
  11. 15 Feb, 2018 1 commit
    • Ell's avatar
      color-to-alpha: merge back color-to-alpha-plus changes · ecbc4f93
      Ell authored
      Merge the color-to-alpha-plus changes back into color-to-alpha, and
      remove it from the workshop.
      
      Remove the compress-threshold-range property of
      color-to-alpha-plus: keep only the compress-threshold-range ==
      FALSE behavior.
      
      Disable the OpenCL implementation, since it doesn't support the new
      properties.  It should be re-enabled once the OpenCL version
      implements them.
      ecbc4f93
  12. 13 Feb, 2018 1 commit
  13. 08 Feb, 2018 1 commit
  14. 07 Feb, 2018 1 commit
  15. 03 Feb, 2018 1 commit
    • Debarshi Ray's avatar
      shadows-highlights-correction: Prefer copysignf to SIGN · 8d5074b3
      Debarshi Ray authored
      GCC optimizes copysignf much better than SIGN because it can copy the
      sign bit using bitwise boolean operations.
      
      For example, according to https://godbolt.org/g/GQHxhd, this code:
      
      #include <math.h>
      
      float
      bar (float n)
      {
          float n_sign = copysignf (1.0f, n);
          return n_sign;
      }
      
      float
      foo (float n)
      {
          float n_sign = n < 0.0f ? -1.0f : 1.0f;
          return n_sign;
      }
      
      ... generates:
      
      bar(float):
        andps xmm0, XMMWORD PTR .LC1[rip]
        orps xmm0, XMMWORD PTR .LC0[rip]
        ret
      foo(float):
        pxor xmm1, xmm1
        ucomiss xmm1, xmm0
        ja .L5
        movss xmm0, DWORD PTR .LC3[rip]
        ret
      .L5:
        movss xmm0, DWORD PTR .LC2[rip]
        ret
      .LC0:
        .long 1065353216
        .long 0
        .long 0
        .long 0
      .LC1:
        .long 2147483648
        .long 0
        .long 0
        .long 0
      .LC2:
        .long 3212836864
      .LC3:
        .long 1065353216
      
      The SIGN macro doesn't differentiate between negative and positive
      zero, and is therefore not identical to copysignf. However, in cases,
      where the variable lies within a known range and isn't expected to be
      incremented in infinitesimally small steps, the distinction between
      positive and negative zero doesn't matter. For example, the highlights
      and shadows properties. They lie between [-100.0, 100.0] and are not
      expected to be incremented in such tiny steps that would cause them to
      be rounded off to zero.
      8d5074b3
  16. 02 Feb, 2018 1 commit
  17. 28 Jan, 2018 4 commits
  18. 25 Jan, 2018 2 commits
    • Ell's avatar
      transform: only rasterize inside the transformed polygon · 30c5af97
      Ell authored
      Calculate the limits of each scanline that are inside the
      transformed and clipped bounding-box of the input (with sufficient
      headroom for the sampler context rect, and for box filtering), and
      only rasterize inside those limits, zeroing the rest of the output.
      
      This slightly improves performance, and avoids perspective-
      transform artifacts when sampling close to the horizon.
      30c5af97
    • Ell's avatar
      transform: remove remaining scan-direction flip optimization · f3ebb197
      Ell authored
      Remove the direction-flip optimization from the nearest and generic
      cases.  It's no longer beneficial, and this simplifies the code.
      f3ebb197
  19. 22 Jan, 2018 2 commits
  20. 21 Jan, 2018 2 commits
    • Ell's avatar
      transform: don't sample past-the-horizon points · dbac6fcf
      Ell authored
      When applying a perspective transform, don't sample past-the-
      horizon output points, which correspond to behind-the-camera input
      points, and should be clipped.
      
      Currently, we test each point individually, which is suboptimal.
      Ideally, we should precalculate the regions that are inside the
      transformed polygon, and only rasterize those.  Either way, the
      output should now be the same.
      dbac6fcf
    • Ell's avatar
      transform: clip bounding box to the backplane · b429cd48
      Ell authored
      ... so that, when applying a perspective transform, vertices of the
      input bounding box that map behind the camera don't result in a
      wrong bounding box.
      b429cd48
  21. 17 Jan, 2018 2 commits
    • Ell's avatar
      transform: small fix to last commit · bbf06b22
      Ell authored
      bbf06b22
    • Ell's avatar
      transform: fix required/invalidated rects for perspective transforms · 8bb95cbd
      Ell authored
      When calculating required/invalidated rects, clip the output/input
      rect to the horizon/backplane, so that none of its vertices are
      past-the-horizon/behind-the-camera, and we get a proper transformed
      polygon (and bounding box).
      
      This fixes rendering artifacts caused by bad required rects,
      resulting in the necessary regions of the input not being computed.
      8bb95cbd
  22. 15 Jan, 2018 1 commit
  23. 11 Jan, 2018 1 commit
  24. 10 Jan, 2018 1 commit
  25. 09 Jan, 2018 1 commit
  26. 05 Jan, 2018 2 commits