GrowTex



GrowTex user interface


mini HowTo:


Action Buttons:
  • Grow: Synthesis algorithm very close to the original Efros and Leung. (extremely slow)
  • TurboGrow: speeded-up algorithm (2-passes non exaustive search). First pass using only the center of the search block.
  • MR Grow: multi resolution algorithm (not yet impemented).
  • Save: saves the synthetized image with the default name. (no, it can't be changed with the current version)
  • Quit: self explainatory.


  • Radio Buttons:
  • Size: determines the size of the synthetized texture. (values is the height and width multiplier)
  • Tile: if set to yes attempts to generate a self tiling texture.
  • SLI: two pass synthesis to improve boundary conditions (edge: perform two pass only in critical areas, full: not implemented)

  • Linear/Gaussian: selects the shape of the weight function


  • sliders:
  • Radius: maximum lookup radius.
  • Linear: wieght value at dist=radius.
  • Gaussian: radius/std_dev at dist=radius.
  • Scanlines: number of matches selected during the first search pass. (n=width*scanlines, only affects turbogrow)
  • Sradius: lookup radius for first search pass. (only affects turbogrow)
  • Edge: enlarge the critical zone by edge pixels. (when tile=on)
  • Lboost: increase locality of second sysnthetis pass by lboost pixels (when SLI=edge)



  • Some textures synthetized with GrowTex:

    Original

    Synthetized

    Details


    Uncompressed SGI

    Uncompressed SGI
    GrowTex Linux
    version 000717-2340
    Gaussian TurboGrow
    radius=8, Gparam=2.00
    size=4x, tile=on, SLI=edges
    scanlines=1, sradius=2
    edge=0, lboost=3
    Synthesis time: 226s
    example of tiling

    Uncompressed SGI

    Uncompressed SGI
    GrowTex Linux
    version 000717-2340
    Linear TurboGrow
    radius=13, Lparam=0.40
    size=2x, tile=on, SLI=edges
    scanlines=1, sradius=2
    edge=14, lboost=5
    Synthesis time: 78s

    Uncompressed SGI

    Uncompressed SGI
    GrowTex Linux
    version 000717-2340
    Gaussian TurboGrow
    radius=8, Gparam=2.00
    size=2x, tile=on, SLI=edges
    scanlines=1, sradius=2
    edge=0, lboost=3
    Synthesis time: 900s

    Uncompressed SGI

    Uncompressed SGI
    GrowTex Linux
    version 000717-2340
    Linear TurboGrow
    radius=8, Lparam=0.50
    size=4x, tile=off, SLI=N/A
    scanlines=1, sradius=2
    edge=N/A, lboost=N/A
    Synthesis time: 73s


    textures synthetized with old versions of growtex can be found here
    some failures of the algorithm can be found here.


    The execution times are from a 933Mhz Pentium III running Linux 2.2.13.


    Speed on other architectures:

    Machine

    Config

    Compiler

    Time [s]

    Noname PC
    Abit BF6 (intel BX)
    Linux 2.2.13
    intel P-III (Coppermine)
    933MHz
    L1=16+16Kb L2=256Kb
    128Mb RAM
    GNU gcc 2.95.3
    -O2 -march=pentiumpro -funroll-loops -fmove-all-movables -fomit-frame-pointer -fstrict-aliasing
    33
    Noname PC
    Abit BF6 (intel BX)
    NT40 sp6a
    intel P-III (Coppermine)
    933MHz
    L1=16+16Kb L2=256Kb
    128Mb RAM
    MS Visual C++ v6.0 sp3
    Instruction set: Pentium Pro
    Optimizations: Maximize Speed
    57
    SGI Octane
    IP30
    Irix 6.5
    MIPS R10000
    250MHz
    L1=32+32Kb L2=???
    1Gb RAM
    SGI cc 7.2.1
    -Ofast=IP30 -Xcpluscomm
    215
    SGI O2
    IP32
    Irix 6.5
    MIPS R5000
    195MHz
    L1=32+32Kb L2=???
    256Mb RAM
    SGI cc 7.2.1
    -Ofast=IP30 -Xcpluscomm
    273
    Noname PC
    Shuttle HOT-569 (intel TX)
    Win 98SE
    intel Pentium MMX (P55C) 200MHz
    L1=16+16Kb L2=512Kb
    64Mb RAM
    MS Visual C++ v6.0 sp3
    Instruction set: Pentium
    Optimizations: Maximize Speed
    426
    Digital Multia
    VX40
    Linux 2.4.0-test1
    DEC Alpha 21066 (LCA4)
    166MHz
    L1=8+8Kb L2=256Kb
    64Mb RAM
    Compaq ccc v6.2.9.002
    -O4 -fast
    2112
    Noname PC
    Abit BF6 (intel BX)
    Linux 2.2.13
    intel P-III (Coppermine) 700MHz
    L1=16+16Kb L2=256Kb
    128Mb RAM
    GNU gcc 2.95.3
    -O2 -march=pentiumpro -funroll-loops -fmove-all-movables -fomit-frame-pointer -fstrict-aliasing
    N/A
    Noname PC
    Abit BX6v2 (intel BX)
    Linux 2.2.14
    intel P-II (Deschutes) 400MHz
    L1=16+16Kb L2=512Kb
    64Mb RAM
    GNU gcc 2.95.3
    -O2 -march=pentiumpro -funroll-loops -fmove-all-movables -fomit-frame-pointer -fstrict-aliasing
    N/A


    Speed comparisons have been made using GrowTex version 000710-0950 with the following parameters:
    Linear TurboGrow radius=13 param= 0.40
    scanlines=1 (topblocks=38) sradius=2
    on this picture.