Graphics.RenderMeshIndirect also using the IndirectDraw like DrawMeshInstancedIndirect, but I can’t get “#pragma instancing_options procedural:setup” to work, the step function won’t be inserted into vertex shader nor fragment shader.
Here is the full shader code:
Shader "Unlit/T"
{
Properties
{
}
SubShader
{
Tags { "RenderType"="Opaque" }
LOD 100
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma multi_compile_instancing
#pragma instancing_options procedural:setup
#pragma enable_d3d11_debug_symbols
#pragma target 4.5
#include "UnityInstancing.cginc"
#ifdef UNITY_PROCEDURAL_INSTANCING_ENABLED
float4x4 _ObjectToWorldOverride;
float4x4 _WorldToObjectOverride;
#endif
void step()
{
#ifdef UNITY_PROCEDURAL_INSTANCING_ENABLED
unity_ObjectToWorld = _ObjectToWorldOverride;
unity_WorldToObject = _WorldToObjectOverride;
#endif
}
struct appdata
{
half4 vertex : POSITION;
};
struct v2f
{
half4 vertex : SV_POSITION;
};
float4x4 _ObjectToWorld;
v2f vert (appdata v)
{
v2f o;
o.vertex = UnityObjectToClipPos(v.vertex);
//o.vertex = mul(UNITY_MATRIX_VP, mul(_ObjectToWorld, float4(v.vertex.xyz, 1.0)));
return o;
}
fixed4 frag (v2f i) : SV_Target
{
return 1;
}
ENDCG
}
}
}
Did I missed something?