Variantes de filtrado puntual, bilineal, trilineal y anisotrópico de textura
Reemplaza el modo de filtrado en las muestras de textura adecuadas.
Interpretación
Cada método de muestreo de textura tiene diferentes costes de rendimiento y calidad de la imagen. Para aumentar los costes, y aumentar la calidad visual, los modos de filtro son:
Filtrado de punto (el menos caro, la peor calidad visual)
Filtrado bilineal
Filtrado trilineal
Filtrado anisotrópico (el más caro, la mejor calidad visual)
Si el coste de rendimiento de cada variante es significativo o aumenta con modos de filtrado que consumen más, puede comparar su coste con la mejora en la calidad de la imagen. Según su evaluación, puede aceptar costes de rendimiento adicionales para aumentar la calidad visual o puede aceptar una peor calidad visual para conseguir una velocidad de fotogramas superior o recuperar un rendimiento que puede utilizar de otras maneras.
Si cree que el coste de rendimiento es insignificante o constante independientemente del modo de filtrado, por ejemplo, cuando la GPU de destino tiene un rendimiento de sombreador y un ancho de banda de memoria abundantes, considere utilizar el filtrado anisotrópico para conseguir la mejor calidad de imagen en la aplicación.
Comentarios
Estas variantes reemplazan los estados de la muestra en llamadas a ID3D11DeviceContext::PSSetSamplers en las que el modo de filtrado de la muestra proporcionado por la aplicación es uno de los siguientes:
D3D11_FILTER_MIN_MAG_MIP_POINT
D3D11_FILTER_MIN_MAG_POINT_MIP_LINEAR
D3D11_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT
D3D11_FILTER_MIN_POINT_MAG_MIP_LINEAR
D3D11_FILTER_MIN_LINEAR_MAG_MIP_POINT
D3D11_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR
D3D11_FILTER_MIN_MAG_LINEAR_MIP_POINT
D3D11_FILTER_MIN_MAG_MIP_LINEAR
D3D11_FILTER_ANISOTROPIC
En la variante Point Texture Filtering, el modo de filtrado proporcionado por la aplicación se reemplaza por D3D11_FILTER_MIN_MAG_MIP_POINT; en la variante Bilinear Texture Filtering, se reemplaza por D3D11_FILTER_MIN_MAG_LINEAR_MIP_POINT; y en la variante Trilinear Texture Filtering, se reemplaza por D3D11_FILTER_MIN_MAG_MIP_LINEAR.
En la variante Anisotropic Texture Filtering, el modo de filtrado proporcionado por la aplicación se reemplaza por D3D11_FILTER_ANISOTROPIC y Max Anisotropy se establece en 16.
Restricciones y limitaciones
En Direct3D, el nivel de características 9.1 especifica una anisotropía máxima de 2x. Como la variante Anisotropic Texture Filtering intenta utilizar únicamente la anisotropía 16x, se produce un error en la reproducción cuando el análisis de fotogramas se ejecuta en un dispositivo con nivel de características 9.1. Entre los dispositivos actuales que están afectados por esta limitación se incluyen las tabletas de Microsoft basadas en ARM Surface RT y Surface 2. También pueden verse afectadas otras GPU que todavía pueden encontrarse en algunos ordenadores, pero en general se considera que están obsoletas y de cada vez son menos habituales.
Ejemplo
La variante Point Texture Filtering se puede reproducir con un código como el siguiente:
D3D11_SAMPLER_DESC sampler_description;
// ... other sampler description setup ...
sampler_description.Filter = D3D11_FILTER_MIN_MAG_MIP_POINT;
d3d_device->CreateSamplerState(&sampler_desc, &sampler);
d3d_context->PSSetSamplers(0, 1, &sampler
La variante Bilinear Texture Filtering se puede reproducir con un código como el siguiente:
D3D11_SAMPLER_DESC sampler_description;
// ... other sampler description setup ...
sampler_description.Filter = D3D11_FILTER_MIN_MAG_LINEAR_MIP_POINT;
d3d_device->CreateSamplerState(&sampler_desc, &sampler);
d3d_context->PSSetSamplers(0, 1, &sampler
La variante Trilinear Texture Filtering se puede reproducir con un código como el siguiente:
D3D11_SAMPLER_DESC sampler_description;
// ... other sampler description setup ...
sampler_description.Filter = D3D11_FILTER_MIN_MAG_MIP_LINEAR;
d3d_device->CreateSamplerState(&sampler_desc, &sampler);
d3d_context->PSSetSamplers(0, 1, &sampler
La variante Anisotropic Texture Filtering se puede reproducir con un código como el siguiente:
D3D11_SAMPLER_DESC sampler_description;
// ... other sampler description setup ...
sampler_description.Filter = D3D11_FILTER_ANISOTROPIC;
sampler_description.MaxAnisotropy = 16;
d3d_device->CreateSamplerState(&sampler_desc, &sampler);
d3d_context->PSSetSamplers(0, 1, &sampler