 surface drives another (usually requiring value scaling and offsets) are the glue of procedural shading.
Not only the shaders are structurally hierarchical; these parameter mappings usually are as well. There are often a mix of high-level parameters that may allow many qualities to be easily modified by changing one number, and low-level parameters that allow minute adjustments to specific (sometimes obscure) qualities. Setting reasonable ranges for parameters can be extremely difficult, particularly as they begin to interact. A collection of parameters, along with their ranges of values, forms a space of possible design “solutions”. These solution spaces are usually “biased” and sculpted to primarily contain desirable designs.
Surfaces can ultimately be made reactive to their environments, and potentially, even seemingly nondeterministic. Improvisation of behavior becomes feasible as choices, transitions and elements are chosen based on arbitrarily specifiable criteria (again: usually based on proximity, synchronization, direction, etc.) Designing such behaviors can quickly become an exercise in knowledge representation: implementing design principles such as what color to use in what context, or in what regions of a surface should bumps/cracks/dirt appear to form. Such “intelligent” local behavior can mimic the decisions a designer might choose if they were painstaking painting the surface by hand according to context and knowledge.
What knowledge can and can’t be encoded parametrically and algorithmically? Formal design and physical qualities (e.g. color theory, selective surface aging) are much more feasible to encode than associative traits requiring recognition and “common sense”. Regardless, such generative design opportunities become increasingly needed as the potential complexity of virtual environments capable of being represented grows. Adopting strategies for procedurally modulating the performance of surfaces (interior and exterior) is required when manually texturing and surfacing every point in a generated world loses viability. Homogenous qualities no longer suffice in complex, responsive environments.
Once parametric solution spaces have been developed, different approaches can be used for exploring and searching them for desirable solutions. Most commonly, an interface is provided where individual parameters can be manually adjusted. This allows for an exhaustive (and potentially exhausting) means of traversing a high-dimensional space of solutions, analogous to taking slow and careful steps down one avenue after another. An alternative approach is the use of interactive evolutionary design techniques. In such approaches, a relatively large number of (initially random) solutions are evaluated, with more attention given to re-combinations and variations of the “best” solutions found [10]. Visualization and navigation via such genetic approaches is more like sending a crowd to search a city: the trade-off is the requirement to constantly evaluate and compare each searcher’s findings, as well as the control lost in granting each (unintelligent) searching agent autonomy.
The organization of techniques described here has been largely independent of specific software packages, hardware, etc. Most could even be deployed in traditional media, if labor were not a significant issue. The next section discusses specific technologies that provide varying degrees of accessibility and relevant implementations.
One slowly emerging advance is the ability to develop procedural shading interactively without needing to software render to evaluate results. Real-time programmable graphics processing units (GPUs) are increasingly offering massive parallel processing capabilities allowing the techniques above to be generated and modified at interactive rates [7][16]. Driven by rapidly advancing video game technology, support for authoring real-time procedural shaders is being integrated into most 3D animation software, although fairly high-end graphics card requirements remain. Architecture, performance, and procedural shading are slowly coming together in the technology emerging from collisions between VJ performance software, 3D real-time graphics, and responsive environment installation. Software like Jitter and Processing allows synchronized, reactive mappings between motion, networked data, projected video, and sound [3][8]. These technologies are enabling real changes in visible and aural qualities of actual physical surfaces and volumes to adapt in response to dynamic sensed environments.
The potentially most significant frontier however is physical fabrication of the surface and volume qualities resulting from the above techniques. While expensive rapid prototyping approaches have long existed in the manufacturing world in many forms, the shift from computer simulation to physical embodiment is quickly becoming more accessible. Routine use of very high-end processes like laser sintering and stereolithography are generally cost prohibitive for most form designers with machines costing hundreds of thousands of dollars, and material costs being problematic as well. “Desktop 3D printing” however has become affordable in recent years, with costs down to tens of thousands of dollars and using materials like starch or plaster combined with established inkjet-based technology. Most relevant to the procedures described here, full color printing is now rapidly emerging in low-end RP machines [19].
Indications are that the technology will increasingly move toward point-by-point material customization for each unit of volume. As color quality increases, hopefully many of the other local qualities described above will become available as potential parameters: variable material density, opacity, reflectance, etc. As one reads of new experiments with inkjet technologies, e.g. printing conductive or biological surfaces, one has to wonder whether procedurally mapping varying physical properties such as electrical resistance, light and heat sensitivity, etc. will come to be as easy as computer controlled pigment mixing currently is, and what such capabilities will enable. These seem extremely probable when compared to the full visionary push-button custom manufacturing future “Diamond Age” being sought by slowly advancing, cutting-edge technologies such as NanoFactories and programmable matter [12][14][17].
In the meantime, current technology capable of full color printing can make use of procedural shading techniques in a few ways. The surface qualities generated by procedural shading can be converted to texture maps. This can either simply be local color, or the effects of virtual environmental lighting (e.g. incident light, shadows, reflections, highlights, etc.) can be included in the generated texture. This texture can then be used when sending the geometry to a 3D color printer. Procedurally produced surface displacement can also be printed, by converting the rendered geometry into “actual” polygonal geometry (again, with corresponding color and lighting qualities if desired.) Conversion of procedural displacement to polygonal geometry also allows other existing output technology pipelines to be used (e.g. laser cutting, etc.) Finally, normal mapping, in which a 2D texture map is produced encoding displacements as the “height” difference between complex and simple versions of geometry, may also be of use with other CNC methods. 2D painting and printing techniques might then be useful for outputting color qualities of such a constructed height field.
This effort is one example of a common challenge in a highly interdisciplinary arts and design academic research environment: generating strategies for making emergent technologies accessible in academic non-programmer contexts. A frequent lifecycle in our field is as follows: initially software implementing new capabilities becomes available, but requires a programming background to make use of it. Recent examples include new real-time shading algorithms or a computer vision library. In a second stage, a programmer creates an interface or tool that, although challenging and possibly requiring technical understanding of its process and implementation, no longer requires programming to use. In a final stage of development, new technology sometimes evolves into an “off-the-shelf” form, adopting a proper interface, with tutorial books available in every bookstore. It is this middle stage in which we most commonly find ourselves.
A difficult question for educators and students alike is then how to balance time and resources between these three spaces to attain desired goals. One can choose to focus attention (and substantial time) learning useful programming and scripting technologies such as shader languages, Python, Processing, or MEL. On the other hand, a majority of designers choose instead to use primarily off-the-shelf software. They concentrate on acquiring repertoires of clever tricks using the latest plug-ins and data filters, pushing the capabilities of the endless stream of new commercial and open-source products. A middle ground between these extremes would be the usage of interfaces for constructing algorithmic processes by assembling node graphs in functional equivalence to writing lines of code, using software like Max/Jitter, Virtools, Slim, and even potentially Maya’s hypershade [3][4][9][15].
The most significant factor guiding this decision may turn out to be how potential work environments value and/or necessitate collaboration between specialists, relative to generalists. An additional deciding factor for learning and using procedural shading techniques specifically has until just recently been the financial expense of the necessary software. Increasing numbers of open source renderers, node-based interface alternatives, and even downloadable educational versions of expensive commercial products are now making this less of an issue however. Given a target audience of students from a number of disciplines, current educational curricula and texts have focused on technique and technology, with analysis of underlying concepts remaining somewhat neglected. Recent collaborations with architecture have provided the impetus to re-consider useful procedural shading ontologies specifically. When combined with other disciplinary investigations, generative representations in general have opened doors to broader theoretical considerations.
In our interdisciplinary research center, interactions between faculty and students from dance, theater, critical theory, art, computer science, and architecture have been generating a set of parallel concerns that seem to appear and disappear with specific projects and collaborations. They align differently between and within individual disciplines, and especially focus on interactions with technology. In particular, such topics include recurring (re)interpretations of performance, complexity, emergence, and perception. Each carries with it a sizeable body of knowledge that is usually approached from a disciplinary perspective, and often can only be briefly considered, as less theoretical concerns are attended to, given the practical demands and constraints of technology and time [20]. Performance, for example, recently reappeared in an architectural context: asking what does a given form do, how does it do it, and how well. An understanding