Added hexagon highlight pipeline
							parent
							
								
									9abfd82cab
								
							
						
					
					
						commit
						56f686273a
					
				| @ -0,0 +1,8 @@ | ||||
| #version 450 | ||||
| 
 | ||||
| layout(location = 0) out vec4 color; | ||||
| layout(location = 0) flat in vec4 color_in; | ||||
| 
 | ||||
| void main() { | ||||
|   color = color_in; | ||||
| } | ||||
| @ -0,0 +1,58 @@ | ||||
| #version 450 | ||||
| #extension GL_EXT_buffer_reference : require | ||||
| 
 | ||||
| #include "hex_common.glsl" | ||||
| 
 | ||||
| layout(location = 0) flat out vec4 color; | ||||
| 
 | ||||
| void main() { | ||||
|   int hex_index; | ||||
|   Region region; | ||||
|   float raise; | ||||
|   if(gl_InstanceIndex == 0) { | ||||
|     hex_index = pc.context.clicked_hex; | ||||
|     region = pc.context.regions[pc.context.clicked_region]; | ||||
|     color = vec4(0.3, 0.3, 0.3, 0.3); | ||||
|     raise = 0.015; | ||||
|   } else { | ||||
|     hex_index = pc.context.hovered_hex; | ||||
|     region = pc.context.regions[pc.context.hovered_region]; | ||||
|     color = vec4(0.8, 0.8, 0.8, 0.3); | ||||
|     raise = 0.01; | ||||
|   } | ||||
| 
 | ||||
|   vec2 region_qr = vec2(region.q, region.r); | ||||
| 
 | ||||
|   vec4 region_pos = vec4(0, 0, 0, 0); | ||||
|   region_pos.x = (region_qr.x+region_qr.y/2)*region_width - region_qr.y*x/2; | ||||
|   region_pos.z = 0.75*region_qr.y*region_height + 0.25*region_qr.y*z + 0.5*region_qr.x*z; | ||||
| 
 | ||||
|   float radius = 0; | ||||
|   float ring = 0; | ||||
|   int side = 0; | ||||
|   if(hex_index != 0) { | ||||
|     radius = floor(0.5 + sqrt(12*hex_index-3)/6); | ||||
|     ring = hex_index - (3*radius*radius - 3*radius + 1); | ||||
|     side = int(floor(ring/(radius))); | ||||
|   }  | ||||
| 
 | ||||
|   vec4 position = vertices[indices[gl_VertexIndex]] | ||||
|                 + (starts[side]*radius) | ||||
|                 + (direction[side]*(ring-(radius*side))) | ||||
|                 + region_pos; | ||||
| 
 | ||||
|   if(gl_VertexIndex % 3 == 0) { | ||||
|     position.y = (region.hexes[hex_index].heights[0] + | ||||
|                   region.hexes[hex_index].heights[1] + | ||||
|                   region.hexes[hex_index].heights[2] + | ||||
|                   region.hexes[hex_index].heights[3] + | ||||
|                   region.hexes[hex_index].heights[4] + | ||||
|                   region.hexes[hex_index].heights[5])/6; | ||||
|   } else { | ||||
|     position.y = region.hexes[hex_index].heights[indices[gl_VertexIndex]-1]; | ||||
|   } | ||||
| 
 | ||||
|   position.y += raise; | ||||
| 
 | ||||
|   gl_Position = pc.context.proj * pc.context.view * position; | ||||
| } | ||||
		Loading…
	
		Reference in New Issue