Skip to content

Semi-procedural textures using PPTBF (Point Process Texture Basis Functions). Work in progress: version v1.0.0

License

Notifications You must be signed in to change notification settings

PascalGuehl/semiproctex

 
 

Repository files navigation

Semi-Procedural Textures Using Point Process Texture Basis Functions

IMPORTANT : Please, wait that we finish our first tag/release version before downloading code and binaries (cleaning some files, images rights, etc...). This will be available at least for the EGSR 2020 conference 29 june - 3 july. We will create a dedicated release/tab v1.0.0 version.

Table of contents

  1. Paper
  2. Supplemental materials
  3. Code and binaries
  4. Data
  5. Citation

semiproctex semiproctex

This is the page of our EGSR 2020 CGF track paper:

P. Guehl, R. Allègre, J.-M. Dischler, B. Benes, E. Galin. Semi-Procedural Textures Using Point Process Texture Basis Functions. To appear in Computer Graphics Forum (EGSR 2020 special issue), 39(4), 2020.

Paper

Available soon.

Note

This work can be seen as a small step in the spirit of the "Inverse Shade Trees" approach, being able to retrieve the appearance from an image as a graph of nodes and edit it interactively.

This work also tries to mix Research, Industry and Art to enhance the creativity and productivity of digital artists from the video game and film industries. Node-based texturing tools from industry (such as Substance Designer) could benefit from this kind of "art-directable" textures and materials to create complex appearances.

Acknowledgments

This work is supported by the HDWorlds project funded by the French National Research Agency (project ID: ANR-16-CE33-0001).

Supplemental materials

[1] Texture Synthesis Comparisons

  • Supplemental #1 : Available soon. This supplemental material provides semi-procedural texture synthesis results using our method and comparisons to state-of-the-art texture synthesis methods.

e.g.: Texture synthesis comparisons

Database of 138 textures (cells, cracks, dots, lines, scratches, waves, networks, tilings, etc...) processed by 11 different texture synthesis methods. In these experiments, input textures are synthesized 2 times larger. Note: this is not a limit of our method, but due to some deep learning methods this already required between 1 and 2 months of computation even with GPUs...

semiproctex

semiproctex

[2] PPTBF Parameters Estimation, Noise Comparisons and Material Synthesis

  • Supplemental #2 : Available soon. This supplemental material provides additional results on: PPTBF parameters estimation, comparisons to noise by example (structure only), material synthesis results, and synthesis results with structure transitions.

e.g.: PPTBF Parameter estimation (i.e. by-example procedural structures)

Database of 147 segmented images (cells, cracks, dots, lines, scratches, waves, networks, tilings, etc...), from automatic parameter estimations to refinement and fine-tuning :

semiproctex

e.g.: Material synthesis (with transitions)

Database of 3D scanned materials and procedural PBR materials.

semiproctex

[3] Database of input exemplars

  • Supplemental #3 : Available soon. This supplemental material contains the database of binary structures used for the paper in full quality. Note that for reasons of terms of use, we do not provide all corresponding texture exemplars. The folder Structures contains manually segmented binary structures. The folder Structures_with_PPTBF contains manually segmented binary structures with estimated PPTBF parameters, that can be used for procedural structure synthesis.

e.g.: Database of Textures

Database of approximately 150 textures, 10 scanned materials and 10 procedural PBR materials. More to come...

semiproctex

Code and Binaries

Target Machines

Operating systems:

  • Windows 10
  • Linux (Ubuntu soon available...)

Tested graphics cards:

  • NVidia GeForce 1060 GTX (6Go)
  • NVidia RTX 2070 (8 Go)

Technologies:

  • OpenGL (4.6, at least >= 4.5, compute shaders), glad, glfw, glm, ImGui, CMake, C++, [Python to come]

[1] PPTBF: procedural stochastic structures

The PPTBF_Structures_Src directory contains code required to produce procedural binary structures from files of PPTBF parameters, and a real-time viewer to be able to design and edit PPTBF parameters interactively (works under Windows, Linux port soon). More tools to come (e.g.: PPTBF database generator, spanning the space of PPTBF parameters).

Note: GPU shader code is not optimized, due to back and forth between CPU and GPU versions during development. Cleaning and documentation to come...

Check this file to get a description of the PPTBF file format.

Tools

Windows binaries are available here. We provide tools for experimenting with the PPTBF model:

  • a real-time PPTBF viewer/designer [GPU-accelerated]
  • a PPTBF synthesizer from a PPTBF parameter file [GPU-accelerated] (for procedural PPTBF and binary structures synthesis)
  • a PPTBF database generator [GPU-accelerated] (spanning space of parameters) [soon available...]

e.g.: Real-time PPTBF viewer/designer

A single PPTBF incorporates multiple binary structures with different topologies, that are only revealed by different thresholds, especially when blending window functions.

semiproctex

[2] Semi-Procedural Texture Synthesis

The Semiproc_synthesis_Src directory contains code required to synthesize textures from files of our semi-procedural texture synthesis parameters and PPTBF parameters (works under Windows, Linux port soon). Work in progress...

Check this file to get a description of the semi-procedural texture file format. Work in progress...

Tools

  • The Semiproc_synthesis_Bin (file will be available soon. Cleaning some data and versioning...) archive contains Windows binaries for our semi-procedural texture synthesis method. The program is able to reproduce our texture synthesis results (i.e. color images) of Supplemental material #1. We provide the binaries of our GPU implementation. Note that a software version will be made available soon (for reasons of intellectual property, the GPU code cannot be distributed). How to: just drag'n'drop input exemplar images onto software 2D viewport to automaticcaly synthesize texture (files are provided with the binaries).

  • Here is a beta version of our semi-procedural texture software synthesizer Semiproctex_synthesis_CPU_Bin (file will be available soon. Cleaning some data and versioning...) (not GPU-accelerated). More info to come about available features and parameters description...

NOTE: The software/CPU version uses the same algorithms than the GPU version. But the GPU one is more than 10 times faster (even far more depending on options). So the software/CPU version is only useful to look at the code, not launching synthesis. But you can try and test.

e.g.: Real-time/interactive semi-procedural texture synthesizer and designer on GPU

Trade-off between real-time/interactive texture synthesis design to longer high-quality results depending on user options (e.g.: "smart" initialization to initialize our optimization-based algorithm to keep the fine grain of input images).

Yes, you can edit structures on-the-fly and navigate (translate, rotate, even zoom [zoom is a prototype version]), depending on selected options! :) Some videos will be available soon.

semiproctex

Data

  • The PPTBF parameters estimated from our database of manually segmented structures are available following this link. Note that this is an updated version that improves the parameter values provided with the Supplemental materials.

  • You will soon find a link to our database of PPTBF parameters. Our database of PPTBF is distributed in 93 files/banks according to combinations of values of point process "tiling types", window function "profil types" and feature function "mixture model" types (stored as ".txt" files), approximately 100 Mo. Then, intermediate PPTBF files are generated by spanning the space of continous PPTBF parameters [approximately 130 Go for 1.2 million images of PPTBF in .png format of dimension 400x400 pixels each].

  • Our database of semi-procedural texture synthesis parameter files used for the supplementals will be available here soon...

Important

One or more textures bundled with this project have been created with images from Textures.com. These images may not be redistributed by default. Please visit www.textures.com for more information.

Our database of binary structure exemplars have been manually segmented using filters from Photoshop (usually basic filters: curves, threshold, bilateral filter, etc...), then finished manually. Before we use the same process for each textures, our first textures have been processed non-uniformly.

Method: most of the times, we downloaded textures from textures.com at 1024x1024 resolution, then crop a 512x512 part of it. The goal of our results and comparisons was to synthesize 1024x1024 images that look like the original exemplars (before cropping). But all original images have been segmented entirely, not only the crop. So, we are going to add a file indicating the web address of textures with the crop position so that people can download input exemplar and reproduce our results. But this is a time consuming task, so it will be done step by step !

Citation

If you use this code for your research, please cite our paper.

@article{Guehl:EGSR2020,
    author = "P. Guehl and R. All\`egre and J.-M. Dischler and B. Benes and E. Galin",
    title = "Semi-Procedural Textures Using Point Process Texture Basis Functions",
    journal = "Computer Graphics Forum (EGSR 2020 special issue)",
    volume = "39",
    number = "4",
    year = "2020",
    note = "To appear"
}

About

Semi-procedural textures using PPTBF (Point Process Texture Basis Functions). Work in progress: version v1.0.0

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 85.6%
  • GLSL 10.0%
  • CMake 3.4%
  • Other 1.0%