s&box docs

Sampler States

Sampler states control how textures are sampled in shaders, how they're filtered and addressed.

Sampler states control how textures are sampled in shaders, how they're filtered and addressed.

Modern GPUs allow binding of 128 textures in a shader, however you are limited to only 16 bound samplers. This is generally more than enough if you reuse samplers for multiple textures.

Sampler states are defined as you normally would in HLSL, but should be annotated with the desired options.

Texture2D MyCoolTexture;
Texture2D MyOtherCoolTexture;
SamplerState MyPixelySampler < Filter( Point ); >;

// Using the samplers
float4 color1 = MyCoolTexture.Sample( MyPixelySampler, uv );
float4 color2 = MyOtherCoolTexture.Sample( MyPixelySampler, uv );

Annotations

AnnotationDescriptionPossible Values
FilterFiltering mode used for texture sampling.Point, Linear, Anisotropic
AddressUTexture coordinate addressing mode for the U direction.Wrap, Mirror, Clamp, Border, Mirror_Once
AddressVTexture coordinate addressing mode for the V direction.Wrap, Mirror, Clamp, Border, Mirror_Once
AddressWTexture coordinate addressing mode for the W direction.Wrap, Mirror, Clamp, Border, Mirror_Once
MaxAnisoMaximum anisotropy level allowed for anisotropic filtering.Integer value (e.g., 2, 4, 8, 16, etc.)

Filters

EnumDescription
PointSame as MinMagMipPoint
BilinearSame as MinMagLinearMipPoint
TrilinearSame as MinMagMipLinear
AnisotropicAnisotropic filtering, controlled by MaxAniso
MinMagMipPointMinify/magnify/mipmap using point sampling.
MinMagPointMipLinearMinify/magnify using point sampling, mipmap using linear interpolation.
MinPointMagLinearMipPointMinify using point sampling, magnify using linear sampling, mipmap using point sampling.
MinPointMagMipLinearMinify using point sampling, magnify using point sampling, mipmap using linear interpolation.
MinLinearMagMipPointMinify using linear interpolation, magnify using point sampling, mipmap using point sampling.
MinLinearMagPointMipLinearMinify using linear interpolation, magnify using point sampling, mipmap using linear interpolation.
MinMagLinearMipPointMinify/magnify using linear sampling, mipmap using point sampling.
MinMagMipLinearMinify/magnify/mipmap using linear interpolation.
ComparisonMinMagMipPointComparison minify/magnify/mipmap using point sampling.
ComparisonMinMagPointMipLinearComparison minify/magnify using point sampling, mipmap using linear interpolation.
ComparisonMinPointMagLinearMipPointComparison minify using point sampling, magnify using linear sampling, mipmap using point sampling.
ComparisonMinPointMagMipLinearComparison minify using point sampling, magnify using point sampling, mipmap using linear interpolation.
ComparisonMinLinearMagMipPointComparison minify using linear interpolation, magnify using point sampling, mipmap using point sampling.
ComparisonMinLinearMagPointMipLinearComparison minify using linear interpolation, magnify using point sampling, mipmap using linear interpolation.
ComparisonMinMagLinearMipPointComparison minify/magnify using linear sampling, mipmap using point sampling.
ComparisonMinMagMipLinearComparison minify/magnify/mipmap using linear interpolation.
ComparisonAnisotropicComparison anisotropic filtering.

Common Samplers

Here are some common predefined sampler states you can use in your shaders.

Sampler StateDescription
g_sAnisoAnisotropic filtering with a maximum anisotropy level of 8.
g_sBilinearClampBilinear filtering with texture coordinate addressing mode set to clamp for U, V, and W directions.
g_sTrilinearWrapTrilinear filtering with texture coordinate addressing mode set to wrap for U, V, and W directions.
g_sTrilinearClampTrilinear filtering with texture coordinate addressing mode set to clamp for U, V, and W directions.
g_sPointClampPoint filtering with texture coordinate addressing mode set to clamp for U, V, and W directions.
g_sPointWrapPoint filtering with texture coordinate addressing mode set to wrap for U and V directions, and clamp for W direction.

CreateTexture2D & Tex2D macros create and sample coupled textures and samplers, this is how older graphics APIs (DX9) and should be avoided due to it's limitations.

Referenced API

Canonical API pages mentioned in this guide.

Sandbox.Connection.Filter

No summary available.

Sandbox.Rendering.SamplerState

Represents a sampler state used to control how textures are sampled in shaders. Example usage: SamplerState mySampler ; C# binding: var sampler = new SamplerState { Filter = FilterMode.Trilinear, AddressModeU = TextureAddressMode.Wrap, AddressModeV = TextureAddressMode.Wrap, AddressModeW = TextureAddressMode.Clamp, MaxAnisotropy = 4 }; Graphics.Attributes.Set("sampler", sampler);

Sandbox.Spline.Point

Point that defines part of the spline. Two consecutive points define a segment of the spline. The `Sandbox.Spline.Point.Position`, `Sandbox.Spline.Point.In`/`Sandbox.Spline.Point.Out` Handles and / properties are used to define the shape of the spline. P1 (Position) P1 (In) โ–ผ P1 (Out) oโ”€โ”€โ”€โ”€โ”€โ”€โ•โ•โ•Xโ•โ•โ•โ”€โ”€โ”€โ”€โ”€โ”€o โ”€โ”€โ”€/ \โ”€โ”€โ”€ โ”€โ”€/ \โ”€โ”€ -/ \- / \ | | P0 X X P2

Editor.AssetTagSystem.TagDefinition.Filter

No summary available.

Sandbox.Bloom.Filter

No summary available.

Sandbox.Rendering.SamplerState.Filter

The texture filtering mode used for sampling (e.g., point, bilinear, trilinear).

Sandbox.SceneLineObject.SamplerState

No summary available.

Sandbox.Graphics

Used to render to the screen using your Graphics Card, or whatever you kids are using in your crazy future computers. Whatever it is I'm sure it isn't fungible and everyone has free money and no-one has to ever work.

Created at:
Updated at:

On this page