 5da1f038d8
			
		
	
	
		5da1f038d8
		
	
	
	
	
		
			
			This is a partial implemention of structurebuffers supporting: * structured buffer types of: * StructuredBuffer * RWStructuredBuffer * ByteAddressBuffer * RWByteAddressBuffer * Atomic operations on RWByteAddressBuffer * Load/Load[234], Store/Store[234], GetDimensions methods (where allowed by type) * globallycoherent flag But NOT yet supporting: * AppendStructuredBuffer / ConsumeStructuredBuffer types * IncrementCounter/DecrementCounter methods Please note: the stride returned by GetDimensions is as calculated by glslang for std430, and may not match other environments in all cases.
		
			
				
	
	
		
			24 lines
		
	
	
		
			413 B
		
	
	
	
		
			GLSL
		
	
	
	
	
	
			
		
		
	
	
			24 lines
		
	
	
		
			413 B
		
	
	
	
		
			GLSL
		
	
	
	
	
	
| struct sb_t
 | |
| {
 | |
|     float3 color;
 | |
|     bool   test;
 | |
| };
 | |
| 
 | |
| 
 | |
| globallycoherent RWStructuredBuffer<sb_t>  sbuf;
 | |
| globallycoherent RWStructuredBuffer<float> sbuf2;
 | |
| 
 | |
| float4 main(uint pos : FOO) : SV_Target0
 | |
| {
 | |
|     sbuf2[pos+1] = 42;
 | |
| 
 | |
|     uint size;
 | |
|     uint stride;
 | |
|     sbuf.GetDimensions(size, stride);
 | |
| 
 | |
|     if (sbuf[pos].test)
 | |
|         return float4(sbuf[pos].color + sbuf2[pos], 0);
 | |
|     else
 | |
|         return size + stride;
 | |
| }
 |