Unity 3 进行了许多图形相关的更改,某些事项有必要在升级现有的 Unity 2.x 工程时进行调整。如需了解着色器的相关更改,请参阅 着色器升级指南。
Unity 2.x 拥有一个渲染路径,在 Unity 3 中称为向前 (Forward)。与 Unity 2.x 相比,这部分有了重大改变:
请参阅着色器升级指南了解更多详情。 最大的更改是:如果想编写与灯光交互的着色器,应使用表面着色器 (Surface Shaders)。
!!ATIfs
程序集着色器)。
OnPreCullObject
和 RenderBeforeQueues
属性。
texture.GetNativeTextureID()
。
_ObjectSpaceCameraPos
和 _ObjectSpaceLightPos0
(新增 _WorldSpaceCameraPos
和 _WorldSpaceLightPos0
)。
LightmapMode
标签现已不起作用。
GrabPass
(如折射玻璃着色器)现在始终抓取屏幕大小的纹理。
#pragma multi_compile_vertex
和 #pragma multi_compile_fragment
消失。
Offset [_Var1], [_Var2]
)。
TRANSFER_EYEDEPTH/OUTPUT_EYEDEPTH
重命名为 UNITY_TRANSFER_DEPTH/UNITY_OUTPUT_DEPTH
。它们也在 Unity 3 的 float2 中起作用。
_Light2World0
、_World2Light0
内置着色器矩阵。
_FirstPass
内置着色器浮点。
Fog { Mode [_MyFogMode] }
)。如需使用全局雾模式,请写入 Fog { Mode Global }
。
BlendColor
颜色。
RenderTexture.SetBorderColor
)。
ColorMaterial Ambient, Diffuse, Specular
支持(剩下 ColorMaterial AmbientAndDiffuse 和 Emission)。对已删除项的支持根据平台造成的混乱情况的不同而有较大差异,但这些似乎并没有太大用处。
_CameraToWorld
和 _WorldToCamera
矩阵现在将按期望工作。之前,它们只包含转动部分,全球相机在 Y 轴上翻动。我们也不知道是怎么回事 :)
Shader.ClearAll()
。2007 年开始弃用,可以不再关注。
#pragma target 1.1
。
Page last updated: 2013-06-19