Reviewing GDC programming presentations based on my own arbitrary criteria, in roughly chronological order. Not affiliated with GDC. A score of > 5 roughly means I’d recommend watching/listening. < 5 roughly means I wouldn’t. I review the presentation in the context of today, not in the context of which they were presented. The purpose of this account is to recommend talks people can watch nowadays. (Q&A portions of presentations are not reviewed - just the main talks only.)
GDC Presentation Reviews
Reviewing GDC programming presentations based on my own arbitrary criteria, in roughly chronological order.
Not affiliated with GDC.
A score of > 5 roughly means I’d recommend watching/listening. < 5 roughly means I wouldn’t.
I review the presentation in the context of today, not in the context of which they were presented. The purpose of this account is to recommend talks people can watch nowadays.
(Q&A portions of presentations are not reviewed - just the main talks only.)
Posts
Reviewing GDC programming presentations based on my own arbitrary criteria, in roughly chronological order. Not affiliated with GDC. A score of > 5 roughly means I’d recommend watching/listening. < 5 roughly means I wouldn’t. I review the presentation in the context of today, not in the context of which they were presented. The purpose of this account is to recommend talks people can watch nowadays. (Q&A portions of presentations are not reviewed - just the main talks only.)
Reviewing GDC programming presentations based on my own arbitrary criteria, in roughly chronological order. Not affiliated with GDC. A score of > 5 roughly means I’d recommend watching/listening. < 5 roughly means I wouldn’t. I review the presentation in the context of today, not in the context of which they were presented. The purpose of this account is to recommend talks people can watch nowadays. (Q&A portions of presentations are not reviewed - just the main talks only.)
They don’t model the interior of the planets; instead they just have a low frequency heightmap on the surface of the sphere, and there’s a sort of skin of voxels on it.
Each voxel is roughly 1m^3, and only holds a few things:
- Density
- Two material IDs
- Blending weights of the two materials
They generate the voxels in chunks of 36^3 voxels.
They generate everything in a sequence of passes; each pass writes out a data structure that the next pass reads. It’s a pipeline.
2/4
Reviewing GDC programming presentations based on my own arbitrary criteria, in roughly chronological order. Not affiliated with GDC. A score of > 5 roughly means I’d recommend watching/listening. < 5 roughly means I wouldn’t. I review the presentation in the context of today, not in the context of which they were presented. The purpose of this account is to recommend talks people can watch nowadays. (Q&A portions of presentations are not reviewed - just the main talks only.)
GDC 2017: “Continuous World Generation in 'No Man's Sky'” by Innes McKendrick (@im@mastodon.scot?) of Hello Games https://gdcvault.com/play/1024265/Continuous-World-Generation-in-No
I thought this was better than the other GDC 2017 Hello Games presentation, because this one was more about how to make game content.
They do all their generation in spherical coordinates, and only when they need to save out the result do they project the data to the faces of a cube. The stretching was small enough that it wasn’t noticeable.
1/4
Reviewing GDC programming presentations based on my own arbitrary criteria, in roughly chronological order. Not affiliated with GDC. A score of > 5 roughly means I’d recommend watching/listening. < 5 roughly means I wouldn’t. I review the presentation in the context of today, not in the context of which they were presented. The purpose of this account is to recommend talks people can watch nowadays. (Q&A portions of presentations are not reviewed - just the main talks only.)
Reviewing GDC programming presentations based on my own arbitrary criteria, in roughly chronological order. Not affiliated with GDC. A score of > 5 roughly means I’d recommend watching/listening. < 5 roughly means I wouldn’t. I review the presentation in the context of today, not in the context of which they were presented. The purpose of this account is to recommend talks people can watch nowadays. (Q&A portions of presentations are not reviewed - just the main talks only.)
Reviewing GDC programming presentations based on my own arbitrary criteria, in roughly chronological order. Not affiliated with GDC. A score of > 5 roughly means I’d recommend watching/listening. < 5 roughly means I wouldn’t. I review the presentation in the context of today, not in the context of which they were presented. The purpose of this account is to recommend talks people can watch nowadays. (Q&A portions of presentations are not reviewed - just the main talks only.)
Reviewing GDC programming presentations based on my own arbitrary criteria, in roughly chronological order. Not affiliated with GDC. A score of > 5 roughly means I’d recommend watching/listening. < 5 roughly means I wouldn’t. I review the presentation in the context of today, not in the context of which they were presented. The purpose of this account is to recommend talks people can watch nowadays. (Q&A portions of presentations are not reviewed - just the main talks only.)
Reviewing GDC programming presentations based on my own arbitrary criteria, in roughly chronological order. Not affiliated with GDC. A score of > 5 roughly means I’d recommend watching/listening. < 5 roughly means I wouldn’t. I review the presentation in the context of today, not in the context of which they were presented. The purpose of this account is to recommend talks people can watch nowadays. (Q&A portions of presentations are not reviewed - just the main talks only.)
GDC 2017: "Cold, Hard Cache: Insomniac's Cache Simulator" by Andreas Fredriksson (@deplinenoise@bird.makeup) of Insomniac Games https://gdcvault.com/play/1023962/Cold-Hard-Cache-Insomniac-s
This was interesting. What they were trying to do was find lines of code, across their entire project, that miss the cache a lot.
The way they do this is they run their game on PC, and they use x86's Trap Flag (in EFLAGS) to trap on every instruction. You can use Windows's Vectored Exception Handlers to catch the traps.
1/4
Reviewing GDC programming presentations based on my own arbitrary criteria, in roughly chronological order. Not affiliated with GDC. A score of > 5 roughly means I’d recommend watching/listening. < 5 roughly means I wouldn’t. I review the presentation in the context of today, not in the context of which they were presented. The purpose of this account is to recommend talks people can watch nowadays. (Q&A portions of presentations are not reviewed - just the main talks only.)
Reviewing GDC programming presentations based on my own arbitrary criteria, in roughly chronological order. Not affiliated with GDC. A score of > 5 roughly means I’d recommend watching/listening. < 5 roughly means I wouldn’t. I review the presentation in the context of today, not in the context of which they were presented. The purpose of this account is to recommend talks people can watch nowadays. (Q&A portions of presentations are not reviewed - just the main talks only.)
Reviewing GDC programming presentations based on my own arbitrary criteria, in roughly chronological order. Not affiliated with GDC. A score of > 5 roughly means I’d recommend watching/listening. < 5 roughly means I wouldn’t. I review the presentation in the context of today, not in the context of which they were presented. The purpose of this account is to recommend talks people can watch nowadays. (Q&A portions of presentations are not reviewed - just the main talks only.)
Yep :)
IMO one of the great things about this presentation is I see echoes of it nowadays:
- Making PSOs more flexible with Vulkan's Graphics Pipline Libraries (and IIRC D3D announced something similar this year)
- Players saying ray tracing isn't worth it
Reviewing GDC programming presentations based on my own arbitrary criteria, in roughly chronological order. Not affiliated with GDC. A score of > 5 roughly means I’d recommend watching/listening. < 5 roughly means I wouldn’t. I review the presentation in the context of today, not in the context of which they were presented. The purpose of this account is to recommend talks people can watch nowadays. (Q&A portions of presentations are not reviewed - just the main talks only.)
Reviewing GDC programming presentations based on my own arbitrary criteria, in roughly chronological order. Not affiliated with GDC. A score of > 5 roughly means I’d recommend watching/listening. < 5 roughly means I wouldn’t. I review the presentation in the context of today, not in the context of which they were presented. The purpose of this account is to recommend talks people can watch nowadays. (Q&A portions of presentations are not reviewed - just the main talks only.)
Reviewing GDC programming presentations based on my own arbitrary criteria, in roughly chronological order. Not affiliated with GDC. A score of > 5 roughly means I’d recommend watching/listening. < 5 roughly means I wouldn’t. I review the presentation in the context of today, not in the context of which they were presented. The purpose of this account is to recommend talks people can watch nowadays. (Q&A portions of presentations are not reviewed - just the main talks only.)
Reviewing GDC programming presentations based on my own arbitrary criteria, in roughly chronological order. Not affiliated with GDC. A score of > 5 roughly means I’d recommend watching/listening. < 5 roughly means I wouldn’t. I review the presentation in the context of today, not in the context of which they were presented. The purpose of this account is to recommend talks people can watch nowadays. (Q&A portions of presentations are not reviewed - just the main talks only.)
Reviewing GDC programming presentations based on my own arbitrary criteria, in roughly chronological order. Not affiliated with GDC. A score of > 5 roughly means I’d recommend watching/listening. < 5 roughly means I wouldn’t. I review the presentation in the context of today, not in the context of which they were presented. The purpose of this account is to recommend talks people can watch nowadays. (Q&A portions of presentations are not reviewed - just the main talks only.)
So all those extra calls to ExecuteCommandLists() cost significant perf.
- Explicit multi-GPU works great
But the main point of his presentation seemed to be that everyone in the industry was telling gamers for years that their performance would get 30% higher or whatever, but for enthusiasts with fast CPUs, this didn't actually happen because they weren't CPU-bound. Both DX12 games Nixxes ported had DX11 paths too, and gamers were vocally disappointed about the lack of perf increases.
7/10
Reviewing GDC programming presentations based on my own arbitrary criteria, in roughly chronological order. Not affiliated with GDC. A score of > 5 roughly means I’d recommend watching/listening. < 5 roughly means I wouldn’t. I review the presentation in the context of today, not in the context of which they were presented. The purpose of this account is to recommend talks people can watch nowadays. (Q&A portions of presentations are not reviewed - just the main talks only.)
Regarding MakeResident(), they made the point that they don't want the model of "make all the resources you need resident before using them" but instead want something like "let me use the resource across the PCI bus, while making it resident in the background"
- Async compute isn't as much of a win on PC as it is on consoles, because it requires fences for synchronization, but you can't interact with a fence from within a command list in D3D12. It requires splitting your command lists.
6/10
Reviewing GDC programming presentations based on my own arbitrary criteria, in roughly chronological order. Not affiliated with GDC. A score of > 5 roughly means I’d recommend watching/listening. < 5 roughly means I wouldn’t. I review the presentation in the context of today, not in the context of which they were presented. The purpose of this account is to recommend talks people can watch nowadays. (Q&A portions of presentations are not reviewed - just the main talks only.)
- Regarding memory management and residency, they made the point that doing this on PC is way harder than doing this on console. They point they made was that D3D11 drivers were tuned for Windows's memory manager over many years, but D3D12 drivers can't really be tuned for every individual app's memory manager, now that each app is doing its own memory management. This is a place they said their company hasn't yet (as of 2017) gotten to parity with D3D11.
5/10
Reviewing GDC programming presentations based on my own arbitrary criteria, in roughly chronological order. Not affiliated with GDC. A score of > 5 roughly means I’d recommend watching/listening. < 5 roughly means I wouldn’t. I review the presentation in the context of today, not in the context of which they were presented. The purpose of this account is to recommend talks people can watch nowadays. (Q&A portions of presentations are not reviewed - just the main talks only.)
- Their feedback about barriers was that their performance characteristics on different GPUs was wildly different. It was difficult to make the barriers correct, but it was really difficult to find a sequence of barriers that was semi-optimal on all devices. They went so far as to say essentially the only way to do this well would be to test on every GPU, and then flat out said that doing so would be completely impractical for their company.
4/10
Reviewing GDC programming presentations based on my own arbitrary criteria, in roughly chronological order. Not affiliated with GDC. A score of > 5 roughly means I’d recommend watching/listening. < 5 roughly means I wouldn’t. I review the presentation in the context of today, not in the context of which they were presented. The purpose of this account is to recommend talks people can watch nowadays. (Q&A portions of presentations are not reviewed - just the main talks only.)
They didn't pull any punches! They weren't trying to sell me anything.
- They started off saying they just flat-out don't like PSOs. The inputs to PSO creation come from various places, with various lifetimes, and you often don't know what you need to create them until it's too late. Their solution was "have QA play the game and cache all the shaders and ship the cache on disk" but I don't think that's a real solution because the stuff on disk is hardware- and driver-dependent.
3/10
Reviewing GDC programming presentations based on my own arbitrary criteria, in roughly chronological order. Not affiliated with GDC. A score of > 5 roughly means I’d recommend watching/listening. < 5 roughly means I wouldn’t. I review the presentation in the context of today, not in the context of which they were presented. The purpose of this account is to recommend talks people can watch nowadays. (Q&A portions of presentations are not reviewed - just the main talks only.)
Reviewing GDC programming presentations based on my own arbitrary criteria, in roughly chronological order. Not affiliated with GDC. A score of > 5 roughly means I’d recommend watching/listening. < 5 roughly means I wouldn’t. I review the presentation in the context of today, not in the context of which they were presented. The purpose of this account is to recommend talks people can watch nowadays. (Q&A portions of presentations are not reviewed - just the main talks only.)
GDC 2017: "Advanced Graphics Tech: How to Thrive on the Bleeding Edge Whilst Avoiding Death by 1,000 Paper Cuts" by Jurjen Katsman of Nixxes https://gdcvault.com/play/1024384/Advanced-Graphics-Tech-How-to
I actually thought this was awesome. This speaker is the founder of Nixxes, who started out as a programmer, and whose company shipped two PC ports (Rise of the Tomb Raider and Deus Ex Mankind Divided) on DirectX 12. They're one of the first companies who shipped AAA titles on DirectX 12.
1/10
Reviewing GDC programming presentations based on my own arbitrary criteria, in roughly chronological order. Not affiliated with GDC. A score of > 5 roughly means I’d recommend watching/listening. < 5 roughly means I wouldn’t. I review the presentation in the context of today, not in the context of which they were presented. The purpose of this account is to recommend talks people can watch nowadays. (Q&A portions of presentations are not reviewed - just the main talks only.)
Reviewing GDC programming presentations based on my own arbitrary criteria, in roughly chronological order. Not affiliated with GDC. A score of > 5 roughly means I’d recommend watching/listening. < 5 roughly means I wouldn’t. I review the presentation in the context of today, not in the context of which they were presented. The purpose of this account is to recommend talks people can watch nowadays. (Q&A portions of presentations are not reviewed - just the main talks only.)
The main takeaways are mostly:
- Linked lists defeat the out of order capabilities of the processor, and there's basically nothing you can do about it
- The hardware is already optimized for iterating through arrays, so there's not really anything you can do to speed that up
Review: 10/10 I learned a lot!!! The specific numbers aren't really relevant nowadays, but the approach he used to compare the throughput of different units, and how to measure, were really illustrative.
Reviewing GDC programming presentations based on my own arbitrary criteria, in roughly chronological order. Not affiliated with GDC. A score of > 5 roughly means I’d recommend watching/listening. < 5 roughly means I wouldn’t. I review the presentation in the context of today, not in the context of which they were presented. The purpose of this account is to recommend talks people can watch nowadays. (Q&A portions of presentations are not reviewed - just the main talks only.)
Reviewing GDC programming presentations based on my own arbitrary criteria, in roughly chronological order. Not affiliated with GDC. A score of > 5 roughly means I’d recommend watching/listening. < 5 roughly means I wouldn’t. I review the presentation in the context of today, not in the context of which they were presented. The purpose of this account is to recommend talks people can watch nowadays. (Q&A portions of presentations are not reviewed - just the main talks only.)
Reviewing GDC programming presentations based on my own arbitrary criteria, in roughly chronological order. Not affiliated with GDC. A score of > 5 roughly means I’d recommend watching/listening. < 5 roughly means I wouldn’t. I review the presentation in the context of today, not in the context of which they were presented. The purpose of this account is to recommend talks people can watch nowadays. (Q&A portions of presentations are not reviewed - just the main talks only.)
Reviewing GDC programming presentations based on my own arbitrary criteria, in roughly chronological order. Not affiliated with GDC. A score of > 5 roughly means I’d recommend watching/listening. < 5 roughly means I wouldn’t. I review the presentation in the context of today, not in the context of which they were presented. The purpose of this account is to recommend talks people can watch nowadays. (Q&A portions of presentations are not reviewed - just the main talks only.)
Reviewing GDC programming presentations based on my own arbitrary criteria, in roughly chronological order. Not affiliated with GDC. A score of > 5 roughly means I’d recommend watching/listening. < 5 roughly means I wouldn’t. I review the presentation in the context of today, not in the context of which they were presented. The purpose of this account is to recommend talks people can watch nowadays. (Q&A portions of presentations are not reviewed - just the main talks only.)
GDC 2016: "Taming the Jaguar: x86 Optimization at Insomniac Games" by Andreas Fredriksson (@deplinenoise@bird.makeup) of Insomniac Games https://gdcvault.com/play/1023340/Taming-the-Jaguar-x86-Optimization
I thought this was really good, because it discussed CPU microarchitecture in an understandable way.
The first section was about the frontend of the chip, which is the part that fetches instructions. The Jaguar can fetch 2 instructions per cycle, which can actually be a bottleneck if you're doing a bunch of quick math on registers.
1/6