1cb93a386Sopenharmony_ciuniform half4 colorGreen; 2cb93a386Sopenharmony_ci 3cb93a386Sopenharmony_cistruct S { 4cb93a386Sopenharmony_ci float f; 5cb93a386Sopenharmony_ci float af[5]; 6cb93a386Sopenharmony_ci half4 h4; 7cb93a386Sopenharmony_ci half4 ah4[5]; 8cb93a386Sopenharmony_ci}; 9cb93a386Sopenharmony_ci 10cb93a386Sopenharmony_cihalf4 globalVar; 11cb93a386Sopenharmony_ciS globalStruct; 12cb93a386Sopenharmony_ci 13cb93a386Sopenharmony_cihalf4 main(float2 coords) { 14cb93a386Sopenharmony_ci /* assign to scalar */ int i; i = 0; 15cb93a386Sopenharmony_ci /* assign to vector */ int4 i4; i4 = int4(1,2,3,4); 16cb93a386Sopenharmony_ci /* assign to matrix */ float3x3 f3x3; f3x3 = float3x3(1,2,3,4,5,6,7,8,9); 17cb93a386Sopenharmony_ci /* assign to swizzle */ half4 x; x.w = 0; x.yx = half2(0); 18cb93a386Sopenharmony_ci /* assign to array of scalar */ int ai[1]; ai[0] = 0; 19cb93a386Sopenharmony_ci /* assign to array of vector */ int4 ai4[1]; ai4[0] = int4(1,2,3,4); 20cb93a386Sopenharmony_ci /* assign to array of matrix */ half3x3 ah2x4[1]; ah2x4[0] = half3x3(1,2,3,4,5,6,7,8,9); 21cb93a386Sopenharmony_ci /* assign to array swizzle */ float4 af4[1]; af4[0].x = 0; af4[0].ywxz = float4(1); 22cb93a386Sopenharmony_ci 23cb93a386Sopenharmony_ci /* assign to struct variable */ S s; s.f = 0; 24cb93a386Sopenharmony_ci /* assign to struct array */ s.af[1] = 0; 25cb93a386Sopenharmony_ci /* assign to struct swizzle */ s.h4.zxy = half3(9); 26cb93a386Sopenharmony_ci /* assign to struct array swizzle */ s.ah4[2].yw = half2(5); 27cb93a386Sopenharmony_ci 28cb93a386Sopenharmony_ci /* assign to global var */ globalVar = half4(0); 29cb93a386Sopenharmony_ci /* assign to global struct */ globalStruct.f = 0; 30cb93a386Sopenharmony_ci 31cb93a386Sopenharmony_ci// Not allowed in ES2 32cb93a386Sopenharmony_ci// /* assign to array idx by lookup */ ai[0] = 0; ai[ai[0]] = 0; 33cb93a386Sopenharmony_ci 34cb93a386Sopenharmony_ci// Not allowed natively in GLSL, but SkSL will turn these into valid GLSL expressions. 35cb93a386Sopenharmony_ci /* assign to folded ternary */ half l, r; (true ? l : r) = 0; 36cb93a386Sopenharmony_ci /* assign to unary plus */ +ai[0] += +ai4[0][0]; 37cb93a386Sopenharmony_ci /* assign to struct unary plus */ +s.f = 1; +s.af[0] = 2; 38cb93a386Sopenharmony_ci +s.h4 = half4(1); +s.ah4[0] = half4(2); 39cb93a386Sopenharmony_ci 40cb93a386Sopenharmony_ci // Keep these variables alive 41cb93a386Sopenharmony_ci af4[0] *= float(ah2x4[0][0][0]); 42cb93a386Sopenharmony_ci i4.y *= i; 43cb93a386Sopenharmony_ci x.y *= l; 44cb93a386Sopenharmony_ci s.f *= l; 45cb93a386Sopenharmony_ci 46cb93a386Sopenharmony_ci return colorGreen; 47cb93a386Sopenharmony_ci} 48