1*c8dee2aaSAndroid Build Coastguard Worker 2*c8dee2aaSAndroid Build Coastguard Workerout vec4 sk_FragColor; 3*c8dee2aaSAndroid Build Coastguard Workeruniform vec4 colorGreen; 4*c8dee2aaSAndroid Build Coastguard Workeruniform vec4 colorRed; 5*c8dee2aaSAndroid Build Coastguard Workervec4 main() { 6*c8dee2aaSAndroid Build Coastguard Worker vec4 value = vec4(2.5, -2.5, 8.0, -0.125); 7*c8dee2aaSAndroid Build Coastguard Worker const vec4 expectedWhole = vec4(2.0, -2.0, 8.0, 0.0); 8*c8dee2aaSAndroid Build Coastguard Worker const vec4 expectedFraction = vec4(0.5, -0.5, 0.0, -0.125); 9*c8dee2aaSAndroid Build Coastguard Worker bvec4 ok = bvec4(false); 10*c8dee2aaSAndroid Build Coastguard Worker vec4 whole; 11*c8dee2aaSAndroid Build Coastguard Worker vec4 fraction; 12*c8dee2aaSAndroid Build Coastguard Worker fraction.x = modf(value.x, whole.x); 13*c8dee2aaSAndroid Build Coastguard Worker ok.x = whole.x == 2.0 && fraction.x == 0.5; 14*c8dee2aaSAndroid Build Coastguard Worker fraction.xy = modf(value.xy, whole.xy); 15*c8dee2aaSAndroid Build Coastguard Worker ok.y = whole.xy == vec2(2.0, -2.0) && fraction.xy == vec2(0.5, -0.5); 16*c8dee2aaSAndroid Build Coastguard Worker fraction.xyz = modf(value.xyz, whole.xyz); 17*c8dee2aaSAndroid Build Coastguard Worker ok.z = whole.xyz == vec3(2.0, -2.0, 8.0) && fraction.xyz == vec3(0.5, -0.5, 0.0); 18*c8dee2aaSAndroid Build Coastguard Worker fraction = modf(value, whole); 19*c8dee2aaSAndroid Build Coastguard Worker ok.w = whole == expectedWhole && fraction == expectedFraction; 20*c8dee2aaSAndroid Build Coastguard Worker return all(ok) ? colorGreen : colorRed; 21*c8dee2aaSAndroid Build Coastguard Worker} 22