How linear interpolation works between mipmaps?

Nearest interpolation between 2 texels mean to take the texel whose center is nearest to a given coordinate to draw or, in other words, the texel the coordinate is matching.

Linear interpolation between 2 texels mean to mix the colors of them using more of the nearest texel and less of the others according to the distance to a certain coordinate.

Nearest interpolation between 2 mipmap levels consist in to take the mipmap whose size fits better the size of the image to draw

But I cannot understand how linear interpolation works with mipmap levels.

2 Answers

It's called trilinear interpolation. You first do a bilinear interpolation of the higher-res texture, then do a bilinear interpolation on the lower-res texture, then interpolate between the 2 results. The weight of the final interpolation is based on where between the 2 textures your Z-coordinate falls. If 0 is fully the low-res texture and 1 is fully the high-res texture, then you can use the standard glsl mix() function to combine the two:

result = (highres texture color * weight) + (lowres texture color * (1.0 - weight));

• You are talking about GL_LINEAR_MIPMAP_LINEAR filtering method, but if you use GL_NEAREST_MIPMAP_LINEAR instead then you first do a nearest interpolation of the higher-res and lower-res textures, and then mix the resulting colors giving more preference to the nearest mipmap and less preference to the furthest. Am I correct? – 4dr14n31t0r Th3 G4m3r Mar 3 '17 at 0:30
• Actually, for nearest, you would just pick either the high res or low res texture (which ever is nearest), and then within that texture do a normal 2D nearest-neighbor look-up. – user1118321 Mar 3 '17 at 0:51

You might find the 1983 paper that introduced this**, i.e. Lance Williams' "Pyramidal Parametrics" informative.

You can ignore the scheme, in Figure 1, he used for the layout of the MIP maps as I doubt any hardware, at least in the last 20+ years, used that approach.

** (Actually, Williams *may* have described the technique at an earlier SIGGRAPH (1981) as part of tutorial/course but I've never been able to get hold of a copy)

• Fantastic reference. Always fascinating to read original papers which introduced new technologies that we all but take for granted these days. – Dan Mar 3 '17 at 22:09