Skip to content

Commit d102fd3

Browse files
committed
vbnv
1 parent 908f071 commit d102fd3

File tree

3 files changed

+18
-7
lines changed

3 files changed

+18
-7
lines changed

source/FrameRecorder/Core/Engine/RecordingSession.cs

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,12 +46,25 @@ public void RecordFrame()
4646
m_Recorder.SignalSourcesOfStage(ERecordingSessionStage.FrameDone, this);
4747

4848
// Note: This is not great when multiple recorders are simultaneously active...
49-
if (m_Recorder.settings.m_FrameRateMode == FrameRateMode.Constant && m_Recorder.settings.m_SynchFrameRate )
49+
if (m_Recorder.settings.m_FrameRateMode == FrameRateMode.Variable ||
50+
(m_Recorder.settings.m_FrameRateMode == FrameRateMode.Constant && m_Recorder.settings.m_SynchFrameRate)
51+
)
5052
{
51-
float target =(float) (1.0f / m_Recorder.settings.m_FrameRate) * (Time.renderedFrameCount - m_InitialFrame);
52-
double sleep = (target - (Time.unscaledTime - m_RecordingStartTS)) * 1000;
53+
var frameCount = Time.renderedFrameCount - m_InitialFrame;
54+
var frameLen = 1.0f / m_Recorder.settings.m_FrameRate;
55+
var elapsed = Time.unscaledTime - m_RecordingStartTS;
56+
var target = frameLen * (frameCount+1);
57+
var sleep = (int)((target - elapsed) * 1000);
58+
5359
if (sleep > 0)
54-
System.Threading.Thread.Sleep((int)sleep);
60+
{
61+
if(settings.m_Verbose)
62+
Debug.Log( string.Format("Recording session info => dT: {0:F1}s, Target dT: {1:F1}s, Retarding: {2}ms, fps: {3:F1}", elapsed, target, sleep, frameCount / elapsed ));
63+
64+
System.Threading.Thread.Sleep(sleep);
65+
}
66+
else if (sleep < -frameLen)
67+
m_InitialFrame--;
5568
}
5669
}
5770

source/FrameRecorder/Recorders/ImageRecorder/Editor/ImageRecorderEditor.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ protected override void OnEnable()
2727
if (target == null)
2828
return;
2929

30-
m_Candidates = new [] { "Command Buffered Camera", "Camera as RenderTexture", "Render Texture" };
30+
m_Candidates = new [] { "Command Buffered Camera", "Offscreen rendering", "Render Texture" };
3131
var pf = new PropertyFinder<ImageRecorderSettings>(serializedObject);
3232
m_Inputs = pf.Find(w => w.m_SourceSettings);
3333
m_DestinationPath = pf.Find(w => w.m_DestinationPath);

source/FrameRecorder/Recorders/ImageRecorder/Engine/ImageRecorder.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,6 @@ public override void RecordFrame(RecordingSession session)
3333
tex.ReadPixels(new Rect(0, 0, width, height), 0, 0);
3434
tex.Apply();
3535
RenderTexture.active = backupActive;
36-
37-
//var tex = ScreenCapture.CaptureScreenshotAsTexture();
3836

3937
byte[] bytes;
4038
switch (m_Settings.m_OutputFormat)

0 commit comments

Comments
 (0)