Skip to content

Instantly share code, notes, and snippets.

@edecoux
Last active May 14, 2024 10:32
Show Gist options
  • Save edecoux/fa08936089aab1b70abe4371d200ea5d to your computer and use it in GitHub Desktop.
Save edecoux/fa08936089aab1b70abe4371d200ea5d to your computer and use it in GitHub Desktop.
John Carmack.md

John Carmack is an influential computer programmer, video game developer, and engineer, best known for his work on popular first-person shooter games such as Wolfenstein 3D, Doom, and Quake. Born on August 20, 1970, in Shawnee Mission, Kansas, Carmack co-founded id Software in 1991, which became a pioneering company in the video game industry.

Carmack's work at id Software was instrumental in developing and popularizing the first-person shooter genre. He was also an early advocate for open-source software and made significant contributions to the development of real-time 3D graphics. As a result, his programming techniques have had a lasting impact on the video game industry.

In addition to his work in gaming, Carmack is also known for his interest in aerospace and virtual reality. In 2000, he founded Armadillo Aerospace, a company focused on developing reusable rocket technology. In 2013, he joined Oculus VR as Chief Technology Officer, where he worked on the development of the Oculus Rift virtual reality headset until he left the company in November 2019.

Throughout his career, Carmack has received numerous awards and accolades for his work, including a Lifetime Achievement Award at the Game Developers Choice Awards in 2010 and an induction into the Academy of Interactive Arts and Sciences Hall of Fame in 2001.


John Carmack's technical work spans multiple areas, but he is most well-known for his contributions to computer graphics and game engine development. Here are some highlights of his technical achievements:

  1. Raycasting: Carmack's work on Wolfenstein 3D (1992) involved creating a raycasting algorithm that would render pseudo-3D environments efficiently on the hardware available at the time. Raycasting is a technique in which rays are projected from the viewer's position into the environment to determine what objects are visible and how they should be drawn on the screen. This allowed for real-time rendering of the first-person perspective in a 3D environment, which was groundbreaking at the time. Carmack used a 2D grid-based map to represent the game world and cast rays from the player's position to determine visible walls. The raycasting technique was computationally efficient, allowing for real-time rendering on the hardware available at the time. This technique paved the way for future first-person shooter games and influenced the development of more advanced 3D rendering techniques.
  2. Binary Space Partitioning (BSP): With the development of Doom (1993), Carmack introduced a new way of rendering complex 3D environments using binary space partitioning (BSP) trees. This technique divides a 3D space into smaller, convex subspaces, making it more efficient to determine which parts of the environment should be rendered from a given viewpoint. BSP trees were used to divide the 3D space into smaller convex subspaces, allowing for more efficient visibility calculations. The game engine could quickly determine which parts of the environment were visible from the player's viewpoint and render them accordingly. This technique allowed for more complex and detailed environments while maintaining real-time performance.
  3. Lightmaps: In Quake (1996), Carmack introduced lightmaps, a technique to precompute and store lighting information for static objects in a 3D scene. This allowed for more realistic and efficient rendering of shadows and indirect lighting effects in real-time. Lightmaps are precomputed textures representing the lighting information of a 3D scene. By baking lighting information into textures and applying them to the surfaces in the scene, Quake could achieve more realistic lighting and shadows with relatively low computational cost. This allowed for real-time rendering of scenes with complex lighting, including indirect illumination and soft shadows.
  4. Carmack's Reverse: Also known as the "z-fail" method, Carmack's Reverse is a technique to address issues with shadow volume rendering in 3D graphics. It was developed during the creation of Doom 3 (2004) and has since become a widely used technique in real-time shadow rendering. Carmack's Reverse is a shadow volume rendering technique designed to address issues with traditional shadow volume methods. It involves reversing the order of depth testing for shadow volumes, which helps resolve artifacts caused by intersecting geometry. This technique is more robust and can handle cases where the camera is inside the shadow volume, leading to more accurate shadow rendering in real-time 3D graphics.
  5. id Tech engines: Carmack was the lead programmer for several iterations of the id Tech game engine, which powered numerous games developed by id Software and other studios. These engines were known for their advanced graphics capabilities and efficient performance, often pushing the limits of contemporary hardware. Carmack was the lead programmer for several iterations of the id Tech game engine, which was used in many popular games, including Doom, Quake, and their sequels. These engines were known for their cutting-edge graphics capabilities, such as real-time lighting, shadowing, and advanced texturing techniques. Carmack's work on these engines influenced the development of other game engines and set the standard for real-time 3D graphics in the gaming industry.
  6. Virtual reality: As CTO of Oculus VR, Carmack played a significant role in the development of the Oculus Rift virtual reality headset. His work focused on optimizing the device's performance, reducing latency, and improving the overall user experience. As the CTO of Oculus VR, Carmack played a crucial role in the development of the Oculus Rift headset. He focused on optimizing the device's performance to reduce latency and provide a smooth, immersive experience. Carmack's work on asynchronous timewarp, a technique that reduces perceived latency by reprojecting the last rendered frame based on updated head tracking information, was instrumental in improving the user experience of the Rift.

In addition to these specific achievements, Carmack has consistently pushed the boundaries of real-time computer graphics and game development. His innovations have had a lasting impact on the industry and continue to influence modern game engines and rendering techniques.


While John Carmack has expressed interest in artificial intelligence (AI) and artificial general intelligence (AGI), his primary contributions to technology have been in the fields of computer graphics, game development, and virtual reality. Although AI has been used in various forms in the games he has worked on, such as enemy behavior or pathfinding, his direct involvement in AI research and development is not as extensive as his contributions to computer graphics and game engines.

However, as a thought leader in the technology industry, Carmack has discussed the potential applications and impact of AI in the context of game development and procedural content generation. This could involve using AI techniques to automatically create game assets, levels, or entire virtual worlds, potentially revolutionizing the way games are designed and developed.

Carmack's insights into AI and its potential applications in computer graphics and game development are valuable, but it is important to recognize that his primary technical contributions lie in other areas, such as real-time 3D graphics, game engine development, and virtual reality technology.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment