Files
nexus/wiki/concepts/Shader.md
2026-04-26 08:02:48 +08:00

52 lines
2.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: "Shader"
type: concept
tags: [game-dev, rendering, graphics]
sources: [technical-artist]
last_updated: 2026-04-26
---
# Shader
## Definition
Shader着色器是在 GPU 上运行的专用程序,控制像素如何被渲染——决定颜色、光照、阴影、透明度等视觉特性。游戏开发中最常用的语言为 HLSLDirectX/PC、GLSLOpenGL/Linux和 ShaderLabUnity
## Core Concepts
### Vertex Shader
逐顶点执行,负责几何变换(模型空间 → 世界空间 → 视图空间 → 屏幕空间和传递顶点属性UV、法线
### Fragment/Pixel Shader
逐像素执行,决定最终像素颜色。性能敏感操作应优先考虑移至 Vertex Shader。
### Surface ShaderUnity 概念)
Unity URP/HDRP 的高级抽象,自动处理光照模型,开发者只需定义表面属性。
### Compute Shader
通用 GPU 计算,可用于后处理、特效、布料模拟等非传统渲染任务。
## Technical Artist 的 Shader 标准
- **移动端安全变体**:所有自定义着色器必须包含移动端安全版本或明确标注平台限制
- **Shader 复杂度分析**:使用引擎的 Shader 复杂度可视化工具验证,绿色/黄色合格,红色必须修订
- **参数文档化**:暴露给艺术家的所有着色器参数必须在材质检查器中有 Tooltip 注释
- **避免逐像素操作**:可在顶点阶段完成的操作不应放在像素阶段(移动端尤其重要)
## Shader 类型与预算
| 类型 | PC 复杂度 | Mobile 复杂度 | 典型应用 |
|------|-----------|---------------|---------|
| Unlit | 极低 | 极低 | UI、纯色物体 |
| Lit (PBR) | 中等 | 中等-高 | 角色、环境 |
| 透明/加法 | 中等 | 高 | VFX、玻璃 |
| 自定义光照 | 高 | 极高 | 特殊效果 |
## Related Concepts
- [[VFX]]Shader 常用于 VFX 特效实现
- [[LOD-Pipeline]]LOD 切换时着色器需保持视觉一致性
- [[RenderingPipeline]]Shader 是渲染管线的可编程核心
## Connections
- [[TechnicalArtist]] ← writes ← Shader
- [[VFX]] ← implements via ← Shader