uniform half4 colorGreen; inline void outParameterWrite(out half4 x) { x = colorGreen; } inline void outParameterWriteIndirect(out half4 c) { outParameterWrite(c); } inline void inoutParameterWrite(inout half4 x) { x *= x; } inline void inoutParameterWriteIndirect(inout half4 x) { inoutParameterWrite(x); } inline void inoutParameterRead(inout half4 x) { half4 scratch = x * x; } inline void inoutParameterIgnore(inout half4 x) { half4 scratch = colorGreen * colorGreen; } half4 main(float2 coords) { half4 c; // These functions write to their `out` param. outParameterWrite(c); outParameterWriteIndirect(c); inoutParameterWrite(c); inoutParameterWriteIndirect(c); // These functions don't write to their `out` param. inoutParameterRead(c); inoutParameterIgnore(c); return c; }