| 
									
										
										
										
											2009-05-07 20:53:56 -04:00
										 |  |  | USING: multiline ;
 | 
					
						
							|  |  |  | IN: terrain.shaders | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-05-10 14:45:58 -04:00
										 |  |  | STRING: sky-vertex-shader | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | uniform float sky_theta; | 
					
						
							|  |  |  | varying vec3 direction; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void main() | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2009-05-13 21:15:58 -04:00
										 |  |  |     vec4 v = vec4(gl_Vertex.xy, 1.0, 1.0); | 
					
						
							| 
									
										
										
										
											2009-05-10 14:45:58 -04:00
										 |  |  |     gl_Position = v; | 
					
						
							| 
									
										
										
										
											2009-05-11 13:36:04 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-05-13 20:36:06 -04:00
										 |  |  |     vec4 p = gl_ProjectionMatrixInverse * v; | 
					
						
							| 
									
										
										
										
											2009-05-13 22:28:12 -04:00
										 |  |  |     p.z = -abs(p.z); | 
					
						
							| 
									
										
										
										
											2009-05-11 13:36:04 -04:00
										 |  |  |      | 
					
						
							| 
									
										
										
										
											2009-05-10 14:45:58 -04:00
										 |  |  |     float s = sin(sky_theta), c = cos(sky_theta); | 
					
						
							|  |  |  |     direction = mat3(1, 0, 0,  0, c, s,  0, -s, c) | 
					
						
							| 
									
										
										
										
											2009-05-11 13:36:04 -04:00
										 |  |  |         * (gl_ModelViewMatrixInverse * vec4(p.xyz, 0.0)).xyz; | 
					
						
							| 
									
										
										
										
											2009-05-10 14:45:58 -04:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | STRING: sky-pixel-shader | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | uniform sampler2D sky; | 
					
						
							|  |  |  | uniform float sky_gradient, sky_theta; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | const vec4 SKY_COLOR_A = vec4(0.25, 0.0, 0.5,  1.0), | 
					
						
							|  |  |  |            SKY_COLOR_B = vec4(0.6,  0.5, 0.75, 1.0); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | varying vec3 direction; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void main() | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     float t = texture2D(sky, normalize(direction.xyz).xy * 0.5 + vec2(0.5)).x + sky_gradient; | 
					
						
							|  |  |  |     gl_FragColor = mix(SKY_COLOR_A, SKY_COLOR_B, sin(6.28*t)); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-05-07 20:53:56 -04:00
										 |  |  | STRING: terrain-vertex-shader | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | uniform sampler2D heightmap; | 
					
						
							| 
									
										
										
										
											2009-05-09 12:15:06 -04:00
										 |  |  | uniform vec4 component_scale; | 
					
						
							| 
									
										
										
										
											2009-05-07 20:53:56 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | varying vec2 heightcoords; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | float height(sampler2D map, vec2 coords) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     vec4 v = texture2D(map, coords); | 
					
						
							| 
									
										
										
										
											2009-05-09 12:15:06 -04:00
										 |  |  |     return dot(v, component_scale); | 
					
						
							| 
									
										
										
										
											2009-05-07 20:53:56 -04:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void main() | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     gl_Position = gl_ModelViewProjectionMatrix | 
					
						
							|  |  |  |         * (gl_Vertex + vec4(0, height(heightmap, gl_Vertex.xz), 0, 0)); | 
					
						
							|  |  |  |     heightcoords = gl_Vertex.xz; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | STRING: terrain-pixel-shader | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | uniform sampler2D heightmap; | 
					
						
							| 
									
										
										
										
											2009-05-09 12:15:06 -04:00
										 |  |  | uniform vec4 component_scale; | 
					
						
							| 
									
										
										
										
											2009-05-07 20:53:56 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | varying vec2 heightcoords; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | float height(sampler2D map, vec2 coords) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     vec4 v = texture2D(map, coords); | 
					
						
							| 
									
										
										
										
											2009-05-09 12:15:06 -04:00
										 |  |  |     return dot(v, component_scale); | 
					
						
							| 
									
										
										
										
											2009-05-07 20:53:56 -04:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void main() | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     gl_FragColor = texture2D(heightmap, heightcoords); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ;
 |