CppCon 2017: Nicolas Guillemot “Design Patterns for Low-Level Real-Time Rendering”

preview_player
Показать описание


In recent years, the GPU graphics community has seen the introduction of many new GPU programming APIs like Khronos' Vulkan, Microsoft's Direct3D 12, and Apple's Metal. These APIs present much more control of GPU hardware, but bring with them a great increase in complexity. We need to rethink the way we do graphics programming to take advantage of new features, while also keeping complexity under control.

This talk presents solutions to recurring programming problems with these new GPU graphics APIs. These solutions are intended to simplify the complexity of the API by an order of magnitude, while simultaneously improving overall performance. This talk aims to discuss some key techniques for other developers to create their own GPU rendering engine.

Topics covered include using a ring buffer to stream data and descriptors from CPU to GPU, scheduling GPU memory and work from the CPU, designing a multi-pass real-time GPU renderer, and using fork/join parallelism to increase the performance of the CPU code that submits GPU work.

Nicolas Guillemot: University of Victoria, MSc Student

Nicolas is a master's student at the University of Victoria, where he searches for solutions to the game industry's real-time rendering problems at the intersection of software and hardware. In the past, Nicolas has worked at Electronic Arts, and in Intel's Visual and Parallel Computing Advanced Technology Group.


*-----*
*-----*
Рекомендации по теме
Комментарии
Автор

This guy explains everything so well... Great talk!

jankodedic
Автор

10/10 talk, liked, shared on Facebook, subscribed, excitedly printed on A3 wallpaper, studied and revered!
This kind of explanation only comes from a person knowing the subject matter intimately. A lot of hard work went into this talk and it shows. Thank you.

scolic
Автор

I would have needed these explanations far sooner. This was finally a version I understood. So many other tutorials and talks assume existing knowledge of graphics programming

OperationDarkside
Автор

This is the stuff I wanted to learn at Uni when I got my CS degree, instead I got put through OOP hell, I wasted time learning OOP stuff that I don't even use in real life. Also UML(overrated), a sprinkling of stuff like SCRUM and AGILE, all of which could've been picked up automatically from actually working in a firm. The math courses were worth it though.

satellite
Автор

48:01
Stack allocator might be beneficial for this case. Basically it makes the memory allocated for T1 to be implicitly reused for OUT (due to nature of stack allocators).
So sequence will be: [NEW T2] [NEW T1] [RUN A] [DEL T1] [NEW OUT] ...

screBDO
Автор

Great talk! Great ideas explained simply and concisely. Good job!

jaredmistretta
Автор

Since opengl context can be bound to one thread at a time, how does a fork, join thread of command list work?

infinitecmdz
Автор

Barely scratches the paint on the surface of the subject. I hoped to see some real code among it and not just those oversimplifications.

henrituhola