Beispiel #1
0
        /// <summary>
        /// The GetGPUTimeLastFrame retrieves the time spent by the GPU last frame, in seconds, as reported by the VR SDK.
        /// </summary>
        /// <returns>The total GPU time utilized last frame as measured by the VR subsystem.</returns>
        public static float GetGPUTimeLastFrame()
        {
#if UNITY_5_6_OR_NEWER
            float gpuTimeLastFrame;
            if (VRStats.TryGetGPUTimeLastFrame(out gpuTimeLastFrame))
            {
                return(gpuTimeLastFrame);
            }
            return(0f);
#else
            return(VRStats.gpuTimeLastFrame);
#endif
        }
        private void UpdateDebugVisualization()
        {
            if (!drawDebugVisualization || debugVisualizationQuadMaterial == null)
            {
                return;
            }

            float gpuTimeLastFrame;

            VRStats.TryGetGPUTimeLastFrame(out gpuTimeLastFrame);
            int lastFrameIsInBudget = interleavedReprojectionEnabled || gpuTimeLastFrame > singleFrameDurationInMilliseconds
                                      ? 0
                                      : 1;

            debugVisualizationQuadMaterial.SetInt(ShaderPropertyIDs.RenderScaleLevelsCount, allRenderScales.Count);
            debugVisualizationQuadMaterial.SetInt(ShaderPropertyIDs.DefaultRenderViewportScaleLevel, defaultRenderViewportScaleLevel);
            debugVisualizationQuadMaterial.SetInt(ShaderPropertyIDs.CurrentRenderViewportScaleLevel, renderViewportScaleSetting.currentValue);
            debugVisualizationQuadMaterial.SetInt(ShaderPropertyIDs.CurrentRenderScaleLevel, renderScaleSetting.currentValue);
            debugVisualizationQuadMaterial.SetInt(ShaderPropertyIDs.LastFrameIsInBudget, lastFrameIsInBudget);
        }
 public void SaveCurrentFrameTiming()
 {
     bufferIndex = (bufferIndex + 1) % buffer.Length;
     VRStats.TryGetGPUTimeLastFrame(out buffer[bufferIndex]);
 }