Esempio n. 1
0
        protected virtual bool BuildRenderTarget()
        {
            var renderTargetResourceChanged = ResourceManager.ValidateRenderTargetResource(ref _renderTargetResource, OperatorPart, D3DDevice.Device,
                                                                                           (int)_usedViewport.Width, (int)_usedViewport.Height);

            if (renderTargetResourceChanged)
            {
                Utilities.DisposeObj(ref _renderTargetView);
                _renderTargetView = new RenderTargetView(D3DDevice.Device, _renderTargetResource.Texture);
            }

            var depthStencilResourceChanged = false;

            if (NeedsDepth)
            {
                depthStencilResourceChanged = ResourceManager.ValidateDepthStencilResource(ref _renderDepthResource, OperatorPart, D3DDevice.Device,
                                                                                           (int)_usedViewport.Width, (int)_usedViewport.Height);
                if (depthStencilResourceChanged)
                {
                    Utilities.DisposeObj(ref _renderTargetDepthView);

                    var depthViewDesc = new DepthStencilViewDescription
                    {
                        Format    = Format.D32_Float,
                        Dimension = DepthStencilViewDimension.Texture2D
                    };

                    _renderTargetDepthView = new DepthStencilView(D3DDevice.Device, _renderDepthResource.Texture, depthViewDesc);
                }
            }

            return(renderTargetResourceChanged || depthStencilResourceChanged);
        }
Esempio n. 2
0
        public void Dispose()
        {
            ResourceManager.WriteResourceDescriptions();
            LogHistogram();

            Logger.Info("Unintializing ...");

            Bass.BASS_ChannelStop(_soundStream);

            Utilities.DisposeObj(ref _renderTargetView);
            Utilities.DisposeObj(ref _renderTargetDepthView);
            Utilities.DisposeObj(ref _renderDepth);
            Utilities.DisposeObj(ref _texture);

            Utilities.DisposeObj(ref _renderer);
            Utilities.DisposeObj(ref _model);

            Utilities.DisposeObj(ref D3DDevice.SwapChain);
            Utilities.DisposeObj(ref D3DDevice.DX10_1Device);
            Utilities.DisposeObj(ref D3DDevice.Direct2DFactory);
            Utilities.DisposeObj(ref D3DDevice.DirectWriteFactory);
            Utilities.DisposeObj(ref D3DDevice.Device);

            Bass.BASS_StreamFree(_soundStream);

            Utilities.DisposeObj(ref _form);

            Cursor.Show();
        }
Esempio n. 3
0
 internal override void CleanUp()
 {
     Utilities.DisposeObj(ref _fbxScene);
     foreach (var e in _cachedChildMeshes)
     {
         e.Value.Dispose();
     }
     _cachedChildMeshes.Clear();
 }
Esempio n. 4
0
 public void CleanUp()
 {
     Utilities.DisposeObj(ref _renderer);
     Utilities.DisposeObj(ref _shaderResourceView);
     Utilities.DisposeObj(ref _depthStencilView);
     Utilities.DisposeObj(ref _depthTex);
     Utilities.DisposeObj(ref _renderTargetView);
     Utilities.DisposeObj(ref _swapChain);
 }
Esempio n. 5
0
 public override void Dispose()
 {
     ResourceManager.Dispose(_renderTargetResource);
     Utilities.DisposeObj(ref _renderTargetView);
     ResourceManager.Dispose(_renderDepthResource);
     Utilities.DisposeObj(ref _renderTargetDepthView);
     Utilities.DisposeObj(ref _renderer);
     base.Dispose();
 }
Esempio n. 6
0
 public void Dispose()
 {
     DisposeTargets();
     Utilities.DisposeObj(ref _sceneGridOperator);
     Utilities.DisposeObj(ref _imageBackgroundOperator);
     Utilities.DisposeObj(ref _cubemapSphereOperator);
     Utilities.DisposeObj(ref _plotValueOperator);
     Utilities.DisposeObj(ref _D3DImageContainer);
 }
Esempio n. 7
0
 private void DisposeTargets()
 {
     Utilities.DisposeObj(ref _renderView);
     Utilities.DisposeObj(ref _renderTargetDepthView);
     Utilities.DisposeObj(ref _inputLayout);
     Utilities.DisposeObj(ref _sharedTexture);
     Utilities.DisposeObj(ref _depthTexture);
     Utilities.DisposeObj(ref _texture);
     Utilities.DisposeObj(ref _renderDepth);
     Utilities.DisposeObj(ref _screenQuadMesh);
     Utilities.DisposeObj(ref _gpuSyncer);
 }
Esempio n. 8
0
 public void Dispose()
 {
     if (_function != null)
     {
         _function.ChangedEvent -= FunctionChangedHandler;
     }
     if (_defaultFunc != null)
     {
         _defaultFunc.ChangedEvent -= DefaultFunctionChangedHandler;
     }
     Utilities.DisposeObj(ref _function);
     Utilities.RemoveAllEventHandlerFrom(this);
 }
Esempio n. 9
0
 public static void DisposeAll()
 {
     foreach (var r in _freeResources)
     {
         for (int i = 0; i < r.Value.Count; ++i)
         {
             var v = r.Value[i];
             Utilities.DisposeObj(ref v);
         }
     }
     _freeResources.Clear();
     for (int i = 0; i < _usedResources.Count; ++i)
     {
         var v = _usedResources[i];
         Utilities.DisposeObj(ref v);
     }
     _usedResources.Clear();
 }
Esempio n. 10
0
        private void SetupRenderBuffers()
        {
            if (D3DDevice.SwapChain == null)
            {
                return;
            }

            Utilities.DisposeObj(ref _renderTargetView);
            Utilities.DisposeObj(ref _renderTargetDepthView);
            Utilities.DisposeObj(ref _renderDepth);

            D3DDevice.SwapChain.ResizeBuffers(3, _form.ClientSize.Width, _form.ClientSize.Height,
                                              D3DDevice.SwapChain.Description.ModeDescription.Format, D3DDevice.SwapChain.Description.Flags);

            using (var texture = Texture2D.FromSwapChain <Texture2D>(D3DDevice.SwapChain, 0))
            {
                _renderTargetView = new RenderTargetView(D3DDevice.Device, texture);
            }

            Texture2DDescription depthdesc = new Texture2DDescription();

            depthdesc.BindFlags         = BindFlags.DepthStencil;
            depthdesc.Format            = Format.D32_Float_S8X24_UInt;
            depthdesc.Width             = _form.ClientSize.Width;
            depthdesc.Height            = _form.ClientSize.Height;
            depthdesc.MipLevels         = 1;
            depthdesc.SampleDescription = new SampleDescription(1, 0);
            depthdesc.Usage             = ResourceUsage.Default;
            depthdesc.OptionFlags       = ResourceOptionFlags.None;
            depthdesc.CpuAccessFlags    = CpuAccessFlags.None;
            depthdesc.ArraySize         = 1;

            _renderDepth           = new Texture2D(D3DDevice.Device, depthdesc);
            _renderTargetDepthView = new DepthStencilView(D3DDevice.Device, _renderDepth);

            D3DDevice.Device.ImmediateContext.OutputMerger.SetTargets(_renderTargetDepthView, _renderTargetView);
            _viewport = new ViewportF(0, 0, _form.ClientSize.Width, _form.ClientSize.Height, 0.0f, 1.0f);
            D3DDevice.Device.ImmediateContext.Rasterizer.SetViewport(_viewport);
        }
Esempio n. 11
0
 public void Dispose()
 {
     Utilities.DisposeObj(ref _renderView);
 }
Esempio n. 12
0
 internal static void Dipose()
 {
     Utilities.DisposeObj(ref _instance);
 }
Esempio n. 13
0
 public override void Dispose()
 {
     Utilities.DisposeObj(ref _defaultPointLightsConstBuffer);
     base.Dispose();
 }
Esempio n. 14
0
 public void Dispose()
 {
     DisposeTargets();
     Utilities.DisposeObj(ref _sceneGridOperator);
     Utilities.DisposeObj(ref _imageBackgroundOperator);
 }
Esempio n. 15
0
        private static void RunTests()
        {
            Logger.Initialize(Dispatcher.CurrentDispatcher);

            var operatorTester = new OperatorTester();

            try
            {
                Directory.CreateDirectory("logs");
                var consoleWriter = new ConsoleWriter();
                consoleWriter.Filter = LogEntry.EntryLevel.INF | LogEntry.EntryLevel.WRN | LogEntry.EntryLevel.ERR;
                Logger.AddWriter(consoleWriter);

                var logWriter = new FileWriter(String.Format("logs/{0}.log", DateTime.Now.ToString("yyyy_MM_dd-HH_mm_ss_fff")));
                logWriter.Filter = LogEntry.EntryLevel.ALL;
                Logger.AddWriter(logWriter);

                Logger.Info("Version: {0}.{1} ({2}, {3})", Constants.VersionAsString, BuildProperties.Build, BuildProperties.Branch, BuildProperties.CommitShort);

                try
                {
                    string filterPattern = String.Empty;
                    if (Environment.GetCommandLineArgs().Count() > 1)
                    {
                        filterPattern = Environment.GetCommandLineArgs()[1];
                    }

                    try
                    {
                        new Regex(filterPattern);
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine("error: filter pattern is not a valid regular expression: {0}", ex.Message);
                        Console.WriteLine("usage: {0} [<filter-pattern> [<test-reference-path>]]", new FileInfo(Environment.GetCommandLineArgs()[0]).Name);
                        Logger.Dispose();
                        return;
                    }

                    string referencePath = "assets-ff/test-references/";
                    if (Environment.GetCommandLineArgs().Count() > 2)
                    {
                        referencePath = Environment.GetCommandLineArgs()[2];
                    }

                    if (referencePath.Count() > 0 && !Directory.Exists(referencePath))
                    {
                        Console.WriteLine("error: given test reference path is das not exist");
                        Console.WriteLine("usage: {0} [<filter-pattern> [<test-reference-path>]]", new FileInfo(Environment.GetCommandLineArgs()[0]).Name);
                        Logger.Dispose();
                        return;
                    }


                    Logger.Info("Initializing ...");
                    Bass.BASS_Init(-1, 44100, BASSInit.BASS_DEVICE_LATENCY, IntPtr.Zero);

                    var featureLevels = new[] { FeatureLevel.Level_11_0, FeatureLevel.Level_10_1 };
                    D3DDevice.Device = new Device(DriverType.Hardware, DeviceCreationFlags.None | DeviceCreationFlags.BgraSupport, featureLevels);
                    using (var dxgiDevice = D3DDevice.Device.QueryInterface <SharpDX.DXGI.Device1>())
                    {
                        var adapter = dxgiDevice.Adapter;
                        D3DDevice.DX10_1Device = new SharpDX.Direct3D10.Device1(adapter, SharpDX.Direct3D10.DeviceCreationFlags.BgraSupport, SharpDX.Direct3D10.FeatureLevel.Level_10_1);
                    }
                    D3DDevice.Direct2DFactory    = new SharpDX.Direct2D1.Factory();
                    D3DDevice.DirectWriteFactory = new SharpDX.DirectWrite.Factory();

                    SharpDX.RawInput.Device.RegisterDevice(UsagePage.Generic, UsageId.GenericKeyboard, SharpDX.RawInput.DeviceFlags.None);
                    SharpDX.RawInput.Device.RegisterDevice(UsagePage.Generic, UsageId.GenericMouse, SharpDX.RawInput.DeviceFlags.None);
                    SharpDX.RawInput.Device.RegisterDevice(UsagePage.Generic, UsageId.GenericJoystick, SharpDX.RawInput.DeviceFlags.None);

                    MetaManager.Instance.LoadMetaOperators();
                    Logger.Info("Using test filter pattern \"{0}\"", filterPattern);
                    MetaManager.OPERATOR_TEST_REFERENCE_PATH = referencePath;
                    Logger.Info("Using test reference path \"{0}\"", MetaManager.OPERATOR_TEST_REFERENCE_PATH);

                    Logger.Info("Testing ...");
                    var allTestsMetaOpID = Guid.Parse("7dccfa46-2551-4efb-a802-5ed3be914c54");
                    var result           = TestUtilities.EvaluateTests(allTestsMetaOpID, filterPattern);
                    Environment.ExitCode = result.Item1 ? 0 : 1;
                    Logger.Info("Result:");
                    Logger.Info("\n" + result.Item2);

                    Logger.Info("Finalizing ...");
                    ResourceManager.DisposeAll();
                    Utilities.DisposeObj(ref D3DDevice.DX10_1Device);
                    Utilities.DisposeObj(ref D3DDevice.Direct2DFactory);
                    Utilities.DisposeObj(ref D3DDevice.DirectWriteFactory);
                    Utilities.DisposeObj(ref D3DDevice.Device);
                }
                catch (Exception ex)
                {
                    ResourceManager.DisposeAll();
                    Utilities.DisposeObj(ref D3DDevice.Device);

                    String reportString = "Message:".PadRight(15) + ex.Message + "\n\n";
                    reportString += "Source:".PadRight(15) + ex.Source + "\n";
                    reportString += "InnerException:".PadRight(15) + ex.InnerException + "\n\n";
                    reportString += "Stacktrace:\n--------------" + "\n";
                    reportString += CrashReporter.GetFormattedStackTrace(ex) + "\n";
                    Logger.Error(reportString);
                }

                Logger.Dispose();
            }
            catch (Exception ex)
            {
                Console.WriteLine("\n\nFATAL: Exception thrown where it never should happen: " + ex.Message);
            }
        }
Esempio n. 16
0
 internal override void CleanUp()
 {
     Utilities.DisposeObj(ref _image);
 }
Esempio n. 17
0
 public void Dispose()
 {
     Utilities.DisposeObj(ref _texture);
     User = null; //we are not the owner of the object, therefor we dont need to dispose the op part.
 }
Esempio n. 18
0
 public void Dispose()
 {
     Utilities.DisposeObj(ref Vertices);
 }