initial commit
This commit is contained in:
51
shaders/service_frame.glsl
Normal file
51
shaders/service_frame.glsl
Normal file
@@ -0,0 +1,51 @@
|
||||
// vert //
|
||||
|
||||
out vec4 object_color_g;
|
||||
out float mat_scale;
|
||||
|
||||
void main(void) {
|
||||
gl_Position = qgl_ftransform();
|
||||
object_color_g = qgl_ObjectColor;
|
||||
//mat_scale = pow(qgl_ModelMatrix[0][0] * qgl_ModelMatrix[1][1] * qgl_ModelMatrix[2][2], 0.3333);
|
||||
mat_scale = pow(determinant(mat3(qgl_ModelMatrix)), 0.333);
|
||||
//mat3 mm = transpose(mat3(qgl_ModelMatrix));
|
||||
//mat_scale = min(min(dot(vec3(1), mm[0]), dot(vec3(1), mm[1])), dot(vec3(1), mm[2]));
|
||||
}
|
||||
|
||||
|
||||
// geom //
|
||||
|
||||
layout (lines) in;
|
||||
layout (triangle_strip, max_vertices = 4) out;
|
||||
|
||||
in float mat_scale[];
|
||||
in vec4 object_color_g[];
|
||||
out vec4 object_color;
|
||||
|
||||
uniform float line_width, z_offset;
|
||||
uniform mat4 qgl_ProjMatrix;
|
||||
|
||||
void main(void) {
|
||||
object_color = object_color_g[0];
|
||||
vec2 dir = normalize(gl_in[0].gl_Position.xy - gl_in[1].gl_Position.xy);
|
||||
vec2 side = cross(vec3(dir, 0), vec3(0, 0, 1)).xy;
|
||||
vec4 vo = vec4(0, 0, z_offset, 0);
|
||||
float dts = 0.05 * line_width * mat_scale[0];
|
||||
dir *= dts;
|
||||
side *= dts;
|
||||
gl_Position = gl_in[0].gl_Position + vec4((dir + side), 0, 0)*qgl_ProjMatrix + vo; EmitVertex();
|
||||
gl_Position = gl_in[0].gl_Position + vec4((dir - side), 0, 0)*qgl_ProjMatrix + vo; EmitVertex();
|
||||
gl_Position = gl_in[1].gl_Position - vec4((dir - side), 0, 0)*qgl_ProjMatrix + vo; EmitVertex();
|
||||
gl_Position = gl_in[1].gl_Position - vec4((dir + side), 0, 0)*qgl_ProjMatrix + vo; EmitVertex();
|
||||
EndPrimitive();
|
||||
}
|
||||
|
||||
|
||||
// frag //
|
||||
|
||||
in vec4 object_color;
|
||||
uniform float scale;
|
||||
|
||||
void main(void) {
|
||||
qgl_FragColor = object_color;
|
||||
}
|
||||
Reference in New Issue
Block a user