keywords: Graphics, Optimization at Deep Level

Documents

Documents - Comprehensive

The Visual Technology of Gears 5 | Unreal Dev Days 2019 | Unreal Engine
https://www.youtube.com/watch?v=KL3rSV-IJ20
The Visual Technology of Gears 5
https://cdn.gearsofwar.com/thecoalition/publications/The%20Visual%20Technology%20of%20Gears%205%20V2%20PDF%20Version.pdf

Improving visuals while achieving 60fps using Unreal Engine 4
https://cdn.gearsofwar.com/thecoalition/publications/The%20Visual%20Technology%20of%20Gears%205%20V2%20PDF%20Version.pdf

The making of Gears 5: how the Coalition hit 60fps - and improved visual quality
https://www.eurogamer.net/articles/digitalfoundry-2019-gears-5-tech-interview

Gears 5 Graphics Options Performance Breakdown
https://www.game-debate.com/news/27684/gears-5-most-important-graphics-options-every-setting-benchmarked

Performance Tips when Writing Shaders
https://dev.rbcafe.com/unity/unity-5.3.3/en/Manual/SL-ShaderPerformance.html

Documents - Drawcalls

The engine draws the things you see on the screen in batches and such a batch is called a drawcall.

The time a drawcall takes consists of two parts:

  • a static overhead, that is always the same no matter how many things get drawn;
  • a dynamic part that depends on how many things there are to draw;

One basic thing is that each model in idTech4 gets drawn once per light that hits that model. And each of these draws of the model is split into drawcalls for each material.

So if you have a model with two different materials that is hit by 3 lights, the entire model is drawn 3 times, and the engine uses 2 * 3 = 6 drawcalls to do so.

Reference: Drawcalls
https://wiki.thedarkmod.com/index.php?title=Drawcalls

Documents - Unsynchronized Mapping

Approaching Zero Driver Overhead
https://www.reddit.com/r/gamedev/comments/21mbo8/we_are_the_authors_of_approaching_zero_driver/
GDC 2014: Approaching Zero Driver Overhead (AZDO) in OpenGL
https://www.youtube.com/watch?v=K70QbvzB6II
Best Practices for Working with Vertex Data
https://www.seas.upenn.edu/~pcozzi/OpenGLInsights/OpenGLInsights-AsynchronousBufferTransfers.pdf
Map Buffer Range Super Slow?
https://www.gamedev.net/forums/topic/666461-map-buffer-range-super-slow/

Documents - Vulkan

Arm Best Practice warnings in the Vulkan SDK (Arm Mali GPUs)
https://community.arm.com/arm-community-blogs/b/graphics-gaming-and-vr-blog/posts/arm-best-practice-warnings-in-vulkan-sdk

GPU Rendering and Multi-Draw Indirect
https://github.com/KhronosGroup/Vulkan-Samples/blob/master/samples/performance/multi_draw_indirect/multi_draw_indirect_tutorial.md
Vulkan Samples of Performance
https://github.com/KhronosGroup/Vulkan-Samples/tree/master/samples/performance

Documents - Compiling

Branches in mobile shaders
https://solidpixel.github.io/2021/12/09/branches_in_shaders.html

Papers

Papers - Ambient Occlusion Visualization

Ambient Occlusion Opacity Mapping for Visualization of Internal Molecular Structure
https://www.cs.unc.edu/~taylorr/Comp715/papers/AOOM_WSCG20111.pdf

Blogs

Blogs - Texture

The top mip level of a texture is responsible for about 75% of the memory usage, so dropping one or two mip levels should be plenty of texture detail range for any game. For example starting with 2GB of textures and dropping two mip levels from all of them would take you down to 128MB of textures.

Also note that if you’re running out of texture memory D3DFMT_DXT1 is 8 times smaller than D3DFMT_X8R8G8B8 and should be less of a quality reduction than dropping a mip level.

Origin:
https://www.gamedev.net/forums/topic/605090-texture-quality-settings/

Blogs - Frame Analysis

GTA V - Graphics Study
https://www.adriancourreges.com/blog/2015/11/02/gta-v-graphics-study/

Behind the Pretty Frames: God of War
http://www.mamoniem.com/behind-the-pretty-frames-god-of-war/

Books

Books - Lighting Issues Visualization

Computer Graphics and Imaging
https://www.intechopen.com/books/7435
Computer Graphics and Imaging (October 23, 2019)
https://www.amazon.com/Computer-Graphics-Imaging-Branislav-Sobota/dp/1839622822

Tools & Frameworks

Tools - Lighting Issues Visualization

Quoted from Dynamic analytic indirect light:
Triangulating the direct light enables analytic integrals for diffuse geometry with correct occlusion. The occlusion step uses the Sutherland–Hodgman algorithm to determine overlap between triangles. Complexity is O(n^4) and the shader is found here:
https://www.shadertoy.com/view/st3BW4
The faster version skips indirect occlusion and is O(n^3):
https://www.shadertoy.com/view/NlVfWy


“The three most charismatic leaders in this century inflicted more suffering on the human race than almost any trio in history: Hitler, Stalin, and Mao. What matters is not the leader's charisma. What matters is the leader's mission.” ― Peter F. Drucker, Managing the Non-Profit Organization: Principles and Practices