Spark : modular, composable shaders for graphics hardware
Abstract/Contents
- Abstract
- Real-time computer graphics have become a ubiquitous part of modern life. Rich user interfaces and interactive games appear on screens ranging from mobile phones to stereo-3D TVs. Programmable graphics \emph{pipelines} have been central to delivering these compelling experiences. Shaders - programs that describe the shape, movement, and appearance of rendered objects - run in the stages of these pipelines, and are used to define the "look and feel" of a production. The demand for rich, immersive experiences motivates the use of increasingly complex shaders. In creating these complex real-time shaders, programmers should ideally be able to decompose code into independent, localized modules of their choosing. Current real-time shading languages, however, enforce a fixed decomposition into per-pipeline-stage procedures. Program concerns at other scales - including those that cross-cut multiple pipeline stages - cannot be expressed as reusable modules. We present a shading language, Spark, that improves support for separation of concerns into modules. A Spark shader class can encapsulate a program feature that maps to more than one pipeline stage, and can be extended and composed using object-oriented inheritance. We first discuss the design of this language: its origins, goals, and key design choices. We then describe our implementation of a compiler, standard library, and runtime system for Spark, targeting current programmable graphics hardware. Finally, we evaluate this implementation and demonstrate that it achieves our modularity goals without compromising performance: in our tests, shaders written in Spark achieve performance within 2\% of Microsoft's High Level Shading Language (HLSL).
Description
Type of resource | text |
---|---|
Form | electronic; electronic resource; remote |
Extent | 1 online resource. |
Publication date | 2012 |
Issuance | monographic |
Language | English |
Creators/Contributors
Associated with | Foley, Timothy John | |
---|---|---|
Associated with | Stanford University, Computer Science Department. | |
Primary advisor | Hanrahan, P. M. (Patrick Matthew) | |
Thesis advisor | Hanrahan, P. M. (Patrick Matthew) | |
Thesis advisor | Aiken, Alexander | |
Thesis advisor | Akeley, Kurt | |
Advisor | Aiken, Alexander | |
Advisor | Akeley, Kurt |
Subjects
Genre | Theses |
---|
Bibliographic information
Statement of responsibility | Timothy John Foley. |
---|---|
Note | Submitted to the Department of Computer Science. |
Thesis | Ph.D. Stanford University 2012 |
Location | electronic resource |
Access conditions
- Copyright
- © 2012 by Timothy John Foley
- License
- This work is licensed under a Creative Commons Attribution Non Commercial 3.0 Unported license (CC BY-NC).
Also listed in
Loading usage metrics...