Unity 图形功能的硬件要求
概要
PC/Mac | iOS/Android | Flash | 360/PS3 | |
延时光照 (Deferred lighting) | SM3.0、GPU 支持 | - | - | 是 |
正向渲染 (Forward Rendering) | SM2.0 | OpenGL ES 2.0 | 是 | 是 |
顶点光照渲染 (Vertex Lit Rendering) | 是 | 是 | 是 | - |
实时阴影 (Realtime Shadow) | SM2.0、GPU 支持 | - | 部分支持 | 是 |
图像效果 (Image Effects) | 大部分需要 SM2.0 | 大部分需要 OpenGL ES 2.0 | 部分支持 | 是 |
顶点着色器 (Vertex Shader) | SM1.1 | OpenGL ES 2.0 | 是 | 是 |
像素着色器 (Pixel Shader) | SM2.0 | OpenGL ES 2.0 | 是 | 是 |
固定函数着色器 (Fixed Function Shaders) | 是 | 是 | 是 | - |
实时阴影
实时阴影 (Realtime Shadow) 目前可在桌面和控制台平台上运行。在桌面平台上运行时通常需要可用 Shader Model 2.0 的 GPU。在 Windows (Direct3D) 上运行时,GPU 还需支持阴影贴图功能;大部分离散 GPU 支持 2003 以后的版本,而大多数集成 GPU 支持 2007 以后的版本。技术方面,在 Direct3D 9 上 GPU 需要支持 D16/D24X8 或 DF16/DF24 纹理格式;而在 OpenGL 上需要支持 GL_ARB_depth_texture 扩展。
Flash 的确支持实时阴影,但由于缺少深度偏差以及着色器的限制,实时阴影有自投影的假象(增加光照的阴影偏移),并且边缘更“尖锐”些。
移动阴影 (iOS/Android) 需要 OpenGL ES 2.0 和 GL_OES_depth_texture 扩展。最为显著的是,该扩展无法在基于 Tegra 的 Android 设备上显示,因此在这些设备上无法生成阴影。
图像效果
图像效果需要渲染到纹理 (render-to-texture) 功能,本千年以来制造的所有设备上一般都支持此功能。但是,除了最简单的效果之外,所有的效果都需要完全可编程的像素着色器,因此,若要达到所有实际用途,桌面平台的 Shader Model 2.0(2003 以后的离散 GPU;2005 以后的集成 GPU)和移动平台的 OpenGL ES 2.0 是必不可少的。
一些图像效果在 Flash 上有效,但大部分并非如此;原因是不支持非 2 的幂的纹理、着色器限制或缺少类似深度纹理支持的功能。
着色器
在 Unity 中,您可以编写固定函数或可编程着色器。除控制台(Xbox 360 和 Playstation 3)之外,任何位置都支持固定函数。可编程着色器默认为 Shader Model 2.0 (桌面平台)和 OpenGL ES 2.0 (移动平台)。在桌面平台上,可以将 Shader Model 1.1 指定为顶点着色器的目标。
,