58 lines
1.1 KiB
GLSL
58 lines
1.1 KiB
GLSL
#version 450 core
|
|
|
|
layout(location=0) out vec4 FragColor;
|
|
|
|
layout(binding=1) uniform ColorMaterial
|
|
{
|
|
vec4 color;
|
|
} color_material;
|
|
|
|
layout(binding=10) uniform WorldMatrix // hgl/math/Math.h
|
|
{
|
|
mat4 ortho;
|
|
|
|
mat4 projection;
|
|
mat4 inverse_projection;
|
|
|
|
mat4 modelview;
|
|
mat4 inverse_modelview;
|
|
|
|
mat4 mvp;
|
|
mat4 inverse_mvp;
|
|
|
|
vec4 view_pos;
|
|
vec2 canvas_resolution;
|
|
vec2 viewport_resolution;
|
|
}fs_world;
|
|
|
|
float Hex( vec2 p, vec2 h )
|
|
{
|
|
vec2 q = abs(p);
|
|
return max(q.x-h.y,max(q.x+q.y*0.57735,q.y*1.1547)-h.x);
|
|
}
|
|
|
|
float HexGrid(vec2 p)
|
|
{
|
|
float scale = 1.2;
|
|
vec2 grid = vec2(0.692, 0.4) * scale;
|
|
float radius = 0.22 * scale;
|
|
|
|
vec2 p1 = mod(p.xy, grid) - grid*0.5;
|
|
float c1 = Hex(p1, vec2(radius, radius));
|
|
|
|
vec2 p2 = mod(p.xy+grid*0.5, grid) - grid*0.5;
|
|
float c2 = Hex(p2, vec2(radius, radius));
|
|
return min(c1, c2);
|
|
}
|
|
|
|
void main()
|
|
{
|
|
vec2 uv=(gl_FragCoord.xy-fs_world.canvas_resolution.xy/2.0)/80.0;
|
|
|
|
float lum=HexGrid(uv);
|
|
|
|
lum=lum > 0.0 ? 1.0 : 0.0;
|
|
|
|
FragColor=vec4(color_material.color.rgb*lum,1.0);
|
|
}
|