add Sampler info
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
parent
690cf0dabd
commit
c75fc8ca23
|
@ -0,0 +1,34 @@
|
|||
---
|
||||
title: "Sampler"
|
||||
date: 2021-01-25T20:48:35-08:00
|
||||
weight: 3
|
||||
---
|
||||
|
||||
You might be familiar with the concept of "sampling" in music, where artists take a small segment of recorded music and recontextualize it in another work. Similarly, in graphics applications, sampling refers to the process of looking up segments of texture information in a shader so the data can be used.
|
||||
|
||||
Samplers tell the renderer how upscaling or downscaling scenarios should be filtered. They can also cause the texture to repeat or mirror itself, among other possibilities.
|
||||
|
||||
To create a sampler, define a `SamplerState` struct:
|
||||
|
||||
```cs
|
||||
var mySamplerState = new SamplerState
|
||||
{
|
||||
MinFilter = Filter.Linear,
|
||||
MagFilter = Filter.Linear,
|
||||
MipmapMode = SamplerMipmapMode.Linear,
|
||||
AddressModeU = SamplerAddressMode.Repeat,
|
||||
AddressModeV = SamplerAddressMode.Repeat,
|
||||
AddressModeW = SamplerAddressMode.Repeat,
|
||||
CompareEnable = false,
|
||||
AnisotropyEnable = false,
|
||||
MipLodBias = 0f,
|
||||
MinLod = 0,
|
||||
MaxLod = 1000
|
||||
};
|
||||
|
||||
var mySampler = new Sampler(GraphicsDevice, mySamplerState);
|
||||
```
|
||||
|
||||
The same sampler can be used in conjunction with as many different textures as you like. We will discuss this more when we get into command buffers.
|
||||
|
||||
There are some common `SamplerState`s that are provided for you, for example `SamplerState.PointClamp`. Have a look at the `SamplerState` definition to see them all.
|
|
@ -18,7 +18,7 @@ var textureCreateInfo = new TextureCreateInfo
|
|||
IsCube = false,
|
||||
LevelCount = 1,
|
||||
SampleCount = SampleCount.One,
|
||||
UsageFlags = TextureUsageFlags.SamplerBit
|
||||
UsageFlags = TextureUsageFlags.Sampler
|
||||
};
|
||||
|
||||
var myTexture = new Texture(GraphicsDevice, textureCreateInfo);
|
||||
|
@ -39,9 +39,9 @@ myTexture.SetData(pixels);
|
|||
Of course, having to fill in all this data every time is kind of cumbersome, so we have some shortcut methods for common texture usages.
|
||||
|
||||
```cs
|
||||
var my2DTexture = Texture.CreateTexture2D(GraphicsDevice, 128, 128, ColorFormat.R8G8B8A8, TextureUsageFlags.SamplerBit);
|
||||
var my3DTexture = Texture.CreateTexture3D(GraphicsDevice, 128, 128, ColorFormat.R8G8B8A8, TextureUsageFlags.SamplerBit);
|
||||
var myCubeTexture = Texture.CreateTextureCube(GraphicsDevice, 128, ColorFormat.R8G8B8A8, TextureUsageFlags.SamplerBit);
|
||||
var my2DTexture = Texture.CreateTexture2D(GraphicsDevice, 128, 128, ColorFormat.R8G8B8A8, TextureUsageFlags.Sampler);
|
||||
var my3DTexture = Texture.CreateTexture3D(GraphicsDevice, 128, 128, ColorFormat.R8G8B8A8, TextureUsageFlags.Sampler);
|
||||
var myCubeTexture = Texture.CreateTextureCube(GraphicsDevice, 128, ColorFormat.R8G8B8A8, TextureUsageFlags.Sampler);
|
||||
```
|
||||
|
||||
There is also a built-in PNG loader that creates a 2D R8G8B8A8 texture and fills it with pixel data.
|
||||
|
|
Loading…
Reference in New Issue