in VisualProfiler.cs [164:223]
private void Reset()
{
if (defaultMaterial == null)
{
defaultMaterial = new Material(Shader.Find("Hidden/Internal-Colored"));
defaultMaterial.SetFloat("_ZWrite", 0.0f);
defaultMaterial.SetFloat("_ZTest", (float)UnityEngine.Rendering.CompareFunction.Disabled);
defaultMaterial.renderQueue = 5000;
}
if (defaultInstancedMaterial == null)
{
Shader defaultInstancedShader = Shader.Find("Hidden/Instanced-Colored");
if (defaultInstancedShader != null)
{
defaultInstancedMaterial = new Material(defaultInstancedShader);
defaultInstancedMaterial.enableInstancing = true;
defaultInstancedMaterial.SetFloat("_ZWrite", 0.0f);
defaultInstancedMaterial.SetFloat("_ZTest", (float)UnityEngine.Rendering.CompareFunction.Disabled);
defaultInstancedMaterial.renderQueue = 5000;
}
else
{
Debug.LogWarning("A shader supporting instancing could not be found for the VisualProfiler, falling back to traditional rendering. This may impact performance.");
}
}
if (Application.isPlaying)
{
backgroundMaterial = new Material(defaultMaterial);
foregroundMaterial = new Material(defaultMaterial);
defaultMaterial.renderQueue = foregroundMaterial.renderQueue - 1;
backgroundMaterial.renderQueue = defaultMaterial.renderQueue - 1;
MeshRenderer meshRenderer = new GameObject().AddComponent<TextMesh>().GetComponent<MeshRenderer>();
textMaterial = new Material(meshRenderer.sharedMaterial);
textMaterial.renderQueue = defaultMaterial.renderQueue;
Destroy(meshRenderer.gameObject);
MeshFilter quadMeshFilter = GameObject.CreatePrimitive(PrimitiveType.Quad).GetComponent<MeshFilter>();
if (defaultInstancedMaterial != null)
{
// Create a quad mesh with artificially large bounds to disable culling for instanced rendering.
// TODO: Use shared mesh with normal bounds once Unity allows for more control over instance culling.
quadMesh = quadMeshFilter.mesh;
quadMesh.bounds = new Bounds(Vector3.zero, Vector3.one * float.MaxValue);
}
else
{
quadMesh = quadMeshFilter.sharedMesh;
}
Destroy(quadMeshFilter.gameObject);
}
stopwatch.Reset();
stopwatch.Start();
}