Assignment 02 - GLSL Fragment Shader Karate
01 Feb 2017We’ll be using glslViewer as the platform for displaying our fragment shaders in this exercise. Some of the reasons for use include standard uniform variables such as for checking the passage of time since the shader started or the position of the mouse cursor.
This package includes a folder with the executable and code that can run on the DPA Linux machines. (Thanks to Zach for pointing out both the issue and a fix for use of u_time). You are welcome to re-compile (note that this needs to be in the same folder (next-to) the common folder that includes glfw from your last assignment, but you shouldn’t have to do so, and you shouldn’t have to compile anything necessarily. The program should allow you to live-edit your shaders with a Sublime plug-in or by writing the file back in Vi, or similar. (If you’d like to use this on a Mac, directly download from the GitHub page and follow the directions to build – it’s pretty quick and simple, thankfully).
Ok, for the assignment – the purpose is to get a feel for shaping functions, patterns, noise, etc. – all tools in generative/procedural art as well as in generating patterns for shaders in general, whether programmatic or in a node-based shader network. Choose ideas that you will enjoy. Seek gaining experience in the shift in thinking for technically developing drawing within a shader that is run independently on separate cores. Have fun and experiment with creating interesting and appealing visuals. The assignment will be evaluated on functionality, creativity, and look – it is not crucial to match exactly your choices but rather to learn and experiment with visual development within GLSL. These skills will help build your procedural toolset for any generative art and shader development.
Come prepared to present your shaders for class critique on Wednesday, February 8. Upload your four shader files in a .tgz file named dpa8090lastname.tgz to Canvas for the Assignment 02 entry.
Develop GLSL fragment shaders, one each from the following groups, named as given:
- Variations and Gradients with Shaping Functions
- Create a gradient resembling a sunset in a William-Turner painting (wt.frag).
- Transition from sunrise to sunset (day.frag).
- Create a rainbow (rainbow.frag).
- Playing with Color
- Reproduce the bottom-most William Home Lizars 1834 spectra hue diagram (lizars.frag).
- Generate and display a color wheel as a circular visualization (wheel.frag).
- Reproduce one of Alber’s interaction of color plates (albers.frag).
- Shapes and Patterns
- Emulate a Piet-Mondrian grid-based painting (mondrian.frag).
- Create three circle or distance-field compositions (cirdist.frag).
- Animate snoflakes or gears interacting (snowgear.frag).
- Create a “logo” using polar coordinates and distance field (logo.frag).
- Generate patterns similar to Tartan patterns (tartan.frag).
- Cells and Noise
- Generate a cell pattern similar to Ryoji Ikeda’s work or one of the exercises posted right below on The Book of Shaders (ikeda.frag).
- Make a composition of rectangles, colors, and noise to resemble a Mark Rothko painting, other than one of his all-black canvasesi (rothko.frag).
- Use a noise function to generate a pattern similar to granite or marble (rock.frag).
- Make a generative Jackson-Pollock-like composition (jp.frag).
- Make a shader that projects the illusion of flow like a lava lamp, ink drops, or similar fluid (flow.frag).
- Construct an interesting pattern that resembles a look or material using cellular noise or the Voronoi algorithm (cell.frag).
- Construct an interesting pattern that resembles a look or material using either fBM or turbulence (fbmturb.frag).
