This post lists all the changes/additions done to the G’MIC software, starting from the version 3.3.0, until we reach the next major release 3.4.0.
Most of these features are available in latest stable version of G’MIC (3.3.3) after a filter update ($ gmic update
).
New features:
Version 3.3.6:
- [gmic-qt-336] New filter Deformations / Distort [RBF].
- [gmic-qt-336] New button Randomize Parameters (dice icon) in the G’MIC-Qt plug-in, that randomizes parameters for filters that support it.
- [gmic-qt-336] New filter Rendering / Spline Spirograph, offers a range of settings to create intriguing, colorful textures, from spirograph-like process.
- [gmic-qt-336] New filter Rendering / Underwoods, by @prawnsushi .
- [gmic-qt-336] New filter Degradations / Blur [Motion] simulates motion blur on images, with user-defined trajectories.
- [gmic-qt-336] New filter Rendering / Color Wheel, by Claude Lion.
- [stdlib-336] New command
warp_seamless
warps selected images by specified displacement field, using seamless blending.
Version 3.3.5:
- [gmic-qt-335] New filter Layers / Spatial Blend Multi-Layers takes a bunch of input layers and blend them all spatially, according to a user-defined orientation. Useful to quickly create intriguing images from timelaps frames !
- [gmic-qt-335] New filter Artistic / Stringify renders images with colored lines.
- [gmic-qt-335] New filter category Map Projection/, with 14 new filters to project equirectangular maps using various projection methods. This is a very nice contribution from Kristian Järventaus, a member of the Cartographers Guild forum, where he posted these filters for the community there.
- [stdlib-335] New command
lines3d
transforms a 3D mesh as a set of segments that can be modified afterwards (e.g. to display 3D normals, as in the example below).
- [stdlib-335] New command
colorize3d
set the color of 3D object’s primitives according to a specified formulaf(x,y,z)
. Useful to view colored information on 3D meshes.
-
[stdlib-335] New commands
expand
andshrink
replaces deprecated commandsexpand_x
,expand_y
,expand_z
,expand_xy
,expand_xyz
(and same forshrink_*
). -
[stdlib-335] New commands
rescale2d
(shortcutrs
) andrescale3d
(shortcutrs3d
) perform 2D and 3D image rescaling with aspect ratio preservation. These two commands can replace the following commands (then leaving thestdlib
):resize2dx
,resize2dy
,resize3dx
,resize3dy
,resize3dz
,resize_ratio2d
,resize2din
,resize3din
,resize2dout
,resize3dout
. -
[stdlib-335] New commands
compress_to_keypoints
anddecompress_from_keypoints
allow to apply a RBF/PDE-based compression algorithm, that is particularly efficient for images with very smooth content (such as 3D CLUTs or light leak images).
-
[stdlib-335] Command
edgels
has been recoded from scratch and can now return multiple lists of edgels, either starting from the same pixel, or from any shape pixel present in the image. -
[stdlib-335] New command
split_vector
split an image into several parts, where specified vector is the separator. -
[core-335] New concept of
subcommand
: A subcommand of a commandfoo
is a command whose name starts with_foo
(e.g._foo_parse
). Contrary to a normal command, a subcommand shares the variables it defines, with the calling command. Example:
_foo_define_var :
var=3.1415926
foo :
_foo_define_var
echo "var = "$var # Will print '3.1415926'.
- [math-core-335] New function
flood(_#ind,_x,_y,_z,_tolerance,_is_high_connectivity,_opacity,_color)
performs a flood fill in image[ind]
(or in default image selected ifind
is not specified) with specified coordinates. This is the math evaluator analog to commandflood
.
Version 3.3.4:
- [gmic-qt-334] Filter Rendering / Quick Copyright has been recoded from scratch, with lot of new options.
- [gmic-qt-334] New filter Patterns / Random Rectangles creates a random partition of colored rectangles.
- [stdlib-334] New command
poincare_disk
renders an image of the Poincaré disk, and its associated filter Deformations / Poincaré Disk.
-
[stdlib-334] New command
count_colors
returns the number of distinct colors used in selected images. -
[gmic-qt-334] New filter Patterns / Reaction-Diffusion creates reaction-diffusion patterns.
-
[math-core-334] New function
v(min,max,_include_min,_include_max)
returns a random integer in specified range (similar to functionu()
but returns an integer). -
[math-core-334] New pre-defined variable
eps
returns the machine epsilon, that is the difference between 1.0 and the next value representable by adouble
. -
[math-core-334] Add support for specifying binary litteral, as
0b1010010
. -
[math-core-334] New function
lcm()
computes the least common multiple of specified arguments. -
[math-core-334] Function
gcd()
now accepts multiple arguments.
Version 3.3.3:
- [gmic-qt-333] New filter Rendering / ABN Filigrees renders nice 2D closed curves with lot of controls. Filter done by @grosgood .
- [gmic-qt-333] New filter Rendering / CRT Scanlines simulates the CRT scanline effect.
- [gmic-qt-333] New filter Rendering / Random Signature.
- [gmic-qt-333] New filter Degradations / CRT Phosphors.
- [gmic-qt-333] New filter Deformations / Square to Circle [alt], that warps the image so that every centerted square (or rectangle) becomes a circle (or ellipse), or vice-versa.
- [gmic-qt-333] New filter Black & White / Filaments, that throws thousands of particles from the image borders and deform their paths according to the image geometry.
- [gmic-qt-333] New filter Degradations / Noise [Gradient] adds noise to image gradients (rather than image values) then reconstruct the corresponding image by solving the Poisson equation (with FFT).
- [stdlib-333] New command
canny
, and the filterEdges (Canny)
perform Canny edge detection on selected images.
-
[stdlib-333] New commands
clut2hald
andhald2clut
convert 3D CLUT to 2D HaldCLUT formats. -
[stdlib-333] Command
display
gets a new mode to display a 1px outline around each primitives of a 3D mesh. It also now support setting/getting the 3D pose by the user through the variable$_display_3d_pose
.
- [core-333] Command
rand
is now able to generate random values according to a user-defined probability density function.
-
[math-core-333] New function
warp(A,wA,hA,dA,sA,B,wB,hB,dB,sB,_mode,_interpolation,_boundary_conditions)
returns the warped version of the imageA
(viewed as a vector) by the warping fieldB
. This is the math-evaluator analog to thewarp
command. -
[math-core-333] New function
permute(A,wA,hA,dA,sA,permutation_string)
returns the permuted version of the imageA
(viewed as a vector). This is the math-evaluator analog to thepermute
command. -
[math-core-333] New function
mirror(A,wA,hA,dA,sA,axes_string)
returns the mirrored version of the imageA
(viewed as a vector). This is the math-evaluator analog to themirror
command. -
[math-core-333] New function
cumulate(A,_wA,_hA,_dA,_sA,_axes_string)
returns the cumulated version of the imageA
(viewed as a vector). This is the math-evaluator analog to thecumulate
command. -
[math-core-333] New function
normalize(A,min_value,max_value)
returns the normalized version of the vectorA
. This is the math-evaluator analog to thenormalize
command. -
[math-core-333] New function
noise(A,amplitude,_noise_type)
returns the noisy version of the vectorA
. This is the math-evaluator analog to thenoisy
command. -
[math-core-333] New function
index(A,P,nb_channelsP,_dithering,_map_colors)
returns the indexed version of the image ‘A’ by the colormap ‘P’. This is the math evaluator analog to commandindex
. -
[math-core-333] New function
histogram(A,nb_levels,_min_value,_max_value)
returns the histogram of the vectorA
. This is the math-evaluator analog to thehistogram
command. -
[math-core-333] New function
equalize(A,nb_levels,_min_value,_max_value)
returns the equalized version of the vectorA
. This is the math-evaluator analog to theequalize
command. -
[math-core-333] New function
hypot()
computes the length of the hypothenuse. -
[math-core-333] New function
isconst()
returns1
or0
whether the given argument is a constant (value known at compilation time) or not.
Version 3.3.2:
- [gmic-qt-332] New filter Rendering / Warped Rays render a spiral-like shape on the image. It uses the new command
shape_rays
added to thestdlib
.
-
[stdlib-332] New command
histogram_masked
computes the histogram on masked regions of an image. -
[stdlib-332] Command
dijkstra
is now a custom command and has been recoded from scratch. This command computes the minimal path between two vertices of a graph.
-
[math-core-332] New functions
da_push_heap()
andda_pop_heap()
insert/remove elements in/from a dynamic array viewed as a min-heap structure. Useful to manage priority queues from the math evaluator.
Version 3.3.1:
- [gmic-qt-331] New filter Arrays & Tiles / Loose Photos simulates an effect of loose photos that are spatially arranged to recreate a global picture.
- [gmic-qt-331] New filter Details / Sharpen [Alpha] implements a new multi-scale image sharpening algorithm that produces very few halos. New associated command
sharpen_alpha
is also available for script developers.
- [stdlib-331] Command
font
returns a font identifier that can be used in text drawing commands, to draw text with more various fonts than the default one.
-
[stdlib-331] Command
font2gmz
converts a.otf
or.ttf
font file as agmz
font file that can be used to draw text with custom fonts. -
[stdlib-331] Commands
split_alpha
andmerge_alpha
split an image into several levels of details, that can be recomposed afterwards with alpha-blending.
- [math-core-331] New function
ispercentage(arg)
returns1
or0
whetherarg
ends with a%
or not.
improvements / Modifications:
Version 3.3.6:
-
[math-core-336] Improved management of string literals and constant vectors, avoiding constructing them multiple times when they are used in loops.
-
[math-core-336] Improved management of hexadecimal and binary literals, as well as hexadecimal and binary number parsing from strings (function
s2v()
).
Version 3.3.5:
-
[stdlib-335] Command
frame
has been recoded from scratch and replaces commandsframe_x
,frame_y
,frame_xy
,frame_xyz
. -
[stdlib-335] Command
inpaint_pde
: Allow ‘nb_scales’ to be determined as the minimal image size at lowest scale. -
[stdlib-335] Command
input_obj
(import of Wavefront 3D meshes): Improved parsing speed of primitive materials. -
[math-core-335] Function
isint(x,_xmin,_xmax)
has been extended to test if a numberx
is an integer in specified range[xmin,xmax]
.
Version 3.3.4:
- [math-core-334] Removed pre-defined variable
v
in math evaluator (useu(-1,1)
instead).
Version 3.3.3:
-
[math-core-333] Function
permut()
has been renamed asperm()
. -
[core-333] G’MIC interpreter now discards possible comments passed in the
commands_line
argument of G’MIC API functions. -
[core-333] Community filters are now included by default in the CLI tool
gmic
as well as in thelibgmic
library. -
[stdlib-333] Commands
display
: When displaying 3D objects, pressing keyP
not print the 3D pose matrix onstdout
.
Version 3.3.2:
-
[gmic-qt-332] When updating filters, the filter tree is refreshed before the dialog window saying the update has been done shows up.
-
[gmic-qt-332] Updated plug-in code to make it work with API changes introduced in GIMP development version v.2.99.12.
-
[gmic-qt-332] Windows installer updated to include missing DLLs from latest GIMP release 2.10.36.
-
[packaging] Put back the
CMakeLists.txt
file in the project root folder, to allow compilinggmic
withcmake
.
Version 3.3.1:
-
[core-331] Removed possibility of having stand-alone
{ ... }
blocks in scripts. Now{ ... }
can be only used for constructs that require adone
ending item. -
[core-331] Command
text
can now use a custom font defined as an image in the list, in addition to a image-valued variable name. -
[stdlib-331] Command
img2str
has been recoded from scratch. It returns the content of the selected images, as special G’MIC input strings. -
[stdlib-331] Command
display
: Add forward/backward modes for 3D mesh animation. -
[stdlib-331] Command
text_outline
now accepts a custom font as argument. -
[stdlib-331] Command
input_obj
: Improve import of.obj
mesh with per-vertex defined colors. -
[stdlib-331] Command
xcrop
: Single user-defined crop now applies on all selected images.
Bug fixes:
Version 3.3.6:
-
[math-core-336] Defining a binary litteral was limited to 32 bits on Windows (and 64 bits on Linux) , due to the fact that
long int
on WIndows is 32 bits only. Now works with 64 bits for both systems. -
[core-336] Recoded line drawing functions to better manage cropping of large (out-of-bounds) coordinates.
Version 3.3.5:
-
[stdlib-335] Command ‘parse_cli_bashcompletion’: Fix parsing of choice-valued arguments.
-
[stdlib-335] Command
output_obj
(export of Wavefront 3D meshes): Fix export of materials for segment primitives. -
[core-335] Fix: Conditions involving simple expressions inside double quotes and containing a
$
were not evaluated correctly. -
[math-core-335] Fix: Function ‘isint()’ now works for integers larger than 64bits.
Version 3.3.4:
- [math-core-334] Fix possible side effects in math evaluator, that happened when math compiler was trying to optimize the use of some operator (e.g.
x=3; (x^1)=4
was setting4
to variablex
).
Version 3.3.3:
-
[gmic-qt-333] Fix management of dynamic interfaces (for filters that use it) when the “Preview” box is unchecked.
-
[core-333] Fix wrong parsing of
xN
repetition suffix ininput
command.
Version 3.3.2:
- [math-core-332] Fixed functions to remove elements from a dynamic array. When the array became too large, suppressing elements was not possible.
Version 3.3.1:
- [gmic-qt-331] Fix aspect ratio of preview error when using
gui_error_preview
.