Difference between revisions of "Texture filtering"
Jump to navigation
Jump to search
(Added in a nice table explanations of what the various texture filters do, and the pros and cons of each one. I also added more filters to the list.) |
|||
Line 63: | Line 63: | ||
|} | |} | ||
− | == | + | {| class="wikitable" |
+ | |+Types of Texture Filtering | ||
+ | ! scope="col" style="text-align: center;"|Filtering type | ||
+ | ! scope="col" style="text-align: center;"|What it does | ||
+ | ! scope="col" style="text-align: center;"|Pros | ||
+ | ! scope="col" style="text-align: center;"|Cons | ||
+ | |- | ||
+ | | style="text-align: center;"|'''Nearest neighbor''' | ||
+ | | style="text-align: center;"|Basically, it looks the exact same as having no filter whatsoever. | ||
+ | | style="text-align: center;"| | ||
+ | *Very fast. | ||
+ | *Looks good for 2D games if you want to keep the pixel art aesthetic. | ||
+ | | style="text-align: center;"| | ||
+ | *3D games look terrible. | ||
+ | *It's unfiltered pixels. You should know what to expect. | ||
+ | |- | ||
+ | | style="text-align: center;"|'''Nearest Neighbor with Mipmapping''' | ||
+ | | style="text-align: center;"|Exactly what it says on the tin: Nearest-neighbor filtering with mipmapping. Mipmapping is basically level of detail for textures. The farther away a texture is in a 3D space, the lower the resolution is. This can continue until the texture is completely flat. | ||
+ | | style="text-align: center;"| | ||
+ | *Even faster than regular nearest neighbor. | ||
+ | | style="text-align: center;"| | ||
+ | *3D games look terrible. | ||
+ | |- | ||
+ | | style="text-align: center;"|'''Bilinear''' | ||
+ | | style="text-align: center;"|This linear filtering method uses color data from the pixels in a nearest-neighbor texture, and combines multiple bits of color data in order to replace some of the pixels with an averaged-out version of the colors, so that the colors gradually switch rather than jump to a new color. | ||
+ | | style="text-align: center;"| | ||
+ | *Looks better than nearest neighbor for 3D games. | ||
+ | *It's the least system-intensive form of texture filtering/scaling. | ||
+ | | style="text-align: center;"| | ||
+ | *2D games look atrocious. | ||
+ | *If you have the specs to use them, every other filtering option is better. | ||
+ | |- | ||
+ | | style="text-align: center;"|'''Trilinear''' | ||
+ | | style="text-align: center;"|This linear filtering method does the same thing as bilinear filtering, except it passes through twice, giving a smoother gradient. | ||
+ | | style="text-align: center;"| | ||
+ | *Looks better than bilinear filtering for 3D games. | ||
+ | | style="text-align: center;"| | ||
+ | *2D games look atrocious. | ||
+ | |- | ||
+ | | style="text-align: center;"|'''Anisotropic''' | ||
+ | | style="text-align: center;"|Uses oddly-shaped copies of texture parts in order to smooth out pixelated/blurred edges in nearest neighbor/linearly filtered images. Higher sample amounts (e.g. 4x, 8x, 16x) will shape the textures into more complex shapes as needed. | ||
+ | | style="text-align: center;"| | ||
+ | *Looks much better than just linear filtering for 3D games. | ||
+ | *Can be used alongside linear filtering for even smoother-looking textures. | ||
+ | | style="text-align: center;"| | ||
+ | *Very system-intensive. | ||
+ | *Not recommended for 2D games. | ||
+ | |- | ||
+ | | style="text-align: center;"|'''HQx''' | ||
+ | | style="text-align: center;"|A texture scaling algorithm. Scales up a nearest-neighbor version of the texture and fills in the gaps with copies of the pixels next to said gaps. | ||
+ | | style="text-align: center;"| | ||
+ | *Looks great for many 2D games. | ||
+ | | style="text-align: center;"| | ||
+ | *Artifacts are prominent. | ||
+ | *Curves and slopes that aren't 45° slopes look very pixelated compared to everything else. | ||
+ | *The finer details of the textures/sprites might be obscured by bad edge detection. | ||
+ | *Posterization is very common. There are deposterization filters in some emulators (e.g. PPSSPP) that can aid this, however. | ||
+ | *Worse at some things that xBR excels at. | ||
+ | |- | ||
+ | | style="text-align: center;"|'''2xSaI''' | ||
+ | | style="text-align: center;"|A texture scaling algorithm. Scales the texture and fills edges in with a mixture of pixels from the source, and randomly-guessed colors. | ||
+ | | style="text-align: center;"| | ||
+ | *Less system-intensive than HQx and xBR. | ||
+ | *Good if it's the best option available (e.g. like in Pete's OpenGL2 plugin for PSX emulators). | ||
+ | | style="text-align: center;"| | ||
+ | *Edge detection is horrible. | ||
+ | *Artifacts are common. | ||
+ | *Posterization is very common. | ||
+ | *Archaic. The alternatives are much better. | ||
+ | |- | ||
+ | | style="text-align: center;"|'''xBR''' | ||
+ | | style="text-align: center;"|A modified version of HQx. It detects edges better, which works better for slopes that are greater than or less than 45 degrees. | ||
+ | | style="text-align: center;"| | ||
+ | *Looks great in 2D games. | ||
+ | *Edge detection is improved over HQx. This gives textures smoother curves and slopes, as well as fewer artifacts. | ||
+ | *3D games look great with it as well. | ||
+ | | style="text-align: center;"| | ||
+ | *Posterization is common. There are deposterization filters in some emulators (e.g. PPSSPP) that can aid this, however. | ||
+ | *Worse at some things that HQx excels at. | ||
+ | |} | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
==Images== | ==Images== | ||
<gallery captionalign="center" position="center"> | <gallery captionalign="center" position="center"> | ||
− | Psp-linear2.jpg|PSP game with | + | Psp-linear2.jpg|PSP game with linear filtering |
− | Psp-nearest2.jpg|PSP game with | + | Psp-nearest2.jpg|PSP game with nearest neighbor upscaling |
− | Psp-xbr2.jpg|PSP game with | + | Psp-xbr2.jpg|PSP game with 3xBR filtering |
</gallery> | </gallery> | ||
<gallery position="center" bordersize="none" captionalign="center"> | <gallery position="center" bordersize="none" captionalign="center"> | ||
− | N64-bilinear2.png|N64 game at native internal resolution using SoftGraphic plugin | + | N64-bilinear2.png|N64 game at native internal resolution (using SoftGraphic plugin) |
− | N64-bilinear.png|N64 game upscaled with | + | N64-bilinear.png|N64 game upscaled with bilinear filtering (using Glide64 plugin) |
− | N64-nearest.png|N64 game upscaled with | + | N64-nearest.png|N64 game upscaled with nearest neighbor (using Glide64 plugin) |
− | |||
− | |||
− | |||
− | |||
</gallery><gallery columns="2" captionalign="center" widths="180" position="center" bordersize="none"> | </gallery><gallery columns="2" captionalign="center" widths="180" position="center" bordersize="none"> | ||
− | Snes-nearest.png|SNES game with | + | Snes-nearest.png|SNES game with nearest neighbor upscaling |
− | Snes-linear.png|SNES game with | + | Snes-linear.png|SNES game with linear filtering |
</gallery> | </gallery> | ||
Line 96: | Line 162: | ||
==Further reading== | ==Further reading== | ||
− | http://en.wikipedia.org/wiki/Texture_filtering | + | [http://en.wikipedia.org/wiki/Texture_filtering Wikipedia's entry on Texture Filtering] |
+ | |||
+ | [http://blog.metaclassofnil.com/?p=306 A blog entry on creating a hybrid texture filter for PPSSPP.] | ||
+ | |||
[[Category:FAQs]] | [[Category:FAQs]] |
Revision as of 03:41, 11 March 2014
In computer graphics, texture filtering or texture smoothing is the method used to smooth textures used in 3D models. Some consoles use texture filtering.
In emulation, texture filtering can be applied even if the original console did not use it. Many emulators support such features.
Consoles
Console | Texture Filtering | Types of filtering |
---|---|---|
Super Nintendo | ✗ | |
3DO | ✗ | ? |
Atari Jaguar | ✗ | |
Sega Saturn | ✗ | |
PlayStation | ✗ | |
Nintendo 64 | ✓ | Three-sample bilinear |
Sega Dreamcast | ✓ | Bilinear, trilinear, anisotropic |
PlayStation 2 | ✓ | Bilinear, trilinear |
GameCube | ✓ | Bilinear, trilinear, anisotropic |
Xbox | ✓ | Bilinear, trilinear, anisotropic |
Nintendo DS | ✗ | ? |
PlayStation Portable | ✓ | Bilinear, trilinear |
Wii | ✓ | Bilinear, trilinear, anisotropic |
Filtering type | What it does | Pros | Cons |
---|---|---|---|
Nearest neighbor | Basically, it looks the exact same as having no filter whatsoever. |
|
|
Nearest Neighbor with Mipmapping | Exactly what it says on the tin: Nearest-neighbor filtering with mipmapping. Mipmapping is basically level of detail for textures. The farther away a texture is in a 3D space, the lower the resolution is. This can continue until the texture is completely flat. |
|
|
Bilinear | This linear filtering method uses color data from the pixels in a nearest-neighbor texture, and combines multiple bits of color data in order to replace some of the pixels with an averaged-out version of the colors, so that the colors gradually switch rather than jump to a new color. |
|
|
Trilinear | This linear filtering method does the same thing as bilinear filtering, except it passes through twice, giving a smoother gradient. |
|
|
Anisotropic | Uses oddly-shaped copies of texture parts in order to smooth out pixelated/blurred edges in nearest neighbor/linearly filtered images. Higher sample amounts (e.g. 4x, 8x, 16x) will shape the textures into more complex shapes as needed. |
|
|
HQx | A texture scaling algorithm. Scales up a nearest-neighbor version of the texture and fills in the gaps with copies of the pixels next to said gaps. |
|
|
2xSaI | A texture scaling algorithm. Scales the texture and fills edges in with a mixture of pixels from the source, and randomly-guessed colors. |
|
|
xBR | A modified version of HQx. It detects edges better, which works better for slopes that are greater than or less than 45 degrees. |
|
|
Images
Further reading
Wikipedia's entry on Texture Filtering
A blog entry on creating a hybrid texture filter for PPSSPP.