SuperAPI AI 工具集

urp-hlsl-templates

编程与开发

查看项目

更新于 10-15 11:17

技能介绍

用途

该技能用于在 Unity 通用渲染管线(URP)中以 HLSL/ShaderLab 代码(而非 Shader Graph)编写着色器。当用户提出“URP shader”“HLSL”“ShaderLab”“write a shader”“custom shader”“vertex fragment shader”“SRP Batcher”“CBUFFER”“custom lit shader”“unlit shader”等需求,或需要将内置管线着色器转换为 URP,或引用 Cyanilux 模板、phi-lira gists、NedMakesGames 教程时,均可触发使用。

主要能力

  • 提供生产可用的 URP HLSL/ShaderLab 代码模板,并保证 SRP Batcher 兼容。
  • 提供 URP Unlit(移动端就绪)模板,包含 ForwardLit、ShadowCaster、DepthOnly 三个 Pass。
  • 提供 URP Simple Lit(主光)模板,加入主方向光的 Lambert 漫反射、阴影与环境光。
  • 提供内置管线到 URP 的转换对照表(包含 include、变换宏、光照、阴影、纹理采样、雾效、结构体命名、LightMode 标签等)。
  • 列出 URP 各 LightMode 标签及其用途(UniversalForward、ShadowCaster、DepthOnly、DepthNormals、Meta、Universal2D、SRPDefaultUnlit)。
  • 汇总常见陷阱(CBUFFER 缺失、sampler2D 用法、缺少 ShadowCaster/DepthOnly、multi_compile 与 shader_feature 的选择)。
  • 提供参考仓库与 gist 链接。

核心规则

  • 始终使用 HLSLPROGRAM / ENDHLSL,而非 CGPROGRAM / ENDCG。
  • 所有材质属性必须放在 CBUFFER_START(UnityPerMaterial) / CBUFFER_END 块中,以保证 SRP Batcher 兼容。
  • 引入 URP Core 而非旧版 Unity include,例如: #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl"
  • 使用 URP 变换宏,例如 TransformObjectToHClip、TransformObjectToWorld、TransformObjectToWorldNormal、TransformWorldToHClip、GetVertexPositionInputs、GetVertexNormalInputs。
  • Tags 必须包含 "RenderPipeline" = "UniversalPipeline"。
  • 使用 TEXTURE2D 与 SAMPLER 宏替代 sampler2D,采样使用 SAMPLE_TEXTURE2D。

使用方式

技能以模板与规则形式提供代码。用户可直接采用 Unlit 或 Simple Lit 模板作为起点,按需修改属性、Pass 与光照逻辑;也可依据转换对照表将内置管线着色器改写为 URP 版本。模板中已包含 SRP Batcher 兼容的 CBUFFER 写法、URP include、变换宏、纹理采样宏与雾效处理。

适用场景

  • 为 URP 编写基于代码的自定义着色器(Unlit、Simple Lit 等)。
  • 将内置管线着色器迁移到 URP。
  • 需要 SRP Batcher 兼容的移动端着色器。
  • 需要参考 URP Pass 类型与 LightMode 标签的场合。

限制

  • 资料未提供收费、价格、平台支持范围或性能效果的具体数据。
  • 资料未提供安装命令或包管理方式。
  • 资料未提供 Surface Shader 的 URP 等价方案,仅说明需手写顶点/片元着色器。
  • 资料未提供除所列模板外的完整着色器类型覆盖说明。