前言

Unity中Shader编译到目标渲染器


一、Unity打包时,会把Shader编译成不同平台对应代码

在这里插入图片描述

我们状态栏可以看见我们目前所处于的目标平台

在这里插入图片描述


二、在Unity中,怎么指定目标平台

1、#pragma only_renderers

#pragma only_renderers
仅编译指定平台的Shader

  1. d3d11 – Direct3D 11/12
  2. glcore – OpenGL 3.x/4.x
  3. gles – OpenGL ES 2.0
  4. gles3 – OpenGL ES 3.x
  5. metal – iOS/Mac Metal
  6. vulkan – Vulkan
  7. d3d11_9x – Direct3D 11 9.x功能级别,通常在WSA平台上使用
  8. xboxone – Xbox One
  9. ps4 – PlayStation 4
  10. psp2 – PlayStation Vita
  11. n3ds – Nintendo 3DS
  12. wiiu – Nintendo Wii U

2、#pragma exclude_renderers

剔除掉指定平台的相关代码

  1. d3d11 – Direct3D 11/12
  2. glcore – OpenGL 3.x/4.x
  3. gles – OpenGL ES 2.0
  4. gles3 – OpenGL ES 3.x
  5. metal – iOS/Mac Metal
  6. vulkan – Vulkan
  7. d3d11_9x – Direct3D 11 9.x功能级别,通常在WSA平台上使用
  8. xboxone – Xbox One
  9. ps4 – PlayStation 4
  10. psp2 – PlayStation Vita
  11. n3ds – Nintendo 3DS
  12. wiiu – Nintendo Wii U

三、我们测试一下看看效果

1、 我当前处于 DX11 平台,我们修改为只渲染 IOS/Mac 平台(Metal)

//仅编译指定目标平台
#pragma only_renderers metal

我们发现,Unity渲染丢失了,呈现洋葱紫
在这里插入图片描述

2、我们剔除一些平台,看看剔除后,编译的代码没有减少

剔除前(945行):
在这里插入图片描述

剔除gles后(774行):

在这里插入图片描述


四、编译目标渲染器优化的好处

这样优化,并不能提高游戏运行时的性能,但是可以节省打包编译时的时间,和编译文件所占的存储空间

原文地址:https://blog.csdn.net/qq_51603875/article/details/134708788

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_19725.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注