void SetupChapters()
        {
            var size = Constants.DefaultImageSize * m_SelectedScaleOption;

            m_ChaptersOneAndTwo = new ChaptersOneAndTwo(size.x, size.y);
            m_ChapterThree      = new ChapterThree(size.x, size.y);
            m_ChapterFour       = new ChapterFour(size.x, size.y);
            m_ChapterFive       = new ChapterFive(size.x, size.y);
            m_ChapterFiveTwo    = new ChapterFiveTwo(size.x, size.y);
            m_ChapterSix        = new ChapterSix(size.x, size.y);
            m_ChapterSeven      = new ChapterSeven(size.x, size.y);

            // from chapter 8 on, the same implementation is re-used
            m_ChapterEight = new BatchedTracer(ExampleSphereSets.ChapterEight(),
                                               CameraFrame.Default, size.x, size.y);
            m_ChapterNine = new BatchedTracer(ExampleSphereSets.FiveWithDielectric(),
                                              CameraFrame.Default, size.x, size.y);
            m_ChapterTen = new BatchedTracer(ExampleSphereSets.FiveWithDielectric(),
                                             CameraFrame.ChapterTen, size.x, size.y);
            m_ChapterEleven = new BatchedTracer(ExampleSphereSets.FiveWithDielectric(),
                                                CameraFrame.ChapterEleven, size.x, size.y);

            // make sure we get a random seed for our random scene
            var tempRng = new Unity.Mathematics.Random();

            tempRng.InitState((uint)UnityEngine.Random.Range(1, 1000));
            m_ChapterTwelve = new BatchedTracer(ExampleSphereSets.RandomScene(500, tempRng.NextUInt()),
                                                CameraFrame.ChapterTwelve, size.x, size.y);
        }
 // used for chapter 11 & 12 - the job that supports focus is different from the one that doesn't,
 // so we need to start a different coroutine on click
 void DrawChapterWithFocusSupport(BatchedTracer chapter, string chapterNumber)
 {
     DrawLaterChapter(chapter, chapterNumber, (tracer) =>
     {
         var routineEnumerator = tracer.BatchCoroutine(m_SamplesPerPixel, Repaint);
         tracer.Routine        = EditorCoroutineUtility.StartCoroutine(routineEnumerator, this);
     });
 }
        void DrawLaterChapter(BatchedTracer chapter, string chapterNumber, Action <BatchedTracer> onClick)
        {
            EditorGUILayout.Space();
            EditorGUILayout.LabelField("Sample Count", EditorStyles.boldLabel);
            EditorGUILayout.BeginHorizontal(k_LargeHeaderHeight, GUILayout.ExpandHeight(true));
            EditorGUILayout.LabelField("Completed: " + chapter.CompletedSampleCount,
                                       k_CompletedSamplesStyle, k_LargeHeaderHeight);
            EditorGUILayout.EndHorizontal();
            EditorGUILayout.Space();

            if (GUILayout.Button($"Draw Chapter {chapterNumber} Image"))
            {
                onClick(chapter);
            }

            DrawTexture(chapter.texture);
            EditorGUILayout.Separator();
            EditorGUILayout.Space();
        }
        void ScaleChapters()
        {
            var size = Constants.DefaultImageSize * m_SelectedScaleOption;

            m_ChaptersOneAndTwo.Resize(size);
            m_ChapterThree.Resize(size);
            m_ChapterFour.Resize(size);
            m_ChapterFive.Resize(size);
            m_ChapterFiveTwo.Resize(size);
            m_ChapterSix.Resize(size);
            m_ChapterSeven.Resize(size);
            m_ChapterEight.Resize(size);
            m_ChapterNine.Resize(size);
            m_ChapterTen.Resize(size);
            m_ChapterEleven.Resize(size);

            m_ChapterTwelve.Dispose();
            var tempRng = new Unity.Mathematics.Random();

            tempRng.InitState((uint)UnityEngine.Random.Range(1, 1000));
            m_ChapterTwelve = new BatchedTracer(ExampleSphereSets.RandomScene(500, tempRng.NextUInt()),
                                                CameraFrame.ChapterTwelve, size.x, size.y);
        }
Exemple #5
0
        void OnEnable()
        {
            minSize = new Vector2(200, 100);
            maxSize = new Vector2(1600, 800);
            EnsureRaySceneManager();

            m_RayTracer = new BatchedTracer(m_SceneManager.Spheres, CameraFrame.Default, 400, 200)
            {
                ClearOnDraw = true
            };
            m_TracerRenderTexture = m_RayTracer.texture;
            m_SceneManager        = FindObjectOfType <RaytracingSceneManager>();
            m_SceneManager.UpdateWorld();
            m_SceneManager.onSceneChanged += OnSceneChange;

            if (FindObjectOfType <RaytracingSceneManager>() == null)
            {
                EditorSceneManager.LoadScene("ChapterEight");
            }

            m_SceneManager.UpdateWorld();
            OnSceneChange();
        }