mirror of
				https://github.com/ciphervance/supercell-wx.git
				synced 2025-11-03 19:50:05 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			41 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			GLSL
		
	
	
	
	
	
			
		
		
	
	
			41 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			GLSL
		
	
	
	
	
	
#version 330 core
 | 
						|
 | 
						|
#define DEGREES_MAX   360.0f
 | 
						|
#define LATITUDE_MAX  85.051128779806604f
 | 
						|
#define LONGITUDE_MAX 180.0f
 | 
						|
#define PI            3.1415926535897932384626433f
 | 
						|
#define RAD2DEG       57.295779513082320876798156332941f
 | 
						|
 | 
						|
layout (location = 0) in vec2 aLatLong;
 | 
						|
layout (location = 1) in vec2 aXYOffset;
 | 
						|
layout (location = 2) in vec3 aTexCoord;
 | 
						|
layout (location = 3) in vec4 aModulate;
 | 
						|
 | 
						|
uniform mat4 uMVPMatrix;
 | 
						|
uniform mat4 uMapMatrix;
 | 
						|
uniform vec2 uMapScreenCoord;
 | 
						|
 | 
						|
smooth out vec3 texCoord;
 | 
						|
smooth out vec4 color;
 | 
						|
 | 
						|
vec2 latLngToScreenCoordinate(in vec2 latLng)
 | 
						|
{
 | 
						|
   vec2 p;
 | 
						|
   latLng.x = clamp(latLng.x, -LATITUDE_MAX, LATITUDE_MAX);
 | 
						|
   p.xy     = vec2(LONGITUDE_MAX + latLng.y,
 | 
						|
                   -(LONGITUDE_MAX - RAD2DEG * log(tan(PI / 4 + latLng.x * PI / DEGREES_MAX))));
 | 
						|
   return p;
 | 
						|
}
 | 
						|
 | 
						|
void main()
 | 
						|
{
 | 
						|
   // Pass the texture coordinate and color modulate to the fragment shader
 | 
						|
   texCoord = aTexCoord;
 | 
						|
   color    = aModulate;
 | 
						|
 | 
						|
   vec2 p = latLngToScreenCoordinate(aLatLong) - uMapScreenCoord;
 | 
						|
 | 
						|
   // Transform the position to screen coordinates
 | 
						|
   gl_Position = uMapMatrix * vec4(p, 0.0f, 1.0f) -
 | 
						|
                 uMVPMatrix * vec4(aXYOffset, 0.0f, 0.0f);
 | 
						|
}
 |