1*c8dee2aaSAndroid Build Coastguard Workeruniform half4 colorGreen; 2*c8dee2aaSAndroid Build Coastguard Worker 3*c8dee2aaSAndroid Build Coastguard Workerstruct S { 4*c8dee2aaSAndroid Build Coastguard Worker float f; 5*c8dee2aaSAndroid Build Coastguard Worker float af[5]; 6*c8dee2aaSAndroid Build Coastguard Worker half4 h4; 7*c8dee2aaSAndroid Build Coastguard Worker half4 ah4[5]; 8*c8dee2aaSAndroid Build Coastguard Worker}; 9*c8dee2aaSAndroid Build Coastguard Worker 10*c8dee2aaSAndroid Build Coastguard Workerhalf4 globalVar; 11*c8dee2aaSAndroid Build Coastguard WorkerS globalStruct; 12*c8dee2aaSAndroid Build Coastguard Worker 13*c8dee2aaSAndroid Build Coastguard Workernoinline void keepAlive(inout half h) {} 14*c8dee2aaSAndroid Build Coastguard Workernoinline void keepAlive(inout float f) {} 15*c8dee2aaSAndroid Build Coastguard Workernoinline void keepAlive(inout int i) {} 16*c8dee2aaSAndroid Build Coastguard Worker 17*c8dee2aaSAndroid Build Coastguard Workervoid assignToFunctionParameter(int x, inout float y) { 18*c8dee2aaSAndroid Build Coastguard Worker x = 1; 19*c8dee2aaSAndroid Build Coastguard Worker y = 1; 20*c8dee2aaSAndroid Build Coastguard Worker} 21*c8dee2aaSAndroid Build Coastguard Worker 22*c8dee2aaSAndroid Build Coastguard Workerhalf4 main(float2 coords) { 23*c8dee2aaSAndroid Build Coastguard Worker /* assign to scalar */ int i; i = 0; 24*c8dee2aaSAndroid Build Coastguard Worker /* assign to vector */ int4 i4; i4 = int4(1,2,3,4); 25*c8dee2aaSAndroid Build Coastguard Worker /* assign to matrix */ float3x3 f3x3; f3x3 = float3x3(1,2,3,4,5,6,7,8,9); 26*c8dee2aaSAndroid Build Coastguard Worker /* assign to swizzle */ half4 x; x.w = 0; x.yx = half2(0); 27*c8dee2aaSAndroid Build Coastguard Worker /* assign to array of scalar */ int ai[1]; ai[0] = 0; 28*c8dee2aaSAndroid Build Coastguard Worker /* assign to array of vector */ int4 ai4[1]; ai4[0] = int4(1,2,3,4); 29*c8dee2aaSAndroid Build Coastguard Worker /* assign to array of matrix */ half3x3 ah3x3[1]; ah3x3[0] = half3x3(1,2,3,4,5,6,7,8,9); 30*c8dee2aaSAndroid Build Coastguard Worker /* assign to array swizzle */ float4 af4[1]; af4[0].x = 0; af4[0].ywxz = float4(1); 31*c8dee2aaSAndroid Build Coastguard Worker 32*c8dee2aaSAndroid Build Coastguard Worker /* assign to struct variable */ S s; s.f = 0; 33*c8dee2aaSAndroid Build Coastguard Worker /* assign to struct array */ s.af[1] = 0; 34*c8dee2aaSAndroid Build Coastguard Worker /* assign to struct swizzle */ s.h4.zxy = half3(9); 35*c8dee2aaSAndroid Build Coastguard Worker /* assign to struct array swizzle */ s.ah4[2].yw = half2(5); 36*c8dee2aaSAndroid Build Coastguard Worker 37*c8dee2aaSAndroid Build Coastguard Worker /* assign to global var */ globalVar = half4(0); 38*c8dee2aaSAndroid Build Coastguard Worker /* assign to global struct */ globalStruct.f = 0; 39*c8dee2aaSAndroid Build Coastguard Worker 40*c8dee2aaSAndroid Build Coastguard Worker /* assign to function parameter */ assignToFunctionParameter(0, f3x3[0][0]); 41*c8dee2aaSAndroid Build Coastguard Worker 42*c8dee2aaSAndroid Build Coastguard Worker// Not allowed in ES2 43*c8dee2aaSAndroid Build Coastguard Worker// /* assign to array idx by lookup */ ai[0] = 0; ai[ai[0]] = 0; 44*c8dee2aaSAndroid Build Coastguard Worker 45*c8dee2aaSAndroid Build Coastguard Worker// Not allowed natively in GLSL, but SkSL will turn these into valid GLSL expressions. 46*c8dee2aaSAndroid Build Coastguard Worker /* assign to folded ternary */ half l, r; (true ? l : r) = 0; 47*c8dee2aaSAndroid Build Coastguard Worker /* assign to unary plus */ +ai[0] += +ai4[0][0]; 48*c8dee2aaSAndroid Build Coastguard Worker /* assign to struct unary plus */ +s.f = 1; +s.af[0] = 2; 49*c8dee2aaSAndroid Build Coastguard Worker +s.h4 = half4(1); +s.ah4[0] = half4(2); 50*c8dee2aaSAndroid Build Coastguard Worker 51*c8dee2aaSAndroid Build Coastguard Worker /* repeat assignment */ float repeat; repeat = repeat = 1.0; 52*c8dee2aaSAndroid Build Coastguard Worker 53*c8dee2aaSAndroid Build Coastguard Worker keepAlive(af4[0][0]); 54*c8dee2aaSAndroid Build Coastguard Worker keepAlive(ah3x3[0][0][0]); 55*c8dee2aaSAndroid Build Coastguard Worker keepAlive(i); 56*c8dee2aaSAndroid Build Coastguard Worker keepAlive(i4.y); 57*c8dee2aaSAndroid Build Coastguard Worker keepAlive(ai[0]); 58*c8dee2aaSAndroid Build Coastguard Worker keepAlive(ai4[0][0]); 59*c8dee2aaSAndroid Build Coastguard Worker keepAlive(x.y); 60*c8dee2aaSAndroid Build Coastguard Worker keepAlive(s.f); 61*c8dee2aaSAndroid Build Coastguard Worker keepAlive(l); 62*c8dee2aaSAndroid Build Coastguard Worker keepAlive(f3x3[0][0]); 63*c8dee2aaSAndroid Build Coastguard Worker keepAlive(repeat); 64*c8dee2aaSAndroid Build Coastguard Worker 65*c8dee2aaSAndroid Build Coastguard Worker return colorGreen; 66*c8dee2aaSAndroid Build Coastguard Worker} 67