返回介绍

渲染升级细节

发布于 2021-06-19 18:03:25 字数 3065 浏览 928 评论 0 收藏 0

Unity 3 进行了许多图形相关的更改,某些事项有必要在升级现有的 Unity 2.x 工程时进行调整。如需了解着色器的相关更改,请参阅 着色器升级指南

向前渲染路径更改

Unity 2.x 拥有一个渲染路径,在 Unity 3 中称为向前 (Forward)。与 Unity 2.x 相比,这部分有了重大改变:

  • 最常见的情况(一个方向逐像素灯)是现在用单程 (one pass) 绘制!(以前是双程)
  • 不支持点光源和聚光灯阴影。只有一个方向灯可以投射阴影。如果需要更多阴影,请使用延迟照明 (Deferred Lighting)。
  • 大部分“顶点 (Vertex)” 灯替换为球面谐波照明。
  • 向前渲染路径现在完全基于着色器,所以可以在 OpenGL ES 2.0、Xbox 360、PS3(如不支持固定功能渲染的平台)上工作。

着色器更改

请参阅着色器升级指南了解更多详情。 最大的更改是:如果想编写与灯光交互的着色器,应使用表面着色器 (Surface Shaders)。

没人会注意到的图形卡模糊变化 (Obscure Graphics Changes That No One Will Probably Notice TM)

  • 已删除 Mac Radeon 9200 像素着色器支持(!!ATIfs 程序集着色器)。
  • 已删除对前 ShaderModel2.0 硬件的逐像素照明支持。因此,Diffuse Fast 着色器现在只是顶点照明 (VertexLit)。
  • 已删除不衰弱灯光。所有点光源和聚光灯现都已衰弱。
  • 已删除脚本回调:OnPreCullObjectRenderBeforeQueues 属性。
  • 已删除基于 P 缓冲区的 RenderTextures。OpenGL 上的 RenderTextures 现在要求 FBO 支持。
  • 大部分 Pass LightMode 标签都已消失,并替换上新标签。无论如何,用户一般应使用表面着色器 (Surface Shaders) 进行。
  • 纹理 instanceID 不再是 OpenGL 纹理名称。可能影响依赖它们的 C++ 插件,请使用 texture.GetNativeTextureID()
  • 将着色器关键字 SHADOWS_NATIVE 重命名为 SHADOWS_DEPTH,SHADOWS_PCF4 重命名为 SHADOWS_SOFT。
  • 已删除受 8 个以上顶点灯影响对象的环境增强效果。
  • 已删除 _ObjectSpaceCameraPos_ObjectSpaceLightPos0(新增 _WorldSpaceCameraPos_WorldSpaceLightPos0)。
  • 着色器纹理属性中的 LightmapMode 标签现已不起作用。
  • 天空盒着色器不写入深度缓存。
  • GrabPass(如折射玻璃着色器)现在始终抓取屏幕大小的纹理。
  • #pragma multi_compile_vertex#pragma multi_compile_fragment 消失。
  • ShaderLab 中的多边形偏移无法再引用变量(如 Offset [_Var1], [_Var2])。
  • TRANSFER_EYEDEPTH/OUTPUT_EYEDEPTH 重命名为 UNITY_TRANSFER_DEPTH/UNITY_OUTPUT_DEPTH。它们也在 Unity 3 的 float2 中起作用。
  • 已删除特殊着色器的 pass 类型:R2TPass、OffscreenPass。
  • 已删除 _Light2World0_World2Light0 内置着色器矩阵。
  • 已删除 _SceneAmbient、_MultiModelAmbient、_MultiAmbient、_ModelAmbient、_MultiplyFog、_LightHackedDiffuse0、_ObjectCenterModelLightColor0 内置着色器矢量。
  • 已删除 _FirstPass 内置着色器浮点。
  • 阴影文件中的雾模式无法来自变量(如 Fog { Mode [_MyFogMode] })。如需使用全局雾模式,请写入 Fog { Mode Global }
  • 已从 ShaderLab 中删除 BlendColor 颜色。
  • 已删除着色器属性中的说明纹理矩阵按值支持。
  • 已删除“静态 (static)” 着色器属性支持。
  • 已删除纹理边框颜色支持 (RenderTexture.SetBorderColor)。
  • 已删除 ColorMaterial Ambient, Diffuse, Specular 支持(剩下 ColorMaterial AmbientAndDiffuse 和 Emission)。对已删除项的支持根据平台造成的混乱情况的不同而有较大差异,但这些似乎并没有太大用处。
  • 内置 _CameraToWorld_WorldToCamera 矩阵现在将按期望工作。之前,它们只包含转动部分,全球相机在 Y 轴上翻动。我们也不知道是怎么回事 :)
  • 已删除 Shader.ClearAll()。2007 年开始弃用,可以不再关注。
  • 顶点着色器现已编译至 Shader Model 2.0(以前为 1.1)。如果想编译至 SM1.1,请在着色器中新增 #pragma target 1.1

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文