2013-11-27 17:52:28 -05:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								uniform sampler2D uNormal;
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								uniform sampler2D uSmoke;
							 | 
						
					
						
							
								
									
										
										
										
											2013-12-04 12:33:35 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								uniform float z;
							 | 
						
					
						
							
								
									
										
										
										
											2013-11-27 17:52:28 -05:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								void main(void)
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								{
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
									vec3 normal = 2.0 * texture2D (uNormal, gl_TexCoord[0].st).rgb - 1.0;
							 | 
						
					
						
							
								
									
										
										
										
											2013-12-04 12:33:35 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2013-11-27 17:52:28 -05:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
									
							 | 
						
					
						
							
								
									
										
										
										
											2013-12-04 12:33:35 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
									//Load only the Alpha from the smoke texture
							 | 
						
					
						
							
								
									
										
										
										
											2013-11-27 17:52:28 -05:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
									vec4 diffuseMaterial = texture2D (uSmoke, gl_TexCoord[0].st);
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
									diffuseMaterial.rgb = vec3(1);
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
									
							 | 
						
					
						
							
								
									
										
										
										
											2013-12-04 12:33:35 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
									//Get Ambient light
							 | 
						
					
						
							
								
									
										
										
										
											2013-11-27 17:52:28 -05:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
									vec4 ambientLight = gl_LightSource[1].ambient;
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
									
							 | 
						
					
						
							
								
									
										
										
										
											2013-12-04 12:33:35 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
									//Calculate diffuse light from "sun"
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
									vec3 diffuseNormal = normal;
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
									diffuseNormal.b = diffuseNormal.b * 0.5;
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
									diffuseNormal = normalize (gl_NormalMatrix * diffuseNormal);
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
									vec4 diffuseLight = gl_LightSource[1].diffuse;
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
									float diffuseFactor = max (dot (gl_LightSource[1].position.xyz, diffuseNormal), 0.0) ;
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
									diffuseFactor = diffuseFactor * .6 + .4;
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
									vec4 diffuseBump = vec4(diffuseFactor,diffuseFactor,diffuseFactor,1);
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
									
							 | 
						
					
						
							
								
									
										
										
										
											2013-11-27 17:52:28 -05:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
									
							 | 
						
					
						
							
								
									
										
										
										
											2013-12-04 12:33:35 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
									vec4 flameColor = gl_LightSource[2].diffuse;
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
									float flameFactor =  max (dot (vec3(0,0,1), diffuseNormal), 0.0);
							 | 
						
					
						
							
								
									
										
										
										
											2014-01-12 19:14:57 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
									flameFactor = flameFactor * (1.0 - z / 1.0);
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
									flameFactor = flameFactor * diffuseMaterial.a * gl_Color.a * 10.0;
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
									flameFactor = clamp(flameFactor,0.0,1.0);
							 | 
						
					
						
							
								
									
										
										
										
											2013-11-27 17:52:28 -05:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
									
							 | 
						
					
						
							
								
									
										
										
										
											2013-12-04 12:33:35 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
									vec4 light = diffuseLight * diffuseBump + ambientLight;
							 | 
						
					
						
							
								
									
										
										
										
											2013-11-27 17:52:28 -05:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
									
							 | 
						
					
						
							
								
									
										
										
										
											2013-12-04 12:33:35 -05:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
									gl_FragColor =	gl_Color * diffuseMaterial * light  + flameColor * flameFactor;
							 | 
						
					
						
							
								
									
										
										
										
											2013-11-27 17:52:28 -05:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								}
							 |