Unity的GPU Instancing技术

首先新建一个场景,添加一个相机,并创建一个Render Texture给相机。

然后在相机上挂载以下脚本TestBatches ,同时脚本的Inspector面板的Mesh中选择Cube,另外创建一个新的材质拖动给mat:

public class TestBatches : MonoBehaviour
{public Mesh mesh;public Material mat;private void OnRenderObject(){Graphics.DrawMesh(mesh,Vector3.zero,Quaternion.identity,mat,0);}
}

运行Unity则可以看到一个Cube:

这里可以看到DrawCall数量为36个,以为相机本身有10个DrawCall,所以等于这个Cube的绘制有16个DrawCall。

然后我们修改代码为,就会发现DrawCall数量增加到了52个,因为36+16=52

    private void OnRenderObject(){Graphics.DrawMesh(mesh,Vector3.zero,Quaternion.identity,mat,0);Graphics.DrawMesh(mesh,Vector3.zero,Quaternion.identity,mat,0);}

那么我们如何可以通过其他方式绘制出同样的两个Cube,而不增加DrawCall数量呢,接下来我们使用Gpu Instancing的方式,首先开启材质的Instancing开关:

然后修改代码,使用Graphics.DrawMeshInstanced接口绘制:

public class TestBatches : MonoBehaviour
{public Mesh mesh;public Material mat;private Matrix4x4[] m_atrix4x4s = new Matrix4x4[2];private void Start(){// 初始化两个矩阵以定义两个物体的位置、旋转和缩放m_atrix4x4s[0] = Matrix4x4.TRS(Vector3.zero, Quaternion.identity, Vector3.one); // 第一个物体位置m_atrix4x4s[1] = Matrix4x4.TRS(new Vector3(2, 0, 0), Quaternion.identity, Vector3.one); // 第二个物体位置,相对于第一个物体偏移}private void OnRenderObject(){//Graphics.DrawMesh(mesh,Vector3.zero,Quaternion.identity,mat,0);// 使用 DrawMeshInstanced 绘制两个物体Graphics.DrawMeshInstanced(mesh, 0, mat, m_atrix4x4s);}}

可以看到绘制了两个同样的Cube但DrawCall数量没有增加:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/481199.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PVE相关名词通俗表述方式———多处细节实验(方便理解)

PVE设置初期,对CIDR、 网关、 LinuxBridge、VLAN等很有困惑的朋友一定很需要一篇能够全面通俗易懂的方式去理解PVE 中Linux网桥的工作方式,就像操作一个英雄,多个技能,还是需要一点点去学习理解的,如果你上来就对着别人…

Windows利用conda安装gpu版本Faiss + Ubuntu源码安装Faiss-gpu 记录(待更新~)

前言 由于在cpu上使用对向量检索算法时,发现面对数据量较大时,批量匹配耗时会显著增加,影响业务整体响应。便尝试使用GPU来实现检索计算,限于本人技术有限,写不出好算法。便取巧利用Faiss-gpu来检索(* ^ ▽ ^ *) 以下…

深度学习——激活函数

一、人工神经元 1.1 构建人工神经元 人工神经元接受多个输入信息,对它们进行加权求和,再经过激活函数处理,最后将这个结果输出。 1.2 组成部分 输入(Inputs): 代表输入数据,通常用向量表示,每…

龙迅#LT6912适用于HDMI2.0转HDMI+LVDS/MIPI,分辨率高达4K60HZ,支持音频和HDCP2.2

1. 描述 LT6912是一款高性能的HDMI2.0转HDMI和LVDS和MIPI转换器。 HDMI2.0 输入和输出均支持高达 6Gbps 的数据速率,为4k60Hz视频提供足够的带宽。此外,还支持 HDCP2.2 进行数据解密(无数据 加密)。 对于 LVDS 输出&#xff0c…

hhdb数据库介绍(10-20)

监控 监控面板 监控面板为用户提供计算节点、服务器相关的监控功能,包含:计算节点服务状态、计算节点流量、计算节点服务器资源、其他服务器资源。 数据采集说明: 监控面板显示24小时内采集的数据(需要放大显示,正…

美国网络安全态势感知(4):威胁情报发展现状

美国政府依托其不断发展完善的威胁情报共享技术,构建了名为“网络天气地图”的威胁情报管理体系,如下图所示: “网络天气地图”的威胁情报管理体系运行过程以及每个过程中的关键信息如下所述: 通过国家网络安全保护系统与互联网中…

RNN And CNN通识

CNN And RNN RNN And CNN通识一、卷积神经网络(Convolutional Neural Networks,CNN)1. 诞生背景2. 核心思想和原理(1)基本结构:(2)核心公式:(3)关…

Rust format失败

现象: 使用vscode 格式化.rs 文档的时候,一直没有反应。 cargo run命令没问题 cargo fmt会报错This version of rustfmt is deprecated. Use rustfmt-nightly. Use --force to run deprecated rustfmt. 询问GPT,一直让rustup component add …

基础汉诺塔

汉诺塔(Hanoi Tower)问题是一个著名的数学问题,它涉及到递归算法。问题的背景来源于一个传说:在印度的一个寺庙里,有三根金刚石柱和64个直径大小不一的金盘。僧侣们被命令将这些金盘从一根柱子按照从小到大的顺序移动到…

redis中的哨兵

redis中的哨兵 一、哨兵机制的概念二、redis哨兵的部署2.1 docker的安装2.2 编排redis主从节点2.3 配置哨兵节点 三、redis哨兵的选举机制3.1 redis-master宕机之后的情况3.2 重启redis-master后的情况 四、redis哨兵机制的原理4.1主观下线4.2客观下线4.3选举leader节点4.4选出…

C底层 函数栈帧

文章目录 一,什么是寄存器 二,栈和帧 前言 我们在学习c语言程序的时候,是不是有很多的疑问,如 1,为什么形参不可以改变实参 2,为什么我们编写程序的时候会出现烫烫烫......这个乱码 3,那些局…

【ArcGIS Pro实操第10期】统计某个shp文件中不同区域内的站点数

统计某个shp文件中不同区域内的站点数 方法 1:使用“空间连接 (Spatial Join)”工具方法 2:使用“点计数 (Point Count)”工具方法 3:通过“选择 (Select by Location)”统计方法 4:通过“Python 脚本 (ArcPy)”实现参考 在 ArcGI…

Supervisor使用教程

文章目录 [toc] Supervisor使用教程平台要求 安装supervisor本文测试的时候是使用Linux的yum安装的(其它方式未做测试)加入系统守护进行 Supervisor使用教程 在项目中,经常有脚本需要常驻运行的需求。以PHP脚本为例,最简单的方式…

分布式锁的实现原理

作者:来自 vivo 互联网服务器团队- Xu Yaoming 介绍分布式锁的实现原理。 一、分布式锁概述 分布式锁,顾名思义,就是在分布式环境下使用的锁。众所周知,在并发编程中,我们经常需要借助并发控制工具,如 mu…

[Java]微服务配置管理

介绍 代码拆分为微服务后, 每个服务都有自己的配置文件, 而这些配置文件中有很多重复的配置, 并且配置变化后需要重启服务, 才能生效, 这样就会影响开发体验和效率 配置管理服务可以帮助我们集中管理公共的配置, 并且nacos就可以实现配置管理服务 配置共享 我们可以把微服务共…

File类,IO流,字节输入流,字节输出流,字符输出流,字符入流,缓存流,对象流,序列化ID

1.File类 1.文件创建 创建的是文件还是文件夹,跟调用的方法有关。和后缀无关。 //创建File对象 \: window中使用\.第一个表示转移符。 而我们在linux或mac使用/. java语言跨平台操作。 window系统中也可以使用/ File filenew File("E:/hhhh/a.txt"); …

AMD的AI芯片Instinct系列介绍

AMD最强AI芯片发布! 在旧金山举行的Advancing AI 2024大会上,AMD推出Instinct MI325X AI加速器(以下简称MI325X),直接与英伟达的Blackwell芯片正面交锋。 现场展示的数据显示,与英伟达H200的集成平台H200 …

第六届国际科技创新(IAECST 2024)暨第四届物流系统与交通运输(LSTT 2024)

重要信息 会议官网:www.lstt.org 大会时间:2024年12月6-8日 大会地点:中国-广州 简介 第六届国际科技创新暨第四届物流系统与交通运输国际(LSTT 2024)将于2024年12月6-8日在广州举办,这是一个集中探讨…

Docker desktop 改变存储位置

项目场景: 在windows下,使用docker desktop是使用docker最简单直接的方式。但是,这毕竟是一个可视化的界面,使用起来还是和linux环境下的版本有很大的区别。 例如,使用docker desktop,会默认将镜像以及容…

多线程 03 实现方式

继续变强 主流框架都看了 springcloud , redis ,mq ,nginx ,docker , 也有实操 继续看多线程,和 大数据 请假面试 本来要拿离职补偿和失业金,结果公司要加薪续签,哎,反正不忙,要是主动离职我就亏了,那就…