StructuredBuffer<uint4> sbuf : register(t10); uint4 get(in StructuredBuffer<uint4> sb, uint bufferOffset) { return sb[bufferOffset]; } void set(in RWStructuredBuffer<uint4> sb, uint bufferOffset, uint4 data) { sb[bufferOffset] = data; } RWStructuredBuffer<uint4> sbuf2; // Not shared, because of type difference. StructuredBuffer<uint3> sbuf3 : register(t12); float4 main(uint pos : FOO) : SV_Target0 { set(sbuf2, 2, get(sbuf, 3)); return 0; }