Bilineær filtrering

Bilineær filtrering  er processen med at udtrække flere pixels af den originale tekstur og derefter gennemsnittet deres værdier for at opnå den endelige pixelværdi. Begrebet "bilineær filtrering", ligesom det lignende begreb " trilineær filtrering ", gælder kun for todimensionelle teksturer. For tredimensionelle teksturer er dette koncept ikke anvendeligt. , og begrebet trilineær filtrering har en anden betydning.

Bilineær filterfunktion kildekode eksempel

Koden [1] antager, at teksturen er kvadratisk (det mest generelle tilfælde), og at der kun er én datakanal.

double getBilinearFilteredPixelColor ( Texture tex , double u , double v ) { u *= tex . størrelse ; * = tex . størrelse ; int x = etage ( u ); int y = etage ( v ); dobbelt u_forhold = u - x ; dobbelt v_forhold = v - y ; dobbelt u_modsat = 1 - u_forhold ; dobbelt v_modsat = 1 - v_forhold ; dobbelt resultat = ( tex [ x ][ y ] * u_modsat + tex [ x + 1 ][ y ] * u_forhold ) * v_modsat + ( tex [ x ][ y + 1 ] * u_modsat + tex [ x + 1 ][ y + 1 ] * u_forhold ) * v_forhold ; returnere resultat ; }

Det samme eksempel i HLSL shader-sprog

float4 Bilinear ( sampler2D tex , float2 texCoord , int texSize ) { float2 trTexCoord = texCoord * texSize ; float2 texf = floor ( trTexCoord ); float2 ratio = trTexCoord - texf ; float2 modsat = 1,0 - ratio ; float4 resultat = ( tex2D ( tex , texf / texSize ) * modsat . x + tex2D ( tex , ( texf + float2 ( 1 , 0 )) / texSize ) * forhold . x ) * modsat . y + ( tex2D ( tex , ( texf + float2 ( 0 , 1 )) / texSize ) * modsat . x + tex2D ( tex , ( texf + float2 ( 1 , 1 )) / texSize ) * forhold . x ) * forhold . y ; returnere resultat ; }

Se også

Noter

  1. Sprog - C