Changes
Jump to navigation
Jump to search
In computer graphics, '''texture [[wikipedia:Texture filtering|Texture filtering]]''' or texture smoothing is refers to the method methods used to smooth the textures used in of a 3D modelsmodel. Some consoles use texture filteringEvery home console after the [[Nintendo 64 emulators|Nintendo 64]] is able to do it, including every modern PC and Android device. In This makes it useful in emulation, texture filtering where it can be applied even if the original console to emulators for consoles that did not use originally have it. Many through various emulators that support such featuresit.
| style="text-align: center;"|'''Nearest neighbor'''| style="text-align: center;"|This method sorts pixels into the nearest place relevant to it's its placement in the original resolution, in order to display the image at whatever resolution you specify.| style="text-align: center;"|
| style="text-align: center;"|
| 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;"|
| style="text-align: center;"|
| style="text-align: center;"|'''Trilinear'''| style="text-align: center;"|This linear filtering method does the same thing as bilinear filtering, except it passes through twicebut additionally interpolates between mipmaps (downscaled versions of the texture used for far away objects), giving a smoother gradientthereby preventing mipmap banding (harsh transitions between mipmap levels).| style="text-align: center;"|
| style="text-align: center;"|*As with bilinear, low -resolution games will more than likely appear overly blurry using this method.
| 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;"|
| style="text-align: center;"|
| 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 taken from the source and randomly-guessed colors.| style="text-align: center;"|
| style="text-align: center;"|
| style="text-align: center;"|'''xBR'''| style="text-align: center;"|A modified version of HQx. It detects edges better, which works better for curved lines, or for slopes that are greater than/less than 45 degrees.| style="text-align: center;"|
| style="text-align: center;"|
| style="text-align: center;"|'''xBRZ'''| style="text-align: center;"|A modified version of xBR, which is very similar except it's better at scaling up smaller features consisting of <10 pixels.| style="text-align: center;"|
| style="text-align: center;"|
[http://en.wikipedia.org/wiki/Texture_filtering Wikipedia's entry on Texture Filtering] * [https://web.archive.org/web/20140904180543/http://board.byuu.org/viewtopic.php?f=10&t=2248 Forum post from the creator of xBR, explaining how the algorithm works] (Warning: is slightly hard to read due to the amount of jargon and big words) * [http://blog.metaclassofnil.com/?p=306 A blog entry by Durante on creating a hybrid texture filter for PPSSPP.]
→Types of Texture Filtering
[[File:Nearest_Neighbor_2x_versus_HQ2x.png|thumb|300px|A comparison between nearest neighbor scaling and HQ2x scaling]]:''This article is about smoothing techniques that may be present even on original hardware. For the process of replacing textures to improve their visual fidelity or other aesthetic reasons, see [[Texture Packs]].''
==Consoles==
{| class="wikitable" style="text-align:center;"
! scope="col"|Console
! scope="col" style="text-align: center;"|Texture Filtering! scope="col" style="text-align: center;"|Types of filtering
|-
| style="text-align:left;" |[[Super Nintendo emulators|Super Nintendo]]| style="text-align: center;"|{{✗}}| style="text-align: center;"|
|-
| style="text-align:left;" |[[3DO emulators|3DO]]| style="text-align: center;"|{{✗}}| style="text-align: center;"|?
|-
| style="text-align:left;" |[[Atari Jaguar emulators|Atari Jaguar]]| style="text-align: center;"|{{✗}}| style="text-align: center;"|
|-
| style="text-align:left;" |[[Sega Saturn emulators|Sega Saturn]]| style="text-align: center;"|{{✗}}| style="text-align: center;"|
|-
| style="text-align:left;" |[[PlayStation emulators|PlayStation]]| style="text-align: center;"|{{✗}}| style="text-align: center;"|
|-
| style="text-align:left;" |[[Nintendo 64 emulators|Nintendo 64]]| style="text-align: center;"|{{✓}}| style="text-align: center;"|Three-sample
|-
| style="text-align:left;" |[[Sega Dreamcast emulators|Sega Dreamcast]]| style="text-align: center;"|{{✓}}| style="text-align: center;"|Bilinear, trilinear, anisotropic
|-
| style="text-align:left;" |[[PlayStation 2 emulators|PlayStation 2]]| style="text-align: center;"|{{✓}}| style="text-align: center;"|Bilinear, trilinear, Anisotropic
|-
| style="text-align:left;" |[[GameCube emulators|GameCube]]| style="text-align: center;"|{{✓}}| style="text-align: center;"|Bilinear, trilinear, anisotropic
|-
| style="text-align:left;" |[[Xbox emulators|Xbox]]| style="text-align: center;"|{{✓}}| style="text-align: center;"|Bilinear, trilinear, anisotropic
|-
| style="text-align:left;" |[[Nintendo DS emulators|Nintendo DS]]| style="text-align: center;"|{{✗}}| style="text-align: center;"|?
|-
| style="text-align:left;" |[[PlayStation Portable emulators|PlayStation Portable]]| style="text-align: center;"|{{✓}}| style="text-align: center;"|Bilinear, trilinear
|-
| style="text-align:left;" |[[Wii emulators|Wii]]| style="text-align: center;"|{{✓}}| style="text-align: center;"|Bilinear, trilinear, anisotropic
|}
==Types of Texture Filtering==
{| class="wikitable"! scope="col" style="text-align: center;"! scope="col"|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
|-
*Very fast.
*At integer values (eg, exactly double or quadruple resolution) it's practically "unfiltered".
*Unfiltered pixels tend to look odd, with some being thicker than others. This can result in pixel art losing clarity, and text may become hard to read.
|-
*Looks better than nearest neighbor for 3D games.
*It's the least system-intensive form of texture filtering/scaling.
*At low resolutions, 2D games tend to become very blurry. This is especially noticeable in 2D games, and low res 3D games.
*If you have the hardware to do so, look into more complex filtering methods to preserve clarity.
|-
*Looks better than bilinear filtering for 3D games.
|-
*While it is inherently destructive, some games (eg. Yoshi's Island) may benefit from this filter, as it preserves the cartoony look.
*Artifacts are common.
*Curves and slopes that aren't 45° look jagged compared to everything else.
*Worse at some things that xBR excels at.
|-
*Less system-intensive than HQx and xBR.
*Adequate if it's the best option available (e.g. in Pete's OpenGL2 plugin for PSX emulators).
*Edge detection is horrible.
*Artifacts are common.
*Archaic. The alternatives are much better.
|-
*Looks great for many 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.
*Posterization is common. There are deposterization filters in some emulators (e.g. PPSSPP) that can aid this, however.
*The finer details of the textures/sprites might be obscured by bad edge detection.
*Worse at some things that HQx excels at.
|-
*Looks great for many 2D games.
*Detects small features that get messed up by HQx and xBR.
*3D games look great with it as well.
*Posterization is common. There are deposterization filters in some emulators (e.g. PPSSPP) that can aid this, however.
*Worse at some things the other scalers excel at.
Super_Mario_All-Stars_with_5xBR.png|SNES game with 5xBR texture scaling
</gallery>
==Further reading==
[[Category:FAQs]]