| 
									
										
										
										
											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
										 |  |  | } |