Skip to content
This repository has been archived by the owner on Jan 4, 2023. It is now read-only.

Commit

Permalink
Simplified Texture Filters.
Browse files Browse the repository at this point in the history
  • Loading branch information
jessefreeman committed May 22, 2020
1 parent 52dbbbe commit 8fe9cd9
Show file tree
Hide file tree
Showing 4 changed files with 113 additions and 113 deletions.
8 changes: 4 additions & 4 deletions MonoGame/MonoGame.Framework/Graphics/States/SamplerState.cs
Original file line number Diff line number Diff line change
Expand Up @@ -160,10 +160,10 @@ internal void ThrowIfBound()

public SamplerState()
{
Filter = TextureFilter.Linear;
AddressU = TextureAddressMode.Wrap;
AddressV = TextureAddressMode.Wrap;
AddressW = TextureAddressMode.Wrap;
// Filter = TextureFilter.Linear;
// AddressU = TextureAddressMode.Wrap;
// AddressV = TextureAddressMode.Wrap;
// AddressW = TextureAddressMode.Wrap;
BorderColor = Color.White;
MaxAnisotropy = 4;
MaxMipLevel = 0;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,18 +12,18 @@ public enum TextureAddressMode
/// <summary>
/// Texels outside range will form the tile at every integer junction.
/// </summary>
Wrap,
// Wrap,
/// <summary>
/// Texels outside range will be set to color of 0.0 or 1.0 texel.
/// </summary>
Clamp,
/// <summary>
/// Same as <see cref="TextureAddressMode.Wrap"/> but tiles will also flipped at every integer junction.
/// </summary>
Mirror,
// Mirror,
/// <summary>
/// Texels outside range will be set to the border color.
/// </summary>
Border
// Border
}
}
}
18 changes: 9 additions & 9 deletions MonoGame/MonoGame.Framework/Graphics/States/TextureFilter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,38 +12,38 @@ public enum TextureFilter
/// <summary>
/// Use linear filtering.
/// </summary>
Linear,
// Linear,
/// <summary>
/// Use point filtering.
/// </summary>
Point,
/// <summary>
/// Use anisotropic filtering.
/// </summary>
Anisotropic,
// Anisotropic,
/// <summary>
/// Use linear filtering to shrink or expand, and point filtering between mipmap levels (mip).
/// </summary>
LinearMipPoint,
// LinearMipPoint,
/// <summary>
/// Use point filtering to shrink (minify) or expand (magnify), and linear filtering between mipmap levels.
/// </summary>
PointMipLinear,
// PointMipLinear,
/// <summary>
/// Use linear filtering to shrink, point filtering to expand, and linear filtering between mipmap levels.
/// </summary>
MinLinearMagPointMipLinear,
// MinLinearMagPointMipLinear,
/// <summary>
/// Use linear filtering to shrink, point filtering to expand, and point filtering between mipmap levels.
/// </summary>
MinLinearMagPointMipPoint,
// MinLinearMagPointMipPoint,
/// <summary>
/// Use point filtering to shrink, linear filtering to expand, and linear filtering between mipmap levels.
/// </summary>
MinPointMagLinearMipLinear,
// MinPointMagLinearMipLinear,
/// <summary>
/// Use point filtering to shrink, linear filtering to expand, and point filtering between mipmap levels.
/// </summary>
MinPointMagLinearMipPoint
// MinPointMagLinearMipPoint
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -39,94 +39,94 @@ internal void Activate(GraphicsDevice device, TextureTarget target, bool useMipm
GL.TexParameter(target, TextureParameterName.TextureMagFilter, (int)TextureMagFilter.Nearest);
GraphicsExtensions.CheckGLError();
break;
case TextureFilter.Linear:
if (GraphicsDevice.GraphicsCapabilities.SupportsTextureFilterAnisotropic)
{
GL.TexParameter(target, TextureParameterNameTextureMaxAnisotropy, 1.0f);
GraphicsExtensions.CheckGLError();
}
GL.TexParameter(target, TextureParameterName.TextureMinFilter, (int)(useMipmaps ? TextureMinFilter.LinearMipmapLinear : TextureMinFilter.Linear));
GraphicsExtensions.CheckGLError();
GL.TexParameter(target, TextureParameterName.TextureMagFilter, (int)TextureMagFilter.Linear);
GraphicsExtensions.CheckGLError();
break;
case TextureFilter.Anisotropic:
if (GraphicsDevice.GraphicsCapabilities.SupportsTextureFilterAnisotropic)
{
GL.TexParameter(target, TextureParameterNameTextureMaxAnisotropy, MathHelper.Clamp(this.MaxAnisotropy, 1.0f, GraphicsDevice.GraphicsCapabilities.MaxTextureAnisotropy));
GraphicsExtensions.CheckGLError();
}
GL.TexParameter(target, TextureParameterName.TextureMinFilter, (int)(useMipmaps ? TextureMinFilter.LinearMipmapLinear : TextureMinFilter.Linear));
GraphicsExtensions.CheckGLError();
GL.TexParameter(target, TextureParameterName.TextureMagFilter, (int)TextureMagFilter.Linear);
GraphicsExtensions.CheckGLError();
break;
case TextureFilter.PointMipLinear:
if (GraphicsDevice.GraphicsCapabilities.SupportsTextureFilterAnisotropic)
{
GL.TexParameter(target, TextureParameterNameTextureMaxAnisotropy, 1.0f);
GraphicsExtensions.CheckGLError();
}
GL.TexParameter(target, TextureParameterName.TextureMinFilter, (int)(useMipmaps ? TextureMinFilter.NearestMipmapLinear : TextureMinFilter.Nearest));
GraphicsExtensions.CheckGLError();
GL.TexParameter(target, TextureParameterName.TextureMagFilter, (int)TextureMagFilter.Nearest);
GraphicsExtensions.CheckGLError();
break;
case TextureFilter.LinearMipPoint:
if (GraphicsDevice.GraphicsCapabilities.SupportsTextureFilterAnisotropic)
{
GL.TexParameter(target, TextureParameterNameTextureMaxAnisotropy, 1.0f);
GraphicsExtensions.CheckGLError();
}
GL.TexParameter(target, TextureParameterName.TextureMinFilter, (int)(useMipmaps ? TextureMinFilter.LinearMipmapNearest : TextureMinFilter.Linear));
GraphicsExtensions.CheckGLError();
GL.TexParameter(target, TextureParameterName.TextureMagFilter, (int)TextureMagFilter.Linear);
GraphicsExtensions.CheckGLError();
break;
case TextureFilter.MinLinearMagPointMipLinear:
if (GraphicsDevice.GraphicsCapabilities.SupportsTextureFilterAnisotropic)
{
GL.TexParameter(target, TextureParameterNameTextureMaxAnisotropy, 1.0f);
GraphicsExtensions.CheckGLError();
}
GL.TexParameter(target, TextureParameterName.TextureMinFilter, (int)(useMipmaps ? TextureMinFilter.LinearMipmapLinear : TextureMinFilter.Linear));
GraphicsExtensions.CheckGLError();
GL.TexParameter(target, TextureParameterName.TextureMagFilter, (int)TextureMagFilter.Nearest);
GraphicsExtensions.CheckGLError();
break;
case TextureFilter.MinLinearMagPointMipPoint:
if (GraphicsDevice.GraphicsCapabilities.SupportsTextureFilterAnisotropic)
{
GL.TexParameter(target, TextureParameterNameTextureMaxAnisotropy, 1.0f);
GraphicsExtensions.CheckGLError();
}
GL.TexParameter(target, TextureParameterName.TextureMinFilter, (int)(useMipmaps ? TextureMinFilter.LinearMipmapNearest: TextureMinFilter.Linear));
GraphicsExtensions.CheckGLError();
GL.TexParameter(target, TextureParameterName.TextureMagFilter, (int)TextureMagFilter.Nearest);
GraphicsExtensions.CheckGLError();
break;
case TextureFilter.MinPointMagLinearMipLinear:
if (GraphicsDevice.GraphicsCapabilities.SupportsTextureFilterAnisotropic)
{
GL.TexParameter(target, TextureParameterNameTextureMaxAnisotropy, 1.0f);
GraphicsExtensions.CheckGLError();
}
GL.TexParameter(target, TextureParameterName.TextureMinFilter, (int)(useMipmaps ? TextureMinFilter.NearestMipmapLinear: TextureMinFilter.Nearest));
GraphicsExtensions.CheckGLError();
GL.TexParameter(target, TextureParameterName.TextureMagFilter, (int)TextureMagFilter.Linear);
GraphicsExtensions.CheckGLError();
break;
case TextureFilter.MinPointMagLinearMipPoint:
if (GraphicsDevice.GraphicsCapabilities.SupportsTextureFilterAnisotropic)
{
GL.TexParameter(target, TextureParameterNameTextureMaxAnisotropy, 1.0f);
GraphicsExtensions.CheckGLError();
}
GL.TexParameter(target, TextureParameterName.TextureMinFilter, (int)(useMipmaps ? TextureMinFilter.NearestMipmapNearest: TextureMinFilter.Nearest));
GraphicsExtensions.CheckGLError();
GL.TexParameter(target, TextureParameterName.TextureMagFilter, (int)TextureMagFilter.Linear);
GraphicsExtensions.CheckGLError();
break;
// case TextureFilter.Linear:
// if (GraphicsDevice.GraphicsCapabilities.SupportsTextureFilterAnisotropic)
// {
// GL.TexParameter(target, TextureParameterNameTextureMaxAnisotropy, 1.0f);
// GraphicsExtensions.CheckGLError();
// }
// GL.TexParameter(target, TextureParameterName.TextureMinFilter, (int)(useMipmaps ? TextureMinFilter.LinearMipmapLinear : TextureMinFilter.Linear));
// GraphicsExtensions.CheckGLError();
// GL.TexParameter(target, TextureParameterName.TextureMagFilter, (int)TextureMagFilter.Linear);
// GraphicsExtensions.CheckGLError();
// break;
// case TextureFilter.Anisotropic:
// if (GraphicsDevice.GraphicsCapabilities.SupportsTextureFilterAnisotropic)
// {
// GL.TexParameter(target, TextureParameterNameTextureMaxAnisotropy, MathHelper.Clamp(this.MaxAnisotropy, 1.0f, GraphicsDevice.GraphicsCapabilities.MaxTextureAnisotropy));
// GraphicsExtensions.CheckGLError();
// }
// GL.TexParameter(target, TextureParameterName.TextureMinFilter, (int)(useMipmaps ? TextureMinFilter.LinearMipmapLinear : TextureMinFilter.Linear));
// GraphicsExtensions.CheckGLError();
// GL.TexParameter(target, TextureParameterName.TextureMagFilter, (int)TextureMagFilter.Linear);
// GraphicsExtensions.CheckGLError();
// break;
// case TextureFilter.PointMipLinear:
// if (GraphicsDevice.GraphicsCapabilities.SupportsTextureFilterAnisotropic)
// {
// GL.TexParameter(target, TextureParameterNameTextureMaxAnisotropy, 1.0f);
// GraphicsExtensions.CheckGLError();
// }
// GL.TexParameter(target, TextureParameterName.TextureMinFilter, (int)(useMipmaps ? TextureMinFilter.NearestMipmapLinear : TextureMinFilter.Nearest));
// GraphicsExtensions.CheckGLError();
// GL.TexParameter(target, TextureParameterName.TextureMagFilter, (int)TextureMagFilter.Nearest);
// GraphicsExtensions.CheckGLError();
// break;
// case TextureFilter.LinearMipPoint:
// if (GraphicsDevice.GraphicsCapabilities.SupportsTextureFilterAnisotropic)
// {
// GL.TexParameter(target, TextureParameterNameTextureMaxAnisotropy, 1.0f);
// GraphicsExtensions.CheckGLError();
// }
// GL.TexParameter(target, TextureParameterName.TextureMinFilter, (int)(useMipmaps ? TextureMinFilter.LinearMipmapNearest : TextureMinFilter.Linear));
// GraphicsExtensions.CheckGLError();
// GL.TexParameter(target, TextureParameterName.TextureMagFilter, (int)TextureMagFilter.Linear);
// GraphicsExtensions.CheckGLError();
// break;
// case TextureFilter.MinLinearMagPointMipLinear:
// if (GraphicsDevice.GraphicsCapabilities.SupportsTextureFilterAnisotropic)
// {
// GL.TexParameter(target, TextureParameterNameTextureMaxAnisotropy, 1.0f);
// GraphicsExtensions.CheckGLError();
// }
// GL.TexParameter(target, TextureParameterName.TextureMinFilter, (int)(useMipmaps ? TextureMinFilter.LinearMipmapLinear : TextureMinFilter.Linear));
// GraphicsExtensions.CheckGLError();
// GL.TexParameter(target, TextureParameterName.TextureMagFilter, (int)TextureMagFilter.Nearest);
// GraphicsExtensions.CheckGLError();
// break;
// case TextureFilter.MinLinearMagPointMipPoint:
// if (GraphicsDevice.GraphicsCapabilities.SupportsTextureFilterAnisotropic)
// {
// GL.TexParameter(target, TextureParameterNameTextureMaxAnisotropy, 1.0f);
// GraphicsExtensions.CheckGLError();
// }
// GL.TexParameter(target, TextureParameterName.TextureMinFilter, (int)(useMipmaps ? TextureMinFilter.LinearMipmapNearest: TextureMinFilter.Linear));
// GraphicsExtensions.CheckGLError();
// GL.TexParameter(target, TextureParameterName.TextureMagFilter, (int)TextureMagFilter.Nearest);
// GraphicsExtensions.CheckGLError();
// break;
// case TextureFilter.MinPointMagLinearMipLinear:
// if (GraphicsDevice.GraphicsCapabilities.SupportsTextureFilterAnisotropic)
// {
// GL.TexParameter(target, TextureParameterNameTextureMaxAnisotropy, 1.0f);
// GraphicsExtensions.CheckGLError();
// }
// GL.TexParameter(target, TextureParameterName.TextureMinFilter, (int)(useMipmaps ? TextureMinFilter.NearestMipmapLinear: TextureMinFilter.Nearest));
// GraphicsExtensions.CheckGLError();
// GL.TexParameter(target, TextureParameterName.TextureMagFilter, (int)TextureMagFilter.Linear);
// GraphicsExtensions.CheckGLError();
// break;
// case TextureFilter.MinPointMagLinearMipPoint:
// if (GraphicsDevice.GraphicsCapabilities.SupportsTextureFilterAnisotropic)
// {
// GL.TexParameter(target, TextureParameterNameTextureMaxAnisotropy, 1.0f);
// GraphicsExtensions.CheckGLError();
// }
// GL.TexParameter(target, TextureParameterName.TextureMinFilter, (int)(useMipmaps ? TextureMinFilter.NearestMipmapNearest: TextureMinFilter.Nearest));
// GraphicsExtensions.CheckGLError();
// GL.TexParameter(target, TextureParameterName.TextureMagFilter, (int)TextureMagFilter.Linear);
// GraphicsExtensions.CheckGLError();
// break;
default:
throw new NotSupportedException();
}
Expand Down Expand Up @@ -184,14 +184,14 @@ private int GetWrapMode(TextureAddressMode textureAddressMode)
{
case TextureAddressMode.Clamp:
return (int)TextureWrapMode.ClampToEdge;
case TextureAddressMode.Wrap:
return (int)TextureWrapMode.Repeat;
case TextureAddressMode.Mirror:
return (int)TextureWrapMode.MirroredRepeat;
#if !GLES
case TextureAddressMode.Border:
return (int)TextureWrapMode.ClampToBorder;
#endif
// case TextureAddressMode.Wrap:
// return (int)TextureWrapMode.Repeat;
// case TextureAddressMode.Mirror:
// return (int)TextureWrapMode.MirroredRepeat;
// #if !GLES
// case TextureAddressMode.Border:
// return (int)TextureWrapMode.ClampToBorder;
// #endif
default:
throw new ArgumentException("No support for " + textureAddressMode);
}
Expand Down

0 comments on commit 8fe9cd9

Please sign in to comment.