Unity中Shader编译目标渲染器


前言

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行):

在这里插入图片描述


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

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

  • 22
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Unity使用Uber ShaderShader变种管理,可以大大简化游戏开发Shader制作过程,提高游戏渲染效率。 首先,我们需要了解什么是Uber Shader。Uber Shader是一种高度灵活的Shader,它可以处理多种不同类型的表面和效果,例如金属、玻璃、皮肤和草地等。在使用Uber Shader时,我们只需要在Shader选择所需的效果,而不需要编写多个不同的Shader。 接下来,我们需要使用Shader变种管理来控制Shader的不同变种。Shader变种是一种编译后的Shader,它们使用相同的代码和参数,但可以使用不同的预处理指令和条件编译来实现不同的效果。例如,我们可以使用Shader变种来实现不同的光照模型、阴影效果和纹理处理。 在Unity使用Uber ShaderShader变种管理,我们需要首先创建一个Uber Shader,然后在Shader添加Shader变种。我们可以使用Unity提供的ShaderLab语言来编写Shader代码,也可以使用代码编辑器来编写。 在添加Shader变种时,我们需要使用Unity提供的条件编译指令来实现不同的效果。例如,我们可以使用#if指令来控制Shader变种的使用,例如: ``` #if USE_SPECULAR // 添加镜面反射效果 float3 specular = max(dot(reflect(-lightDir, normal), viewDir), 0); col.rgb += specularColor.rgb * pow(specular, specularPower); #endif ``` 最后,我们需要在Unity使用Shader变种管理器来控制Shader的使用。我们可以使用Shader变种管理器来选择所需的Shader变种,并为不同的游戏对象设置不同的Shader变种。 总之,使用Uber ShaderShader变种管理可以大大简化游戏开发Shader制作过程,提高游戏渲染效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

楠溪泽岸

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值