79817283

Date: 2025-11-12 02:54:35
Score: 4
Natty:
Report link

I changed how outlines are created in the geometry shader.

void generateOutlineForTrianglec() {
    float overlap_factor = u_thickness + 1;
    
    for(int edge = 0; edge < 3; edge++) {
        int i0 = edge;
        int i1 = (edge + 1) % 3;
        
        vec4 v0 = gl_PositionIn[i0];
        vec4 v1 = gl_PositionIn[i1];
        
        vec4 edge_center = (v0 + v1) * 0.5;
        vec4 edge_vector = v1 - v0;
        
        vec4 extended_v0 = mix(edge_center, v0, overlap_factor);
        vec4 extended_v1 = mix(edge_center, v1, overlap_factor);
        
        vec2 edge_dir = normalize((extended_v1.xy / extended_v1.w) - (extended_v0.xy / extended_v0.w));
        vec2 edge_normal = vec2(-edge_dir.y, edge_dir.x);
        
        for(int i = 0; i < 4; i++) {
            vec4 pos;
            float offset;
            
            if(i < 2) {
                pos = extended_v0;
                offset = (i == 0 ? 0.5 : -0.5);
            } else {
                pos = extended_v1;
                offset = (i == 2 ? 0.5 : -0.5);
            }
            
            pos.xy += edge_normal * u_thickness * offset * pos.w;
            
            gl_Position = pos;
            fColor = vec4(0.0, 0.0, 1.0, 1.0);
            fTextureCoord = vTextureCoord[i0];
            EmitVertex();
        }
        EndPrimitive();
    }
}

but the intersections of each outline do not work well.

Is there a way to clean up the intersections in the outline?

zoom out

zoom in

Reasons:
  • Blacklisted phrase (1): Is there a way
  • Probably link only (1):
  • Long answer (-1):
  • Has code block (-0.5):
  • Ends in question mark (2):
  • Self-answer (0.5):
  • Low reputation (1):
Posted by: asdbvvc