1617a3babSopenharmony_ci#version 450 2617a3babSopenharmony_ci 3617a3babSopenharmony_ci#extension GL_EXT_nonuniform_qualifier : enable 4617a3babSopenharmony_ci 5617a3babSopenharmony_cilayout(location=0) nonuniformEXT in vec4 nu_inv4; 6617a3babSopenharmony_cinonuniformEXT float nu_gf; 7617a3babSopenharmony_cilayout(location=1) in nonuniformEXT flat int nu_ii; 8617a3babSopenharmony_cilayout(location = 2) in vec2 inTexcoord; 9617a3babSopenharmony_ci 10617a3babSopenharmony_cilayout(binding=0, input_attachment_index = 0) uniform subpassInput inputAttachmentDyn[]; 11617a3babSopenharmony_cilayout(binding=1) uniform samplerBuffer uniformTexelBufferDyn[]; 12617a3babSopenharmony_cilayout(binding=2, r32f) uniform imageBuffer storageTexelBufferDyn[]; 13617a3babSopenharmony_cilayout(binding=3) uniform uname { float a; } uniformBuffer[]; 14617a3babSopenharmony_cilayout(binding=4) buffer bname { float b; } storageBuffer[]; 15617a3babSopenharmony_cilayout(binding=5) uniform sampler2D sampledImage[]; 16617a3babSopenharmony_cilayout(binding=6, r32f) uniform image2D storageImage[]; 17617a3babSopenharmony_cilayout(binding=7, input_attachment_index = 1) uniform subpassInput inputAttachment[]; 18617a3babSopenharmony_cilayout(binding=8) uniform samplerBuffer uniformTexelBuffer[]; 19617a3babSopenharmony_cilayout(binding=9, r32f) uniform imageBuffer storageTexelBuffer[]; 20617a3babSopenharmony_cilayout(binding = 10) uniform texture2D uniformTexArr[8]; 21617a3babSopenharmony_cilayout(binding = 11) uniform sampler uniformSampler; 22617a3babSopenharmony_ci 23617a3babSopenharmony_cinonuniformEXT int foo(nonuniformEXT int nupi, nonuniformEXT out int f) 24617a3babSopenharmony_ci{ 25617a3babSopenharmony_ci return nupi; 26617a3babSopenharmony_ci} 27617a3babSopenharmony_ci 28617a3babSopenharmony_civoid main() 29617a3babSopenharmony_ci{ 30617a3babSopenharmony_ci nonuniformEXT int nu_li; 31617a3babSopenharmony_ci nonuniformEXT int nu_li2; 32617a3babSopenharmony_ci int dyn_i; 33617a3babSopenharmony_ci 34617a3babSopenharmony_ci int a = foo(nu_li, nu_li); 35617a3babSopenharmony_ci nu_li = nonuniformEXT(a) + nonuniformEXT(a * 2); 36617a3babSopenharmony_ci nu_li2 = a + nonuniformEXT(a * 2); 37617a3babSopenharmony_ci 38617a3babSopenharmony_ci float b; 39617a3babSopenharmony_ci b = nu_inv4.x * nu_gf; 40617a3babSopenharmony_ci b += subpassLoad(inputAttachmentDyn[dyn_i]).x; 41617a3babSopenharmony_ci b += texelFetch(uniformTexelBufferDyn[dyn_i], 1).x; 42617a3babSopenharmony_ci b += imageLoad(storageTexelBufferDyn[dyn_i], 1).x; 43617a3babSopenharmony_ci b += uniformBuffer[nu_ii].a; 44617a3babSopenharmony_ci b += storageBuffer[nu_ii].b; 45617a3babSopenharmony_ci b += texture(sampledImage[nu_ii], vec2(0.5)).x; 46617a3babSopenharmony_ci b += imageLoad(storageImage[nu_ii], ivec2(1)).x; 47617a3babSopenharmony_ci b += subpassLoad(inputAttachment[nu_ii]).x; 48617a3babSopenharmony_ci b += texelFetch(uniformTexelBuffer[nu_ii], 1).x; 49617a3babSopenharmony_ci b += imageLoad(storageTexelBuffer[nu_ii], 1).x; 50617a3babSopenharmony_ci b += texture(sampler2D(uniformTexArr[nu_ii], uniformSampler), inTexcoord.xy).x; 51617a3babSopenharmony_ci b += texture(nonuniformEXT(sampler2D(uniformTexArr[nu_ii], uniformSampler)), inTexcoord.xy).x; 52617a3babSopenharmony_ci 53617a3babSopenharmony_ci nonuniformEXT ivec4 v; 54617a3babSopenharmony_ci nonuniformEXT mat4 m; 55617a3babSopenharmony_ci nonuniformEXT struct S { int a; } s; 56617a3babSopenharmony_ci nonuniformEXT int arr[10]; 57617a3babSopenharmony_ci ivec4 uv; 58617a3babSopenharmony_ci mat4 um; 59617a3babSopenharmony_ci struct US { int a[10]; } us; 60617a3babSopenharmony_ci int uarr[10]; 61617a3babSopenharmony_ci b += uniformBuffer[v.y].a; 62617a3babSopenharmony_ci b += uniformBuffer[v[2]].a; 63617a3babSopenharmony_ci b += uniformBuffer[uv[nu_ii]].a; 64617a3babSopenharmony_ci b += uniformBuffer[int(m[2].z)].a; 65617a3babSopenharmony_ci b += uniformBuffer[s.a].a; 66617a3babSopenharmony_ci b += uniformBuffer[arr[2]].a; 67617a3babSopenharmony_ci b += uniformBuffer[int(um[nu_ii].z)].a; 68617a3babSopenharmony_ci b += uniformBuffer[us.a[nu_ii]].a; 69617a3babSopenharmony_ci b += uniformBuffer[uarr[nu_ii]].a; 70617a3babSopenharmony_ci 71617a3babSopenharmony_ci storageBuffer[nu_ii].b = b; 72617a3babSopenharmony_ci} 73