мне было интересно, для чего нужны эти входные и выходные семантики в HLSL? т.е. почему я должен писать это TEXCOORD0;
struct VS_OUTPUT { float2 tc : TEXCOORD0; };
, когда тип и имя уже указаны?