Graphics: Optimize Viewport effect rendering
Using the kitchen sink plane shader for viewport effects, even if only a small part of them are active, incurs great performance loss on mobile, so split the rendering into multiple optional passes which additionally use the blending hardware for faster mixing (lerping). Also, don't mirror the PingPong textures if the viewport effect covers the entire screen area anyway.
This commit is contained in:
		
							parent
							
								
									3c0a530eba
								
							
						
					
					
						commit
						373b90af00
					
				
					 9 changed files with 206 additions and 20 deletions
				
			
		
							
								
								
									
										7
									
								
								shader/flatColor.frag
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								shader/flatColor.frag
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,7 @@
 | 
			
		|||
 | 
			
		||||
uniform lowp vec4 color;
 | 
			
		||||
 | 
			
		||||
void main()
 | 
			
		||||
{
 | 
			
		||||
	gl_FragColor = color;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										19
									
								
								shader/gray.frag
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								shader/gray.frag
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,19 @@
 | 
			
		|||
 | 
			
		||||
uniform sampler2D texture;
 | 
			
		||||
uniform lowp float gray;
 | 
			
		||||
 | 
			
		||||
varying vec2 v_texCoord;
 | 
			
		||||
 | 
			
		||||
const vec3 lumaF = vec3(.299, .587, .114);
 | 
			
		||||
 | 
			
		||||
void main()
 | 
			
		||||
{
 | 
			
		||||
	/* Sample source color */
 | 
			
		||||
	vec4 frag = texture2D(texture, v_texCoord);
 | 
			
		||||
 | 
			
		||||
	/* Apply gray */
 | 
			
		||||
	float luma = dot(frag.rgb, lumaF);
 | 
			
		||||
	frag.rgb = mix(frag.rgb, vec3(luma), gray);
 | 
			
		||||
 | 
			
		||||
	gl_FragColor = frag;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										8
									
								
								shader/minimal.vert
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								shader/minimal.vert
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,8 @@
 | 
			
		|||
 | 
			
		||||
uniform mat4 projMat;
 | 
			
		||||
attribute vec2 position;
 | 
			
		||||
 | 
			
		||||
void main()
 | 
			
		||||
{
 | 
			
		||||
	gl_Position = projMat * vec4(position, 0, 1);
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue