Jo King-Yost: Bungie's Force Multipliers: Production Engineers
https://gdcvault.com/play/1025970/Bungie-s-Force-Multipliers-Production
Geoff Evans: Shipping Features Responsibly
| Latency Comparison Numbers (~2012) | |
| ---------------------------------- | |
| L1 cache reference 0.5 ns | |
| Branch mispredict 5 ns | |
| L2 cache reference 7 ns 14x L1 cache | |
| Mutex lock/unlock 25 ns | |
| Main memory reference 100 ns 20x L2 cache, 200x L1 cache | |
| Compress 1K bytes with Zippy 3,000 ns 3 us | |
| Send 1K bytes over 1 Gbps network 10,000 ns 10 us | |
| Read 4K randomly from SSD* 150,000 ns 150 us ~1GB/sec SSD |
| enum FocusDir | |
| { | |
| DIR_W, | |
| DIR_E, | |
| DIR_N, | |
| DIR_S | |
| }; | |
| static FocusDir get_quadrant(float dx, float dy) | |
| { |
| Below I collected relevant links and papers more or less pertaining to the subject of tetrahedral meshes. | |
| It's an ever-growing list. | |
| ------------------------------ | |
| Relevant links: | |
| http://en.wikipedia.org/wiki/Types_of_mesh | |
| http://en.wikipedia.org/wiki/Tetrahedron | |
| http://en.wikipedia.org/wiki/Simplicial_complex |
| class FileWatcher | |
| { | |
| public: | |
| FileWatcher(const Path& path) | |
| : m_Path(path) | |
| , m_DirHandle(INVALID_HANDLE_VALUE) | |
| , m_BufferSize(CORE_KB(100)) | |
| , m_Buffer(nullptr) | |
| , m_ChangedFiles(1024) | |
| { |
| // Some shitty boolean logic code because WebGL... | |
| bool and(int x, int y) | |
| { | |
| return mod(float(x), exp2(float(y))) != 0.0; | |
| } | |
| int GetTriangleIndex(vec3 position) | |
| { | |
| // TODO: Add integer arithmetic to simplify the boolean logic. |
| max(-x,-y) = -min(x,y) | |
| min(-x,-y) = -max(x,y) | |
| abs(x) = abs(-x) | |
| abs(x) = max(x,-x) = -min(x,-x) | |
| abs(x*a) = if (a >= 0) abs(x)*a | |
| (a < 0) -abs(x)*a | |
| // basically any commutative operation | |
| min(x,y) + max(x,y) = x + y |
| ; How to render a cube using a single 14-index triangle strip | |
| ; (Reposted from http://www.asmcommunity.net/forums/topic/?id=6284#post-45209) | |
| ; Drawbacks: no support for per-vertex normals, UVs, etc. | |
| ; | |
| ; 1-------3-------4-------2 Cube = 8 vertices | |
| ; | E __/|\__ A | H __/| ================= | |
| ; | __/ | \__ | __/ | Single Strip: 4 3 7 8 5 3 1 4 2 7 6 5 2 1 | |
| ; |/ D | B \|/ I | 12 triangles: A B C D E F G H I J K L | |
| ; 5-------8-------7-------6 | |
| ; | C __/| |
Jo King-Yost: Bungie's Force Multipliers: Production Engineers
https://gdcvault.com/play/1025970/Bungie-s-Force-Multipliers-Production
Geoff Evans: Shipping Features Responsibly
| VSync under Windows, revisited | |
| http://www.virtualdub.org/blog/pivot/entry.php?id=157 | |
| Windowed mode, vsync stutter, DWM (Vista+) | |
| http://armageddongames.net/showthread.php?96793-Windowed-mode-vsync-stutter-DWM-(Vista-) | |
| DwmFlush function | |
| https://msdn.microsoft.com/en-us/library/windows/desktop/dd389405(v=vs.85).aspx | |
| Bug 856427 - Add vsync support on windows |
| // NOTE: We parse the constant table by hand since shadergen has to link against the | |
| // Xenon (XBox 360) d3dx lib statically if Xbox builds are to be supported. That means | |
| // we can't easily use non-Xenon D3DX from here. | |
| // **** This part copy & pasted from D3DX headers (but it's a file format so it's consistent | |
| // across versions) | |
| //---------------------------------------------------------------------------- | |
| // D3DXSHADER_CONSTANTTABLE: | |
| // ------------------------- |