internal RenderContext(IGraphicsFacade graphicsFacade) { _graphicsFacade = graphicsFacade; _graphicsDevice = graphicsFacade.Device; _techniques = graphicsFacade.Techniques; _presets = graphicsFacade.Presets; _sceneBuffer = _graphicsDevice.CreateConstantBuffer <SceneConstantBufferData>(1); _batchBuffer = _graphicsDevice.CreateConstantBuffer <BatchConstantBufferData>(1); _textureDescriptorBuffer = _graphicsDevice.CreateConstantBuffer <TextureDescriptorConstantBufferData>(kBaseTextureSlotId + kTextureBindLimit); _instancingBuffers = new List <IBuffer <RenderJobDescription> >(); const int kMaxPreallocatedInstanceBufferPower = 20; for (var i = 0; i <= kMaxPreallocatedInstanceBufferPower; i++) { _instancingBuffers.Add(_graphicsDevice.CreateVertexBuffer <RenderJobDescription>(1 << i)); } (_gBufferRtvs, _gBufferSrv, _gBufferSrvs) = _graphicsDevice.CreateScreenSizeRenderTarget(2); (_gBufferDsv, _gBufferDepthSrv) = _graphicsDevice.CreateScreenSizeDepthTarget(); (_spotlightDescriptionsBuffer, _spotlightDescriptionsBufferSrv) = _graphicsDevice.CreateStructuredBufferAndView <SpotlightDescription>(256); (_materialResourcesBuffer, _materialResourcesBufferSrv) = _graphicsDevice.CreateStructuredBufferAndView <InternalMaterialResourcesDescription>(kMaterialBufferCount); (_lightDepthTexture, _lightDepthStencilViews, _lightShaderResourceView, _lightShaderResourceViews) = _graphicsDevice.CreateDepthTextureAndViews(10, new Size(kShadowMapWidthHeight, kShadowMapWidthHeight)); Trace.Assert(Utilities.SizeOf <SpotlightInfo>() == SpotlightInfo.Size); Trace.Assert(Utilities.SizeOf <AtlasLocation>() == AtlasLocation.SIZE); Trace.Assert(Utilities.SizeOf <SpotlightDescription>() == SpotlightDescription.Size); Trace.Assert(Utilities.SizeOf <RenderJobDescription>() == RenderJobDescription.Size); Trace.Assert(Utilities.SizeOf <InternalMaterialResourcesDescription>() == InternalMaterialResourcesDescription.Size); water = new WaterWip(graphicsFacade); water.Initialize(); }
public void Initialize() { var(vertices, indices) = GenerateBufferData(); vertexBuffer = device.CreateVertexBuffer(vertices); indexBuffer = device.CreateIndexBuffer(indices); indexCount = indices.Length; }