INF 584 - Implementation of Procedural Phaser Noise for Image Synthesis

C++ demonstration

Lauch instructions

To build the C++ demonstration, please run the following:

cmake --build build --config Release && ./BaseGL

Controls

Key Function
Move camera left
Move camera up
Move camera right
Move camera down
[ Scale down texture
] Scale up texture
- Decrease wavelength of texture
+ Increase wavelength of texture
C Show kernels for phasor noise calculation
V Show Voronoi region for each kernel
F1 Toggle wireframe mode
F2 Toggle texture mode : only the phaser noise texture displayed

Webgl demonstration

Launch instructions

To access the WebGL demonstration, please open antoine.stark.fr/INF584/ in your web browser (the site was mainly tested on Firefox). Alternativally, you can run your own npm server to access the index.html provided in the .zip file The .glsl file on the server is located at antoine.stark.fr/INF584/shaders/fragment.glsl

Demos

On the bottom of the window, there are buttons to choose a recreation of the different figures of the paper, as well as a few other demos. Please note that the numbers on the sliders do not translate directly to the uniform value in the glsl execution.

fig1 : phaser processing gradient

This is a demo of the fig 1 of the paper, consisting of multiple post processing functions applied to the phasor noise, as well as a change in wavelength between the left side and the right side. The user can change the bandwith and the global wavelength/bandwith ratio.

fig3 : phaser processing gradient

This is a demo of the fig 1 of the paper, showing a phasor sine wave, its underlying phasor field and associated phase field. The user can change the bandwith and the global wavelength/bandwith ratio.

fig14 : PWM using a fox image

This phaser noise is modulated by the greyscale value of the image, and the direction of the waves is controlled by the gradient of the image. The user can change the bandwith and the wavelength/bandwith ratio, as well as link files in a http url link.

(Due to CORS request policy, some sites may not work. Wikipedias urls do.)

fig15 : differnt modulation uses

This example re-creates the multiple kinds of texture-based modulation presented in the fig15 of the paper.

As in the paper, each collumn creates for each image:

The user can change the bandwith, the base angle and the base wavelength/bandwith ratio, as well as provide a new Image URL.

image mixing

this is a simple demo where one can adjust PWM sampling from one image to another using the mix slider.

phaser noise implementation

This demo implements a basic phaser noise. The user can control the bandwidth and the wavelength ratio, as well as the angle spread described in the paper when polling for the direction: the heuristic value of 2.4 allows for a good random spread with few of the discontinuities one may see when the maximum angle reaches pi.

Pressing the "toggle u" button allows the user to see (in the hue color wheel) the direction of the impulsion for every point.

Aditionnaly, all these demos have a "show kernel" and a "show voronoi" button to examine the influence of each kernel on a specific point.