передаёшь угол поворота спрайта в радианах, имея в VS позиции вертексов спрайта относительно центра спрайта (т.е. чтоб вместо центра спрайта был ноль), применяешь следующий код:
float c = cos(rotation);
float s = sin(rotation);
float4 rotationMatrix = float4(c, -s, s, c);
Position.xy = mul(Position.xy, float2x2(rotationMatrix));
---
пока писал, поста dsd не было, его вариант ничем не хуже.