Install any skill in seconds. Free to start, no credit card required.
Get Started Free →CRITICAL: Use for Makepad shader system. Triggers on: makepad shader, makepad draw_bg, Sdf2d, makepad pixel, makepad glsl, makepad sdf, draw_quad, makepad gpu, makepad 着色器, makepad shader 语法, makepad 绘制
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 36% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 41% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 36% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 62% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 94% | 0% |
> Version: makepad-widgets (dev branch) | Last Updated: 2026-01-19 > > Check for updates: https://crates.io/crates/makepad-widgets
You are an expert at Makepad shaders. Help users by:
draw_bg, Sdf2d, gradients, effects, or GPU-rendered widget appearance.Refer to the local files for detailed documentation:
./references/shader-basics.md - Shader language fundamentals./references/sdf2d-reference.md - Complete Sdf2d API referenceFor production-ready shader patterns, see the _base/ directory:
| Pattern | Description | |---------|-------------| | 01-shader-structure | Shader fundamentals | | 02-shader-math | Mathematical functions | | 03-sdf-shapes | SDF shape primitives | | 04-sdf-drawing | Advanced SDF drawing | | 05-progress-track | Progress indicators | | 09-loading-spinner | Loading animations | | 10-hover-effect | Hover visual effects | | 11-gradient-effects | Color gradients | | 12-shadow-glow | Shadow and glow | | 13-disabled-state | Disabled visuals | | 14-toggle-checkbox | Toggle animations |
Community contributions: ./community/
Before answering questions, Claude MUST:
/sync-crate-skills makepad --force 更新文档"rust<View> { show_bg: true draw_bg: { // Shader uniforms color: #FF0000 // Custom pixel shader fn pixel(self) -> vec4 { return self.color; } } }
rust<View> { show_bg: true draw_bg: { color: #333333 border_color: #666666 border_radius: 8.0 border_size: 1.0 fn pixel(self) -> vec4 { let sdf = Sdf2d::viewport(self.pos * self.rect_size); sdf.box(1.0, 1.0, self.rect_size.x - 2.0, self.rect_size.y - 2.0, self.border_radius); sdf.fill_keep(self.color); sdf.stroke(self.border_color, self.border_size); return sdf.result; } } }
rust<View> { show_bg: true draw_bg: { color: #FF0000 color_2: #0000FF fn pixel(self) -> vec4 { let t = self.pos.x; // Horizontal gradient return mix(self.color, self.color_2, t); } } }
rust<View> { show_bg: true draw_bg: { color: #0066CC fn pixel(self) -> vec4 { let sdf = Sdf2d::viewport(self.pos * self.rect_size); let center = self.rect_size * 0.5; let radius = min(center.x, center.y) - 1.0; sdf.circle(center.x, center.y, radius); sdf.fill(self.color); return sdf.result; } } }
| Component | Description | |-----------|-------------| | draw_* | Shader container (draw_bg, draw_text, draw_icon) | | Uniforms | Typed properties accessible in shader | | fn pixel(self) | Fragment shader function | | fn vertex(self) | Vertex shader function (optional) | | Sdf2d | 2D signed distance field helper |
| Variable | Type | Description | |----------|------|-------------| | self.pos | vec2 | Normalized position (0-1) | | self.rect_size | vec2 | Widget size in pixels | | self.rect_pos | vec2 | Widget position |
| Category | Functions | |----------|-----------| | Shapes | circle, rect, box, hexagon | | Paths | move_to, line_to, close_path | | Fill/Stroke | fill, fill_keep, stroke, stroke_keep | | Boolean | union, intersect, subtract | | Transform | translate, rotate, scale | | Effects | glow, glow_keep, gloop |
| Category | Functions | |----------|-----------| | Math | abs, sign, floor, ceil, fract, min, max, clamp | | Trig | sin, cos, tan, asin, acos, atan | | Interp | mix, step, smoothstep | | Vector | length, distance, dot, cross, normalize | | Exp | pow, exp, log, sqrt |
show_bg: true to enable background shaderSdf2d::viewport() to create SDF contextvec4 (RGBA) from fn pixel()self. prefix to access uniforms and built-insOther measured skills in the registry, with their headline benchmark lift.