internal GBufferTechnique( RenderScene scene, Logger logger = null) { if (scene == null) { throw new NullReferenceException(nameof(scene)); } this.scene = scene; //Create buffer for storing camera transformations cameraBuffer = new Memory.HostBuffer( scene.LogicalDevice, scene.MemoryPool, BufferUsages.UniformBuffer, size: CameraData.SIZE * scene.SwapchainCount); //Create renderer for rendering into the g-buffer targets renderer = new Renderer(scene, logger); renderer.AddSpecialization(scene.SwapchainCount); renderer.AddSpecialization(false); //NOT IsShadow swapchainIndexPushDataBinding = renderer.AddPushData <int>(); }