5、Shader如何启用SPR Batcher支持
如何查看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支持相关推荐
- nginx添加第三方模块,以及启用nginx本身支持的模块
nginx添加第三方模块,以及启用nginx本身支持的模块 Nginx添加第三方模块 转载于:https://www.cnblogs.com/linjiqin/p/11512867.html
- 关于Windows10系统启用SMB文件共享支持服务
关于Windows10系统启用SMB文件共享支持服务的操作步骤如下: 1."win+R"快捷键弹出运行窗口,输入control确定: 2.在弹出窗口点击"程序" ...
- 简单提升微信打开浏览器速度(启用原生 WebView 支持)
简单提升微信打开浏览器速度(启用原生 WebView 支持) 前言 启用原生 WebView 支持 小结 前言 国内的安卓系统环境真的是一言难尽,各种后台全家桶,在国内没有苹果的那种消息推送,性能较强 ...
- Firefox 44.0将在Linux上启用H.264支持:GTK3仍缺席
随着 Firefox 43.0 的平稳落地,下面我们不妨预知下 Firefox 44.0 中将要迎来的大变化.12 月 18 号,Mozilla 发布了首个测试版本(Firefox 44.0 Beta ...
- 【转】在Ubuntu 12.04 上为Virtualbox 启用USB 设备支持--不错
原文网址:http://www.cnblogs.com/ericsun/archive/2013/06/10/3130679.html 虚拟机我一直在用,不是说离不开Windows,而是有些时候一些应 ...
- C++20 模式下将启用协程支持 CC 11
GCC 10 在 C++20 模式(std=c++20) 中运行时,默认情况下会启用 C++ 协程.而将于明年发布的 GCC 11 在 C++20 推出时将具有协程功能,到那时,GNU 编译器集合中支 ...
- 启用Win11原生支持的DoH(DNS over HTTPS)和配置自定义的DoH服务
更新 22.1.23:发现有的dns配置没有首选的dns加密,好像是用无线的时候就会没有,不影响,看情况2就行 为了方便,直接给出一些模板(国内可用的) netsh dns add encryptio ...
- 如何在ESXi中启用巨型帧支持?
巨型帧可以在恰当的时候帮助减少网络延迟,但需要对整个网络设施进行正确的配置. 在虚拟环境中巨型帧是一款很有价值的工具.传统以太网帧.数据包最多能够包含1500个字节,但每个数据包包括额外的数据头.校验 ...
- Virtualbox 启用USB 设备支持
VirtualBox 默认不支持USB设备接入,所以此处分三步,添加支持. 1.VirtualBox 使用宿主机的USB设备需要安装扩展包.根据自己的vbox的版本,到vbox官网下载对应的扩展包. ...
- 什么是UPNP协议:UPNP协议作用及启用路由器UPNP支持的方法详细介绍
目录 [隐藏] UPNP简介 基本概念 官网解释 以下是微软官方网站对UPnP的解释: 以下是BC官方网站对UPnP的解释: UPnP是用来干什么的? 经典应用 网络地址转换 NAT 穿越技术 实际应 ...
最新文章
- Spark ShuffleManager内存缓冲器SortShuffleWriter设计思路剖析-Spark商业环境实战
- 去重和分类后缀asp、php等路径 用python3写的
- Spring Security源码解析(四)—— 过滤器
- 分布式的客户端-服务器结构_MMORPG游戏服务器技术选型参考
- OpenCV与图像处理学习十一——分水岭算法(含代码)
- python卷积函数_python – 理解Scipy卷积
- eterm 汉字编码一点也不难
- ubuntu 安装nvidia 驱动后无法进入桌面(循环进入登录界面 )
- Q78:规则网格(Regular Grids)——Ray Tracing中的一种加速技术
- 《Core Data应用开发实践指南》一2.15 小结
- web前端面试题讲解-网站重构的理解
- 一个由“2020年1月7日 京东出现的重大 Bug 漏洞“引起的思考......
- maven仓库如何加载瀚高数据库JDBC驱动
- 什么A股,B股,H股?什么是红筹股,蓝筹股
- 不使用采集卡,实现相机手机多机位直播
- go语言 格式化输出fmt.Printf()使用大全
- Oracle to_date()函数的用法
- Hyperledger -超级账本 学习报告
- 长沙岳阳308公里往返骑行拉练
- alv oo sap 多个_OO ALV 全屏显示
热门文章
- linux中apache无法启动,Apache无法启动
- 关于 虚拟机交叉编译目标机程序,使用filezilla的ftp方式传输到板子上没问题,后来同样环境传入应用运行宕机 的解决方法
- GeForce Experience 安装时乱码解决
- 一名菜鸟程序员的跳槽经历以及其所感所想(二)
- 中通快递信息怎么批量导出到表格呢?
- IT项目管理之第5章 项目时间管理习题之选择题汇总
- python文件seek_Python文件读取中:f.seek(0)和f.seek(0,0)有什么区别?
- 亲爱的,对不起,我要和别人结婚了
- Python爬虫技术-根据【理财】关键字爬取“巨潮资讯网”的title
- 飞秋FeiQ可以聊天,但无法传输文件