如何查看Shader是否支持SPR Batcher

我们可以在Unity里面看一下我们之前写的示例Shader

红框位置是直接回显示是否适配SPR Batcher,我们的示例Shader是不适配的。
白色叹号后面是具体的说明。
下面我们来改一下示例Shader,在pass的自定义属性加上CBUFFER_START、CUBFFER_END。

Shader "Mark/Unlit" {  //名字Properties {_MainTex ("Base (RGB)", 2D) = "white" {} //定义贴图属性_Color("Main Color", Color) = (1,1,1,1)     //定义一个主颜色}SubShader {Tags {"RenderPipeline"="UniversalRenderPipeline" "RenderType"="Opaque" "Queue" = "Geometry"}   //指明Shader为URPshader、渲染类型为不透明Pass {HLSLPROGRAM   //指明这是一个HLSL代码片段#pragma vertex vert   //定义顶点着色器的函数名#pragma fragment frag   //定义片段着色器的函数名#pragma target 3.0   //定义支持的opengl的版本#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"   //引入core库//定义输入数据结构struct appdata_t {float4 vertex : POSITION;   //顶点坐标float2 texcoord : TEXCOORD0;    //贴图};//定义输出数据结构struct v2f {float4 vertex : SV_POSITION; //顶点坐标  必须有float2 texcoord : TEXCOORD0; //uv坐标};//定义和属性定义中同名的属性,以便在代码片段中使用。sampler2D _MainTex; CBUFFER_START(UnityPerMaterial)half4 _Color;float4 _MainTex_ST;  //_ST是一个内置的规则、这个存储的是贴图的Tilling和OffsetCBUFFER_ENDv2f vert (appdata_t v){v2f o;o.vertex = TransformObjectToHClip(v.vertex.xyz);     //可以简单的理解为将世界坐标转换到屏幕坐标。o.texcoord = TRANSFORM_TEX(v.texcoord, _MainTex); //获取贴图的UVreturn o;}half4 frag (v2f i){half4 col = tex2D(_MainTex,i.texcoord);  //获取贴图在该顶点的颜色信息return col*_Color;   //贴图颜色混合叠加的主色。}ENDHLSL}}
}

现在我们再去看一下shader的适配情况

我们可以看到现在我们的shader就已经开始支持SPR Batcher了。

CBUFFER_START CUBFF_END

如果需要我们的Shader支持SPR Batcher,那么就要将我们的属性加到这两个中间。
同时Unity在进行批处理是,所有的在CBUFFER中间的属性,都是可以更改的。
也就是说我们可以更改不同的材质球用不同的颜色,但是是可以进行批处理的。

我们先来看一下没有进行SPR Batcher适配之前的消耗情况

  • 只有单个Cube,场景的SetPass Calls是3

  • 增加3个不同材质球的Cube,SetPass Calls变为5

加入SPR Batcher适配

我们可以看到SetPass Calls 变为了3,同时我们给每个材质球指定了不同的颜色。

5、Shader如何启用SPR Batcher支持相关推荐

  1. nginx添加第三方模块,以及启用nginx本身支持的模块

    nginx添加第三方模块,以及启用nginx本身支持的模块 Nginx添加第三方模块 转载于:https://www.cnblogs.com/linjiqin/p/11512867.html

  2. 关于Windows10系统启用SMB文件共享支持服务

    关于Windows10系统启用SMB文件共享支持服务的操作步骤如下: 1."win+R"快捷键弹出运行窗口,输入control确定: 2.在弹出窗口点击"程序" ...

  3. 简单提升微信打开浏览器速度(启用原生 WebView 支持)

    简单提升微信打开浏览器速度(启用原生 WebView 支持) 前言 启用原生 WebView 支持 小结 前言 国内的安卓系统环境真的是一言难尽,各种后台全家桶,在国内没有苹果的那种消息推送,性能较强 ...

  4. Firefox 44.0将在Linux上启用H.264支持:GTK3仍缺席

    随着 Firefox 43.0 的平稳落地,下面我们不妨预知下 Firefox 44.0 中将要迎来的大变化.12 月 18 号,Mozilla 发布了首个测试版本(Firefox 44.0 Beta ...

  5. 【转】在Ubuntu 12.04 上为Virtualbox 启用USB 设备支持--不错

    原文网址:http://www.cnblogs.com/ericsun/archive/2013/06/10/3130679.html 虚拟机我一直在用,不是说离不开Windows,而是有些时候一些应 ...

  6. C++20 模式下将启用协程支持 CC 11

    GCC 10 在 C++20 模式(std=c++20) 中运行时,默认情况下会启用 C++ 协程.而将于明年发布的 GCC 11 在 C++20 推出时将具有协程功能,到那时,GNU 编译器集合中支 ...

  7. 启用Win11原生支持的DoH(DNS over HTTPS)和配置自定义的DoH服务

    更新 22.1.23:发现有的dns配置没有首选的dns加密,好像是用无线的时候就会没有,不影响,看情况2就行 为了方便,直接给出一些模板(国内可用的) netsh dns add encryptio ...

  8. 如何在ESXi中启用巨型帧支持?

    巨型帧可以在恰当的时候帮助减少网络延迟,但需要对整个网络设施进行正确的配置. 在虚拟环境中巨型帧是一款很有价值的工具.传统以太网帧.数据包最多能够包含1500个字节,但每个数据包包括额外的数据头.校验 ...

  9. Virtualbox 启用USB 设备支持

    VirtualBox 默认不支持USB设备接入,所以此处分三步,添加支持. 1.VirtualBox 使用宿主机的USB设备需要安装扩展包.根据自己的vbox的版本,到vbox官网下载对应的扩展包. ...

  10. 什么是UPNP协议:UPNP协议作用及启用路由器UPNP支持的方法详细介绍

    目录 [隐藏] UPNP简介 基本概念 官网解释 以下是微软官方网站对UPnP的解释: 以下是BC官方网站对UPnP的解释: UPnP是用来干什么的? 经典应用 网络地址转换 NAT 穿越技术 实际应 ...

最新文章

  1. Spark ShuffleManager内存缓冲器SortShuffleWriter设计思路剖析-Spark商业环境实战
  2. 去重和分类后缀asp、php等路径 用python3写的
  3. Spring Security源码解析(四)—— 过滤器
  4. 分布式的客户端-服务器结构_MMORPG游戏服务器技术选型参考
  5. OpenCV与图像处理学习十一——分水岭算法(含代码)
  6. python卷积函数_python – 理解Scipy卷积
  7. eterm 汉字编码一点也不难
  8. ubuntu 安装nvidia 驱动后无法进入桌面(循环进入登录界面 )
  9. Q78:规则网格(Regular Grids)——Ray Tracing中的一种加速技术
  10. 《Core Data应用开发实践指南》一2.15 小结
  11. web前端面试题讲解-网站重构的理解
  12. 一个由“2020年1月7日 京东出现的重大 Bug 漏洞“引起的思考......
  13. maven仓库如何加载瀚高数据库JDBC驱动
  14. 什么A股,B股,H股?什么是红筹股,蓝筹股
  15. 不使用采集卡,实现相机手机多机位直播
  16. go语言 格式化输出fmt.Printf()使用大全
  17. Oracle to_date()函数的用法
  18. Hyperledger -超级账本 学习报告
  19. 长沙岳阳308公里往返骑行拉练
  20. alv oo sap 多个_OO ALV 全屏显示

热门文章

  1. linux中apache无法启动,Apache无法启动
  2. 关于 虚拟机交叉编译目标机程序,使用filezilla的ftp方式传输到板子上没问题,后来同样环境传入应用运行宕机 的解决方法
  3. GeForce Experience 安装时乱码解决
  4. 一名菜鸟程序员的跳槽经历以及其所感所想(二)
  5. 中通快递信息怎么批量导出到表格呢?
  6. IT项目管理之第5章 项目时间管理习题之选择题汇总
  7. python文件seek_Python文件读取中:f.seek(0)和f.seek(0,0)有什么区别?
  8. 亲爱的,对不起,我要和别人结婚了
  9. Python爬虫技术-根据【理财】关键字爬取“巨潮资讯网”的title
  10. 飞秋FeiQ可以聊天,但无法传输文件