using ADOFAIRenderer.UI; using UnityEngine; namespace ADOFAIRenderer.Core { [DefaultExecutionOrder(int.MinValue)] public class FirstUpdateHook : MonoBehaviour { private bool _checkedFFmpeg; private bool _checkedNvidiaDriver; private void Update() { if (!_checkedFFmpeg) { if (FFmpegDownloadUI.Instance) return; if (!FFmpegDownloadUI.CheckFFmpegExists()) { FFmpegDownloadUI.ShowDownloadUI(); return; } _checkedFFmpeg = true; } if (!_checkedNvidiaDriver) { if (CommonWarningDialogUI.Instance) return; _checkedNvidiaDriver = true; CheckNvidiaDriverWarning(); } if (RenderManager.Instance) { RenderManager.Instance.OnPreRenderUpdate(); } } private void CheckNvidiaDriverWarning() { var driverVer = Util.GPUUtil.GetNvidiaDriverVersion(); if (driverVer is null or >= 610.00f) return; var currentVersion = driverVer.Value.ToString("F2"); CommonWarningDialogUI.ShowDialog( "NVIDIA 그래픽 드라이버 업데이트 권장", $"현재 감지된 NVIDIA 그래픽 드라이버 버전: {currentVersion}\n\n하드웨어 가속(NVENC)을 사용하여 영상을 렌더링하려면 드라이버 버전 610.00 이상이 필요합니다.\n\n드라이버 버전이 낮으면 인코딩이 실패하거나 소프트웨어(CPU) 인코딩으로 대체되어 렌더링이 매우 느려집니다. 드라이버 업데이트를 진행해 주시기 바랍니다.", new DialogButton("드라이버 업데이트", () => { Application.OpenURL("https://www.nvidia.com/Download/index.aspx"); Application.Quit(); }, new Color(0.0f, 0.8f, 1.0f, 1.0f)), new DialogButton("기능 비활성화", () => { RenderMod.IsFeatureDisabled = true; }), new DialogButton("이번만 그냥 진행", () => { // 아무 동작 안 함 }) ); } } }