跳到主要内容
知仓学习社ZHICANG

unity-shader

Manage HLSL/ShaderLab .shader files

不碰外部(只输出文字)无严重或高危命中Besty0728/Unity-Skills

它会碰到什么

扫了多少1 个文本文件,8 KB
它会碰到什么不碰外部(只输出文字)
命中总数0 处
命中统计严重 0 · 高 0 · 中 0 · 低 0

这一栏是扫描器报的事实,不是结论。命中多不等于有毒(安全工具、规则库、示例脚本本来就会包含危险写法),命中少也不等于干净。它和你手上的凭据、文件、网络有什么关系,需要你自己看。

技能内容

> Before calling any skill in this module: if you are about to call a skill with parameters guessed from its name or description, STOP — read this file (or fetch its schema via GET /skills/recommend?includeSchema=true) first. If you already have the parameter definitions from recommend/schema, you may proceed straight to dryRun.

Triggers

  • Creating or editing handwritten shaders
  • Listing or finding .shader files
  • Inspecting properties/keywords
  • 创建或编辑手写 shader、列出/查找 .shader 文件、检查属性与关键字

Unity Shader Skills

Work with .shader HLSL/ShaderLab files (create from templates, read source, list, find, get keywords/properties/variants, check errors, delete, toggle global keywords). For node-based ShaderGraph use the shadergraph module.

Operating Mode

  • Query skills (shader_read, shader_list, shader_find, shader_get_properties, shader_check_errors, shader_get_keywords, shader_get_variant_count) are SkillMode.SemiAuto — they run in all three modes without grant.
  • Mutating skills (shader_create, shader_create_urp, shader_set_global_keyword) are SkillMode.FullAuto — under Approval they need user grant (grant triggers one server-side execute returning the result); under Auto / Bypass they execute directly.
  • shader_delete carries SkillOperation.Delete and is auto-forbidden in Approval / Auto modes (NeverInSemi). Only Bypass or the user-managed Allowlist can run it.

Guardrails

DO NOT (common hallucinations):

  • shader_set_property does not exist → use material_set_float/material_set_color/etc. on the material, not the shader
  • shader_apply / shader_assign do not exist → use material_set_shader to change a material's shader
  • shader_get_properties returns shader property definitions (name/type/range), not current values → for material instance values use material_get_properties
  • Shader names are case-sensitive and path-like: "Standard", "Universal Render Pipeline/Lit", not "standard" or "URP Lit"

Routing:

  • For material property changes → use material module
  • For shader keyword control → material_set_keyword (material module)
  • For global shader keywords → shader_set_global_keyword (this module)

Skills Overview

| Skill | Description |

|-------|-------------|

| shader_create | Create shader file |

| shader_read | Read shader source |

| shader_list | List all shaders |

| shader_find | Find shader by name |

| shader_delete | Delete shader file |

| shader_get_properties | Get shader properties |

| shader_check_errors | Check shader for compilation errors |

| shader_get_keywords | Get shader keyword list |

| shader_get_variant_count | Get shader variant count for performance analysis |

| shader_create_urp | Create a URP shader from template |

| shader_set_global_keyword | Enable or disable a global shader keyword |


Skills

shader_create

Create a shader file. The template parameter is raw shader source code that gets written verbatim into the .shader file — it is not a preset name. If you pass template="Standard" the literal string Standard will be written to disk and the shader will fail to compile.

| Parameter | Type | Required | Default | Description |

|-----------|------|----------|---------|-------------|

| shaderName | string | Yes | - | Shader name written into the Shader "..." declaration (e.g., "Custom/MyShader") |

| savePath | string | Yes | - | Save path (e.g., "Assets/Shaders/My.shader") |

| template | string | No | null | Full ShaderLab/HLSL source string. When omitted, a built-in Unlit template (_MainTex + _Color, single CGPROGRAM pass) is used. There are no other built-in presets. |

> For a URP Unlit / Lit preset, use shader_create_urp (type: "Unlit" | "Lit") instead — it actually selects a template by name.

shader_read

Read shader source code.

| Parameter | Type | Required | Description |

|-----------|------|----------|-------------|

| shaderPath | string | Yes | Shader asset path |

Returns: {path, lines, content}

shader_list

List all shaders in project.

| Parameter | Type | Required | Default | Description |

|-----------|------|----------|---------|-------------|

| filter | string | No | null | Name filter |

| limit | int | No | 100 | Max results |

Returns: {count, shaders: [{path, name, propertyCount}]}

shader_find

Find a shader by name.

| Parameter | Type | Required | Description |

|-----------|------|----------|-------------|

| searchName | string | Yes | Shader name to find |

Returns: {found, name, path}

shader_delete

Delete a shader file.

| Parameter | Type | Required | Description |

|-----------|------|----------|-------------|

| shaderPath | string | Yes | Shader asset path |

shader_get_properties

Get all properties defined in a shader.

| Parameter | Type | Required | Description |

|-----------|------|----------|-------------|

| shaderNameOrPath | string | Yes | Shader name or shader asset path |

Returns: {success, properties: [{name, type, description}]}

shader_check_errors

Check shader for compilation errors.

| Parameter | Type | Required | Default | Description |

|-----------|------|----------|---------|-------------|

| shaderNameOrPath | string | Yes | - | Shader name or asset path (e.g., "Custom/MyShader" or "Assets/Shaders/My.shader") |

Returns: { shaderName, hasErrors, messageCount }

shader_get_keywords

Get shader keyword list.

| Parameter | Type | Required | Default | Description |

|-----------|------|----------|---------|-------------|

| shaderNameOrPath | string | Yes | - | Shader name or asset path (e.g., "Custom/MyShader" or "Assets/Shaders/My.shader") |

Returns: { shaderName, keywordCount, keywords: [{ name, type }] }

shader_get_variant_count

Get shader variant count for performance analysis.

| Parameter | Type | Required | Default | Description |

|-----------|------|----------|---------|-------------|

| shaderNameOrPath | string | Yes | - | Shader name or asset path (e.g., "Custom/MyShader" or "Assets/Shaders/My.shader") |

Returns: { shaderName, subshaderCount, totalPasses }

shader_create_urp

Create a URP shader from template (type: Unlit or Lit).

| Parameter | Type | Required | Default | Description |

|-----------|------|----------|---------|-------------|

| shaderName | string | Yes | - | Shader name (e.g., "Custom/MyURPShader") |

| savePath | string | Yes | - | Save path (e.g., "Assets/Shaders/MyURP.shader") |

| type | string | No | "Unlit" | Template type: "Unlit" or "Lit" |

Returns: { success, shaderName, path, type }

shader_set_global_keyword

Enable or disable a global shader keyword.

| Parameter | Type | Required | Default | Description |

|-----------|------|----------|---------|-------------|

| keyword | string | Yes | - | Global shader keyword name |

| enabled | bool | Yes | - | true to enable, false to disable |

Returns: { success, keyword, enabled }


Example Usage

import unity_skills

# Create an unlit shader
unity_skills.call_skill("shader_create",
    shaderName="Custom/MyUnlit",
    savePath="Assets/Shaders/MyUnlit.shader",
    template="Unlit"
)

# Create a surface shader
unity_skills.call_skill("shader_create",
    shaderName="Custom/MyPBR",
    savePath="Assets/Shaders/MyPBR.shader",
    template="Standard"
)

# Read shader source
source = unity_skills.call_skill("shader_read",
    shaderPath="Assets/Shaders/MyUnlit.shader"
)
print(source['content'])

# List all custom shaders
shaders = unity_skills.call_skill("shader_list", filter="Custom")
for shader in shaders['shaders']:
    print(f"{shader['name']}: {shader['path']}")

Best Practices

  1. Use consistent shader naming (Category/Name)
  2. Organize shaders in dedicated folder
  3. Start with templates, modify as needed
  4. Test shaders in different lighting conditions
  5. Consider mobile compatibility for builds

Exact Signatures

Exact names, parameters, defaults, and returns are defined by GET /skills/schema or unity_skills.get_skill_schema(), not by this file.

想直接用这个技能?

本站把开放许可(MIT / Apache 等)的技能按仓库打包整理到网盘,点一下转存到你自己的网盘,不用一个个从 GitHub 拉。许可未声明的技能只给原始仓库链接,不打包。

它属于哪个仓库

星标★ 1,753
本站分层T1
该仓技能数83
原文件路径SkillsForUnity/unity-skills~/skills/shader/SKILL.md

同一个仓库里的其他技能

看这个仓库的全部 83 个技能