- Added a whole new book covering the pipeline in detail
- Added 2 new videos and 32 new links to great articles, whitepapers, …
- Extended the section copying data from HDD to graphic card.
- Updated some terms in the pipeline animation and made clear that this is only the logical pipeline.
- Updated some smaller text passages in the book about the problems.
- Added some new problems.
- Added a new solutions and some general words.
See Render Hell 1.1 Change Log
A lack of knowledge sometimes can be a strength, because you naively say to yourself “Pfff..how complicated can it be?” and just dive in. I started this article by thinking “Hm…what exactly is a draw call?”. During my 5-Minute-Research I didn’t find a satisfying explanation. I checked the clock and since i still had 30 minutes before bedtime i said …
… and just started. This was two months ago and since that i was continuously reading, writing and asking a lot questions.
It was the hardest and low levelest research i ever did and for me as a non-programmer it was a nightmare of “yes, but in this special case…” and “depends on the api…”. It was my personal render hell – but i went through it and brought something with me: five books, each representing an attempt to explain one part of rendering from an artist perspective. I hope you’ll like it.
Thanks goes out to all readers but especially to the people listed below. This article wouldn’t be there without you guys! Thank you for answering all my questions, reading over all my text iterations and supporting me.
Merlijn Van Holder
Links & Resources
[p01] Overview about Rendering, APIs and all that stuff
[b01] Real-Time Rendering: Page 711
[a01] MSDN: Accurately Profiling Direct3D API Calls (Direct3D 9)
[a02] GPU Programming Guide GeForce 8 and 9 Series
[a03] MSDN: States (Direct3D 9)
[a04] MSDN: Efficiently Drawing Multiple Instances of Geometry (Direct3D 9)
[a05] Understanding Modern GPUs
[a06] A trip through the Graphics Pipeline
[a07] Understanding GPUs from the ground up
[a08] Flushing the pipeline
[a09] Sides: Avoiding Catastrophic Performance Loss
[a10] Radeon R5xx Acceleration
[a11] SIGGRAPH 2006: GPU Shading and Rendering
[a12] Tool: GPUView for performance measurement
[a13] Real-Time Graphics Architecture
[a14] How GPUs Work
[a15] NVidia GPU Gems Book
[a16] Wikipedia: Shader
[a17] Wikipedia: Graphics Pipeline
[a18] ExtremeTech 3D Pipeline Tutorial
[a19] Linux Programmer’s Reference Manuals
[a20] More AMD References (like [a10])
[a21] OpenGL Lecture
[a22] Learning Modern 3D Graphics Programming
[a23] OpenGL Programming Guide
[a24] Draw Call Batching
[a25] OpenGL Step by Step
[a26] OpenGL 3 & DirectX 11: The War Is Over
[a27] Rendering Pipeline Overview
[a28] GPU Parallelizable Methods
[a29] Parallelism in NVIDIA GPUs
[a30] Many SIMDs Make One Compute Unit
[a31] PowerPoint: Modern GPU Architecture
[a32] Unreal: Layered Material
[a33] Unity: One draw call for each shader
[a34] Reducing GPU Offload Latency via Fine-Grained CPU-GPU Synchronization
[a35] Accurately Profiling Direct3D API Calls
[a36] Technical Breakdown – Assassins Creed II
[a37] NVidia GPU Gems 2
[f01] 2 Materials on one mesh
[f02] Which is faster
[f03] Multiple Materials with one glDrawElements()
[f04] What Is A Draw Call? How Does It Effect My Product?
[f05] Why are draw calls expensive
[f06] A great reddit discussion about the content of this article
[f07] Another great reddit discussion about the content of this article