 2bb1f39fa7
			
		
	
	
		2bb1f39fa7
		
	
	
	
	
		
			
			This modifies function parameter passing to pass the counter buffer associated with a struct buffer to a function as a hidden parameter. Similarly function declarations will have hidden parameters added to accept the associated counter buffers. There is a limitation: if a SB type may or may not have an associated counter, passing it as a function parameter will assume that it does, and the counter will appear in the linkage whether or not there is a counter method used on the object.
		
			
				
	
	
		
			24 lines
		
	
	
		
			477 B
		
	
	
	
		
			GLSL
		
	
	
	
	
	
			
		
		
	
	
			24 lines
		
	
	
		
			477 B
		
	
	
	
		
			GLSL
		
	
	
	
	
	
| 
 | |
| // float4 Fn1(ConsumeStructuredBuffer<float4> arg_c)
 | |
| // {
 | |
| //     return arg_c.Consume();
 | |
| // }
 | |
| 
 | |
| float4 Fn2(AppendStructuredBuffer<float4> arg_a, ConsumeStructuredBuffer<float4> arg_c)
 | |
| {
 | |
|     arg_a.Append(float4(1,2,3,4));
 | |
|     return arg_c.Consume();
 | |
| }
 | |
| 
 | |
| AppendStructuredBuffer<float4>  sbuf_a;
 | |
| ConsumeStructuredBuffer<float4> sbuf_c;
 | |
| 
 | |
| AppendStructuredBuffer<float4>  sbuf_unused;
 | |
| 
 | |
| float4 main(uint pos : FOO) : SV_Target0
 | |
| {
 | |
|     // Fn1(sbuf_c);
 | |
| 
 | |
|     return Fn2(sbuf_a, sbuf_c);
 | |
| }
 |