in VisualProfiler.cs [415:485]
private void BuildWindow()
{
// Initialize property block state.
colorID = Shader.PropertyToID("_Color");
parentMatrixID = Shader.PropertyToID("_ParentLocalToWorldMatrix");
// Build the window root.
{
window = CreateQuad("VisualProfiler", null);
window.transform.parent = WindowParent;
InitializeRenderer(window, backgroundMaterial, colorID, baseColor);
window.transform.localScale = defaultWindowScale;
windowHorizontalRotation = Quaternion.AngleAxis(defaultWindowRotation.y, Vector3.right);
windowHorizontalRotationInverse = Quaternion.Inverse(windowHorizontalRotation);
windowVerticalRotation = Quaternion.AngleAxis(defaultWindowRotation.x, Vector3.up);
windowVerticalRotationInverse = Quaternion.Inverse(windowVerticalRotation);
}
// Add frame rate text and frame indicators.
{
cpuFrameRateText = CreateText("CPUFrameRateText", new Vector3(-0.495f, 0.5f, 0.0f), window.transform, TextAnchor.UpperLeft, textMaterial, Color.white, string.Empty);
gpuFrameRateText = CreateText("GPUFrameRateText", new Vector3(0.495f, 0.5f, 0.0f), window.transform, TextAnchor.UpperRight, textMaterial, Color.white, string.Empty);
gpuFrameRateText.gameObject.SetActive(false);
frameInfoMatrices = new Matrix4x4[frameRange];
frameInfoColors = new Vector4[frameRange];
Vector3 scale = new Vector3(1.0f / frameRange, 0.2f, 1.0f);
Vector3 position = new Vector3(0.5f - (scale.x * 0.5f), 0.15f, 0.0f);
for (int i = 0; i < frameRange; ++i)
{
frameInfoMatrices[i] = Matrix4x4.TRS(position, Quaternion.identity, new Vector3(scale.x * 0.8f, scale.y, scale.z));
position.x -= scale.x;
frameInfoColors[i] = targetFrameRateColor;
}
frameInfoPropertyBlock = new MaterialPropertyBlock();
frameInfoPropertyBlock.SetVectorArray(colorID, frameInfoColors);
}
// Add memory usage text and bars.
{
usedMemoryText = CreateText("UsedMemoryText", new Vector3(-0.495f, 0.0f, 0.0f), window.transform, TextAnchor.UpperLeft, textMaterial, memoryUsedColor, usedMemoryString);
peakMemoryText = CreateText("PeakMemoryText", new Vector3(0.0f, 0.0f, 0.0f), window.transform, TextAnchor.UpperCenter, textMaterial, memoryPeakColor, peakMemoryString);
limitMemoryText = CreateText("LimitMemoryText", new Vector3(0.495f, 0.0f, 0.0f), window.transform, TextAnchor.UpperRight, textMaterial, Color.white, limitMemoryString);
GameObject limitBar = CreateQuad("LimitBar", window.transform);
InitializeRenderer(limitBar, defaultMaterial, colorID, memoryLimitColor);
limitBar.transform.localScale = new Vector3(0.99f, 0.2f, 1.0f);
limitBar.transform.localPosition = new Vector3(0.0f, -0.37f, 0.0f);
{
usedAnchor = CreateAnchor("UsedAnchor", limitBar.transform);
GameObject bar = CreateQuad("UsedBar", usedAnchor);
Material material = new Material(foregroundMaterial);
material.renderQueue = material.renderQueue + 1;
InitializeRenderer(bar, material, colorID, memoryUsedColor);
bar.transform.localScale = Vector3.one;
bar.transform.localPosition = new Vector3(0.5f, 0.0f, 0.0f);
}
{
peakAnchor = CreateAnchor("PeakAnchor", limitBar.transform);
GameObject bar = CreateQuad("PeakBar", peakAnchor);
InitializeRenderer(bar, foregroundMaterial, colorID, memoryPeakColor);
bar.transform.localScale = Vector3.one;
bar.transform.localPosition = new Vector3(0.5f, 0.0f, 0.0f);
}
}
window.SetActive(isVisible);
}