文章目录
- 前言
- 一、Unity在打包时,会把Shader编译成不同平台对应的代码
- 我们在状态栏,可以看见我们目前所处于的目标平台
- 二、在Unity中,怎么指定目标平台
- 1、#pragma only_renderers
- 2、#pragma exclude_renderers
- 三、我们测试一下看看效果
- 1、 我当前处于 DX11 平台,我们修改为只渲染 IOS/Mac 平台(Metal)
- 2、我们剔除一些平台,看看剔除后,编译的代码有没有减少
- 四、编译目标渲染器优化的好处
前言
Unity中Shader编译到目标渲染器
一、Unity在打包时,会把Shader编译成不同平台对应的代码
我们在状态栏,可以看见我们目前所处于的目标平台
二、在Unity中,怎么指定目标平台
1、#pragma only_renderers
#pragma only_renderers
仅编译指定平台的Shader
- d3d11 - Direct3D 11/12
- glcore - OpenGL 3.x/4.x
- gles - OpenGL ES 2.0
- gles3 - OpenGL ES 3.x
- metal - iOS/Mac Metal
- vulkan - Vulkan
- d3d11_9x - Direct3D 11 9.x功能级别,通常在WSA平台上使用
- xboxone - Xbox One
- ps4 - PlayStation 4
- psp2 - PlayStation Vita
- n3ds - Nintendo 3DS
- wiiu - Nintendo Wii U
2、#pragma exclude_renderers
剔除掉指定平台的相关代码
- d3d11 - Direct3D 11/12
- glcore - OpenGL 3.x/4.x
- gles - OpenGL ES 2.0
- gles3 - OpenGL ES 3.x
- metal - iOS/Mac Metal
- vulkan - Vulkan
- d3d11_9x - Direct3D 11 9.x功能级别,通常在WSA平台上使用
- xboxone - Xbox One
- ps4 - PlayStation 4
- psp2 - PlayStation Vita
- n3ds - Nintendo 3DS
- wiiu - Nintendo Wii U
三、我们测试一下看看效果
1、 我当前处于 DX11 平台,我们修改为只渲染 IOS/Mac 平台(Metal)
//仅编译指定目标平台
#pragma only_renderers metal
我们会发现,Unity渲染丢失了,呈现洋葱紫
2、我们剔除一些平台,看看剔除后,编译的代码有没有减少
剔除前(945行):
剔除gles后(774行):
四、编译目标渲染器优化的好处
这样优化,并不能提高游戏在运行时的性能,但是可以节省打包编译时的时间,和编译文件所占的存储空间。