1617a3babSopenharmony_ci#version 420 core 2617a3babSopenharmony_ci 3617a3babSopenharmony_ciconst mat2x2 a = mat2( vec2( 1.0, 0.0 ), vec2( 0.0, 1.0 ) ); 4617a3babSopenharmony_cimat2x2 b = { vec2( 1.0, 0.0 ), vec2( 0.0, 1.0 ) }; 5617a3babSopenharmony_ciconst mat2x2 c = { { 1.0, 0.0, }, { 0.0, 1.0 } }; 6617a3babSopenharmony_ci 7617a3babSopenharmony_cifloat a2[2] = { 3.4, 4.2, 5.0 }; // illegal 8617a3babSopenharmony_civec2 b2 = { 1.0, 2.0, 3.0 }; // illegal 9617a3babSopenharmony_cimat3x3 c2 = { vec3(0.0), vec3(1.0), vec3(2.0), vec3(3.0) }; // illegal 10617a3babSopenharmony_cimat2x2 d = { 1.0, 0.0, 0.0, 1.0 }; // illegal, can't flatten nesting 11617a3babSopenharmony_ci 12617a3babSopenharmony_cistruct { 13617a3babSopenharmony_ci float a; 14617a3babSopenharmony_ci int b; 15617a3babSopenharmony_ci} e = { 1.2, 2, }; 16617a3babSopenharmony_ci 17617a3babSopenharmony_cistruct { 18617a3babSopenharmony_ci float a; 19617a3babSopenharmony_ci int b; 20617a3babSopenharmony_ci} e2 = { 1, 3 }; // legal, first initializer is converted 21617a3babSopenharmony_ci 22617a3babSopenharmony_cistruct { 23617a3babSopenharmony_ci float a; 24617a3babSopenharmony_ci int b; 25617a3babSopenharmony_ci} e3 = { 1.2, 2, 3 }; // illegal 26617a3babSopenharmony_ci 27617a3babSopenharmony_ciint a3 = true; // illegal 28617a3babSopenharmony_civec4 b3[2] = { vec4(0.0), 1.0 }; // illegal 29617a3babSopenharmony_civec4 b4[2] = vec4[2](vec4(0.0), mat2x2(1.0)); // illegal 30617a3babSopenharmony_cimat4x2 c3 = { vec3(0.0), vec3(1.0) }; // illegal 31617a3babSopenharmony_ci 32617a3babSopenharmony_cistruct S1 { 33617a3babSopenharmony_ci vec4 a; 34617a3babSopenharmony_ci vec4 b; 35617a3babSopenharmony_ci}; 36617a3babSopenharmony_ci 37617a3babSopenharmony_cistruct { 38617a3babSopenharmony_ci float s; 39617a3babSopenharmony_ci float t; 40617a3babSopenharmony_ci} d2[] = { S1(vec4(0.0), vec4(1.1)) }; // illegal 41617a3babSopenharmony_ci 42617a3babSopenharmony_cifloat b5[] = { 3.4, 4.2, 5.0, 5.2, 1.1 }; 43617a3babSopenharmony_ci 44617a3babSopenharmony_cistruct S3 { 45617a3babSopenharmony_ci float f; 46617a3babSopenharmony_ci mat2x3 m23; 47617a3babSopenharmony_ci}; 48617a3babSopenharmony_ci 49617a3babSopenharmony_cistruct S4 { 50617a3babSopenharmony_ci uvec2 uv2; 51617a3babSopenharmony_ci S3 s[2]; 52617a3babSopenharmony_ci}; 53617a3babSopenharmony_ci 54617a3babSopenharmony_cistruct Single1 { int f; }; 55617a3babSopenharmony_ciSingle1 single1 = { 10 }; 56617a3babSopenharmony_ci 57617a3babSopenharmony_cistruct Single2 { uvec2 v; }; 58617a3babSopenharmony_ciSingle2 single2 = { { 1, 2 } }; 59617a3babSopenharmony_ci 60617a3babSopenharmony_cistruct Single3 { Single1 s1; }; 61617a3babSopenharmony_ciSingle3 single3 = { { 3 } }; 62617a3babSopenharmony_ci 63617a3babSopenharmony_cistruct Single4 { Single2 s1; }; 64617a3babSopenharmony_ciSingle4 single4 = { { { 4u, 5u } } }; 65617a3babSopenharmony_ci 66617a3babSopenharmony_ciconst S4 constructed = S4(uvec2(1, 2), 67617a3babSopenharmony_ci S3[2](S3(3.0, mat2x3(4.0)), 68617a3babSopenharmony_ci S3(5.0, mat2x3(6.0)))); 69617a3babSopenharmony_ci 70617a3babSopenharmony_ciconst S4 curlybad1 = { {1, 2}, 71617a3babSopenharmony_ci { {3, {4.0, 0, 0.0}, {0.0, 4.0, 0.0 } }, // ERROR, the mat2x3 isn't isolated 72617a3babSopenharmony_ci {5.0, {6, 0.0, 0.0}, {0.0, 6.0, 0.0 } } } }; 73617a3babSopenharmony_ci 74617a3babSopenharmony_ciconst S4 curlyInit = { {1, 2}, 75617a3babSopenharmony_ci { {3, { {4.0, 0, 0.0}, {0.0, 4.0, 0.0 } } }, 76617a3babSopenharmony_ci {5.0, { {6, 0.0, 0.0}, {0.0, 6.0, 0.0 } } } } }; 77617a3babSopenharmony_ci 78617a3babSopenharmony_cifloat vc1, vc2, vc3; 79617a3babSopenharmony_civec3 av3 = vec3(vc1, vc2, vc3); 80617a3babSopenharmony_civec3 bv3 = { vc1, vc2, vc3 }; 81617a3babSopenharmony_ci 82617a3babSopenharmony_civoid main() 83617a3babSopenharmony_ci{ 84617a3babSopenharmony_ci memoryBarrier(); 85617a3babSopenharmony_ci 86617a3babSopenharmony_ci if (constructed == curlybad1) 87617a3babSopenharmony_ci ; 88617a3babSopenharmony_ci if (constructed == curlyInit) 89617a3babSopenharmony_ci ; 90617a3babSopenharmony_ci} 91