Renaissance : a functional shading language
We have developed a next-generation, functional shading language, called Renaissance, designed to address the problems of composability and scalability in real-time shader development. Based on a typed version of the lambda calculus, it uses computational frequency inference to automatically place computation at the optimally efficient stage of the graphics pipeline: the CPU, the vertex processor, or the fragment processor. Renaissance provides a framework for building shaders with constant switches that can conditionally compile in different shading algorithms, depending on the value of the flags. This puts shaders back on the same level as the fixed function pipeline, in terms of orthogonality. This thesis also provides a human factors analysis of the Renaissance language and system. We utilize the cognitive dimensions heuristic framework to provide a background for the human factors analysis. We have designed a usability study to qualitatively measure some usability aspects of the language and its runtime.