forked from bartvdbraak/blender
Cleanup: indentation
This commit is contained in:
parent
e1dd83b399
commit
800de8bffd
@ -24,72 +24,72 @@ uniform int stipple_factor;
|
|||||||
|
|
||||||
void main(void)
|
void main(void)
|
||||||
{
|
{
|
||||||
vec2 window_size = viewport.zw;
|
vec2 window_size = viewport.zw;
|
||||||
vec4 start = gl_in[0].gl_Position;
|
vec4 start = gl_in[0].gl_Position;
|
||||||
vec4 end = gl_in[1].gl_Position;
|
vec4 end = gl_in[1].gl_Position;
|
||||||
#if PASSTHROUGH
|
#if PASSTHROUGH
|
||||||
gl_Position = start; EmitVertex();
|
gl_Position = start; EmitVertex();
|
||||||
gl_Position = end; EmitVertex();
|
gl_Position = end; EmitVertex();
|
||||||
EndPrimitive();
|
EndPrimitive();
|
||||||
return;
|
return;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* t = 0 t = ~(len(end - start) + 2*line_width)
|
/* t = 0 t = ~(len(end - start) + 2*line_width)
|
||||||
* A-------------------------------------B
|
* A-------------------------------------B
|
||||||
* | | | |
|
* | | | |
|
||||||
* | side | |
|
* | side | |
|
||||||
* | | | |
|
* | | | |
|
||||||
* |--axis--*start--------------*end-----|
|
* |--axis--*start--------------*end-----|
|
||||||
* | | | |
|
* | | | |
|
||||||
* | | | |
|
* | | | |
|
||||||
* | | | |
|
* | | | |
|
||||||
* D-------------------------------------C
|
* D-------------------------------------C
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Clip the line before homogenization.
|
/* Clip the line before homogenization.
|
||||||
* Compute line start and end distances to nearplane in clipspace
|
* Compute line start and end distances to nearplane in clipspace
|
||||||
* Distances are t0 = dot(start, plane) and t1 = dot(end, plane)
|
* Distances are t0 = dot(start, plane) and t1 = dot(end, plane)
|
||||||
*/
|
*/
|
||||||
float t0 = start.z + start.w;
|
float t0 = start.z + start.w;
|
||||||
float t1 = end.z + end.w;
|
float t1 = end.z + end.w;
|
||||||
if (t0 < 0.0) {
|
if (t0 < 0.0) {
|
||||||
if (t1 < 0.0) {
|
if (t1 < 0.0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
start = mix(start, end, (0 - t0) / (t1 - t0));
|
start = mix(start, end, (0 - t0) / (t1 - t0));
|
||||||
}
|
}
|
||||||
if (t1 < 0.0) {
|
if (t1 < 0.0) {
|
||||||
end = mix(start, end, (0 - t0) / (t1 - t0));
|
end = mix(start, end, (0 - t0) / (t1 - t0));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Compute line axis and side vector in screen space */
|
/* Compute line axis and side vector in screen space */
|
||||||
vec2 startInNDC = start.xy / start.w; /* clip to NDC: homogenize and drop z */
|
vec2 startInNDC = start.xy / start.w; /* clip to NDC: homogenize and drop z */
|
||||||
vec2 endInNDC = end.xy / end.w;
|
vec2 endInNDC = end.xy / end.w;
|
||||||
vec2 lineInNDC = endInNDC - startInNDC;
|
vec2 lineInNDC = endInNDC - startInNDC;
|
||||||
vec2 lineInScreen = lineInNDC * window_size; /* ndc to screen (direction vector) */
|
vec2 lineInScreen = lineInNDC * window_size; /* ndc to screen (direction vector) */
|
||||||
|
|
||||||
vec2 axisInScreen = normalize(lineInScreen);
|
vec2 axisInScreen = normalize(lineInScreen);
|
||||||
vec2 sideInScreen = vec2(-axisInScreen.y, axisInScreen.x); /* rotate */
|
vec2 sideInScreen = vec2(-axisInScreen.y, axisInScreen.x); /* rotate */
|
||||||
vec2 axisInNDC = axisInScreen / window_size; /* screen to NDC */
|
vec2 axisInNDC = axisInScreen / window_size; /* screen to NDC */
|
||||||
vec2 sideInNDC = sideInScreen / window_size;
|
vec2 sideInNDC = sideInScreen / window_size;
|
||||||
vec4 axis = vec4(axisInNDC, 0.0, 0.0) * line_width; /* NDC to clip (delta vector) */
|
vec4 axis = vec4(axisInNDC, 0.0, 0.0) * line_width; /* NDC to clip (delta vector) */
|
||||||
vec4 side = vec4(sideInNDC, 0.0, 0.0) * line_width;
|
vec4 side = vec4(sideInNDC, 0.0, 0.0) * line_width;
|
||||||
|
|
||||||
vec4 A = (start + (side - axis) * start.w);
|
vec4 A = (start + (side - axis) * start.w);
|
||||||
vec4 B = (end + (side + axis) * end.w);
|
vec4 B = (end + (side + axis) * end.w);
|
||||||
vec4 C = (end - (side - axis) * end.w);
|
vec4 C = (end - (side - axis) * end.w);
|
||||||
vec4 D = (start - (side + axis) * start.w);
|
vec4 D = (start - (side + axis) * start.w);
|
||||||
|
|
||||||
/* There is no relation between lines yet */
|
/* There is no relation between lines yet */
|
||||||
/* TODO Pass here t0 to make continuous pattern. */
|
/* TODO Pass here t0 to make continuous pattern. */
|
||||||
t0 = 0;
|
t0 = 0;
|
||||||
t1 = (length(lineInScreen) + 2*line_width)/ (2*line_width * stipple_factor);
|
t1 = (length(lineInScreen) + 2 * line_width) / (2 * line_width * stipple_factor);
|
||||||
|
|
||||||
gl_Position = A; t = t0; varying_vertex_color = varying_vertex_color_line[0]; EmitVertex();
|
gl_Position = A; t = t0; varying_vertex_color = varying_vertex_color_line[0]; EmitVertex();
|
||||||
gl_Position = D; t = t0; varying_vertex_color = varying_vertex_color_line[0]; EmitVertex();
|
gl_Position = D; t = t0; varying_vertex_color = varying_vertex_color_line[0]; EmitVertex();
|
||||||
gl_Position = B; t = t1; varying_vertex_color = varying_vertex_color_line[1]; EmitVertex();
|
gl_Position = B; t = t1; varying_vertex_color = varying_vertex_color_line[1]; EmitVertex();
|
||||||
gl_Position = C; t = t1; varying_vertex_color = varying_vertex_color_line[1]; EmitVertex();
|
gl_Position = C; t = t1; varying_vertex_color = varying_vertex_color_line[1]; EmitVertex();
|
||||||
EndPrimitive();
|
EndPrimitive();
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
|
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
gl_Position = ftransform();
|
gl_Position = ftransform();
|
||||||
gl_TexCoord[0] = gl_MultiTexCoord0;
|
gl_TexCoord[0] = gl_MultiTexCoord0;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user