To build the C++ demonstration, please run the following:
cmake --build build --config Release && ./BaseGL
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 |
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
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.
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.
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.
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.)
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.
this is a simple demo where one can adjust PWM sampling from one image to another using the mix slider.
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.