Thanks for posting these tips. I was devastated when my project dropped to 3 FPS because material properties don't work out of the box. I was able to edit the generated shader to go from 5000 draw calls to ~15. Here are some relevant snippets. I am only changing the color of my game objects in this example

Find all of these blocks of code (there are several copies)

Code (CSharp):
  1. CBUFFER_START(UnityPerMaterial)
  2. float4 _BaseColor;
  3. CBUFFER_END

Replace them with this

Code (CSharp):
  1. CBUFFER_START(UnityPerMaterial)
  2. UNITY_INSTANCING_BUFFER_START(Props)
  3. UNITY_DEFINE_INSTANCED_PROP(float4, _BaseColor)
  4. UNITY_INSTANCING_BUFFER_END(Props)
  5. CBUFFER_END

Then find every instance of _BaseColor in the shader functions (there are several copies)

Code (CSharp):
  1.  SurfaceDescription SurfaceDescriptionFunction(SurfaceDescriptionInputs IN) {
  2.         SurfaceDescription surface = (SurfaceDescription)0;
  3.         float4 _Property_A850853A_Out_0 = _BaseColor;
  4.         ....

Replace them with UNITY_ACCESS_INSTANCED_PROP(Props, _BaseColor)

Code (CSharp):
  1. SurfaceDescription SurfaceDescriptionFunction(SurfaceDescriptionInputs IN) {
  2.         SurfaceDescription surface = (SurfaceDescription)0;
  3.         float4 _Property_A850853A_Out_0 = UNITY_ACCESS_INSTANCED_PROP(Props, _BaseColor);
  4.         ...

And lastly don't forget to set the material properties on your game object

Code (CSharp):
  1. int colorPropId = Shader.PropertyToID("_BaseColor");
  2. var matProps = new MaterialPropertyBlock();
  3. matProps.SetColor(colorPropId, color);
  4. renderer.SetPropertyBlock(matProps);

hdrp gpu instance MPB不生效问题的更多相关文章

  1. [unity]GPU Instance学习

    前言我们之前研究过为什么Unity的UI可以合批,是因为使用了相同的材质进行渲染,UI上不同图片渲染是通过把图片打成一张图集后,使用Image组件对顶点填充了不同的UV值实现的.那么有没有什么办法可以 ...

  2. GPU Instance

    http://forum.china.unity3d.com/thread-17131-1-1.html https://docs.unity3d.com/Manual/GPUInstancing.h ...

  3. cocos2dx 实现gpu instancing

    所有的gpu instancing都是在unity3d上实现的,ue4实现起来应该压力也不大相关链接见下:https://www.cnblogs.com/hont/p/7143626.htmlhttp ...

  4. 深入GPU硬件架构及运行机制

    目录 一.导言 1.1 为何要了解GPU? 1.2 内容要点 1.3 带着问题阅读 二.GPU概述 2.1 GPU是什么? 2.2 GPU历史 2.2.1 NV GPU发展史 2.2.2 NV GPU ...

  5. GPU Skinning 结合 Instanced 高效实现大量单位动画

    GPU Skinning 与 Instance 蒙皮动画 计算骨骼信息 蒙皮 GPU Skinning CPU Skinning 与 GPU Skinning 实现方式 Skinning 类型 优点 ...

  6. 几个Graphics函数

    1.Graphics.Blit:Copies source texture into destination render texture with a shader 声明: 1.public sta ...

  7. File System Minifilter Drivers(文件系统微型过滤驱动)入门

    问题: 公司之前有一套文件过滤驱动,但是在实施过程中经常出现问题,现在交由我维护.于是在边看代码的过程中,一边查看官方资料,进行整理. 这套文件过滤驱动的目的只要是根据应用层下发的策略来控制对某些特定 ...

  8. 聊聊2018.2的Scriptable Build Pipeline以及构建Assetbundle

    0x00 前言 在这篇文章中,我们选择了过去几周Unity官方社区交流群以及UUG社区群中比较有代表性的几个问题,总结在这里和大家进行分享.主要涵盖了Scriptable Build Pipeline ...

  9. 开发自定义ScriptableRenderPipeline,将DrawCall降低180倍

    0x00 前言 大家都知道,Unity在2018版本中正式推出了Scriptable Render Pipeline.我们既可以通过Package Manager下载使用Unity预先创建好的Ligh ...

  10. Unity ECS 视频笔记

    视频摘要 本文视频资料:使用Entity Component System开发<快乐的Minecraft>游戏 使用Unity2018及以上版本才有ECS功能. 本文是看视频的一些摘要. ...

随机推荐

  1. windows注册表的读

    1.打开 2.读取 //打开注册表 CString CDownDlg::GetPortCom(int nmber)//读取操作表,其类型为REG_SZ { CString ans; CString r ...

  2. CodeGym自学笔记04——什么是编译器?

    编译器 编程语言可以同时被人和编译器所理解.编译器是一个特殊的程序,它可将用编程语言编写的程序转换成一系列的机器代码. 程序员通常用编程语言来编写程序,然后运行编译器,将程序员编写的程序代码文件转换为 ...

  3. HUAWEI--配置单臂路由

    HUAWEI--配置单臂路由 1.在LSW1中创建vlan10和vlan20 [LSW1]vlan batch 10 20 2.接口Eth0/0/2配置trunk,放行vlan10和20,接口Eth0 ...

  4. 配置隐藏index.php

    .htaccess文件写入类容放到跟目录下就OK <IfModule mod_rewrite.c> Options +FollowSymlinks -Multiviews RewriteE ...

  5. Linux,Lnmp配置Index of /索引页

    其实很简单就是修改conf配置文件 进入域名对应的vhost修改conf文件: 第一种方法 cd /usr/local/nginx/vhost/ 在清楚当前域名所对用的conf文件可以试用 ll 列出 ...

  6. RabbitMQ的安装与基本使用(windows版)

    基本结构 windows安装 1.  先安装erlang开发语言,然后安装rabbitmq-server服务器(需要比对rabbitmq版本和erlang版本对应下载安装,我项目中选用的版本为otp_ ...

  7. js-垃圾回收

    js 是垃圾回收的语言,也就是执行环境负责在代码执行时管理内存.1. 标记清理 垃圾回收程序时,会标记内存中存储的所有变量,然后会将所有在上下文中的变量,以及被在上下文中的变量引用的变量标记去掉.在此 ...

  8. nacos启动失败

    报错如下: 通过第二个圈可以看出,没有发现9848端口,才想起来自己Spring Cloud Alibaba依赖对应的nacos版本是2.0.4,而启动的nacos服务却是1.x版本,才导致这个报错. ...

  9. 安装kvm后,在windows主机启动virt-manger后报错(no polkit agent available to authenticate action org.libvirt.unix.manage)

    解决方法如下: 1. 增加libvirtd用户组 groupadd  libvirtd 2.在你使用的普通用户界面执行 sudo usermod -a -G libvirtd $USER 3.设置启动 ...

  10. kali对安卓的渗透(内网穿透)

    前言:随着移动端的增加,安卓占比巨大,人们对手机的安全防范意识薄弱,手机为了人们更加的方便,缺乏防护软件,甚至好多木马不需要做免杀. 现在我来做安卓的渗透,不需要在内网也能进行,实现了内网穿透.(有公 ...