在unity中高性能的绘制相同网格和材质的物体-GPU Instance

本文介绍了如何在Unity中实现GPU实例化,以提高性能,特别是处理大量具有相同网格和材质的物体。通过预编译Shader、包含Unity内置头文件并调整宏,可以实现对实例化数组的访问,确保顶点着色器和片段着色器正确处理实例数据,从而优化渲染过程。
摘要由CSDN通过智能技术生成

参考链接-/https://catlikecoding.com/unity/tutorials/
1、在pass伊始的时候加入预编译

          #pragma multi_compile_instancing

这会生成两个shader变种,有关 #pragma multi_compile参阅unity官方手册。在材质中会增加一个toggle表明你要选择哪一种。此处勾选上。
在这里插入图片描述
2、包含unity内置头文件,注意和SpaceTransforms.hlsl的引入顺序

#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/UnityInstancing.hlsl"

此文件的作用是:重新定义访问实例化数组的宏。在此之前,需要获取到每个需要被渲染的物体的索引。注:通常所有的物体顶点会一起组合成一个数组被提交,与之对应的还有顶点描述结构体(directx11中称之为view或discriptor,记得貌似是。不去翻了,自行求证)。
还需要保证顶点着色器的输入得是一个结构体。

	float4 UnlitPassVertex (float3 positionOS : POSITION):SV_POSITION  
	改为:
	struct Attributes 
	{
		flo
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值