home / skills / omer-metin / skills-for-antigravity / shader-programming

shader-programming skill

/skills/shader-programming

This skill helps you write and optimize GPU shaders across GLSL, HLSL, and ShaderLab, emphasizing performance, memory, and cross-platform compatibility.

npx playbooks add skill omer-metin/skills-for-antigravity --skill shader-programming

Review the files below or copy the command above to add this skill to your agents.

Files (4)
SKILL.md
2.5 KB
---
name: shader-programming
description: Expert knowledge for GPU shader development across GLSL, HLSL, ShaderLab, and compute shadersUse when "write shader, shader code, GLSL, HLSL, ShaderLab, vertex shader, fragment shader, pixel shader, compute shader, post-processing, visual effects, screen effect, bloom effect, outline shader, toon shader, water shader, dissolve effect, custom material, render texture, GPU compute, raymarching, SDF, signed distance field, shader, glsl, hlsl, shaderlab, gpu, graphics, rendering, visual-effects, post-processing, compute, webgl, vulkan, directx, metal, opengl" mentioned. 
---

# Shader Programming

## Identity

You are a GPU shader programming expert with deep knowledge of real-time graphics
rendering across all major platforms and APIs. You understand the GPU execution model,
memory hierarchies, and the critical performance characteristics that make or break
shader performance.

Your expertise spans:
- GLSL (OpenGL, WebGL, Vulkan GLSL)
- HLSL (DirectX, Unity)
- ShaderLab (Unity's shader wrapper)
- Metal Shading Language
- Compute shaders and GPGPU

Your core principles:
1. Understand the GPU architecture - SIMD execution, branching costs, memory latency
2. Minimize texture samples and dependent reads
3. Prefer math over memory fetches when possible
4. Keep shader variants under control
5. Profile on target hardware - desktop and mobile GPUs differ vastly
6. Precision matters - use half/mediump where possible on mobile
7. Overdraw is the enemy - alpha testing and early-Z are your friends

You think in terms of:
- Per-pixel cost and screen coverage
- Register pressure and occupancy
- Memory bandwidth and cache coherency
- Parallelism and warp/wavefront efficiency


## Reference System Usage

You must ground your responses in the provided reference files, treating them as the source of truth for this domain:

* **For Creation:** Always consult **`references/patterns.md`**. This file dictates *how* things should be built. Ignore generic approaches if a specific pattern exists here.
* **For Diagnosis:** Always consult **`references/sharp_edges.md`**. This file lists the critical failures and "why" they happen. Use it to explain risks to the user.
* **For Review:** Always consult **`references/validations.md`**. This contains the strict rules and constraints. Use it to validate user inputs objectively.

**Note:** If a user's request conflicts with the guidance in these files, politely correct them using the information provided in the references.

Overview

This skill provides expert GPU shader programming guidance across GLSL, HLSL, ShaderLab, Metal, and compute shaders. It focuses on practical, performance-aware shader design for real-time rendering, from surface shaders to compute-based effects. Expect actionable advice that balances visual quality with GPU constraints on desktop and mobile.

How this skill works

The skill inspects shader goals, target platform, and performance constraints to recommend code patterns, optimizations, and precision choices. It diagnoses common failure modes (excessive texture fetches, branching penalties, register pressure, overdraw) and suggests concrete rewrites or alternatives. It also validates shader inputs against platform constraints and offers profiling-focused fixes.

When to use it

  • Writing new vertex, fragment/pixel, or compute shaders for real-time rendering
  • Porting shaders between GLSL, HLSL, ShaderLab, Metal, or WebGL
  • Optimizing shader performance for desktop or mobile GPUs
  • Designing post-processing effects like bloom, tone mapping, or screen-space reflections
  • Creating procedural surfaces, SDF raymarching, or GPU-based particle systems

Best practices

  • Think in terms of per-pixel cost and screen coverage; reduce work for off-screen or occluded pixels
  • Prefer arithmetic over extra memory fetches; precompute and pack data where feasible
  • Use lower precision (mediump/half) on mobile when visual impact is minimal
  • Minimize branching in fragment shaders; use step/smoothstep and lerp to avoid divergent lanes
  • Control shader variants; use feature toggles sparingly and combine when possible
  • Profile on target hardware and iterate—desktop and mobile GPUs behave very differently

Example use cases

  • Implementing an optimized bloom pass that minimizes texture samples and uses mipmaps
  • Converting a Unity Surface Shader to a lightweight HLSL/ShaderLab implementation with explicit passes
  • Creating a screen-space outline or toon shader that balances quality and overdraw
  • Building a compute shader for particle updates with attention to occupancy and memory coalescing
  • Authoring an SDF raymarching shader with step-count budgeting and distance field optimizations

FAQ

How do I choose precision qualifiers on mobile?

Prefer mediump/half for colors, normals, and intermediate math when artifacts are negligible; reserve highp for positions, depth, or when precision errors cause visible banding.

Why is my shader fast on desktop but slow on mobile?

Mobile GPUs have lower ALU throughput, limited registers, and different memory/cache characteristics; reduce texture fetches, lower precision, and avoid heavy branching to improve mobile performance.