Beispiel #1
0
 void IContentUpdatableFromMediaEngine.SetProjection(ProjectionMode projection)
 {
     lock (localCritical)
     {
         primitive?.Dispose();
         primitive      = GraphicTools.CreateGeometry(projection, graphicsDevice);
         projectionMode = projection;
     };
 }
Beispiel #2
0
        /// <summary>
        /// Loads all needed GPU structures
        /// </summary>
        private void LoadStructures()
        {
            var device = _graphicsDeviceManager.GraphicsDevice;

            var vertexBufferData = new[]
            {
                new ResidencyVertex(-1.0f, 0.5f, 1.0f, -1.0f, 1.0f, 0.0f),
                new ResidencyVertex(-0.5f, 1.0f, -1.0f, -1.0f, 1.0f, 0.0f),
                new ResidencyVertex(0.0f, 0.5f, -1.0f, 1.0f, 1.0f, 0.0f),
                new ResidencyVertex(0.5f, 1.0f, -1.0f, -1.0f, 1.0f, 0.0f),
                new ResidencyVertex(1.0f, 0.5f, 1.0f, -1.0f, 1.0f, 0.0f),
                new ResidencyVertex(1.0f, -0.5f, 1.0f, -1.0f, -1.0f, 0.0f),
                new ResidencyVertex(0.5f, -1.0f, 1.0f, 1.0f, -1.0f, 0.0f),
                new ResidencyVertex(0.0f, -0.5f, -1.0f, 1.0f, -1.0f, 0.0f),
                new ResidencyVertex(-0.5f, -1.0f, 1.0f, 1.0f, -1.0f, 0.0f),
                new ResidencyVertex(-1.0f, -0.5f, 1.0f, -1.0f, -1.0f, 0.0f),
                new ResidencyVertex(-0.5f, 0.0f, 1.0f, 1.0f, 1.0f, 0.0f),
                new ResidencyVertex(0.5f, 0.0f, -1.0f, -1.0f, -1.0f, 0.0f)
            };

            var indexBufferData = new[]
            {
                0, 1, 10,
                1, 2, 10,
                2, 7, 10,
                7, 8, 10,
                8, 9, 10,
                9, 0, 10,
                2, 3, 11,
                3, 4, 11,
                4, 5, 11,
                5, 6, 11,
                6, 7, 11,
                7, 2, 11
            };

            _viewerGeometry = ToDispose(new SharpDX.Toolkit.Graphics.GeometricPrimitive <ResidencyVertex>(_graphicsDeviceManager.GraphicsDevice,
                                                                                                          vertexBufferData,
                                                                                                          indexBufferData,
                                                                                                          false));

            _viewerEffect = _contentManager.Load <ResidencyViewerEffect>("ResidencyViewer");

            var tilePoolDescription = new SharpDX.Direct3D11.BufferDescription
            {
                SizeInBytes = SampleSettings.TileSizeInBytes * SampleSettings.TileResidency.PoolSizeInTiles,
                Usage       = SharpDX.Direct3D11.ResourceUsage.Default,
                OptionFlags = SharpDX.Direct3D11.ResourceOptionFlags.TilePool
            };

            _tilePool = ToDispose(SharpDX.Toolkit.Graphics.Buffer.New(device, tilePoolDescription));
        }
Beispiel #3
0
        private void LoadStructures()
        {
            _terrainRendererEffect = _content.Load <TerrainRendererEffect>("TerrainRenderer_Tier1");

            var vertices = ReadFile(Path.Combine(SampleSettings.DataPath, SampleSettings.VertexBufferFile),
                                    r => new TerrainVertex(new Vector3(r.ReadSingle(), r.ReadSingle(), r.ReadSingle())));

            var indices = ReadFile(Path.Combine(SampleSettings.DataPath, SampleSettings.IndexBufferFile),
                                   r => r.ReadInt32());

            _terrainGeometry = new SharpDX.Toolkit.Graphics.GeometricPrimitive <TerrainVertex>(_graphicsDeviceManager.GraphicsDevice,
                                                                                               vertices,
                                                                                               indices,
                                                                                               false);
        }
Beispiel #4
0
        private void LoadStructures()
        {
            var device = _graphicsDeviceManager.GraphicsDevice;

            var vertexBufferData = new[]
            {
                new SamplingVertex(-1.0f, 1.0f, 0.0f, 0.0f),
                new SamplingVertex(1.0f, 1.0f, 1.0f, 0.0f),
                new SamplingVertex(-1.0f, -1.0f, 0.0f, 1.0f),
                new SamplingVertex(1.0f, -1.0f, 1.0f, 1.0f)
            };

            var indexBufferData = new[] { 0, 1, 2, 3, 2, 1 };

            _viewerGeometry = ToDispose(new SharpDX.Toolkit.Graphics.GeometricPrimitive <SamplingVertex>(device, vertexBufferData, indexBufferData, false));

            var screenViewport = new ViewportF(0f, 0f, device.BackBuffer.Width, device.BackBuffer.Height);
            var targetWidth    = (int)(screenViewport.Width / SampleSettings.Sampling.Ratio);
            var targetHeight   = (int)(screenViewport.Height / SampleSettings.Sampling.Ratio);

            _viewport = new ViewportF(0f, 0f, targetWidth, targetHeight, 0f, 1f);

            _colorTextureRenderTarget = ToDispose(SharpDX.Toolkit.Graphics.RenderTarget2D.New(device,
                                                                                              targetWidth,
                                                                                              targetHeight,
                                                                                              SharpDX.Toolkit.Graphics.PixelFormat.B8G8R8A8.UNorm));

            _depthStencilBuffer = ToDispose(SharpDX.Toolkit.Graphics.DepthStencilBuffer.New(device,
                                                                                            targetWidth,
                                                                                            targetHeight,
                                                                                            SharpDX.Toolkit.Graphics.DepthFormat.Depth24Stencil8));

            _viewerEffect = _contentManager.Load <SamplingViewerEffect>("SamplingViewer");

            _viewerEffect.Scale = new Vector2(_viewport.Width / screenViewport.Width,
                                              _viewport.Height / screenViewport.Height);

            _viewerEffect.Offset = new Vector2(2f * (48.0f + _viewport.Width / 2f) / screenViewport.Width - 1f,
                                               1f - 2f * (screenViewport.Height - _viewport.Height - 48.0f + _viewport.Height / 2f) / screenViewport.Height);

            _samplingEffect = _contentManager.Load <SamplingRendererEffect>("SamplingRenderer");

            _samplingEffect.EncodeConstants = new Vector2(SampleSettings.TileSizeInBytes / SampleSettings.Sampling.Ratio, 24f);
        }
Beispiel #5
0
        public VRUI(Device device, SharpDX.Toolkit.Graphics.GraphicsDevice gd)
        {
            Texture2DDescription uiTextureDescription = new Texture2DDescription()
            {
                Width             = 1024,
                Height            = 512,
                MipLevels         = 1,
                ArraySize         = 1,
                Format            = Format.B8G8R8A8_UNorm,
                Usage             = ResourceUsage.Default,
                SampleDescription = new SampleDescription(1, 0),
                BindFlags         = BindFlags.RenderTarget | BindFlags.ShaderResource,
                CpuAccessFlags    = CpuAccessFlags.None,
                OptionFlags       = ResourceOptionFlags.Shared
            };

            uiTexture = new SharpDX.Direct3D11.Texture2D(device, uiTextureDescription);

            using (DX2D.Factory factory2d = new DX2D.Factory(SharpDX.Direct2D1.FactoryType.SingleThreaded, DX2D.DebugLevel.Information))
            {
                DX2D.RenderTargetProperties renderTargetProperties = new DX2D.RenderTargetProperties()
                {
                    DpiX        = 96,
                    DpiY        = 96,
                    PixelFormat = new DX2D.PixelFormat(Format.B8G8R8A8_UNorm, DX2D.AlphaMode.Premultiplied),
                    Type        = DX2D.RenderTargetType.Hardware,
                    MinLevel    = DX2D.FeatureLevel.Level_10,
                    Usage       = DX2D.RenderTargetUsage.None
                };
                using (var uiSurface = uiTexture.QueryInterface <Surface>())
                    target2d = new DX2D.RenderTarget(factory2d, uiSurface, renderTargetProperties)
                    {
                        AntialiasMode = DX2D.AntialiasMode.PerPrimitive
                    };
            }


            // 2D materials
            uiEffect = new SharpDX.Toolkit.Graphics.BasicEffect(gd)
            {
                PreferPerPixelLighting = false,
                Texture         = SharpDX.Toolkit.Graphics.Texture2D.New(gd, uiTexture),
                TextureEnabled  = true,
                LightingEnabled = false
            };


            BlendStateDescription blendStateDescription = new BlendStateDescription()
            {
                AlphaToCoverageEnable = false
            };

            blendStateDescription.RenderTarget[0].IsBlendEnabled        = true;
            blendStateDescription.RenderTarget[0].SourceBlend           = BlendOption.SourceAlpha;
            blendStateDescription.RenderTarget[0].DestinationBlend      = BlendOption.InverseSourceAlpha;
            blendStateDescription.RenderTarget[0].BlendOperation        = BlendOperation.Add;
            blendStateDescription.RenderTarget[0].SourceAlphaBlend      = BlendOption.Zero;
            blendStateDescription.RenderTarget[0].DestinationAlphaBlend = BlendOption.Zero;
            blendStateDescription.RenderTarget[0].AlphaBlendOperation   = BlendOperation.Add;
            blendStateDescription.RenderTarget[0].RenderTargetWriteMask = ColorWriteMaskFlags.All;

            using (var blendState = SharpDX.Toolkit.Graphics.BlendState.New(gd, blendStateDescription))
                gd.SetBlendState(blendState);

            uiPrimitive = SharpDX.Toolkit.Graphics.GeometricPrimitive.Plane.New(gd, 2, 1);

            using (SharpDX.DirectWrite.Factory factoryDW = new SharpDX.DirectWrite.Factory())
            {
                textFormat = new SharpDX.DirectWrite.TextFormat(factoryDW, "Segoe UI Light", 34f)
                {
                    TextAlignment      = SharpDX.DirectWrite.TextAlignment.Center,
                    ParagraphAlignment = SharpDX.DirectWrite.ParagraphAlignment.Center
                };

                textFormatSmall = new SharpDX.DirectWrite.TextFormat(factoryDW, "Segoe UI Light", 20f)
                {
                    TextAlignment      = SharpDX.DirectWrite.TextAlignment.Center,
                    ParagraphAlignment = SharpDX.DirectWrite.ParagraphAlignment.Center
                };
            }

            textBrush = new SharpDX.Direct2D1.SolidColorBrush(target2d, new Color(1f, 1f, 1f, 1f));
            blueBrush = new SharpDX.Direct2D1.SolidColorBrush(target2d, new Color(0, 167, 245, 255));

            uiInitialized = true;
        }
        private void LoadStructures()
        {
            var device = _graphicsDeviceManager.GraphicsDevice;

            var vertexBufferData = new[]
                                   {
                                       new SamplingVertex(-1.0f, 1.0f, 0.0f, 0.0f),
                                       new SamplingVertex(1.0f, 1.0f, 1.0f, 0.0f),
                                       new SamplingVertex(-1.0f, -1.0f, 0.0f, 1.0f),
                                       new SamplingVertex(1.0f, -1.0f, 1.0f, 1.0f)
                                   };

            var indexBufferData = new[] { 0, 1, 2, 3, 2, 1 };

            _viewerGeometry = ToDispose(new SharpDX.Toolkit.Graphics.GeometricPrimitive<SamplingVertex>(device, vertexBufferData, indexBufferData, false));

            var screenViewport = new ViewportF(0f, 0f, device.BackBuffer.Width, device.BackBuffer.Height);
            var targetWidth = (int)(screenViewport.Width / SampleSettings.Sampling.Ratio);
            var targetHeight = (int)(screenViewport.Height / SampleSettings.Sampling.Ratio);

            _viewport = new ViewportF(0f, 0f, targetWidth, targetHeight, 0f, 1f);

            _colorTextureRenderTarget = ToDispose(SharpDX.Toolkit.Graphics.RenderTarget2D.New(device,
                                                                                              targetWidth,
                                                                                              targetHeight,
                                                                                              SharpDX.Toolkit.Graphics.PixelFormat.B8G8R8A8.UNorm));

            _depthStencilBuffer = ToDispose(SharpDX.Toolkit.Graphics.DepthStencilBuffer.New(device,
                                                                                            targetWidth,
                                                                                            targetHeight,
                                                                                            SharpDX.Toolkit.Graphics.DepthFormat.Depth24Stencil8));

            _viewerEffect = _contentManager.Load<SamplingViewerEffect>("SamplingViewer");

            _viewerEffect.Scale = new Vector2(_viewport.Width / screenViewport.Width,
                                              _viewport.Height / screenViewport.Height);

            _viewerEffect.Offset = new Vector2(2f * (48.0f + _viewport.Width / 2f) / screenViewport.Width - 1f,
                                               1f - 2f * (screenViewport.Height - _viewport.Height - 48.0f + _viewport.Height / 2f) / screenViewport.Height);

            _samplingEffect = _contentManager.Load<SamplingRendererEffect>("SamplingRenderer");

            _samplingEffect.EncodeConstants = new Vector2(SampleSettings.TileSizeInBytes / SampleSettings.Sampling.Ratio, 24f);
        }