参考链接-/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