- 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.
Open this Book
Open this Book
Open this Book
Open this Book
Open this Book
Thank you!
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.
Timon
Matthias Wloka
Cort Stratton
Markus Pohl
Nigel Brooke
Chance Millar
Michael Silverman
Merlijn Van Holder
Mathias Wahlin
Fabrice Piquet
Adam Martin
Warby
Janina Gerards
Links & Resources
Videos
[v01] CPU vs GPU Demonstration with Paint-Gun-Robots
[v02] Multiple Materials in one Draw Call
Podcast
[p01] Overview about Rendering, APIs and all that stuff
Book
[b01] Real-Time Rendering: Page 711
Articles
[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
[a44] The minimum number of triangles per draw call
[a45] How GPU Shader Cores Work
[a46] Interpolant Shader Processes
[a47] Latency numbers every programmer should know
[a48] Structure of the GTX680 GPU
[a49] Structure of the Tegra K1
[a50] Comparision: Structure of Kepler vs Maxwell GPUs
[a51] Structure of the GTX680 Kepler GPU
[a51] NVidia GF100 Whitepaper
[a53] Wikipedia: Processor Registers
[a54] Life of a triangle – NVIDIA’s logical pipeline
[a55] Fast Tesselated Rendering on Fermi GF100
[a56] TechRadar: Nvidia’s Fermi graphics architecture explained
[a57] GLSL Core Tutorials – Primitive Assembly
[a58] Image Processing and Computer Graphics – Rendering Pipeline
[a59] Geometry Shader Programming in OpenGL
[a60] Rasterization
[a61] OpenGL NVIDIA Command-List: Approaching Zero Driver Overhead
[a62] A SIMD-efficient 14 Instruction Shader Program for High-Throughput Microtriangle Rasterization
[a63] Article based on the GF100 Whitepaper
[a64] GLSL Core Tutorial โ Rasterization and Interpolation
[a65] Wikipedia: Kepler Architecture
[a66] Guard Band Clipping by NVidia
[a67] CryEngine Documentation about Overdraw
[a68] NVIDIA OpenGL extension showcasing perf benefits of new concepts in APIs
[a69] OpenGL From Zero To Hero
[a70] Nvidia Guard Band Clipping Power Point Presentation
[a71] Cuda Core Programming Guide: Compute Capabilities
[a72] Interactive Indirect Illumination Using Voxel Cone Tracing
[a73] Triangle Tesselation
[a74] Quad Tesselation
[a78] Humus: Triangulation
[a78] Humus: Particle Trimming Tool
[a79] Fermi GF100 Graphics Processing Unit (GPU)
Forum Discussions
[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