Пример #1
0
    /// <summary>
    /// render.
    /// </summary>
    /// <param name="context">the render context.</param>
    /// <param name="cameras">the all cameras.</param>
    protected override void Render(ScriptableRenderContext context, Camera[] cameras)
    {
        if (!SystemInfo.supportsRayTracing)
        {
            Debug.LogError("You system is not support ray tracing. Please check your graphic API is D3D12 and os is Windows 10.");
            return;
        }

        BeginFrameRendering(context, cameras);

        System.Array.Sort(cameras, (lhs, rhs) => (int)(lhs.depth - rhs.depth));

        BuildAccelerationStructure();
        SetupSHCoefficients();
        Shader.SetGlobalVector(_MainLightDirShaderId, -SceneManager.Instance.mainLight.transform.forward);

        foreach (var camera in cameras)
        {
            // Only render game and scene view camera.
            if (camera.cameraType != CameraType.Game && camera.cameraType != CameraType.SceneView)
            {
                continue;
            }

            BeginCameraRendering(context, camera);
            _tutorial?.Render(context, camera);
            context.Submit();
            EndCameraRendering(context, camera);
        }

        EndFrameRendering(context, cameras);
    }
    protected override void Render(ScriptableRenderContext vContext, Camera[] vCameras)
    {
        if (!SystemInfo.supportsRayTracing)
        {
            Debug.LogError("Your system is not support ray tracing. Please check your graphic API is D3D12 and os is Windows 10.");
            return;
        }

        BeginFrameRendering(vContext, vCameras);

        System.Array.Sort(vCameras, (lhs, rhs) => (int)(lhs.depth - rhs.depth));

        BuildAccelerationStructure();

        foreach (var TempCamera in vCameras)
        {
            if (TempCamera.cameraType != CameraType.Game && TempCamera.cameraType != CameraType.SceneView)
            {
                continue;
            }

            BeginCameraRendering(vContext, TempCamera);
            _rayTracingTutorial?.Render(vContext, TempCamera);
            vContext.Submit();
            EndCameraRendering(vContext, TempCamera);
        }

        EndFrameRendering(vContext, vCameras);
    }