texture resynthesis (resynthesizer as a standalone C program)
Find a file
2016-10-31 09:24:08 -07:00
kyaa.h update kyaa 2016-10-31 06:32:12 -07:00
README.md use proper inclusive ranges for help 2016-09-07 18:54:06 -07:00
resynth.c fix a typo that prevented shuffling/polishing 2016-10-31 09:24:08 -07:00
stb_image.h first public version 2016-08-31 21:53:39 -07:00
stb_image_write.h first public version 2016-08-31 21:53:39 -07:00
stretchy_buffer.h first public version 2016-08-31 21:53:39 -07:00

resynth

resynthesis is the process of taking a source texture and creating similar (oft tiling) textures based on it.

resynth is a C rewrite of the original resynthesizer by Paul Harrison. it does not require GIMP to function; just feed it image paths and it will save copies. however, this program lacks the patching (masking) and texture transfer abilities of the original plugin.

resynth produces tiling images like those seen here.

help

usage:
  -a  --autism
        sensitivity to outliers
        range: [0,256];     default: 32
  -N  --neighbors
        points to use when sampling
        range: [0,1024];    default: 29
  -r  --radius
        square neighborhood, always odd
        range: [0,32];      default: [n/a]
  -R  --circle-radius
        circle neighborhood radius
        range: [1,128];     default: [n/a]
  -M  --tries
        random points added to candidates
        range: [0,65536];   default: 192
  -p  --polish
        extra iterations
        range: [0,9];       default: 0
  -m  --magic
        magic constant, affects iterations
        range: [0,255];     default: 192
  -s  --scale
        output size multiplier; negative values set width and height
        range: [-8192,32];  default: 1
  -S  --seed
        initial RNG value
                            default: 0 [time(0)]
  {files...}
        image files to open, resynthesize, and save as {filename}.resynth.png
        required            default: [none]

apologies for the radius, circle-radius, and polish parameters. they should be properly described or removed.

notes

includes header libraries from nothings (stb) and notwa (kyaa).

compile like

clang -std=gnu11 -lm -Ofast resynth.c -o resynth

extra flags that i use are

-Wall -Wextra -Werror=implicit-function-declaration -Winline -Wshadow
-Wno-unused -Wno-padded -Wno-missing-field-initializers -Wno-misleading-indentation -Wno-disabled-macro-expansion -Wno-language-extension-token -Wno-unknown-warning-option