The pass identifier for the uploaded shader variant.
using UnityEngine;
using UnityEngine.Shaders;
/*
Attach this script to a GameObect. When run in the player, it reports shader variants sent to the
GPU driver for compilation during the last frame in the console.
*/
public class VariantsUploadedToGpuLogger : MonoBehaviour
{
void Update()
{
uint variantCount = VariantsUploadedToGpuLastFrame.count;
if (variantCount > 0)
{
Debug.Log("Sent " + variantCount + " variants to the GPU.");
for (uint variantIndex = 0; variantIndex < variantCount; ++variantIndex)
{
VariantsUploadedToGpuLastFrame.UploadData d;
if (!VariantsUploadedToGpuLastFrame.TryGetUploadData(variantIndex, out d))
continue;
string keywords = "'";
for (uint keywordIndex = 0; keywordIndex < d.keywords.Length; ++keywordIndex)
{
if (keywordIndex != 0)
keywords += " ";
keywords += d.keywords[keywordIndex].name;
}
keywords += "'";
string passId = "subshader " + (d.passIdentifier.SubshaderIndex + 1) + " pass " + (d.passIdentifier.PassIndex + 1);
string description = "Shader " + d.shader.name + " " + passId + " stages " + d.stages;
Debug.Log(description + " keywords " + keywords + " uploaded in " + d.uploadTimeInMilliseconds + " ms.");
}
}
}
}