111 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			GLSL
		
	
	
	
	
	
			
		
		
	
	
			111 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			GLSL
		
	
	
	
	
	
| #version 450 core
 | |
| 
 | |
| buffer bn {
 | |
|     int a[];
 | |
|     float b[];
 | |
| } buf;
 | |
| 
 | |
| uniform un {
 | |
|     int a[];
 | |
|     float b[];
 | |
| } ubuf;
 | |
| 
 | |
| buffer bna {
 | |
|     int a[];
 | |
|     float b[];
 | |
| } bufa[4];
 | |
| 
 | |
| uniform una {
 | |
|     int a[];
 | |
|     float b[];
 | |
| } ubufa[4];
 | |
| 
 | |
| buffer abn {
 | |
|     int aba[];
 | |
|     float abb[];
 | |
| };
 | |
| 
 | |
| uniform aun {
 | |
|     int aua[];
 | |
|     float aub[];
 | |
| };
 | |
| 
 | |
| layout(binding=1)                             uniform samplerBuffer       uniformTexelBufferDyn[];
 | |
| layout(binding=2, r32f)                       uniform imageBuffer         storageTexelBufferDyn[];
 | |
| layout(binding=3)                             uniform uname { float a; }  uniformBuffer[];
 | |
| layout(binding=4)                             buffer  bname { float b; }  storageBuffer[];
 | |
| layout(binding=5)                             uniform sampler2D           sampledImage[];
 | |
| layout(binding=6, r32f)                       uniform image2D             storageImage[];
 | |
| layout(binding=8)                             uniform samplerBuffer       uniformTexelBuffer[];
 | |
| layout(binding=9, r32f)                       uniform imageBuffer         storageTexelBuffer[];
 | |
| 
 | |
| int i;
 | |
| 
 | |
| void main()
 | |
| {
 | |
|     ubuf.a[3];
 | |
|     ubuf.b[3];
 | |
|     buf.a[3];
 | |
|     buf.b[3];
 | |
| 
 | |
|     ubufa[3].a[3];
 | |
|     ubufa[3].b[3];
 | |
|     bufa[3].a[3];
 | |
|     bufa[3].b[3];
 | |
| 
 | |
|     aua[3];
 | |
|     aub[3];
 | |
|     aba[3];
 | |
|     abb[3];
 | |
| 
 | |
|     ubuf.a[i];             // ERROR
 | |
|     ubuf.b[i];             // ERROR
 | |
|     buf.a[i];              // ERROR
 | |
|     buf.b[i];
 | |
| 
 | |
|     ubuf.a.length();       // ERROR
 | |
|     ubuf.b.length();       // ERROR
 | |
|     buf.a.length();        // ERROR
 | |
|     buf.b.length();
 | |
| 
 | |
|     ubufa[1].a[i];         // ERROR
 | |
|     ubufa[1].b[i];         // ERROR
 | |
|     bufa[1].a[i];          // ERROR
 | |
|     bufa[1].b[i];
 | |
| 
 | |
|     ubufa[1].a.length();   // ERROR
 | |
|     ubufa[1].b.length();   // ERROR
 | |
|     bufa[1].a.length();    // ERROR
 | |
|     bufa[1].b.length();
 | |
| 
 | |
|     aua[i];                // ERROR
 | |
|     aub[i];                // ERROR
 | |
|     aba[i];                // ERROR
 | |
|     abb[i];
 | |
| 
 | |
|     aua.length();          // ERROR
 | |
|     aub.length();          // ERROR
 | |
|     aba.length();          // ERROR
 | |
|     abb.length();
 | |
| 
 | |
|     uniformTexelBufferDyn[1];
 | |
|     storageTexelBufferDyn[1];
 | |
|     uniformBuffer[1];
 | |
|     storageBuffer[1];
 | |
|     sampledImage[1];
 | |
|     storageImage[1];
 | |
|     uniformTexelBuffer[1];
 | |
|     storageTexelBuffer[1];
 | |
| 
 | |
|     uniformTexelBufferDyn[i];  // ERROR, need extension
 | |
|     storageTexelBufferDyn[i];  // ERROR, need extension
 | |
|     uniformBuffer[i];          // ERROR, need extension
 | |
|     storageBuffer[i];          // ERROR, need extension
 | |
|     sampledImage[i];           // ERROR, need extension
 | |
|     storageImage[i];           // ERROR, need extension
 | |
|     uniformTexelBuffer[i];     // ERROR, need extension
 | |
|     storageTexelBuffer[i];     // ERROR, need extension
 | |
| 
 | |
|     float local[] = ubuf.b;    // ERROR, can initialize with runtime-sized array
 | |
| }
 | 
