Ejemplo n.º 1
0
        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();
        }
Ejemplo n.º 2
0
 public void Initialize()
 {
     var(vertices, indices) = GenerateBufferData();
     vertexBuffer           = device.CreateVertexBuffer(vertices);
     indexBuffer            = device.CreateIndexBuffer(indices);
     indexCount             = indices.Length;
 }