This is the source code for compiler associated with paper "Approximate Program Smoothing Using Mean-Variance Statistics, with Application to Procedural Shader Bandlimiting" by Yuting Yang, Connelly Barnes, Eurographics 2018.
The goal of this project is to smooth an arbitrary program by approximating the convolution of the program with a Gaussian kernel.
First, install the dependencies of proj/csolver and make sure proj/csolver/main can be built and run. See proj/csolver/README.md for instructions on how to do this.
Second, install Python 3 (preferably Anaconda). Install the following Python packages (with
pip install X or
conda install X):
filelock matplotlib pathos pyinterval
Then try running one of the shaders, e.g.
$ cd proj/apps $ python render_circles.py
Example of tuning a shader:
python tune_shader.py full out_dir shader geometry parallax_mapping
Our test suite provides 7 shaders:
render_bricks render_checkerboard render_circles render_color_circles render_fire render_sin_quadratic render_zigzag
And 3 geometries:
plane sphere hyperboloid1
With 3 parallax mappings:
none ripples spheres
Please download our example tuning outputs from here. The rendering outputs are saved to html files in each subdirectory.
To re-render outputs from tuning outputs, run:
python tune_shader.py render out_dir shader geometry parallax_mapping
If you find this useful, please cite our paper:
Yuting Yang, Connelly Barnes. Approximate Program Smoothing Using Mean-Variance Statistics, with Application to Procedural Shader Bandlimiting. Eurographics 2018.
This project is licensed under the MIT license:
Copyright (c) 2018 University of Virginia, Yuting Yang, Connelly Barnes, and other contributors
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.