- 用户指南
- 资源商店 (Asset Store)
- 资源服务器 (Asset Server)(仅限团队许可证)
- 缓存服务器(仅限团队许可证)
- 幕后场景
- 创建游戏
- 运行时实例化预设 (Prefabs)
- 变换 (Transforms)
- 物理
- 添加随机的游戏元素
- 粒子系统(Particle Systems)
- Mecanim 动画系统
- 旧动画系统
- 导航网格 (Navmesh) 和寻路 (Pathfinding)(仅限专业版 (Pro))
- Sound (音频侦听器)
- 游戏界面元素
- 多玩家联网游戏
- iOS 开发入门
- Android 开发入门
- Blackberry 10 开发入门
- Metro:入门指南
- 本地客户端开发入门
- FAQ
- Advanced
- Vector Cookbook
- 资源包(仅限专业版)
- Graphics Features
- 资源数据库 (AssetDatabase)
- 构建播放器管道
- 分析器(仅限专业版)
- 光照贴图快速入门
- 遮挡剔除(仅限专业版)
- 相机使用技巧
- 运行时加载资源
- 通过脚本修改源资源
- 用程序生成网格几何体
- 富文本
- 在 Unity 工程 (Project) 中使用 Mono DLL
- 事件函数的执行顺序
- 移动优化实用指南
- Unity XCode 工程结构
- 优化图形性能
- 减少文件大小
- 理解自动内存管理
- 平台依赖编译
- 泛型函数
- 调试
- 插件(专业版/移动版特有功能)
- 文本场景文件格式(仅限专业版)
- 流媒体资源
- 启动时运行编辑器脚本代码
- 网络模拟
- VisualStudio C 集成
- 分析
- 检查更新
- 安装多版本 Unity
- 故障排除
- Unity 中的阴影
- Unity 中的 IME
- 对集成显卡进行优化
- 网络播放器 (Web Player) 部署
- 使用网络播放器中的信任链系统
着色器
Unity 中的所有渲染都使用着色器完成 - 可配置图形硬件设置方法以进行渲染的小脚本。Unity 配备了八十多个内置着色器(详见内置着色器指南)。可制作自己的着色器扩展此设置。
可使用以下三种不同方法之一在 Unity 中编写着色器:
表面着色器
如需让您的着色器受到光线和阴影的影响,那么表面着色器 (Surface Shaders) 是您最好的选择。表面着色器可让您以简单的方法编写复杂的着色器 - 这是与 Unity 照明管道的更高层次交互提取。大部分表面着色器自动支持正向和延迟照明。可用数行 Cg/HLSL 编写表面着色器,且其中将生成更多代码。
如果着色器未对光线进行任何处理,请勿使用表面着色器。对于图像效果 (Image Effects) 或许多特殊效果着色器而言,表面着色器不是最理想的选项,因为它们会在没有充分理由的情况下执行一系列照明计算!
顶点和片段着色器
如果着色器无需与照明互动,或者需要制作一些表面着色器无法实现的非凡效果,则需使用顶点和片段着色器。按此方法编写的着色器程序可让您以最灵活的方式制作所需的效果(甚至表面着色器自动转换为一堆顶点和片段着色器),但这也是要付出代价的:必须写更多代码,且代码与照明的互动更难于实现。也可使用 Cg/HLSL 编写这些着色器。
固定功能着色器
固定功能着色器 (Fixed Function Shaders) 适用于不支持可编程着色器的旧硬件。在 n 次回退至您喜爱的片段或表面着色器时,您可能需要撰写固定功能着色器,确保在旧硬件或更简单的移动平台上运行时游戏仍可渲染一些可理解的内容。固定功能着色器完全使用 ShaderLab 语言(类似于 Microsoft's .FX 文件或 NVIDIA's CgFX)进行编写。
ShaderLab
无论选择哪种类型的着色器,着色器代码的实际内容将始终包含在用于组织着色器结构的 ShaderLab 中。示例如下:
Shader "MyShader" { Properties { _MyTexture ("My Texture", 2D) = "white" { } // other properties like colors or vectors go here as well } SubShader { // here goes the 'meat' of your // - surface shader or // - vertex and fragment shader or // - fixed function shader } SubShader { // here goes a simpler version of the SubShader above that can run on older graphics cards } }
我们建议您从了解 ShaderLab 组件手册 中的一些 ShaderLab syntax 基本概念开始,然后再阅读下方列出的教程。
教程列举了大量不同类型着色器示例。如需了解更多特定表面着色器的示例,可以在资源 (Resources) 部分获取 Unit 内置着色器的原始资料。Unity 的图像效果 (Image Effects) 资源包包含许多有趣的顶点和片段着色器。
如需了解着色器的简介,请参阅着色器组件手册!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论