Category Archives: Graphics

Irradiance Caching – Part 1

I finally finished writing the next article about the lightmap rendering tech that I did for The Witness. This one is about irradiance caching, and in particular I describe how to estimate irradiance gradients when the irradiance is sampled using a hemicube distribution. I’m afraid the article is a bit too specialized and I suspect [...]

Posted in Graphics | Leave a comment

Matt’s Gregory ACC Tessellation Render

A while ago Matt Davidson contacted me to discuss a few issues with the Gregory ACC source code that we released. Turns out there were some issues in the code that determines whether two patches have the same neighbor configuration and therefore can share the stencils. The code that compares the configurations is not very [...]

Posted in Graphics | 2 Comments

Hemicube Rendering and Integration

I just posted another article about the global illumination solution that I implemented for The Witness, the second one in the series: The Witness – Hemicube Rendering and Integration, September 29, 2010 The Witness – Texture Parameterization, March 30, 2010

Posted in Graphics | Tagged | Comments closed

Watertight Tessellation: precise and fma

One important feature of Direct3D 11 and OpenGL 4, which I have seen very little written about, is the addition of a new precise qualifier. It’s no surprise there’s some confusion about the purpose and motivation for this new keyword. The Direct3D documentation is vague about it: precise affects all results that contribute to the [...]

Posted in Graphics | 1 Comment

Continuity Mapping for Multi-Chart Textures

Naty Hoffman references a paper from Siggraph Asia titled Continuity Mapping for Multi-Chart Textures. The paper provides a solution to a problem that I’ve talked before, that multi-chart parameterizations introduce seams over meshes, and that these seams can produce severe artifacts in some use cases such as displacement mapping. While the solution that I propose [...]

Posted in Graphics | Leave a comment

Efficient Substitutes for Subdivision Surfaces

Our siggraph course has been accepted and is finally up on the siggraph website! Here’s the brief description of the course: An overview of the most recent theoretical results and their implementations on the current and next-generation GPUs, and a demonstration of applications in the gaming and movie industry. We will bring together participants with [...]

Posted in Graphics | Leave a comment

GPU DXT Decompression

Even thought the DXT compression format is widely adopted, most of the hardware implementations use a slightly different decompression algorithm. The problem is that there never was a specification that described the preferred implementation. The DXT format was first documented by S3 in US patent 5956431. However, in order to cover all possible implementations the [...]

Posted in Graphics | Leave a comment

Optimal Grid Rendering

This is a trick that I learned from Matthias Wloka during my job interview at NVIDIA. I thought I had a good understanding of the behavior of the vertex post-transform cache, but embarrassingly it turned out it wasn’t good enough. I’m sure many people don’t know this either, so here it goes. Rendering regular grids [...]

Posted in Graphics | 9 Comments

ACMR

I think that the Average Cache Miss Ratio (ACMR) is not the best way of measuring the efficiency of the vertex cache under different mesh optimization algorithms. The ACMR is basically the number of vertex transforms divided by the number of primitives, and greatly depends on the topology of the mesh. For a triangle mesh [...]

Posted in Graphics | Leave a comment

Real-Time Creased Approximate Subdivision Surfaces

Denis finally put his I3D paper online! Denis was my intern a couple of summers ago. We worked together on the implementation of the an emulation framework to implement and prototype various tessellation algorithms. Last summer he wanted to try something different, I recommended him to join a game studio, and he finally went to [...]

Posted in Graphics | Leave a comment