Eine aufbereitete Darstellung der Quelle

 
     
 
 
Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer

Quelle  gskgpuborder.glsl   Sprache: unbekannt

 
Spracherkennung für: .glsl vermutete Sprache: Unknown {[0] [0] [0]} [Methode: Schwerpunktbildung, einfache Gewichte, sechs Dimensionen]

#ifdef GSK_PREAMBLE
instances = 48;

GskRoundedRect outline;
GdkColor top_border_color;
GdkColor right_border_color;
GdkColor bottom_border_color;
GdkColor left_border_color;
graphene_vec4_t border_widths;
graphene_size_t inside_offset;
#endif /* GSK_PREAMBLE */

#include "gskgpuborderinstance.glsl"

PASS(0) vec2 _pos;
PASS_FLAT(1) vec4 _color;
PASS_FLAT(2) RoundedRect _outside;
PASS_FLAT(5) RoundedRect _inside;


#ifdef GSK_VERTEX_SHADER

vec4
compute_color (void)
{
  uint triangle_index = uint (GSK_VERTEX_INDEX) / 3u;

  switch (triangle_index)
  {
    case 2u * SLICE_TOP_LEFT + 1u:
      if (in_border_widths[TOP] > 0.0)
        return output_color_from_alt (in_top_border_color);
      else
        return output_color_from_alt (in_left_border_color);

    case 2u * SLICE_TOP:
    case 2u * SLICE_TOP + 1u:
      return output_color_from_alt (in_top_border_color);

    case 2u * SLICE_TOP_RIGHT:
      if (in_border_widths[TOP] > 0.0)
        return output_color_from_alt (in_top_border_color);
      else
        return output_color_from_alt (in_right_border_color);

    case 2u * SLICE_TOP_RIGHT + 1u:
      if (in_border_widths[RIGHT] > 0.0)
        return output_color_from_alt (in_right_border_color);
      else
        return output_color_from_alt (in_top_border_color);

    case 2u * SLICE_RIGHT:
    case 2u * SLICE_RIGHT + 1u:
      return output_color_from_alt (in_right_border_color);

    case 2u * SLICE_BOTTOM_RIGHT:
      if (in_border_widths[RIGHT] > 0.0)
        return output_color_from_alt (in_right_border_color);
      else
        return output_color_from_alt (in_bottom_border_color);

    case 2u * SLICE_BOTTOM_RIGHT + 1u:
      if (in_border_widths[BOTTOM] > 0.0)
        return output_color_from_alt (in_bottom_border_color);
      else
        return output_color_from_alt (in_right_border_color);

    case 2u * SLICE_BOTTOM:
    case 2u * SLICE_BOTTOM + 1u:
      return output_color_from_alt (in_bottom_border_color);

    case 2u * SLICE_BOTTOM_LEFT:
      if (in_border_widths[BOTTOM] > 0.0)
        return output_color_from_alt (in_bottom_border_color);
      else
        return output_color_from_alt (in_left_border_color);

    case 2u * SLICE_BOTTOM_LEFT + 1u:
      if (in_border_widths[LEFT] > 0.0)
        return output_color_from_alt (in_left_border_color);
      else
        return output_color_from_alt (in_bottom_border_color);

    case 2u * SLICE_LEFT:
    case 2u * SLICE_LEFT + 1u:
      return output_color_from_alt (in_left_border_color);

    case 2u * SLICE_TOP_LEFT:
      if (in_border_widths[LEFT] > 0.0)
        return output_color_from_alt (in_left_border_color);
      else
        return output_color_from_alt (in_top_border_color);

    default:
      return output_color_from_alt (in_top_border_color);
  }
}

void
run (out vec2 pos)
{
  vec4 border_widths = in_border_widths * GSK_GLOBAL_SCALE.yxyx;
  RoundedRect outside = rounded_rect_from_gsk (in_outline);
  RoundedRect inside = rounded_rect_shrink (outside, border_widths);
  rounded_rect_offset (inside, in_inside_offset * GSK_GLOBAL_SCALE);

  pos = border_get_position (outside, inside);

  _pos = pos;
  _color = compute_color ();
  _outside = outside;
  _inside = inside;
}

#endif

#ifdef GSK_FRAGMENT_SHADER

void
run (out vec4 color,
     out vec2 position)
{
  float alpha = clamp (rounded_rect_coverage (_outside, _pos) -
                       rounded_rect_coverage (_inside, _pos),
                       0.01.0);

  position = _pos;
  color = output_color_alpha (_color, alpha);
}

#endif

[Dauer der Verarbeitung: 0.11 Sekunden, vorverarbeitet 2026-07-02]

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik