{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,7,3]],"date-time":"2026-07-03T08:17:36Z","timestamp":1783066656069,"version":"3.54.6"},"reference-count":34,"publisher":"Association for Computing Machinery (ACM)","issue":"4","license":[{"start":{"date-parts":[[2026,7,3]],"date-time":"2026-07-03T00:00:00Z","timestamp":1783036800000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0\/legalcode"}],"funder":[{"DOI":"10.13039\/100000001","name":"NSF","doi-asserted-by":"publisher","award":["2105806"],"award-info":[{"award-number":["2105806"]}],"id":[{"id":"10.13039\/100000001","id-type":"DOI","asserted-by":"publisher"}]},{"DOI":"10.13039\/100000001","name":"NSF","doi-asserted-by":"publisher","award":["2238839"],"award-info":[{"award-number":["2238839"]}],"id":[{"id":"10.13039\/100000001","id-type":"DOI","asserted-by":"publisher"}]}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["ACM Trans. Graph."],"published-print":{"date-parts":[[2026,7,3]]},"abstract":"<jats:p>Computer graphics applications are sophisticated heterogeneous programs that orchestrate numerous components, including shaders, pipelines, resource descriptors, and command streams. In modern graphics workflows, communication between these components is mediated by resources such as shader I\/O, storage buffers, and resource bindings. To make this communication correct, developers must uphold resource contracts. These contracts cover agreements on type, layout, binding locations, synchronization requirements, and related properties. In standard practice, these contracts are satisfied implicitly through conventions. As a result, contract breaches are often detected too late, at runtime by validation layers, or worse, as visual artifacts in rendered output.<\/jats:p>\n                  <jats:p>\n                    In this work, we present RCGP\n                    <jats:sup>1<\/jats:sup>\n                    , a system that mechanistically enforces resource contracts between components of a graphics program. RCGP formalizes\n                    <jats:italic toggle=\"yes\">contracts<\/jats:italic>\n                    , which are centralized through single-source-of-truth resource declarations, as statically introspectable units that can be verified. We map objects from distinct program components to\n                    <jats:italic toggle=\"yes\">modules<\/jats:italic>\n                    that import and export contracts. Modules are then composed into larger components via\n                    <jats:italic toggle=\"yes\">combinators<\/jats:italic>\n                    , which check compatibility between the corresponding contracts and compute the residual contracts for the result. Finally, RCGP upholds these contracts through a set of\n                    <jats:italic toggle=\"yes\">witnesses<\/jats:italic>\n                    , which encode the necessary promises.\n                  <\/jats:p>\n                  <jats:p>Using a prototype implementation in C++ and Vulkan, we demonstrate that this formulation converts common classes of late failures, such as descriptor-type mismatches, layout drift, and missing synchronization barriers, into early, actionable compile-time diagnostics.<\/jats:p>","DOI":"10.1145\/3811317","type":"journal-article","created":{"date-parts":[[2026,7,3]],"date-time":"2026-07-03T07:05:51Z","timestamp":1783062351000},"page":"1-26","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":0,"title":["RCGP: Resource Contracts for Graphics Programming"],"prefix":"10.1145","volume":"45","author":[{"ORCID":"https:\/\/orcid.org\/0009-0005-5083-4024","authenticated-orcid":false,"given":"Venkataram","family":"Sivaram","sequence":"first","affiliation":[{"name":"Computer Science and Artificial Intelligence Laboratory (CSAIL), Massachusetts Institute of Technology (MIT), Cambridge, USA"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0000-0001-6302-9327","authenticated-orcid":false,"given":"Sai","family":"Praveen Bangaru","sequence":"additional","affiliation":[{"name":"NVIDIA, Cambridge, USA"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0000-0003-3993-5789","authenticated-orcid":false,"given":"Ravi","family":"Ramamoorthi","sequence":"additional","affiliation":[{"name":"University of California San Diego, La Jolla, USA"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0000-0001-5443-470X","authenticated-orcid":false,"given":"Tzu-Mao","family":"Li","sequence":"additional","affiliation":[{"name":"University of California San Diego, La Jolla, USA"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0000-0001-6243-9543","authenticated-orcid":false,"given":"Jonathan","family":"Ragan-Kelley","sequence":"additional","affiliation":[{"name":"Computer Science and Artificial Intelligence Laboratory (CSAIL), Massachusetts Institute of Technology (MIT), Cambridge, USA"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0000-0001-9919-069X","authenticated-orcid":false,"given":"Fredo","family":"Durand","sequence":"additional","affiliation":[{"name":"Computer Science and Artificial Intelligence Laboratory (CSAIL), Massachusetts Institute of Technology (MIT), Cambridge, USA"}],"role":[{"vocabulary":"crossref","role":"author"}]}],"member":"320","published-online":{"date-parts":[[2026,7,3]]},"reference":[{"key":"e_1_2_1_1_1","volume-title":"HIP Programming Guide. Advanced Micro Devices","author":"AMD.","unstructured":"AMD. 2024. HIP Programming Guide. Advanced Micro Devices, Inc. https:\/\/rocm.docs.amd.com\/projects\/HIP\/en\/latest\/"},{"key":"e_1_2_1_2_1","unstructured":"Apple. 2024. Metal Shading Language Specification. Apple Developer. https:\/\/developer.apple.com\/metal\/Metal-Shading-Language-Specification.pdf"},{"key":"e_1_2_1_3_1","unstructured":"Sean Baxter. 2021. Circle C++ shaders. https:\/\/github.com\/seanbaxter\/shaders."},{"key":"e_1_2_1_4_1","doi-asserted-by":"publisher","DOI":"10.1145\/964965.808602"},{"key":"e_1_2_1_5_1","doi-asserted-by":"publisher","DOI":"10.1145\/2491956.2462166"},{"key":"e_1_2_1_6_1","doi-asserted-by":"publisher","DOI":"10.1145\/2010324.1965002"},{"key":"e_1_2_1_7_1","unstructured":"Epic Games. 2025. Render Dependency Graph in Unreal Engine. https:\/\/dev.epicgames.com\/documentation\/en-us\/unreal-engine\/render-dependency-graph-in-unreal-engine."},{"key":"e_1_2_1_8_1","doi-asserted-by":"publisher","DOI":"10.1145\/97880.97911"},{"key":"e_1_2_1_9_1","doi-asserted-by":"publisher","DOI":"10.1145\/3197517.3201380"},{"key":"e_1_2_1_10_1","doi-asserted-by":"publisher","DOI":"10.1145\/2897824.2925923"},{"key":"e_1_2_1_11_1","doi-asserted-by":"publisher","DOI":"10.1145\/3072959.3073648"},{"key":"e_1_2_1_12_1","volume-title":"Practical Real-time Strategies for Accurate Indirect Occlusion. In ACM SIGGRAPH 2016 Courses: Physically Based Shading in Theory and Practice. Association for Computing Machinery.","author":"Jim\u00e9nez Jorge","year":"2016","unstructured":"Jorge Jim\u00e9nez, Xian-Chun Wu, Angelo Pesce, and Adrian Jarabo. 2016. Practical Real-time Strategies for Accurate Indirect Occlusion. In ACM SIGGRAPH 2016 Courses: Physically Based Shading in Theory and Practice. Association for Computing Machinery."},{"key":"e_1_2_1_13_1","first-page":"60","article-title":"The OpenGL Shading Language","volume":"4","author":"Kessenich John","year":"2019","unstructured":"John Kessenich, Dave Baldwin, and Randi Rost. 2019. The OpenGL Shading Language, Version 4.60. Khronos Group. https:\/\/registry.khronos.org\/OpenGL\/specs\/gl\/GLSLangSpec.4.60.pdf","journal-title":"Version"},{"key":"e_1_2_1_14_1","volume-title":"Vulkan API Specification","unstructured":"Khronos. 2016. Vulkan API Specification. Khronos Group. https:\/\/registry.khronos.org\/vulkan\/specs\/latest\/html\/vkspec.html"},{"key":"e_1_2_1_15_1","unstructured":"Khronos. 2026. glslang: Khronos reference front-end for GLSL ESSL and HLSL and sample SPIR-V generator. https:\/\/github.com\/KhronosGroup\/glslang."},{"key":"e_1_2_1_16_1","volume-title":"SYCL 2020 Specification. Khronos Group. https:\/\/registry.khronos.org\/SYCL\/specs\/sycl-2020\/pdf\/sycl-2020","author":"Khronos-Group","year":"2020","unstructured":"Khronos-Group. 2020. SYCL 2020 Specification. Khronos Group. https:\/\/registry.khronos.org\/SYCL\/specs\/sycl-2020\/pdf\/sycl-2020.pdf"},{"key":"e_1_2_1_17_1","volume-title":"Proceedings of the ACM SIGGRAPH\/EUROGRAPHICS Conference on Graphics Hardware. Eurographics Association, Goslar, DEU, 57\u201368","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. Eurographics Association, Goslar, DEU, 57\u201368."},{"key":"e_1_2_1_18_1","volume-title":"Re-modeled at Crytek with inspiration from Marko Dabrovi\u0107's original Sponza Atrium","author":"Meinl Frank","unstructured":"Frank Meinl. 2010. Crytek Sponza. Re-modeled at Crytek with inspiration from Marko Dabrovi\u0107's original Sponza Atrium; distributed via the McGuire Computer Graphics Archive under CC BY 3.0. https:\/\/casual-effects.com\/data"},{"key":"e_1_2_1_19_1","unstructured":"Microsoft. 2015. DirectX 12. Microsoft Learn. https:\/\/learn.microsoft.com\/en-us\/windows\/win32\/direct3d12\/directx-12-programming-guide"},{"key":"e_1_2_1_20_1","unstructured":"Microsoft. 2024. High-Level Shader Language (HLSL) Reference. Microsoft Learn. https:\/\/learn.microsoft.com\/en-us\/windows\/win32\/direct3dhlsl\/dx-graphics-hlsl-reference"},{"key":"e_1_2_1_21_1","unstructured":"NVIDIA. 2024. CUDA C++ Programming Guide. NVIDIA Corporation. https:\/\/docs.nvidia.com\/cuda\/cuda-c-programming-guide\/"},{"key":"e_1_2_1_22_1","volume-title":"FrameGraph: Extensible Rendering Architecture in Frostbite. In Game Developers Conference. 514\u2013814","author":"O'Donnell Yuriy","year":"2017","unstructured":"Yuriy O'Donnell. 2017. FrameGraph: Extensible Rendering Architecture in Frostbite. In Game Developers Conference. 514\u2013814."},{"key":"e_1_2_1_23_1","doi-asserted-by":"publisher","DOI":"10.1145\/3306346.3322955"},{"key":"e_1_2_1_24_1","doi-asserted-by":"publisher","DOI":"10.1145\/325165.325247"},{"key":"e_1_2_1_25_1","unstructured":"Laurent Poinsot G\u00e9rard Duchamp and Christophe Tollu. 2010. Partial monoids: associativity and confluence. arXiv:1002.2166 [cs.DM] https:\/\/arxiv.org\/abs\/1002.2166"},{"key":"e_1_2_1_26_1","doi-asserted-by":"publisher","DOI":"10.1145\/3133895"},{"key":"e_1_2_1_27_1","doi-asserted-by":"publisher","DOI":"10.1145\/3105762.3105770"},{"key":"e_1_2_1_28_1","doi-asserted-by":"publisher","DOI":"10.1145\/3543866"},{"key":"e_1_2_1_29_1","doi-asserted-by":"publisher","DOI":"10.1145\/3355089.3356554"},{"key":"e_1_2_1_30_1","volume-title":"Thrift: Scalable Cross-Language Services Implementation. Technical Report thrift-20070401. Facebook. https:\/\/thrift.apache.org\/static\/files\/thrift-20070401.pdf Accessed: 2026-01-16.","author":"Slee Mark","year":"2007","unstructured":"Mark Slee, Aditya Agarwal, and Marc Kwiatkowski. 2007. Thrift: Scalable Cross-Language Services Implementation. Technical Report thrift-20070401. Facebook. https:\/\/thrift.apache.org\/static\/files\/thrift-20070401.pdf Accessed: 2026-01-16."},{"key":"e_1_2_1_31_1","unstructured":"Unity Technologies. 2026. Render graph system in SRP Core. https:\/\/docs.unity3d.com\/Packages\/com.unity.render-pipelines.core@17.5\/manual\/render-graph-system.html."},{"key":"e_1_2_1_32_1","unstructured":"Wouter van Oortmerssen. 2015. FlatBuffers 1.1: a memory-efficient serialization library. https:\/\/developers.googleblog.com\/en\/flatbuffers-11-a-memory-efficient-serialization-library\/. Google Developers Blog. Accessed: 2026-01-16."},{"key":"e_1_2_1_33_1","volume-title":"Protocol Buffers: Google's Data Interchange Format. https:\/\/opensource.googleblog.com\/2008\/07\/protocol-buffersgoogles-data.html. Google Open Source Blog. Accessed: 2026-01-16.","author":"Varda Kenton","year":"2008","unstructured":"Kenton Varda. 2008. Protocol Buffers: Google's Data Interchange Format. https:\/\/opensource.googleblog.com\/2008\/07\/protocol-buffersgoogles-data.html. Google Open Source Blog. Accessed: 2026-01-16."},{"key":"e_1_2_1_34_1","doi-asserted-by":"publisher","DOI":"10.1145\/3550454.3555463"}],"container-title":["ACM Transactions on Graphics"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/abs\/10.1145\/3811317","content-type":"text\/html","content-version":"vor","intended-application":"syndication"}],"deposited":{"date-parts":[[2026,7,3]],"date-time":"2026-07-03T07:37:59Z","timestamp":1783064279000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3811317"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2026,7,3]]},"references-count":34,"journal-issue":{"issue":"4","published-print":{"date-parts":[[2026,7,3]]}},"alternative-id":["10.1145\/3811317"],"URL":"https:\/\/doi.org\/10.1145\/3811317","relation":{},"ISSN":["0730-0301","1557-7368"],"issn-type":[{"value":"0730-0301","type":"print"},{"value":"1557-7368","type":"electronic"}],"subject":[],"published":{"date-parts":[[2026,7,3]]},"assertion":[{"value":"2026-01-21","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2026-03-27","order":2,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2026-07-03","order":3,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}