I think this is the best I can do for a hover vs. click shader effect. Just do it in a shader based on a uniform setting.
This commit is contained in:
		
							parent
							
								
									84a5f06dac
								
							
						
					
					
						commit
						7186c2ecb0
					
				
					 16 changed files with 54 additions and 38 deletions
				
			
		|  | @ -5,18 +5,25 @@ uniform float u_time; | |||
| uniform float u_time_end; | ||||
| uniform sampler2D texture; | ||||
| uniform bool is_shape; | ||||
| uniform bool hover; | ||||
| 
 | ||||
| void main() { | ||||
|   if(is_shape) { | ||||
|     float tick = (u_time_end - u_time) / u_duration; | ||||
|     float blink = mix(0.5, 1.0, tick); | ||||
|     vec4 color = vec4(blink, blink, blink, 1.0); | ||||
|     gl_FragColor = gl_Color * color; | ||||
| vec4 blink() { | ||||
|   if(hover) { | ||||
|     return vec4(0.95, 0.95, 1.0, 1.0); | ||||
|   } else { | ||||
|     vec4 pixel = texture2D(texture, gl_TexCoord[0].xy); | ||||
|     float tick = (u_time_end - u_time) / u_duration; | ||||
|     float blink = mix(0.5, 1.0, tick); | ||||
|     vec4 color = vec4(blink, blink, blink, 1.0); | ||||
|     gl_FragColor = gl_Color * color * pixel; | ||||
|     return vec4(blink, blink, blink, 1.0); | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| void main() { | ||||
|   vec4 color = blink(); | ||||
| 
 | ||||
|   if(!is_shape) { | ||||
|     vec4 pixel = texture2D(texture, gl_TexCoord[0].xy); | ||||
|     color *= pixel; | ||||
|   } | ||||
| 
 | ||||
|   gl_FragColor = gl_Color * color; | ||||
| } | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Zed A. Shaw
						Zed A. Shaw