{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,7,3]],"date-time":"2026-07-03T19:32:31Z","timestamp":1783107151176,"version":"3.54.6"},"reference-count":36,"publisher":"Association for Computing Machinery (ACM)","issue":"3","license":[{"start":{"date-parts":[[2022,7,25]],"date-time":"2022-07-25T00:00:00Z","timestamp":1658707200000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0\/"}],"funder":[{"DOI":"10.13039\/100002418","name":"Intel Corporation","doi-asserted-by":"publisher","id":[{"id":"10.13039\/100002418","id-type":"DOI","asserted-by":"publisher"}]},{"DOI":"10.13039\/100007065","name":"Nvidia","doi-asserted-by":"publisher","id":[{"id":"10.13039\/100007065","id-type":"DOI","asserted-by":"publisher"}]}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["Proc. ACM Comput. Graph. Interact. Tech."],"published-print":{"date-parts":[[2022,7,25]]},"abstract":"<jats:p>Modern unified programming models (such as CUDA and SYCL) that combine host (CPU) code and GPU code into the same programming language, same file, and same lexical scope lack adequate support for GPU code specialization, which is a key optimization in real-time graphics. Furthermore, current methods used to implement specialization do not translate to a unified environment. In this paper, we create a unified shader programming environment in C++ that provides first-class support for specialization by co-opting C++'s attribute and virtual function features and reimplementing them with alternate semantics to express the services required. By co-opting existing features, we enable programmers to use familiar C++ programming techniques to write host and GPU code together, while still achieving efficient generated C++ and HLSL code via our source-to-source translator.<\/jats:p>","DOI":"10.1145\/3543866","type":"journal-article","created":{"date-parts":[[2022,7,27]],"date-time":"2022-07-27T23:35:58Z","timestamp":1658964958000},"page":"1-17","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":6,"title":["Supporting Unified Shader Specialization by Co-opting C++ Features"],"prefix":"10.1145","volume":"5","author":[{"given":"Kerry A.","family":"Seitz","sequence":"first","affiliation":[{"name":"University of California, Davis, Department of Computer Science, One Shields Avenue, Davis, CA, USA"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Theresa","family":"Foley","sequence":"additional","affiliation":[{"name":"NVIDIA, 2788 San Tomas Expressway, Santa Clara, CA, USA"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Serban D.","family":"Porumbescu","sequence":"additional","affiliation":[{"name":"University of California, Davis, Department of Electrical and Computer Engineering, One Shields Avenue, Davis, CA, USA"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"John D.","family":"Owens","sequence":"additional","affiliation":[{"name":"University of California, Davis, Department of Electrical and Computer Engineering, One Shields Avenue, Davis, CA, USA"}],"role":[{"vocabulary":"crossref","role":"author"}]}],"member":"320","published-online":{"date-parts":[[2022,7,27]]},"reference":[{"key":"e_1_2_2_1_1","unstructured":"Amazon Web Services Inc. 2021. Amazon Lumberyard. https:\/\/aws.amazon.com\/lumberyard\/.  Amazon Web Services Inc. 2021. Amazon Lumberyard. https:\/\/aws.amazon.com\/lumberyard\/."},{"key":"e_1_2_2_2_1","unstructured":"Apple Inc. 2014. Metal. https:\/\/developer.apple.com\/documentation\/metal.  Apple Inc. 2014. Metal. https:\/\/developer.apple.com\/documentation\/metal."},{"key":"e_1_2_2_3_1","unstructured":"Apple Inc. 2021. Metal Shading Language Specification Version 2.3. https:\/\/developer.apple.com\/metal\/Metal-Shading-Language-Specification.pdf  Apple Inc. 2021. Metal Shading Language Specification Version 2.3. https:\/\/developer.apple.com\/metal\/Metal-Shading-Language-Specification.pdf"},{"key":"e_1_2_2_4_1","unstructured":"Sean Baxter. 2021. Circle C++ Shaders. https:\/\/github.com\/seanbaxter\/shaders\/blob\/master\/README.md.  Sean Baxter. 2021. Circle C++ Shaders. https:\/\/github.com\/seanbaxter\/shaders\/blob\/master\/README.md."},{"key":"e_1_2_2_5_1","doi-asserted-by":"publisher","DOI":"10.1109\/PACT.2019.00029"},{"key":"e_1_2_2_6_1","unstructured":"Al Danial. 2006--2022. cloc. https:\/\/github.com\/AlDanial\/cloc.  Al Danial. 2006--2022. cloc. https:\/\/github.com\/AlDanial\/cloc."},{"key":"e_1_2_2_7_1","doi-asserted-by":"publisher","DOI":"10.1145\/2491956.2462166"},{"key":"e_1_2_2_8_1","volume-title":"ACM SIGGRAPH 2016 Courses","author":"Garawany Ramy El","year":"2016","unstructured":"Ramy El Garawany . 2016 . Deferred Lighting in Uncharted 4 . In ACM SIGGRAPH 2016 Courses ( Anaheim, CA, USA) (SIGGRAPH 2016). https:\/\/doi.org\/10.1145\/2897826.2940291 Part of the course: Advances in Real-Time Rendering, Part I. Ramy El Garawany. 2016. Deferred Lighting in Uncharted 4. In ACM SIGGRAPH 2016 Courses (Anaheim, CA, USA) (SIGGRAPH 2016). https:\/\/doi.org\/10.1145\/2897826.2940291 Part of the course: Advances in Real-Time Rendering, Part I."},{"key":"e_1_2_2_9_1","unstructured":"Electronic Arts Inc. 2021. Frostbite Engine. https:\/\/www.ea.com\/frostbite.  Electronic Arts Inc. 2021. Frostbite Engine. https:\/\/www.ea.com\/frostbite."},{"key":"e_1_2_2_10_1","unstructured":"Embark Studios. 2021. Rust GPU. https:\/\/github.com\/EmbarkStudios\/rust-gpu.  Embark Studios. 2021. Rust GPU. https:\/\/github.com\/EmbarkStudios\/rust-gpu."},{"key":"e_1_2_2_11_1","unstructured":"Epic Games Inc. 2015. Infiltrator Demo. https:\/\/www.unrealengine.com\/marketplace\/en-US\/product\/infiltrator-demo.  Epic Games Inc. 2015. Infiltrator Demo. https:\/\/www.unrealengine.com\/marketplace\/en-US\/product\/infiltrator-demo."},{"key":"e_1_2_2_12_1","unstructured":"Epic Games Inc. 2019. Unreal Engine 4 Documentation. https:\/\/docs.unrealengine.com\/en-us\/.  Epic Games Inc. 2019. Unreal Engine 4 Documentation. https:\/\/docs.unrealengine.com\/en-us\/."},{"key":"e_1_2_2_13_1","doi-asserted-by":"publisher","DOI":"10.1145\/2010324.1965002"},{"key":"e_1_2_2_14_1","volume-title":"Partial Computation of Programs. In RIMS Symposium on Software Science and Engineering","author":"Futamura Yoshihiko","year":"1983","unstructured":"Yoshihiko Futamura . 1983 . Partial Computation of Programs. In RIMS Symposium on Software Science and Engineering ( Kyoto, Japan). 1--35. https:\/\/doi.org\/10.1007\/3-540-1 1980-9_13 Yoshihiko Futamura. 1983. Partial Computation of Programs. In RIMS Symposium on Software Science and Engineering (Kyoto, Japan). 1--35. https:\/\/doi.org\/10.1007\/3-540-11980-9_13"},{"key":"e_1_2_2_15_1","doi-asserted-by":"crossref","unstructured":"Pat Hanrahan and Jim Lawson. 1990. A Language for Shading and Lighting Calculations. In Computer Graphics (Proceedings of SIGGRAPH 90). 289--298.  Pat Hanrahan and Jim Lawson. 1990. A Language for Shading and Lighting Calculations. In Computer Graphics (Proceedings of SIGGRAPH 90). 289--298.","DOI":"10.1145\/97880.97911"},{"key":"e_1_2_2_16_1","doi-asserted-by":"publisher","DOI":"10.1145\/3197517.3201380"},{"key":"e_1_2_2_17_1","volume-title":"The OpenGL\u00a9 Shading Language (Version 4.50)","author":"Kessenich John","unstructured":"John Kessenich , Dave Baldwin , and Randi Rost . 2017. The OpenGL\u00a9 Shading Language (Version 4.50) . The Khronos Group Inc . https:\/\/www.khronos.org\/registry\/OpenGL\/specs\/gl\/GLSLangSpec.4.50.pdf John Kessenich, Dave Baldwin, and Randi Rost. 2017. The OpenGL\u00a9 Shading Language (Version 4.50). The Khronos Group Inc. https:\/\/www.khronos.org\/registry\/OpenGL\/specs\/gl\/GLSLangSpec.4.50.pdf"},{"key":"e_1_2_2_18_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-10331-5_95"},{"key":"e_1_2_2_19_1","unstructured":"Juan Linietsky Ariel Manzur and contributors. 2021. Godot Engine. https:\/\/godotengine.org\/.  Juan Linietsky Ariel Manzur and contributors. 2021. Godot Engine. https:\/\/godotengine.org\/."},{"key":"e_1_2_2_20_1","unstructured":"Emilio L\u00f3pez. 2017--2022. hlslpp. https:\/\/github.com\/redorav\/hlslpp.  Emilio L\u00f3pez. 2017--2022. hlslpp. https:\/\/github.com\/redorav\/hlslpp."},{"key":"e_1_2_2_21_1","volume-title":"Shader Metaprogramming. In Proceedings of the ACM SIGGRAPH\/EUROGRAPHICS Conference on Graphics Hardware","author":"McCool Michael D.","unstructured":"Michael D. McCool , Zheng Qin , and Tiberiu S. Popa . 2002 . Shader Metaprogramming. In Proceedings of the ACM SIGGRAPH\/EUROGRAPHICS Conference on Graphics Hardware ( Saarbrucken, Germany) (HWWS '02). 57--68. http:\/\/dl.acm.org\/citation.cfm?id=569046.569055 Michael D. McCool, Zheng Qin, and Tiberiu S. Popa. 2002. Shader Metaprogramming. In Proceedings of the ACM SIGGRAPH\/EUROGRAPHICS Conference on Graphics Hardware (Saarbrucken, Germany) (HWWS '02). 57--68. http:\/\/dl.acm.org\/citation.cfm?id=569046.569055"},{"key":"e_1_2_2_22_1","unstructured":"Microsoft. 2014. Shader Model 5.1. https:\/\/msdn.microsoft.com\/en-us\/library\/windows\/desktop\/dn933277(v=vs.85).aspx.  Microsoft. 2014. Shader Model 5.1. https:\/\/msdn.microsoft.com\/en-us\/library\/windows\/desktop\/dn933277(v=vs.85).aspx."},{"key":"e_1_2_2_23_1","unstructured":"Microsoft. 2018. Interfaces and Classes. https:\/\/docs.microsoft.com\/en-us\/windows\/win32\/direct3dhlsl\/overviews-direct3d-11-hlsl-dynamic-linking-class.  Microsoft. 2018. Interfaces and Classes. https:\/\/docs.microsoft.com\/en-us\/windows\/win32\/direct3dhlsl\/overviews-direct3d-11-hlsl-dynamic-linking-class."},{"key":"e_1_2_2_24_1","unstructured":"Microsoft. 2020. Direct3D. https:\/\/docs.microsoft.com\/en-us\/windows\/win32\/direct3d.  Microsoft. 2020. Direct3D. https:\/\/docs.microsoft.com\/en-us\/windows\/win32\/direct3d."},{"key":"e_1_2_2_25_1","volume-title":"NVIDIA CUDA Compute Unified Device Architecture Programming Guide. (Jan","author":"NVIDIA Corporation","year":"2007","unstructured":"NVIDIA Corporation . 2007. NVIDIA CUDA Compute Unified Device Architecture Programming Guide. (Jan . 2007 ). http:\/\/developer.nvidia.com\/cuda. NVIDIA Corporation. 2007. NVIDIA CUDA Compute Unified Device Architecture Programming Guide. (Jan. 2007). http:\/\/developer.nvidia.com\/cuda."},{"key":"e_1_2_2_26_1","unstructured":"NVIDIA Corporation. 2022. cuda-samples: reduction_kernel.cu. https:\/\/github.com\/NVIDIA\/cuda-samples\/blob\/b312abaa07ffdc1ba6e3d44a9bc1a8e89149c20b\/Samples\/2_Concepts_and_Techniques\/reduction\/reduction_kernel.cu#L633-L1025.  NVIDIA Corporation. 2022. cuda-samples: reduction_kernel.cu. https:\/\/github.com\/NVIDIA\/cuda-samples\/blob\/b312abaa07ffdc1ba6e3d44a9bc1a8e89149c20b\/Samples\/2_Concepts_and_Techniques\/reduction\/reduction_kernel.cu#L633-L1025."},{"key":"e_1_2_2_27_1","doi-asserted-by":"publisher","DOI":"10.1145\/3306346.3322955"},{"key":"e_1_2_2_28_1","first-page":"537","article-title":"An Introduction to Shader Interfaces. In GPU Gems, Randima Fernando (Ed.). Addison Wesley","volume":"32","author":"Pharr Matt","year":"2004","unstructured":"Matt Pharr . 2004 . An Introduction to Shader Interfaces. In GPU Gems, Randima Fernando (Ed.). Addison Wesley , Chapter 32 , 537 -- 550 . Matt Pharr. 2004. An Introduction to Shader Interfaces. In GPU Gems, Randima Fernando (Ed.). Addison Wesley, Chapter 32, 537--550.","journal-title":"Chapter"},{"key":"e_1_2_2_29_1","doi-asserted-by":"publisher","DOI":"10.1145\/383259.383275"},{"key":"e_1_2_2_30_1","doi-asserted-by":"publisher","DOI":"10.1145\/3133895"},{"key":"e_1_2_2_31_1","volume-title":"The OpenGL\u00a9 Graphics System: A Specification (Version 4.5 (Core Profile) -","author":"Segal Mark","year":"2017","unstructured":"Mark Segal , Kurt Akeley , Chris Frazier , Jon Leech , and Pat Brown . 2017. The OpenGL\u00a9 Graphics System: A Specification (Version 4.5 (Core Profile) - June 29, 2017 ). The Khronos Group Inc . https:\/\/www.khronos.org\/registry\/OpenGL\/specs\/gl\/glspec45.core.pdf Mark Segal, Kurt Akeley, Chris Frazier, Jon Leech, and Pat Brown. 2017. The OpenGL\u00a9 Graphics System: A Specification (Version 4.5 (Core Profile) - June 29, 2017). The Khronos Group Inc. https:\/\/www.khronos.org\/registry\/OpenGL\/specs\/gl\/glspec45.core.pdf"},{"key":"e_1_2_2_32_1","doi-asserted-by":"publisher","DOI":"10.1145\/3355089.3356554"},{"key":"e_1_2_2_33_1","unstructured":"The Clang Team. 2007--2022. LibTooling. https:\/\/clang.llvm.org\/docs\/LibTooling.html.  The Clang Team. 2007--2022. LibTooling. https:\/\/clang.llvm.org\/docs\/LibTooling.html."},{"key":"e_1_2_2_34_1","unstructured":"The Khronos\u00ae SYCL\u2122 Working Group. 2021. SYCL\u2122 2020 Specification (revision 4). The Khronos Group Inc. https:\/\/www.khronos.org\/registry\/SYCL\/specs\/sycl-2020\/pdf\/sycl-2020.pdf  The Khronos\u00ae SYCL\u2122 Working Group. 2021. SYCL\u2122 2020 Specification (revision 4). The Khronos Group Inc. https:\/\/www.khronos.org\/registry\/SYCL\/specs\/sycl-2020\/pdf\/sycl-2020.pdf"},{"key":"e_1_2_2_35_1","unstructured":"The Khronos\u00ae Vulkan Working Group. 2016. Vulkan 1.0.12 - A Specification. The Khronos Group Inc. https:\/\/www.khronos.org\/registry\/vulkan\/specs\/1.0\/pdf\/vkspec.pdf  The Khronos\u00ae Vulkan Working Group. 2016. Vulkan 1.0.12 - A Specification. The Khronos Group Inc. https:\/\/www.khronos.org\/registry\/vulkan\/specs\/1.0\/pdf\/vkspec.pdf"},{"key":"e_1_2_2_36_1","volume-title":"Unity User Manual","author":"Technologies Unity","year":"2019","unstructured":"Unity Technologies . 2019. Unity User Manual ( 2019 .1). https:\/\/docs.unity3d.com\/Manual\/index.html. Unity Technologies. 2019. Unity User Manual (2019.1). https:\/\/docs.unity3d.com\/Manual\/index.html."}],"container-title":["Proceedings of the ACM on Computer Graphics and Interactive Techniques"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3543866","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3543866","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T17:49:40Z","timestamp":1750268980000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3543866"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2022,7,25]]},"references-count":36,"journal-issue":{"issue":"3","published-print":{"date-parts":[[2022,7,25]]}},"alternative-id":["10.1145\/3543866"],"URL":"https:\/\/doi.org\/10.1145\/3543866","relation":{},"ISSN":["2577-6193"],"issn-type":[{"value":"2577-6193","type":"electronic"}],"subject":[],"published":{"date-parts":[[2022,7,25]]},"assertion":[{"value":"2022-07-27","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}