ailloli_ui_render_wgpu/shaders/
mod.rs

1//! WGSL shader sources (clip + primitives), concatenated at pipeline build time.
2
3/// Shared WGSL clip-distance and mask helpers concatenated into pipelines.
4const CLIP_WGSL: &str = include_str!("clip.wgsl");
5
6/// Solid-color rect shader with optional clip uniform.
7///
8/// # Examples
9///
10/// ```
11/// use ailloli_ui_render_wgpu::shaders::rect_shader_source;
12/// assert!(rect_shader_source().contains("@vertex"));
13/// ```
14pub fn rect_shader_source() -> String {
15    format!("{CLIP_WGSL}\n{}", include_str!("rect.wgsl"))
16}
17
18/// Stroked polyline shader with optional clip uniform.
19///
20/// # Examples
21///
22/// ```
23/// use ailloli_ui_render_wgpu::shaders::stroke_shader_source;
24/// assert!(stroke_shader_source().contains("@fragment"));
25/// ```
26pub fn stroke_shader_source() -> String {
27    format!("{CLIP_WGSL}\n{}", include_str!("stroke.wgsl"))
28}
29
30/// Textured quad shader (icons) with clip uniform.
31///
32/// # Examples
33///
34/// ```
35/// use ailloli_ui_render_wgpu::shaders::textured_shader_source;
36/// assert!(textured_shader_source().contains("texture_2d"));
37/// ```
38pub fn textured_shader_source() -> String {
39    format!("{CLIP_WGSL}\n{}", include_str!("textured.wgsl"))
40}
41
42/// Rounded-rect SDF shader with clip uniform.
43///
44/// # Examples
45///
46/// ```
47/// use ailloli_ui_render_wgpu::shaders::rounded_rect_shader_source;
48/// assert!(rounded_rect_shader_source().contains("@fragment"));
49/// ```
50pub fn rounded_rect_shader_source() -> String {
51    format!("{CLIP_WGSL}\n{}", include_str!("rounded_rect.wgsl"))
52}
53
54/// Rounded-border SDF ring shader with clip uniform.
55///
56/// # Examples
57///
58/// ```
59/// use ailloli_ui_render_wgpu::shaders::border_rounded_rect_shader_source;
60/// assert!(border_rounded_rect_shader_source().contains("@vertex"));
61/// ```
62pub fn border_rounded_rect_shader_source() -> String {
63    format!("{CLIP_WGSL}\n{}", include_str!("border_rrect.wgsl"))
64}
65
66/// Paint-only rounded box-shadow shader with clip uniform.
67///
68/// # Examples
69///
70/// ```
71/// use ailloli_ui_render_wgpu::shaders::box_shadow_shader_source;
72/// assert!(box_shadow_shader_source().contains("@fragment"));
73/// ```
74pub fn box_shadow_shader_source() -> String {
75    format!("{CLIP_WGSL}\n{}", include_str!("box_shadow.wgsl"))
76}
77
78/// Circular progress ring shader with clip uniform.
79///
80/// # Examples
81///
82/// ```
83/// use ailloli_ui_render_wgpu::shaders::ring_progress_shader_source;
84/// assert!(ring_progress_shader_source().contains("@vertex"));
85/// ```
86pub fn ring_progress_shader_source() -> String {
87    format!("{CLIP_WGSL}\n{}", include_str!("ring_progress.wgsl"))
88}