 f8203a0acd
			
		
	
	
		f8203a0acd
		
	
	
	
	
		
			
			Some texture and SB operations can take non-integer indexes, which should be cast to integers before use if they are not already. This adds makeIntegerIndex() for the purpose. Int types are left alone. (This was done before for operator[], but needs to apply to some other things too, hence its extraction into common function now)
		
			
				
	
	
		
			20 lines
		
	
	
		
			391 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			20 lines
		
	
	
		
			391 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| struct sb_t
 | |
| {
 | |
|     float4 color;
 | |
|     uint2  threadId;
 | |
| };
 | |
| 
 | |
| RWTexture2D<float4> outtx;
 | |
| ConsumeStructuredBuffer<sb_t> csb : register(u1);
 | |
| RWStructuredBuffer<float4> rwsb;
 | |
| 
 | |
| [numthreads(1, 1, 1)]
 | |
| void main(uint3 nThreadId : SV_DispatchThreadID)
 | |
| {
 | |
|     sb_t data = csb.Consume();
 | |
|     float2 coord = float2(data.threadId.xy);
 | |
|     outtx[coord] = data.color;
 | |
| 
 | |
|     rwsb[coord.x] = rwsb.Load(coord.y);
 | |
| }
 |