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