I have this vertex shader:
Texture2D matrixPalettes;
SamplerState matrixPaletteSamplerState
{
AddressU=CLAMP;
AddressV=CLAMP;
Filter=MIN_MAG_MIP_POINT;
};
row_major matrix computeBoneTransformInstanced(in uint instanceIndex,in float4 weights,in uint4 boneIds)
{
row_major matrix boneTransform=matrix(0.0f,0.0f,0.0f,0.0f,
0.0f,0.0f,0.0f,0.0f,
0.0f,0.0f,0.0f,0.0f,
0.0f,0.0f,0.0f,0.0f);
row_major matrix transform;
[unroll (NUM_INFLUENCES)]
for (int i=0;i<NUM_INFLUENCES;i++)
{
[unroll (4)]
for (int j=0;j<4;j++)
transform[j]=matrixPalettes.Sample(matrixPaletteSamplerState,float2(0.0f,0.0f),uint2(4*boneIds[i]+j,instanceIndex));
boneTransform+=weights[i]*transform;
}
return boneTransform;
}
PS_INPUT_DS_GB VS_DS_GB_SKINNED(VS_INPUT_SKINNED_INST input)
{
PS_INPUT_DS_GB output;
row_major matrix boneTransform=computeBoneTransformInstanced(input.csmMaskInstanceId.y,input.weights,input.ids);
row_major matrix W=mul(boneTransform,input.vWorldMatrix);
row_major matrix WVP=mul(W,g_mViewProjection);
//...
return output;
}
It's supposed to get the matrix plalettes from a texture for instanced skinning rendering.
But I get this error : error X4532 : cannot map expression to vs_4_0 instruction set, for the line :
transform[j]=matrixPalettes.Sample(matrixPaletteSamplerState,float2(0.0f,0.0f),uint2(4*boneIds[i]+j,instanceIndex));
What's wrong here ? Is it legit to sample a texture in a vertex shader ?