61 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			GLSL
		
	
	
	
	
	
			
		
		
	
	
			61 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			GLSL
		
	
	
	
	
	
| #version 310 es
 | |
| precision mediump float;
 | |
| in lowp float lowfin;
 | |
| in mediump float mediumfin;
 | |
| in highp vec4 highfin;
 | |
| 
 | |
| highp int uniform_high;
 | |
| mediump int uniform_medium;
 | |
| lowp int uniform_low;
 | |
| bvec2 ub2;
 | |
| 
 | |
| out mediump vec4 mediumfout;
 | |
| 
 | |
| highp float global_highp;
 | |
| 
 | |
| lowp vec2 foo(mediump vec3 mv3)
 | |
| {
 | |
|     return highfin.xy;
 | |
| }
 | |
| 
 | |
| bool boolfun(bvec2 bv2)
 | |
| {
 | |
|     return bv2 == bvec2(false, true);
 | |
| }
 | |
| 
 | |
| struct S {
 | |
|     highp float a;
 | |
|     lowp float b;
 | |
| };
 | |
| 
 | |
| in S s;
 | |
| 
 | |
| void main()
 | |
| {
 | |
|     lowp int sum = uniform_medium + uniform_high;
 | |
| 
 | |
|     sum += uniform_high;
 | |
|     sum += uniform_low;
 | |
|     
 | |
|     // test maxing precisions of args to get precision of builtin
 | |
|     lowp float arg1 = 3.2;
 | |
|     mediump float arg2 = 1023908.2;
 | |
|     lowp float d = distance(lowfin, mediumfin);
 | |
| 
 | |
|     global_highp = length(highfin);
 | |
| 
 | |
|     highp vec4 local_highp = vec4(global_highp);
 | |
| 
 | |
|     mediumfout = vec4(sin(d)) + arg2 + local_highp;
 | |
| 
 | |
|     sum += 4 + ((ivec2(uniform_low) * ivec2(uniform_high) + ivec2((/* comma operator */uniform_low, uniform_high)))).x;
 | |
| 
 | |
|     mediumfout += vec4(sum);
 | |
| 
 | |
|     if (boolfun(ub2))
 | |
|         ++mediumfout;
 | |
|     
 | |
|     mediumfout *= s.a;
 | |
|     mediumfout *= s.b;
 | |
| }
 | 
