Register
handmade.network Library

Rendering

How to draw images with a computer.

Article

  • Color: From Hexcodes to Eyeballs
    ★ 0 0
    A grand tour of the science behind color, color perception, and how colors are generated by computer displays. By Jamie Wong.
  • Manual Texture Filtering for Pixelated Games in WebGL
    ★ 0 0
    Nearest neighbour filtering but with antialised edges. Also see the follow-up article.
  • The Surface Area Heuristic
    ★ 0 0
    Improve ray-tracing performance by building a Bounding Volume Hierarchy using the Surface Area Heuristic as the splitting criterion. "The SAH rewards small nodes with many triangles, while avoiding large nodes with few triangles."

Blog

  • The Surface Area Heuristic
    ★ 0 0
    Improve ray-tracing performance by building a Bounding Volume Hierarchy using the Surface Area Heuristic as the splitting criterion. "The SAH rewards small nodes with many triangles, while avoiding large nodes with few triangles."

Online Book

  • Michael Abrash’s Graphics Programming Black Book
    ★ 0 0
  • Physically Based Rendering: From Theory To Implementation
    ★ 0 0
    "Physically Based Rendering describes both the mathematical theory behind a modern photorealistic rendering system as well as its practical implementation. A method known as “literate programming” combines human-readable documentation and source code into a single reference that is specifically designed to aid comprehension."
  • Tiny Raycaster
    ★ 0 0
    "This text is written for those who only make first steps in programming. The main idea is to show, step by step, how to make a game à la Wolfenstein 3D. Attention, I am not going to compete with Carmack, he is a genius and his code is stunning. I aim a different goal: I'm using the huge computing power of modern computers to allow my students to create fun projects in very short time (typically few days), without getting stuck in the optimization nightmare."
  • Tiny Raytracer
    ★ 0 0
    "There are plenty of raytracing articles on the web; however the problem is that almost all of them show finished software that can be quite difficult to understand. Take, for example, the very famous businness card ray tracer challenge. It produces very impressive programs, but it's very difficult to understand how this works. Rather than showing that I can do renders, I want to tell you in detail how you can do it by yourself."
  • Tiny Renderer
    ★ 0 0
    "In this series of articles, I want to show the way OpenGL works by writing its clone (a much simplified one). Surprisingly enough, I often meet people who cannot overcome the initial hurdle of learning OpenGL / DirectX. Thus, I have prepared a short series of lectures, after which my students show quite good renderers. Warning: this is a training material that will loosely repeat the structure of the OpenGL library. It will be a software renderer. I do not want to show how to write applications for OpenGL. I want to show how OpenGL works. I am deeply convinced that it is impossible to write efficient applications using 3D libraries without understanding this. I will try to make the final code about 500 lines. My students need 10 to 20 programming hours to begin making such renderers. At the input, we get a test file with a polygonal wire + pictures with textures. At the output, we’ll get a rendered model. No graphical interface, the program simply generates an image."
  • Tiny Renderer
    ★ 0 0
    How to build a software renderer in 500 lines of code.

Other

Paper

  • Bidirectional Path Tracing and Multiple Importance Sampling (2 Minute Papers)
    ★ 0 0
    With a classical unidirectional path tracer, we'll have some scenes where it is difficult to connect to the light source, and therefore many of our computed samples will be wasted. What if we would start not only one light path from the camera, but one also from the light source, and connect the two together? It turns out that we get a much more robust technique that can render a variety of "packed" scenes with lots of occlusions with ease.
  • Matrix row-column sampling for the many-light problem
    ★ 0 0
    Computing global illumination using the many-lights approach is expensive, this algorithm presents a method ("exploration") for reducing the amount of lights to be sampled.
  • Metropolis Light Transport (2 Minute Papers)
    ★ 0 0
    Metropolis Light Transport is a powerful technique that can outperform the convergence speed of Bidirectional Path Tracing on most difficult scenes (what makes a scene difficult is a story on its own). It promises optimal importance sampling "along multiple steps" in the stationary distribution of the Markov chain.
  • Photon Mapping (2 Minute Papers)
    ★ 0 0
    Describes the Photon Mapping solution to light transport.
  • Polygonising a scalar field
    ★ 0 0
    Papers describing methods of creating a polygonal representation of a scalar field (e.g. marching cubes with voxels).
  • Stochastic Lightcuts
    ★ 0 0
    A solution to the global illumination problem by sampling from many lights. Stochastic Lightcuts is an improvement on the earlier Lightcuts algorithm. Presentation at HPG 2019.
  • Stochastic Progressive Photon Mapping (2 Minute Papers)
    ★ 0 0
    Describes improvements to Photon Mapping, called Progressive Photon Mapping, Stochastic Photon Mapping, and their combination.

Repository

  • Tiny Raycaster
    ★ 0 0
    "This text is written for those who only make first steps in programming. The main idea is to show, step by step, how to make a game à la Wolfenstein 3D. Attention, I am not going to compete with Carmack, he is a genius and his code is stunning. I aim a different goal: I'm using the huge computing power of modern computers to allow my students to create fun projects in very short time (typically few days), without getting stuck in the optimization nightmare."
  • Tiny Raytracer
    ★ 0 0
    "There are plenty of raytracing articles on the web; however the problem is that almost all of them show finished software that can be quite difficult to understand. Take, for example, the very famous businness card ray tracer challenge. It produces very impressive programs, but it's very difficult to understand how this works. Rather than showing that I can do renders, I want to tell you in detail how you can do it by yourself."
  • Tiny Renderer
    ★ 0 0
    "In this series of articles, I want to show the way OpenGL works by writing its clone (a much simplified one). Surprisingly enough, I often meet people who cannot overcome the initial hurdle of learning OpenGL / DirectX. Thus, I have prepared a short series of lectures, after which my students show quite good renderers. Warning: this is a training material that will loosely repeat the structure of the OpenGL library. It will be a software renderer. I do not want to show how to write applications for OpenGL. I want to show how OpenGL works. I am deeply convinced that it is impossible to write efficient applications using 3D libraries without understanding this. I will try to make the final code about 500 lines. My students need 10 to 20 programming hours to begin making such renderers. At the input, we get a test file with a polygonal wire + pictures with textures. At the output, we’ll get a rendered model. No graphical interface, the program simply generates an image."
  • Tiny Renderer
    ★ 0 0
    How to build a software renderer in 500 lines of code.

Website

  • Lights and Shadows
    ★ 1 0
    Discussion and explanation of lights, shadows and the functions for modelling them.
  • Scratchapixel
    ★ 0 0
    "Learn Computer Graphics From Scratch!"

YouTube Series

YouTube Video

  • Revision 2020: Physically Based Shading Without Locking Yourself In
    ★ 1 0
    Implementing a physically based shading model without locking yourself in
  • Advanced Global Illumination Using Photon Mapping
    ★ 0 0
    Photon mapping provides a practical way of efficiently simulating global illumination including interreflections, caustics, color bleeding, participating media and subsurface scattering in scenes with complicated geometry and advanced material models. This class will provide the insight necessary to efficiently implement and use photon mapping to simulate global illumination in complex scenes. The presentation will briefly cover the fundamentals of photon mapping including efficient techniques and datastructures for managing large numbers of rays and photons. In addition, we will describe how to integrate the information from the photon maps in shading algorithms to render global illumination.
  • Bidirectional Path Tracing and Multiple Importance Sampling (2 Minute Papers)
    ★ 0 0
    With a classical unidirectional path tracer, we'll have some scenes where it is difficult to connect to the light source, and therefore many of our computed samples will be wasted. What if we would start not only one light path from the camera, but one also from the light source, and connect the two together? It turns out that we get a much more robust technique that can render a variety of "packed" scenes with lots of occlusions with ease.
  • Excerpt: Quake Postmortem - Optimizing Level Viewing
    ★ 0 0
    Michael Abrash succinctly explains Quake's visibility precomputation algorithm using a sharpie and overhead projector.
  • Matrix row-column sampling for the many-light problem
    ★ 0 0
    Computing global illumination using the many-lights approach is expensive, this algorithm presents a method ("exploration") for reducing the amount of lights to be sampled.
  • Metropolis Light Transport (2 Minute Papers)
    ★ 0 0
    Metropolis Light Transport is a powerful technique that can outperform the convergence speed of Bidirectional Path Tracing on most difficult scenes (what makes a scene difficult is a story on its own). It promises optimal importance sampling "along multiple steps" in the stationary distribution of the Markov chain.
  • Path Tracing and Next Event Estimation (2 Minute Papers)
    ★ 0 0
    A description of Path Tracing, a ray tracing solution to the rendering equation, and one of its traditional optimizations, Next Event Estimation.
  • Photon Mapping (2 Minute Papers)
    ★ 0 0
    Describes the Photon Mapping solution to light transport.
  • Practical Global Illumination with Irradiance Caching
    ★ 0 0
    Lighting usually only changes smoothly over a surface, Irradiance Caching is a classic approach to reduce the computational cost by only computing lighting at points where it changes quickly.
  • Radiosity
    ★ 0 0
    Lecture describing how to solve the radiosity equations used to compuse diffuse global illumination.
  • Ray-Traced Irradiance Fields (Real-Time Light Probe Rendering)
    ★ 0 0
    [...] how to combine glossy reflection ray tracing with diffuse ray-traced irradiance field probes. This creates a complete dynamic global illumination solution that scales across all DXR GPUs and minimizes light leaking without requiring manual per-probe or lightmap work by artists.
  • Stochastic Lightcuts
    ★ 0 0
    A solution to the global illumination problem by sampling from many lights. Stochastic Lightcuts is an improvement on the earlier Lightcuts algorithm. Presentation at HPG 2019.
  • Stochastic Progressive Photon Mapping (2 Minute Papers)
    ★ 0 0
    Describes improvements to Photon Mapping, called Progressive Photon Mapping, Stochastic Photon Mapping, and their combination.
  • ThinMatrix Single-Channel SDF Font Rendering
    ★ 0 0
    Two OpenGL tutorial videos that give an overview of the basics of setting up single-channel SDF font rendering. Video one covers basic bitmap text rendering, and video two shows how to convert from bitmap to SDF. Video one: https://www.youtube.com/watch?v=mnIQEQoHHCU Video two: https://www.youtube.com/watch?v=d8cfgcJR9Tk
  • Wolfenstein 3D's map renderer
    ★ 0 0
    Matt Godbolt's excellent explanation of the Wolfenstein 3D raycasting renderer