The Game Development Conference is coming next month, bringing about a lot of great news, discussions, and research being shared with developers worldwide. With the pandemic ending in most of the world, Cocos is happy to be returning to the event to meet other developers and share our work during the Open Source Game Development Summit happening on the first two days of the conference. Our talk will be on March 21st at 3:50.
We will be presenting "Render Graph, a Data-Oriented Approach" by two of our team: Zhenglong Zhou, engine architect, and Panda, our Engine Technical Director. As shared in our introduction paragraph to GDC,
"Attendees will learn about potential problems in frame graph, and how our new data-oriented render graph is designed to address these problems. It will give the attendees ideas of render pipeline abstraction and customization."
So what is render graph and its significance to open source gaming? We were able to talk to both speakers about this and get a first look at the presentation.
Cocos: So great to talk to you guys. Let's get people up to speed on what we will discuss in the presentation. What is a "Render Graph"?
Zhenglong: The technical answer is that the Render Graph is a graph data-structure to describe the rendering processes, typically in one frame. But for most developers. It takes advantage of modern APIs, like DirectX 12, to improve performance through the use of automatic asynchronous-compute scheduling, as well as more efficient memory and barrier management.
Panda: It's a more user-friendly solution. It really encapsulates all complexity of modern graphics APIs.
C: How is this different from what you see with other game engine techniques?
Z: Most render-graph implementation is procedural, which requires good programming skills and is hard to implement correctly. Our approach is declarative and data-oriented, hides implementation details, and is easier to use. Declarative programming, such as SQL, provides the engine with more opportunities to optimize than other methods.
P: With drivers given complete control of hardware by graphics developers, using something like OpenGL requires you to write about 100 lines to draw a triangle. With Vulkan, you need to write at least 1000 lines.
There are too many things to handle, especially resource bindings and barrier management. We need the complex scene to be rendered for cross-platforms, and not all platforms share the same language and design philosophy.
With these new graphic APIs, we must manage the render process with passed resources. Our Cyberpunk demo has more than a dozen render passes and hundreds of draw calls. When a user wants to customize a complex render pipeline, they need simple APIs to interact with it.
This isn't a new concept. Frostbite was the first to work on this. But we're happy to share an open-source solution with the attendees at GDC to see and our developers to build with for future games.
C: What motivated you to build this new type of Render Graph?
Z: To correctly setup a correct render pipeline in modern graphics API is hard. There are too many states, and these states are often interdependent. It is also hard to debug such a program with so many parameters. We need a good algorithm to manage these states, and this algorithm is our Render Graph. With Render Graph, many states, such as barriers, can be deduced from user input. And our engine can also validate and optimize the rendering procedure according to the user input. This greatly simplifies render pipeline setup and improves development efficiency.
P: We needed something that was more editable and transformative. With modern graphic APIs requiring non-local information like pipeline state objects, resource barriers, and synchronization, it's time for us to improve how we work with these APIs. We'll be sharing how that works at our talk.
C: What do you think will be the most interesting part of the talk?
P: Definitely the Core Design. We've been working on it for two years. So it's exciting for us to finally share it with developers all over the world, including all the technical insights about it.
Z: It has to be the data-oriented graph representation. It is based on boost-graph and provides more graph concepts, such as component-graph and polymorphic-graph. We will also show how to use graphs to solve different rendering problems. These concepts are generic and can be used in areas other than rendering.
C: Finally, What are you excited about when going to GDC?
Z: This is my first time attending GDC. I'm pretty excited about the community and the techniques behind the scenes. It also has been ten years since the last time I came to the U.S., and I am looking forward to feeling the changes in the country.
P: Personally, I want to see the new graphic engineering achievements from the past year. I also want to see the ray tracing experiments going on with mobile chips and the techniques they used to achieve them. Also, look at AIGC possibilities. And, of course, meet tons of developers and business partners.
It's looking like we're going to have an exciting presentation. We hope you watch it. If you would like to talk to our team at GDC 2023, we're excited to see you. You can get in touch with us and setup a meeting by contacting our marketing group at marketing@cocos.com, and we'll arrange a time just for you.
We hope to see you there.