{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,6,19]],"date-time":"2025-06-19T04:29:02Z","timestamp":1750307342281,"version":"3.41.0"},"reference-count":26,"publisher":"Association for Computing Machinery (ACM)","issue":"4","license":[{"start":{"date-parts":[[2011,7,1]],"date-time":"2011-07-01T00:00:00Z","timestamp":1309478400000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["ACM Trans. Graph."],"published-print":{"date-parts":[[2011,7]]},"abstract":"<jats:p>\n            In creating complex real-time shaders, programmers should 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\n            <jats:italic>cross-cut<\/jats:italic>\n            multiple pipeline stages -- cannot be expressed as reusable modules.\n          <\/jats:p>\n          <jats:p>\n            We present a shading language, Spark, and its implementation for modern graphics hardware that improves support for separation of concerns into modules. A Spark\n            <jats:italic>shader class<\/jats:italic>\n            can encapsulate code that maps to more than one pipeline stage, and can be extended and composed using object-oriented inheritance. In our tests, shaders written in Spark achieve performance within 2% of HLSL.\n          <\/jats:p>","DOI":"10.1145\/2010324.1965002","type":"journal-article","created":{"date-parts":[[2011,7,26]],"date-time":"2011-07-26T14:17:46Z","timestamp":1311689866000},"page":"1-12","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":18,"title":["Spark"],"prefix":"10.1145","volume":"30","author":[{"given":"Theresa","family":"Foley","sequence":"first","affiliation":[{"name":"Stanford University"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Pat","family":"Hanrahan","sequence":"additional","affiliation":[{"name":"Stanford University"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2011,7,25]]},"reference":[{"key":"e_1_2_2_1_1","unstructured":"Adobe 2011. Pixel Bender 3D. http:\/\/labs.adobe.com\/technologies\/pixelbender3d\/."},{"key":"e_1_2_2_2_1","volume-title":"Proceedings of Graphics Hardware","author":"Austin C.","year":"2005","unstructured":"Austin, C., and Reiners, D. 2005. Renaissance: A functional shading language. In Proceedings of Graphics Hardware 2005, ACM, New York, NY, USA, 1--8."},{"key":"e_1_2_2_3_1","doi-asserted-by":"publisher","DOI":"10.1145\/1141911.1141947"},{"key":"e_1_2_2_4_1","doi-asserted-by":"publisher","DOI":"10.1145\/362384.362685"},{"key":"e_1_2_2_5_1","doi-asserted-by":"publisher","DOI":"10.1145\/800031.808602"},{"key":"e_1_2_2_6_1","doi-asserted-by":"publisher","DOI":"10.1145\/97879.97911"},{"key":"e_1_2_2_7_1","unstructured":"Kessinich J. Baldwin D. and Rost R. 2003. The OpenGL\u00ae shading language version 1.05. http:\/\/www.opengl.org February."},{"key":"e_1_2_2_8_1","volume-title":"Proceedings of ECOOP","author":"Kiczales G.","year":"1997","unstructured":"Kiczales, G., Lamping, J., Mendhekar, A., Maeda, C., Lopes, C. V., Loingtier, J.-M., and Irwin, J. 1997. Aspect-oriented programming. In Proceedings of ECOOP 1997, Springer-Verlag."},{"key":"e_1_2_2_9_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-10331-5_95"},{"key":"e_1_2_2_10_1","doi-asserted-by":"publisher","DOI":"10.1145\/566654.566641"},{"key":"e_1_2_2_11_1","doi-asserted-by":"publisher","DOI":"10.5555\/977395.977673"},{"key":"e_1_2_2_12_1","volume-title":"Proceedings of SIGRAD","author":"Lejdfors C.","year":"2004","unstructured":"Lejdfors, C., and Ohlsson, L. 2004. PyFX -- an active effect framework. In Proceedings of SIGRAD 2004, Link\u00f6ping University Electronic Press, G\u00e4vle, Sweden, 17--24."},{"key":"e_1_2_2_13_1","doi-asserted-by":"publisher","DOI":"10.1145\/1618452.1618497"},{"key":"e_1_2_2_14_1","doi-asserted-by":"publisher","DOI":"10.1145\/882262.882362"},{"key":"e_1_2_2_15_1","doi-asserted-by":"publisher","DOI":"10.5555\/569046.569055"},{"key":"e_1_2_2_16_1","volume-title":"SMASH: A next-generation API for programmable graphics accelerators. Tech. Rep. CS-2000-14","author":"McCool M. D.","year":"2000","unstructured":"McCool, M. D. 2000. SMASH: A next-generation API for programmable graphics accelerators. Tech. Rep. CS-2000-14, University of Waterloo, August."},{"key":"e_1_2_2_17_1","unstructured":"Microsoft 2002. Shader model 1 (DirectX HLSL). http:\/\/msdn.microsoft.com."},{"key":"e_1_2_2_18_1","unstructured":"Microsoft 2010. Direct3D 11 reference. http:\/\/msdn.microsoft.com."},{"key":"e_1_2_2_19_1","unstructured":"Microsoft 2010. Effect format (Direct3D 11). http:\/\/msdn.microsoft.com."},{"key":"e_1_2_2_20_1","unstructured":"NVIDIA 2010. Introduction to CgFX. http:\/\/developer.nvidia.com."},{"key":"e_1_2_2_21_1","volume-title":"Tech. Rep. IC\/2004\/64, EPFL Lausanne, Switzerland.","author":"Odersky M.","year":"2004","unstructured":"Odersky, M., Altherr, P., Cremet, V., Emir, B., Maneth, S., Micheloud, S., Mihaylov, N., Schinz, M., Stenman, E., and Zenger, M. 2004. An overview of the Scala programming language. Tech. Rep. IC\/2004\/64, EPFL Lausanne, Switzerland."},{"key":"e_1_2_2_22_1","doi-asserted-by":"publisher","DOI":"10.1145\/325334.325247"},{"key":"e_1_2_2_24_1","doi-asserted-by":"publisher","DOI":"10.1145\/383259.383275"},{"key":"e_1_2_2_25_1","unstructured":"Segal M. Akeley K. Frazier C. Leech J. and Brown P. 2010. The OpenGL\u00ae graphics system: A specification (version 4.0 (core profile) - march 11 2010). http:\/\/www.opengl.org\/registry\/doc\/glspec40.core.20100311.pdf."},{"key":"e_1_2_2_26_1","doi-asserted-by":"publisher","DOI":"10.1145\/1477926.1477930"},{"key":"e_1_2_2_27_1","doi-asserted-by":"publisher","DOI":"10.1145\/91556.91592"}],"container-title":["ACM Transactions on Graphics"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/2010324.1965002","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/2010324.1965002","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T11:06:23Z","timestamp":1750244783000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/2010324.1965002"}},"subtitle":["modular, composable shaders for graphics hardware"],"short-title":[],"issued":{"date-parts":[[2011,7]]},"references-count":26,"journal-issue":{"issue":"4","published-print":{"date-parts":[[2011,7]]}},"alternative-id":["10.1145\/2010324.1965002"],"URL":"https:\/\/doi.org\/10.1145\/2010324.1965002","relation":{},"ISSN":["0730-0301","1557-7368"],"issn-type":[{"type":"print","value":"0730-0301"},{"type":"electronic","value":"1557-7368"}],"subject":[],"published":{"date-parts":[[2011,7]]},"assertion":[{"value":"2011-07-25","order":3,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}