Recent from talks
Nothing was collected or created yet.
Michael Abrash
View on WikipediaMichael Abrash is an American programmer and technical writer. He has written dozens of magazine articles and multiple books on code optimization and software-rendered graphics for IBM PC compatibles. He worked at id Software in the mid-1990s on the rendering technology for Quake. He later wrote the Pixomatic software renderer for RAD Game Tools. Since 2014, he has been the chief scientist of Oculus VR, a subsidiary of Meta Platforms.[2]
Key Information
Abrash started his career in 1982 writing action video games for the IBM PC, which eventually resulted in a 1990 book, Zen of Assembly Language Volume 1: Knowledge, about optimization for the 16-bit 8086 and 8088 processors.[3] He began writing about programming the EGA and VGA hardware of IBM PC compatibles for Programmer's Journal in the late 1980s, followed by a column for Dr. Dobb's Journal in the early 1990s. In the latter, he introduced a method of adjusting VGA mode 13h to have a resolution of 320×240 with square pixels, which he called Mode X. He also used his Dr. Dobbs's column to write about the details of his work on Quake.
Game programmer
[edit]Abrash began writing video games in the early days of the IBM PC and the Color Graphics Adapter. His first commercial game was a clone of Space Invaders published by Datamost in 1982 as Space Strike.[4] He followed it with Cosmic Crusader (1982) and Big Top (1983), both published by Funtastic. Working with Dan Illowsky, who had previously programmed the Apple II Pac-Man clone Snack Attack, he co-wrote Snack Attack II (1982) for the IBM PC.[5] All of his IBM PC games were written in 8086 assembly language.
After working at Microsoft on graphics and assembly code for Windows NT 3.1, he was hired by id Software in the mid-1990s to work on Quake. Some of the technology behind Quake is documented in Abrash's Ramblings in Realtime published in Dr. Dobb's Journal.[6] He mentions Quake as his favourite game of all time.[7] After Quake was released, Abrash returned to Microsoft to work on natural language research, then moved to the Xbox team until 2001.[8]
In 2002, Abrash went to RAD Game Tools where he co-wrote the Pixomatic software renderer, which emulates the functionality of a DirectX 7-level graphics card. At the end of 2005, Pixomatic was acquired by Intel. When developing Pixomatic, he and Mike Sartain designed a new architecture called Larrabee, which now is part of Intel's GPGPU project.[9]
Gabe Newell, managing director of Valve, said that he had "been trying to hire Michael Abrash forever. [...] About once a quarter we go for dinner and I say 'are you ready to work here yet?'"[10] In 2011 Abrash joined Valve.[11]
On March 28, 2014, three days after Facebook announced agreements to purchase the virtual reality headset company,[12] Oculus VR published a statement saying that Michael Abrash had joined their company as Chief Scientist.[2] This reunited him with id Software's John Carmack, who was chief technology officer there at the time.
Technical writer
[edit]Michael Abrash was a columnist in the 1980s for the magazine Programmer's Journal. The articles were collected in the 1989 book, Power Graphics Programming. His second book, Zen of Assembly Language Volume 1: Knowledge (1990),[13] is about writing efficient assembly code for the original IBM PC's Intel 8088 processor, but was released after the 80486 CPU was already being used in IBM PC compatibles.[14] Volume 2 was never published.
In the early to mid-1990s, Abrash wrote a column about graphics programming for IBM PC compatibles for Dr. Dobb's Journal called "Ramblings in Realtime." In 1991, his column introduced Mode X: a 256 color 320x240 graphics mode with square pixels instead of the slightly elongated pixels of the standard 320x200 mode. The same column covers a VGA feature allowing up to four pixels to be written at once—something which had not been widely documented outside of the VGA specification. The article and its follow-ups ignited interest among MS-DOS game programmers. "Ramblings in Realtime" also covered polygon drawing, 3D graphics, and texture mapping.
Much of the content of Zen of Assembly Language was updated in Zen of Code Optimization: The Ultimate Guide to Writing Software That Pushes PCs to the Limit (1994).[15] In 1997 Abrash's Graphics Programming Black Book,[16][17] was published. It is a collection of Dr. Dobb's Journal articles and his work on the Quake graphic subsystem.
Abrash stopped writing publicly in the 2000s until maintaining a public blog at Valve, "Ramblings in Valve Time", from April 2012 until January 2014.
References
[edit]- ^ Abrash, Michael (April 1, 1997). "Some Things I've Learned About Win32 Game Programming". Dr. Dobb's.
- ^ a b "Introducing Michael Abrash, Oculus Chief Scientist". Oculus VR. 2014-03-28. Retrieved 28 March 2014.
- ^ Abrash, Michael (January 1990). Zen of Assembly Language: Knowledge. Scott Foresman Trade. ISBN 978-0-673-38602-1.
- ^ Lacine, Mark (Mar–Apr 1983). "Micro-Reviews". Computer Gaming World. Vol. 1, no. 9. p. 44.
- ^ Hague, James. "The Giant List of Classic Game Programmers".
- ^ Abrash, Michael (1996-02-01). "Ramblings in Realtime". www.drdobbs.com. Retrieved 2010-07-10.
- ^ Valve Pipeline. "Pipeline Interviews: Michael Abrash on Virtual Reality & the Future of Gaming". YouTube. Archived from the original on 2021-12-12. Retrieved 8 November 2016.
- ^ "Xbox Graphics Analyzed". GameSpot. Retrieved 2022-08-25.
- ^ Abrash, Michael (2009-04-01). "A First Look at the Larrabee New Instructions (LRBni)". drdobbs.com/architecture-and-design. Retrieved 2010-07-10.
- ^ Walker, John (2007-11-21). "RPS Exclusive: Gabe Newell Interview". Rock, Paper, Shotgun. Retrieved 22 January 2010.
- ^ Crossley, Rob (2011-05-13). "Valve hires world-class development trio". Develop. Retrieved 16 May 2011.
- ^ "Facebook to Acquire Oculus". Facebook. 2014-03-25. Retrieved 28 March 2014.
- ^ Abrash, Michael (1994-01-15). Zen of Graphics Programming: The Ultimate Guide to Writing Fast PC Graphics. Coriolis Group; Bk&Disk edition. ISBN 978-1-883577-08-7.
- ^ Hague, James (2008-02-18). "Five Memorable Books About Programming". Retrieved 2010-07-10.
- ^ Abrash, Michael (1994-12-08). Zen of Code Optimization: The Ultimate Guide to Writing Software That Pushes PCs to the Limit. Coriolis Group Books. ISBN 978-1-883577-03-2.
- ^ Abrash, Michael (July 1997). Graphics Programming Black Book. Coriolis Group Books. ISBN 978-1-57610-174-2.
- ^ Abrash, Michael (2001-11-01). "Graphics Programming Black Book". www.drdobbs.com/high-performance-computing. Retrieved 2010-07-10.
External links
[edit]- Ramblings in Valve Time - A blog by Michael Abrash (archived)
- Michael Abrash's developer profile at MobyGames
- Ramblings in Realtime by Michael Abrash, detailed description of Quake's graphics engine programming (PDF version)
- Graphics Programming Black Book by Michael Abrash (HTML version and ebook source)
- "40 minutes with Michael Abrash of Valve Software", Audio interview with Michael Abrash at QuakeCon 2012 discussing Abrash's career and work at Valve
Michael Abrash
View on GrokipediaEarly life and education
Early interests
Michael Abrash was born around 1957 in the United States. Abrash developed an early fascination with computers in the late 1970s, during the rise of personal computing. At school, he began programming on Apple II systems, which sparked his initial experiments with code and laid the groundwork for his lifelong interest in graphics and performance optimization.[5] This hands-on exposure to the Apple platform allowed him to explore basic programming concepts through trial and error, fostering a self-directed approach to learning. Early personal computing experiments on systems like the Apple II inspired Abrash to attempt recreating arcade experiences in software, blending creativity with technical challenge. Around 1980, Abrash transitioned from academic pursuits to focusing on self-taught programming skills, dedicating himself to mastering assembly language and graphics techniques outside formal education.[6] This shift marked the beginning of his immersion in the burgeoning field of computer game development.Academic background
Abrash earned an undergraduate degree in geography from Clark University in 1979.[7][8] He then pursued graduate studies in the PhD program in Energy Management and Policy at the University of Pennsylvania. He reached all but dissertation (ABD) status in the program but left academia around 1982, after the success of his game Space Strike, to dedicate himself fully to a career in computing.[7]Professional career
Early game development
Michael Abrash entered the video game industry in 1982 by developing action-oriented titles for the IBM PC, leveraging the platform's emerging capabilities shortly after its 1981 launch. His debut commercial effort, Space Strike, was a fixed shooter reminiscent of Space Invaders, where players commanded a gunship to fend off descending alien forces across seven difficulty levels, complete with destructible barriers and bonus saucer targets. Published by Datamost, the game exemplified the arcade-style experiences Abrash crafted for early PC users, emphasizing fast-paced gameplay within the constraints of monochrome CGA graphics and PC speaker audio.[9] That same year, Abrash released Cosmic Crusader, another self-booting PC Booter title published by Funtastic, which drew inspiration from Galaxian with its diving alien formations, protective shields, and escalating challenges across nine levels. In this game, players piloted a defender ship to repel an interstellar invasion, earning points for neutralizing command vessels and triads while managing enemy bomb drops. Abrash also produced additional shareware games during this period, such as Big Top in 1983, which further explored arcade mechanics adapted to the PC environment. These works were often packaged modestly—typically in plastic bags with manuals—reflecting the informal distribution norms of early PC software.[10][11] Abrash's programming approach centered on 8086 assembly language to optimize performance on the IBM PC's 8088 processor, which operated at 4.77 MHz with limited memory and graphics bandwidth. Techniques like efficient loop unrolling, register maximization, and minimizing memory accesses were essential to achieve smooth animation and responsive controls, countering bottlenecks such as DRAM refresh cycles and display memory delays that could inflate execution times. By sidestepping high-level languages and DOS overhead, he squeezed arcade-like fluidity from hardware ill-suited for gaming, laying the groundwork for his later writings on assembly optimization.[12] Early distribution relied on small publishers alongside direct channels like advertisements and reviews in PC magazines such as Computer Gaming World and Softalk PC, which helped reach hobbyist audiences. As bulletin board systems proliferated in the mid-1980s, these shareware titles spread via floppy disk swaps and online downloads, fostering a grassroots community around PC gaming before mainstream retail dominance.[13][14]Microsoft contributions
Michael Abrash joined Microsoft in 1992 as a contractor, where he took on the role of graphics lead, drawing on his prior expertise in PC game development to tackle performance challenges in operating system graphics.[15] His early work focused on low-level optimizations, including assembly code for the 80x86 architecture, which significantly improved rendering efficiency in the emerging 32-bit environment.[15] As graphics lead, Abrash oversaw the development of the Graphics Device Interface (GDI) for the first two versions of Windows NT, 3.1 (1993) and 3.5 (1994).[16] The GDI served as the core subsystem for 2D graphics rendering, handling device-independent drawing operations essential for applications transitioning from 16-bit to 32-bit systems.[16] Abrash's team emphasized performance tuning to ensure compatibility and speed across diverse hardware, addressing bottlenecks in bitmap manipulation and line drawing primitives through hand-optimized routines.[15] Abrash also contributed to early multimedia extensions and display driver architectures during this period, facilitating smoother integration of graphics accelerators and video playback in Windows NT.[15] These efforts were pivotal in making Windows NT viable for professional and multimedia workloads, laying groundwork for more advanced graphics APIs in later Microsoft products.[16] By 1995, his optimizations had helped stabilize the platform's graphics subsystem, enabling broader adoption amid the shift to protected-mode 32-bit computing.[15]id Software involvement
After leaving Microsoft, Michael Abrash joined id Software in 1995 as a programmer, brought on by John Carmack to help develop the rendering technology for Quake.[17] His expertise in low-level graphics programming made him a key collaborator, working alongside Carmack and Michael John to push the boundaries of real-time 3D rendering in software.[18] Abrash focused on optimizing Quake's id Tech 2 engine, particularly its software renderer, which relied on CPU processing without hardware acceleration to deliver playable performance on contemporary Pentium processors. He contributed to core elements like perspective-correct texture mapping—implemented via interpolation every 16 pixels to approximate full correction efficiently—and visibility culling using binary space partitioning (BSP) trees combined with potentially visible sets (PVS) to minimize unnecessary polygon drawing. These techniques enabled the engine to handle complex 3D environments, achieving frame rates exceeding 20 on a 75 MHz Pentium, allowing smooth gameplay in fully polygonal worlds with dynamic lighting and particle effects.[18] His assembly-level optimizations, building on techniques honed during his Microsoft tenure, were crucial for squeezing maximum performance from the hardware.[17] Abrash departed id Software in 1997, returning to Microsoft.[18]RAD Game Tools and Xbox work
Following his time at id Software, Michael Abrash returned to Microsoft in 1997, where he first contributed to natural language research before joining the Xbox team. He focused on optimizing the graphics subsystem for the original Xbox, launched in 2001, achieving high performance metrics such as up to 125 million Gouraud-shaded, two-texture triangles per second at 250 MHz, including transformation, clipping, and projection operations.[19] These efforts leveraged occlusion detection techniques to boost fill rates by up to four times, enabling efficient rendering on the console's hardware.[19] Abrash played a key role in adapting DirectX 8 for the Xbox, extending its capabilities to fully support the GPU's features while providing developers with sample code and documentation. He optimized shader pipelines, implementing programmable vertex shaders with up to 192 quadwords and 128 instructions for tasks like transformations, blending, and morphing, alongside pixel shaders using nine-instruction programs and eight register combiners for advanced effects. Texture compression was a priority to manage the 64 MB unified memory architecture, allowing up to four textures per pixel and supporting cascading lookups for cube maps and other formats. These optimizations emphasized cross-platform rendering techniques, drawing on NVIDIA's pipeline design to bridge PC and console development during the industry's shift toward dedicated gaming hardware. His earlier work on Quake optimizations briefly influenced these console efforts by informing efficient polygon processing.[19][19][19] In 2002, Abrash joined RAD Game Tools, where he co-developed Pixomatic, a high-performance software rasterizer emulating DirectX 7-level graphics functionality for Windows and Linux. Co-authored with Mike Sartain, Pixomatic targeted x86 processors and was optimized through techniques like assembly-level code tuning to achieve competitive rendering speeds without dedicated hardware. Abrash documented these optimizations in a series of articles, challenging common assumptions about processor utilization and instruction scheduling for 3D rasterization.[20][21][22] From 2009 to 2010, while at RAD, Abrash contributed to Intel's Larrabee graphics architecture project, focusing on software rendering optimizations.[23]Valve Corporation role
In 2011, Michael Abrash joined Valve Corporation as a graphics programmer, marking a significant addition to the company's technical team. Valve co-founder Gabe Newell had pursued Abrash for years, famously stating, "I’ve been trying to hire Michael Abrash since forever. About once a quarter we go for dinner and I say ‘are you ready to work here yet?’" This hiring reflected Abrash's established expertise in performance optimization and real-time graphics, areas that aligned with Valve's ambitions in game development and emerging technologies.[24] During his tenure from 2011 to 2014, Abrash led graphics research initiatives at Valve, concentrating on enhancements to the Source engine and the creation of early virtual reality (VR) prototypes. His work involved optimizing rendering pipelines and exploring low-latency techniques essential for immersive experiences, building on his long-standing interest in such technologies dating back to his contributions to Quake at id Software. These efforts included prototyping VR hardware integrations with PC gaming, which laid foundational concepts for Valve's later SteamVR ecosystem, including elements that influenced the design of the Valve Index headset.[25][26] Abrash's research extended to performance improvements in the Steam client, where he applied optimization strategies to enhance graphics handling and user interface responsiveness across distributed gaming environments. He also contributed to rendering advancements for the Half-Life series, refining Source engine capabilities to support higher-fidelity visuals and smoother frame rates in complex scenes. These contributions were pivotal in Valve's transition toward VR-ready game technology, emphasizing predictive rendering and hardware-software co-design to minimize motion sickness and maximize presence.[27]Oculus VR and Reality Labs
In March 2014, shortly after Facebook's acquisition of Oculus VR, Michael Abrash joined the company as Chief Scientist, bringing his expertise from Valve to advance virtual reality (VR) development.[25][28] As Chief Scientist, Abrash has directed research and engineering efforts at Oculus VR, now part of Meta's Reality Labs division, focusing on immersive hardware innovations. His leadership has shaped key VR products, including the Oculus Rift headset series for high-fidelity PC-tethered experiences and the standalone Quest lineup, which introduced six-degrees-of-freedom tracking without external sensors starting with the 2019 Quest model.[29][25] Abrash's work has extended into augmented reality (AR) and mixed reality, overseeing prototypes like the Orion AR glasses, which integrate custom silicon for efficient machine learning tasks such as eye and hand tracking to enable seamless real-world overlays. Under his guidance, Reality Labs has advanced mixed reality capabilities, including AI-enhanced rendering techniques that optimize visual fidelity and performance in hybrid VR/AR environments.[30][31] In 2025, Abrash delivered a keynote at Meta Connect alongside Richard Newcombe, emphasizing contextual AI for always-on AR glasses that provide proactive, environment-aware assistance without manual activation. He predicted deeper AI-metaverse integration, including personalized digital assistants capable of real-time translation, memory augmentation, and social enhancements, potentially arriving by the late 2020s as hardware and AI efficiencies improve.[32][4] This phase builds on Abrash's earlier Valve prototypes, transitioning from exploratory VR hardware to scalable consumer ecosystems at Meta.[33]Writings and publications
Books
Michael Abrash's early books established him as a leading authority on low-level programming optimization for personal computers, particularly in the context of assembly language and graphics performance. His publications, often drawing from his magazine articles, provided in-depth technical guidance that emphasized hardware understanding to achieve maximum efficiency on limited 1980s and 1990s hardware. These works focused on practical techniques rather than theoretical abstractions, making them essential resources for developers pushing the boundaries of PC capabilities. Abrash's first major book, Power Graphics Programming, published in 1989 by Que Corporation, compiled his columns from Programmer's Journal. Spanning 298 pages, it offered techniques for optimizing graphics on early IBM PC compatibles, including efficient data handling and hardware tweaks for VGA and EGA modes. The book provided code examples and strategies to maximize rendering speed, serving as an early reference for PC graphics programmers.[34] Abrash's next book, Zen of Assembly Language: Knowledge, published in 1990 by Scott, Foresman and Company, serves as a comprehensive guide to optimizing code for the Intel 8086 and 80286 processors. Spanning over 800 pages, it delves into cycle counting, instruction pipelining, and the intricacies of the IBM PC's architecture, teaching readers to write "blindingly fast code" through a deep understanding of machine-level operations. The book includes detailed explanations of the LADS assembler and numerous code examples that illustrate how to exploit processor behaviors for performance gains, positioning it as a foundational text for assembly programming.[35][36][37] Building on this foundation, Zen of Code Optimization: The Ultimate Guide to Writing Software That Pushes PCs to the Limit, released in 1994 by The Coriolis Group, expands the scope to include higher-level languages like C and C++ alongside assembly. This 449-page volume covers advanced x86 performance topics, such as cache management, branch prediction, and superscalar execution on processors like the 80486 and Pentium. Abrash introduces the "Zen Timer," a practical tool for benchmarking code speed, and provides hundreds of optimized examples to demonstrate techniques for minimizing bottlenecks in real-world applications. The book underscores the interplay between software and hardware, offering strategies that were innovative for their time and not widely covered elsewhere.[38][39][40] Zen of Graphics Programming: The Ultimate Guide to Writing Fast PC Graphics, first published in 1995 by The Coriolis Group (second edition 1996), focuses on advanced graphics techniques for PC hardware. The 750-page first edition (832 pages in the second) covers topics like texture mapping, 3D animation, hidden surface removal, antialiasing, and optimizations for VGA modes. It includes practical code for real-time rendering, building on Abrash's assembly expertise to enable high-performance graphics in games and applications. Much of this material was later incorporated into his subsequent compilation.[41][42] Abrash's most extensive work, Michael Abrash's Graphics Programming Black Book (Special Edition), published in 1997 by The Coriolis Group, compiles and expands his earlier writings into a 1,342-page tome on graphics and optimization. It covers pivotal techniques like the Mode X graphics mode for efficient VGA programming, polygon rasterization algorithms, texture mapping, and the software rendering engine behind Quake, including surface caching and edge clipping methods. The book integrates assembly-level optimizations with broader graphics concepts, such as hidden surface removal and perspective-correct interpolation, drawn from Abrash's contributions to id Software's projects. This special edition consolidates material from prior books and articles, providing a holistic reference for real-time 3D graphics on PCs. In 2001, Abrash released the book for free online, where it remains available.[43][44][12][45][46] These books had a profound impact on game development, serving as "bibles" for programmers seeking to maximize performance on resource-constrained hardware. Widely adopted in the 1990s, they influenced key figures in the industry, including those at id Software, and remain valued for their insights into optimization mindsets, even as hardware has evolved. The Graphics Programming Black Book in particular is celebrated for demystifying complex rendering pipelines and inspiring heroic coding practices that enabled groundbreaking titles like Doom and Quake.[47][48][49]Magazine articles
Michael Abrash contributed a series of columns to Programmer's Journal from 1986 to 1990, focusing on assembly language optimization techniques for PC graphics programming. These writings emphasized practical strategies for maximizing performance on early IBM PC compatibles, including efficient code alignment, data handling, and hardware-specific tweaks. Abrash's columns in this period totaled over two dozen pieces, which were later compiled and reprinted in his 1989 book Power Graphics Programming.[34] In the early 1990s, Abrash shifted to Dr. Dobb's Journal, where he authored the regular column "Ramblings in Realtime" through the mid-1990s, continuing his exploration of assembly optimization for graphics. Key topics included the undocumented VGA Mode X, a 320×240 resolution with square pixels and 256 colors that enabled smoother animations and page flipping compared to the standard Mode 13h. He also covered interrupt handling to minimize latency in real-time applications and foundational methods for early 3D transformations, such as perspective projection and polygon rasterization on limited hardware. These articles, numbering around 30, provided code snippets and benchmarks that demonstrated up to 50% performance gains in graphics rendering.[50][51][52] Abrash's influence extended to game engine development with a series of articles on Quake's technology published in Dr. Dobb's Journal from 1996 to 1997. These pieces detailed the implementation of binary space partitioning (BSP) trees for efficient visible surface determination, enabling the engine to traverse complex 3D worlds by subdividing space along polygon planes. He explained lightmapping techniques, where precomputed lighting grids were applied to polygons during offline processing, achieving dynamic illumination without real-time ray tracing on 1990s PCs. Collectively, Abrash's magazine output—spanning dozens of articles across both publications—became foundational reading for the PC game development community, shaping optimization practices that powered early 3D titles.[53][54][55][12]Technical contributions
Graphics programming innovations
One of Michael Abrash's seminal contributions to graphics programming was the development of Mode X in 1987, an undocumented VGA display mode optimized for 320×240 resolution with 256 colors.[51] This mode utilized a custom reconfiguration of the VGA hardware, enabling a 1:1 aspect ratio for square pixels, which eliminated the need for aspect ratio corrections in graphics drawing routines like circles and lines.[51] By leveraging the VGA's planar memory organization in chain-4 mode, Mode X stored four pixels per byte across four bit planes, allowing efficient parallel processing and reducing the overhead of bit-masking operations common in standard modes like 13H.[56] For sprite handling, it supported rapid page flipping between display pages for smooth animation and used VGA latches to copy sprites four pixels at a time from offscreen memory, achieving up to four times the performance of mode 13H for blitting operations.[51] The pixel addressing in Mode X display memory followed the formula:offset = base + (y \times 80) + \left\lfloor \frac{x}{4} \right\rfloor + ((x \mod 4) \times 64)
offset = base + (y \times 80) + \left\lfloor \frac{x}{4} \right\rfloor + ((x \mod 4) \times 64)
