HLSLにおけるTextureの操作関数


最も一般的な関数はSample Sample(sampler_state S,float Location[,int Offset]);sampler_stateは外部のbufferからでもhlsl内定義でもよく、一般的には外部設定から共有することを選択します.Locationが挿入すべきものはuvデータであり,異なるピクチャタイプには異なるuvタイプがある.
Texture-Object Type	Parameter Type
Texture1D	float
Texture1DArray, Texture2D	float2
Texture2DArray, Texture3D, TextureCube	float3
TextureCubeArray	float4

offsetはオプションパラメータで、入力しないのはデフォルトの0,0です.
Texture-Object Type	Parameter Type
Texture1D, Texture1DArray	int
Texture2D, Texture2DArray	int2
Texture3D	int3
TextureCube, TextureCubeArray	//not supported
// Object Declarations
Texture2D g_MeshTexture;            // Color texture for mesh

SamplerState MeshTextureSampler
{
    Filter = MIN_MAG_MIP_LINEAR;
    AddressU = Wrap;
    AddressV = Wrap;
};

struct VS_OUTPUT
{
    float4 Position   : SV_POSITION; // vertex position 
    float4 Diffuse    : COLOR0;      // vertex diffuse color (note that COLOR0 is clamped from 0..1)
    float2 TextureUV  : TEXCOORD0;   // vertex texture coords 
};

VS_OUTPUT In;

// pixel shader 
   ...
        Output.RGBColor = g_MeshTexture.Sample(MeshTextureSampler, In.TextureUV) * In.Diffuse;