void IContentUpdatableFromMediaEngine.SetProjection(ProjectionMode projection) { lock (localCritical) { primitive?.Dispose(); primitive = GraphicTools.CreateGeometry(projection, graphicsDevice); projectionMode = projection; }; }
/// <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)); }
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); }
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); }
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); }