]> O.S.I.I.S - jp/vke.net.git/commitdiff
code clean, removed vkvg and crow
authorJean-Philippe Bruyère <jp_bruyere@hotmail.com>
Tue, 1 Dec 2020 08:54:15 +0000 (09:54 +0100)
committerJean-Philippe Bruyère <jp_bruyere@hotmail.com>
Tue, 1 Dec 2020 08:54:15 +0000 (09:54 +0100)
21 files changed:
.gitattributes [new file with mode: 0644]
README.md
download_datas.bat [deleted file]
samples/Directory.Build.props
samples/compute/delaunay.cs
samples/deferred/DebuDrawPipeline.cs [deleted file]
samples/deferred/DeferredPbrRenderer.cs
samples/deferred/EnvironmentPipeline.cs [deleted file]
samples/deferred/deferred.csproj
samples/deferred/main-crow.cs [deleted file]
samples/deferred/main.cs
samples/deferred/mainShadow.cs [deleted file]
samples/deferred/mainWithDebugDrawer.cs [deleted file]
samples/deferred/modelWithVkvgStats.cs [deleted file]
samples/pbr/PbrPipeline.cs
samples/pbr/main.cs
samples/pbr/pbr.csproj
samples/pbr/ui/fps.crow [deleted file]
vke.net.sln
vke/src/base/ComputePipeline.cs
vke/src/base/Device.cs

diff --git a/.gitattributes b/.gitattributes
new file mode 100644 (file)
index 0000000..ffbc973
--- /dev/null
@@ -0,0 +1 @@
+*.fnt eol=lf
index bd7fb7bbda2cebde5b663ed8a50ba60a8a247ac4..15f1b23bbb19a42438569521d79381165d95d955 100644 (file)
--- a/README.md
+++ b/README.md
@@ -24,8 +24,8 @@
    <br>adaptation of the gltf PBR sample from Sacha Willems</br>
 </p>
 
-### Presentattion
-**vke.net** (_vulkan engine for .net_) a vulkan abstraction layer writen in c# composed of high level classes encapsulating [vulkan](https://www.khronos.org/vulkan/) objects and commands with `IDispose` model and **reference counting**. [GLFW](https://www.glfw.org/)  handles the windowing system.
+### Presentation
+**vke.net** (_vulkan engine for .net_) a vulkan abstraction layer writen in **c#** composed of high level classes encapsulating [vulkan](https://www.khronos.org/vulkan/) objects and commands with `IDispose` model and **reference counting**. [GLFW](https://www.glfw.org/)  handles the windowing system.
 
 Vke use autogenerated [vk.net](https://github.com/jpbruyere/vk.net) library for low level binding to vulkan.
 
diff --git a/download_datas.bat b/download_datas.bat
deleted file mode 100644 (file)
index 46e16fd..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-echo //TODO
-echo link = "https://onedrive.live.com/download?cid=B3181664476E9B48&resid=B3181664476E9B48%21167&authkey=APMbPmUMFnlrN6s"
-echo rename downloaded file to datas.zip, and unzip.
index 93eff46b4e55f88ed13ceeb0a361ace6513de777..75dd174477a1a977870de6953250ce485d2e1417 100644 (file)
@@ -4,7 +4,7 @@
                <RootDirectory>$(MSBuildThisFileDirectory)../</RootDirectory>
                <Deterministic>true</Deterministic>
 
-               <TargetFrameworks>net472</TargetFrameworks>
+               <TargetFrameworks>netcoreapp3.1</TargetFrameworks>              
 
                <RepositoryUrl>https://github.com/jpbruyere/vke.net</RepositoryUrl>
                <License>MIT</License>
index 228f6ec310dabb1c3575bf56ea99778aa991de27..be014071ca596ab85f98e79780c6e406973598f9 100644 (file)
@@ -2,6 +2,7 @@
 using Glfw;
 using Vulkan;
 using vke;
+using Image = vke.Image;
 
 namespace delaunay {
        class Program : VkWindow {
@@ -18,7 +19,7 @@ namespace delaunay {
                FrameBuffer[] frameBuffers;
                GraphicPipeline grPipeline;
 
-               Image imgResult;
+        Image imgResult;
 
                Queue computeQ, transferQ;
 
@@ -93,6 +94,8 @@ namespace delaunay {
                        cfg.blendAttachments[0] = new VkPipelineColorBlendAttachmentState (true);
 
                        grPipeline = new GraphicPipeline (cfg);
+                       
+                       cfg.DisposeShaders ();
 
                        plCompute = new ComputePipeline (
                                new PipelineLayout (dev, new VkPushConstantRange (VkShaderStageFlags.Compute, 2 * sizeof (int)), dslCompute),
diff --git a/samples/deferred/DebuDrawPipeline.cs b/samples/deferred/DebuDrawPipeline.cs
deleted file mode 100644 (file)
index fef2751..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-using System;
-using System.Numerics;
-using System.Runtime.InteropServices;
-using VK;
-
-namespace CVKL {
-       public class DebugDrawPipeline : GraphicPipeline {
-               public HostBuffer Vertices;
-               uint vertexCount;
-               uint vboLength = 100 * 6 * sizeof (float);
-
-               public DebugDrawPipeline (Device dev, DescriptorSetLayout dsLayout, VkFormat colorFormat, VkSampleCountFlags samples = VkSampleCountFlags.SampleCount1) :
-                       base (new RenderPass (dev, colorFormat), "Debug draw pipeline") {
-
-                       GraphicPipelineConfig cfg = GraphicPipelineConfig.CreateDefault (VkPrimitiveTopology.LineList, samples);
-                       cfg.rasterizationState.lineWidth = 1.0f;
-                       cfg.RenderPass = RenderPass;
-                       cfg.Layout = new PipelineLayout(dev, dsLayout);
-                       cfg.Layout.AddPushConstants (
-                               new VkPushConstantRange (VkShaderStageFlags.Vertex, (uint)Marshal.SizeOf<Matrix4x4> () * 2)                     
-                       );
-                       cfg.AddVertexBinding (0, 6 * sizeof(float));
-                       cfg.SetVertexAttributes (0, VkFormat.R32g32b32Sfloat, VkFormat.R32g32b32Sfloat);
-
-                       cfg.blendAttachments[0] = new VkPipelineColorBlendAttachmentState (true);
-
-                       cfg.AddShader (VkShaderStageFlags.Vertex, "shaders/debug.vert.spv");
-                       cfg.AddShader (VkShaderStageFlags.Fragment, "shaders/debug.frag.spv");
-
-                       layout = cfg.Layout;
-
-                       init (cfg);
-
-                       Vertices = new HostBuffer (dev, VkBufferUsageFlags.VertexBuffer, vboLength);
-                       Vertices.Map ();
-               }
-
-               public void AddLine (Vector3 start, Vector3 end, float r, float g, float b) {
-                       float[] data = {
-                               start.X, start.Y, start.Z,
-                               r, g, b,
-                               end.X, end.Y, end.Z,
-                               r, g, b
-                       };
-                       Vertices.Update (data, 12 * sizeof (float), vertexCount * 6 * sizeof (float));
-                       vertexCount+=2;
-               }
-
-               public void RecordDraw (CommandBuffer cmd, Framebuffer fb, Camera camera) {
-                       RenderPass.Begin (cmd, fb);
-                       const int ratio = 8;
-                       cmd.SetViewport (fb.Width/ratio, fb.Height/ratio, (ratio-1) * (int)fb.Width / ratio, (ratio-1) * (int)fb.Height / ratio);
-                       //cmd.SetViewport (200, 200,100,100,-10,10);//, 4 * (int)fb.Width / 5, 4 * (int)fb.Height / 5);
-                       cmd.SetScissor (fb.Width / ratio, fb.Height / ratio, (ratio-1) * (int)fb.Width / ratio, (ratio-1) * (int)fb.Height / ratio);
-                       //cmd.SetScissor (200, 200,100,100);
-
-                       Matrix4x4 ortho = Matrix4x4.CreateOrthographic (4, 4.0f / camera.AspectRatio,-1,1);
-
-                       cmd.PushConstant (layout, VkShaderStageFlags.Vertex, ortho);
-
-                       Bind (cmd);
-
-                       cmd.BindVertexBuffer (Vertices);
-                       cmd.Draw (vertexCount);
-                       RenderPass.End (cmd);
-               }
-
-               protected override void Dispose (bool disposing) {
-                       if (disposing) {
-                               Vertices.Unmap ();
-                               Vertices.Dispose ();
-                       }
-
-                       base.Dispose (disposing);
-               }
-       }
-
-}
index 9482386fb19d335aec781550b52648bdcba55277..5f94db9b128b2b4efdab750c172fb5a9d2d1069d 100644 (file)
@@ -12,7 +12,7 @@ namespace deferred {
                Queue gQueue;
                public static int MAX_MATERIAL_COUNT = 4;
                public static VkSampleCountFlags NUM_SAMPLES = VkSampleCountFlags.SampleCount1;
-               public static VkFormat HDR_FORMAT = VkFormat.R16g16b16a16Sfloat;
+               public static VkFormat HDR_FORMAT = VkFormat.R32g32b32a32Sfloat;
                public static VkFormat MRT_FORMAT = VkFormat.R32g32b32a32Sfloat;
                public static bool TEXTURE_ARRAY;
 
@@ -216,7 +216,6 @@ namespace deferred {
 
                        if (TEXTURE_ARRAY) {
                                descLayoutMain.Bindings.Add (new VkDescriptorSetLayoutBinding (7, VkShaderStageFlags.Fragment, VkDescriptorType.CombinedImageSampler));//texture array
-                               //descLayoutMain.Bindings.Add (new VkDescriptorSetLayoutBinding (8, VkShaderStageFlags.Fragment, VkDescriptorType.CombinedImageSampler));//down sampled hdr
                        } else { 
                                descLayoutTextures = new DescriptorSetLayout (dev,
                                        new VkDescriptorSetLayoutBinding (0, VkShaderStageFlags.Fragment, VkDescriptorType.CombinedImageSampler),
@@ -288,7 +287,7 @@ namespace deferred {
 #if WITH_SHADOWS
                                cfg.AddShader (dev, VkShaderStageFlags.Fragment, "#shaders.compose_with_shadows.frag.spv", constants);
 #else
-                               cfg.AddShader (VkShaderStageFlags.Fragment, "#shaders.compose.frag.spv", constants);
+                               cfg.AddShader (dev, VkShaderStageFlags.Fragment, "#shaders.compose.frag.spv", constants);
 #endif
                                composePipeline = new GraphicPipeline (cfg);
                        }
diff --git a/samples/deferred/EnvironmentPipeline.cs b/samples/deferred/EnvironmentPipeline.cs
deleted file mode 100644 (file)
index 32f8e6a..0000000
+++ /dev/null
@@ -1,317 +0,0 @@
-using System;
-using System.Numerics;
-using System.Runtime.InteropServices;
-using Vulkan;
-
-namespace vke {
-       public class EnvironmentCube : GraphicPipeline {
-
-               GPUBuffer vboSkybox;
-
-               public Image cubemap { get; private set; }
-               public Image lutBrdf { get; private set; }
-               public Image irradianceCube { get; private set; }
-               public Image prefilterCube { get; set; }
-
-               public EnvironmentCube (string cubemapPath, DescriptorSet dsSkybox, PipelineLayout plLayout, Queue staggingQ, RenderPass renderPass, PipelineCache cache = null)
-               : base (renderPass, cache, "EnvCube pipeline") {
-
-                       using (CommandPool cmdPool = new CommandPool (staggingQ.Dev, staggingQ.index)) {
-
-                               vboSkybox = new GPUBuffer<float> (staggingQ, cmdPool, VkBufferUsageFlags.VertexBuffer, box_vertices);
-
-                               cubemap = KTX.KTX.Load (staggingQ, cmdPool, cubemapPath,
-                                       VkImageUsageFlags.Sampled, VkMemoryPropertyFlags.DeviceLocal, true);
-                               cubemap.CreateView (VkImageViewType.Cube, VkImageAspectFlags.Color);
-                               cubemap.CreateSampler (VkSamplerAddressMode.ClampToEdge);
-                               cubemap.SetName ("skybox Texture");
-                               cubemap.Descriptor.imageLayout = VkImageLayout.ShaderReadOnlyOptimal;
-
-                               GraphicPipelineConfig cfg = GraphicPipelineConfig.CreateDefault (VkPrimitiveTopology.TriangleList, renderPass.Samples, false);
-                               cfg.RenderPass = renderPass;
-                               cfg.Layout = plLayout;
-                               cfg.AddVertexBinding (0, 3 * sizeof (float));
-                               cfg.AddVertexAttributes (0, VkFormat.R32g32b32Sfloat);
-                               cfg.AddShader (VkShaderStageFlags.Vertex, "#deferred.skybox.vert.spv");
-                               cfg.AddShader (VkShaderStageFlags.Fragment, "#deferred.skybox.frag.spv");
-                               cfg.multisampleState.rasterizationSamples = Samples;
-
-                               layout = cfg.Layout;
-
-                               init (cfg);
-
-                               generateBRDFLUT (staggingQ, cmdPool);
-                               generateCubemaps (staggingQ, cmdPool);
-                       }
-
-               }
-
-               public void RecordDraw (CommandBuffer cmd) {
-                       Bind (cmd);
-                       cmd.BindVertexBuffer (vboSkybox);
-                       cmd.Draw (36);
-               }
-
-               #region skybox
-
-               static float[] box_vertices = {
-                        1.0f, 1.0f,-1.0f,  // +X side
-                        1.0f, 1.0f, 1.0f,
-                        1.0f,-1.0f, 1.0f,
-                        1.0f,-1.0f, 1.0f,
-                        1.0f,-1.0f,-1.0f,
-                        1.0f, 1.0f,-1.0f,
-
-                       -1.0f,-1.0f,-1.0f,      // +X side
-                       -1.0f,-1.0f, 1.0f,
-                       -1.0f, 1.0f, 1.0f,
-                       -1.0f, 1.0f, 1.0f,
-                       -1.0f, 1.0f,-1.0f,
-                       -1.0f,-1.0f,-1.0f,
-
-                       -1.0f, 1.0f,-1.0f,  // +Y side
-                       -1.0f, 1.0f, 1.0f,
-                        1.0f, 1.0f, 1.0f,
-                       -1.0f, 1.0f,-1.0f,
-                        1.0f, 1.0f, 1.0f,
-                        1.0f, 1.0f,-1.0f,
-
-                       -1.0f,-1.0f,-1.0f,  // -Y side
-                        1.0f,-1.0f,-1.0f,
-                        1.0f,-1.0f, 1.0f,
-                       -1.0f,-1.0f,-1.0f,
-                        1.0f,-1.0f, 1.0f,
-                       -1.0f,-1.0f, 1.0f,
-
-                       -1.0f, 1.0f, 1.0f,  // +Z side
-                       -1.0f,-1.0f, 1.0f,
-                        1.0f, 1.0f, 1.0f,
-                       -1.0f,-1.0f, 1.0f,
-                        1.0f,-1.0f, 1.0f,
-                        1.0f, 1.0f, 1.0f,
-
-                       -1.0f,-1.0f,-1.0f,  // -Z side
-                        1.0f, 1.0f,-1.0f,
-                        1.0f,-1.0f,-1.0f,
-                       -1.0f,-1.0f,-1.0f,
-                       -1.0f, 1.0f,-1.0f,
-                        1.0f, 1.0f,-1.0f,
-
-               };
-               #endregion
-
-               void generateBRDFLUT (Queue staggingQ, CommandPool cmdPool) {
-                       const VkFormat format = VkFormat.R16g16Sfloat;
-                       const int dim = 512;
-
-                       lutBrdf = new Image (Dev, format, VkImageUsageFlags.ColorAttachment | VkImageUsageFlags.Sampled,
-                               VkMemoryPropertyFlags.DeviceLocal, dim, dim);
-                       lutBrdf.SetName ("lutBrdf");
-
-                       lutBrdf.CreateView ();
-                       lutBrdf.CreateSampler (VkSamplerAddressMode.ClampToEdge);
-
-                       GraphicPipelineConfig cfg = GraphicPipelineConfig.CreateDefault (VkPrimitiveTopology.TriangleList, VkSampleCountFlags.SampleCount1, false);
-
-                       cfg.Layout = new PipelineLayout (Dev, new DescriptorSetLayout (Dev));
-                       cfg.RenderPass = new RenderPass (Dev);
-                       cfg.RenderPass.AddAttachment (format, VkImageLayout.ShaderReadOnlyOptimal);
-                       cfg.RenderPass.ClearValues.Add (new VkClearValue { color = new VkClearColorValue (0, 0, 0) });
-                       cfg.RenderPass.AddSubpass (new SubPass (VkImageLayout.ColorAttachmentOptimal));
-                       cfg.AddShader (VkShaderStageFlags.Vertex, "#deferred.genbrdflut.vert.spv");
-                       cfg.AddShader (VkShaderStageFlags.Fragment, "#deferred.genbrdflut.frag.spv");
-
-                       using (GraphicPipeline pl = new GraphicPipeline (cfg)) {
-                               using (FrameBuffer fb = new FrameBuffer (cfg.RenderPass, dim, dim, lutBrdf)) {
-                                       CommandBuffer cmd = cmdPool.AllocateCommandBuffer ();
-                                       cmd.Start (VkCommandBufferUsageFlags.OneTimeSubmit);
-                                       pl.RenderPass.Begin (cmd, fb);
-                                       cmd.SetViewport (dim, dim);
-                                       cmd.SetScissor (dim, dim);
-                                       pl.Bind (cmd);
-                                       cmd.Draw (3, 1, 0, 0);
-                                       pl.RenderPass.End (cmd);
-                                       cmd.End ();
-
-                                       staggingQ.Submit (cmd);
-                                       staggingQ.WaitIdle ();
-
-                                       cmd.Free ();
-                               }
-                       }
-                       lutBrdf.Descriptor.imageLayout = VkImageLayout.ShaderReadOnlyOptimal;
-               }
-
-               public enum CBTarget { IRRADIANCE = 0, PREFILTEREDENV = 1 };
-
-               public Image generateCubeMap (Queue staggingQ, CommandPool cmdPool, CBTarget target) {
-                       const float deltaPhi = (2.0f * (float)Math.PI) / 180.0f;
-                       const float deltaTheta = (0.5f * (float)Math.PI) / 64.0f;
-
-                       VkFormat format = VkFormat.R32g32b32a32Sfloat;
-                       uint dim = 64;
-
-                       if (target == CBTarget.PREFILTEREDENV) {
-                               format = VkFormat.R16g16b16a16Sfloat;
-                               dim = 512;
-                       }
-
-                       uint numMips = (uint)Math.Floor (Math.Log (dim, 2)) + 1;
-
-                       Image imgFbOffscreen = new Image (Dev, format, VkImageUsageFlags.TransferSrc | VkImageUsageFlags.ColorAttachment,
-                               VkMemoryPropertyFlags.DeviceLocal, dim, dim);
-                       imgFbOffscreen.SetName ("offscreenfb");
-                       imgFbOffscreen.CreateView ();
-
-                       Image cmap = new Image (Dev, format, VkImageUsageFlags.TransferDst | VkImageUsageFlags.Sampled,
-                               VkMemoryPropertyFlags.DeviceLocal, dim, dim, VkImageType.Image2D, VkSampleCountFlags.SampleCount1, VkImageTiling.Optimal,
-                               numMips, 6, 1, VkImageCreateFlags.CubeCompatible);
-                       if (target == CBTarget.PREFILTEREDENV)
-                               cmap.SetName ("prefilterenvmap");
-                       else
-                               cmap.SetName ("irradianceCube");
-                       cmap.CreateView (VkImageViewType.Cube, VkImageAspectFlags.Color, 6, 0);
-                       cmap.CreateSampler (VkSamplerAddressMode.ClampToEdge);
-
-                       DescriptorPool dsPool = new DescriptorPool (Dev, 2, new VkDescriptorPoolSize (VkDescriptorType.CombinedImageSampler));
-
-                       DescriptorSetLayout dsLayout = new DescriptorSetLayout (Dev,
-                               new VkDescriptorSetLayoutBinding (0, VkShaderStageFlags.Fragment, VkDescriptorType.CombinedImageSampler));
-
-
-                       GraphicPipelineConfig cfg = GraphicPipelineConfig.CreateDefault (VkPrimitiveTopology.TriangleList, VkSampleCountFlags.SampleCount1, false);
-                       cfg.Layout = new PipelineLayout (Dev, dsLayout);
-                       cfg.Layout.AddPushConstants (
-                               new VkPushConstantRange (VkShaderStageFlags.Vertex | VkShaderStageFlags.Fragment, (uint)Marshal.SizeOf<Matrix4x4> () + 8));
-
-                       cfg.RenderPass = new RenderPass (Dev);
-                       cfg.RenderPass.AddAttachment (format, VkImageLayout.ColorAttachmentOptimal);
-                       cfg.RenderPass.ClearValues.Add (new VkClearValue { color = new VkClearColorValue (0, 0, 0) });
-                       cfg.RenderPass.AddSubpass (new SubPass (VkImageLayout.ColorAttachmentOptimal));
-
-                       cfg.AddVertexBinding (0, 3 * sizeof (float));
-                       cfg.AddVertexAttributes (0, VkFormat.R32g32b32Sfloat);
-
-                       cfg.AddShader (VkShaderStageFlags.Vertex, "#deferred.filtercube.vert.spv");
-                       if (target == CBTarget.PREFILTEREDENV)
-                               cfg.AddShader (VkShaderStageFlags.Fragment, "#deferred.prefilterenvmap.frag.spv");
-                       else
-                               cfg.AddShader (VkShaderStageFlags.Fragment, "#deferred.irradiancecube.frag.spv");
-
-                       Matrix4x4[] matrices = {
-                               // POSITIVE_X
-                               Matrix4x4.CreateRotationX(Utils.DegreesToRadians(180)) * Matrix4x4.CreateRotationY(Utils.DegreesToRadians(90)),
-                               // NEGATIVE_X
-                               Matrix4x4.CreateRotationX(Utils.DegreesToRadians(180)) * Matrix4x4.CreateRotationY(Utils.DegreesToRadians(-90)),
-                               // POSITIVE_Y
-                               Matrix4x4.CreateRotationX(Utils.DegreesToRadians(-90)),
-                               // NEGATIVE_Y
-                               Matrix4x4.CreateRotationX(Utils.DegreesToRadians(90)),
-                               // POSITIVE_Z
-                               Matrix4x4.CreateRotationX(Utils.DegreesToRadians(180)),
-                               // NEGATIVE_Z
-                               Matrix4x4.CreateRotationZ(Utils.DegreesToRadians(180))
-                       };
-
-                       VkImageSubresourceRange subRes = new VkImageSubresourceRange (VkImageAspectFlags.Color, 0, numMips, 0, 6);
-
-                       using (GraphicPipeline pl = new GraphicPipeline (cfg)) {
-
-                               DescriptorSet dset = dsPool.Allocate (dsLayout);
-                               DescriptorSetWrites dsUpdate = new DescriptorSetWrites (dsLayout);
-                               dsUpdate.Write (Dev, dset, cubemap.Descriptor);
-                               Dev.WaitIdle ();
-
-                               using (FrameBuffer fb = new FrameBuffer (pl.RenderPass, dim, dim, imgFbOffscreen)) {
-                                       CommandBuffer cmd = cmdPool.AllocateCommandBuffer ();
-                                       cmd.Start (VkCommandBufferUsageFlags.OneTimeSubmit);
-
-                                       cmap.SetLayout (cmd, VkImageLayout.Undefined, VkImageLayout.TransferDstOptimal, subRes);
-
-                                       float roughness = 0;
-
-                                       cmd.SetScissor (dim, dim);
-                                       cmd.SetViewport ((float)(dim), (float)dim);
-
-                                       for (int m = 0; m < numMips; m++) {
-                                               roughness = (float)m / ((float)numMips - 1f);
-
-                                               for (int f = 0; f < 6; f++) {
-                                                       pl.RenderPass.Begin (cmd, fb);
-
-                                                       pl.Bind (cmd);
-
-                                                       float viewPortSize = (float)Math.Pow (0.5, m) * dim;
-                                                       cmd.SetViewport (viewPortSize, viewPortSize);
-                                                       cmd.PushConstant (pl.Layout, VkShaderStageFlags.Vertex | VkShaderStageFlags.Fragment,
-                                                               matrices[f] * Matrix4x4.CreatePerspectiveFieldOfView (Utils.DegreesToRadians (90), 1f, 0.1f, 512f));
-                                                       if (target == CBTarget.IRRADIANCE) {
-                                                               cmd.PushConstant (pl.Layout, VkShaderStageFlags.Vertex | VkShaderStageFlags.Fragment, deltaPhi, (uint)Marshal.SizeOf<Matrix4x4> ());
-                                                               cmd.PushConstant (pl.Layout, VkShaderStageFlags.Vertex | VkShaderStageFlags.Fragment, deltaTheta, (uint)Marshal.SizeOf<Matrix4x4> () + 4);
-                                                       } else {
-                                                               cmd.PushConstant (pl.Layout, VkShaderStageFlags.Vertex | VkShaderStageFlags.Fragment, roughness, (uint)Marshal.SizeOf<Matrix4x4> ());
-                                                               cmd.PushConstant (pl.Layout, VkShaderStageFlags.Vertex | VkShaderStageFlags.Fragment, 64u, (uint)Marshal.SizeOf<Matrix4x4> () + 4);
-                                                       }
-
-                                                       cmd.BindDescriptorSet (pl.Layout, dset);
-                                                       cmd.BindVertexBuffer (vboSkybox);
-                                                       cmd.Draw (36);
-
-                                                       pl.RenderPass.End (cmd);
-
-                                                       imgFbOffscreen.SetLayout (cmd, VkImageAspectFlags.Color,
-                                                               VkImageLayout.ColorAttachmentOptimal, VkImageLayout.TransferSrcOptimal);
-
-                                                       VkImageCopy region = new VkImageCopy ();
-                                                       region.srcSubresource = new VkImageSubresourceLayers (VkImageAspectFlags.Color, 1);
-                                                       region.dstSubresource = new VkImageSubresourceLayers (VkImageAspectFlags.Color, 1, (uint)m, (uint)f);
-                                                       region.extent = new VkExtent3D { width = (uint)viewPortSize, height = (uint)viewPortSize, depth = 1 };
-
-                                                       Vk.vkCmdCopyImage (cmd.Handle,
-                                                               imgFbOffscreen.Handle, VkImageLayout.TransferSrcOptimal,
-                                                               cmap.Handle, VkImageLayout.TransferDstOptimal,
-                                                               1, region.Pin ());
-                                                       region.Unpin ();
-
-                                                       imgFbOffscreen.SetLayout (cmd, VkImageAspectFlags.Color,
-                                                               VkImageLayout.TransferSrcOptimal, VkImageLayout.ColorAttachmentOptimal);
-
-                                               }
-                                       }
-
-                                       cmap.SetLayout (cmd, VkImageLayout.TransferDstOptimal, VkImageLayout.ShaderReadOnlyOptimal, subRes);
-
-                                       cmd.End ();
-
-                                       staggingQ.Submit (cmd);
-                                       staggingQ.WaitIdle ();
-
-                                       cmd.Free ();
-                               }
-                       }
-                       cmap.Descriptor.imageLayout = VkImageLayout.ShaderReadOnlyOptimal;
-
-                       dsLayout.Dispose ();
-                       imgFbOffscreen.Dispose ();
-                       dsPool.Dispose ();
-
-                       return cmap;
-               }
-
-               void generateCubemaps (Queue staggingQ, CommandPool cmdPool) {
-                       irradianceCube = generateCubeMap (staggingQ, cmdPool, CBTarget.IRRADIANCE);
-                       prefilterCube = generateCubeMap (staggingQ, cmdPool, CBTarget.PREFILTEREDENV);
-               }
-
-               protected override void Dispose (bool disposing) {
-                       vboSkybox.Dispose ();
-                       cubemap.Dispose ();
-                       lutBrdf.Dispose ();
-                       irradianceCube.Dispose ();
-                       prefilterCube.Dispose ();
-
-                       base.Dispose (disposing);
-               }
-       }
-
-}
index 06dbc9e3ff0bdd279354dbf7c11ccb487f37e882..49e056984fe689b478bf76abf9a385b0efa3c4c7 100644 (file)
@@ -1,24 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <Project Sdk="Microsoft.NET.Sdk">
        <PropertyGroup>
-               <EnableDefaultCompileItems>false</EnableDefaultCompileItems>
-               <!--    <EnableDefaultNoneItems>false</EnableDefaultNoneItems>     -->
+               <DefineConstants>$(DefineConstants);WITH_SHADOWS</DefineConstants>
        </PropertyGroup>
-       <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-               <DefineConstants>TRACE;NETSTANDARD;NETSTANDARD2_0;MEMORY_POOLS;WITH_SHADOWS;_WITH_VKVG;DEBUG;NETFRAMEWORK;NET472</DefineConstants>
-       </PropertyGroup>
-       <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'DebugCrow|AnyCPU' ">
-               <DefineConstants>TRACE;DEBUG;NETSTANDARD;NETSTANDARD2_0;MEMORY_POOLS;WITH_SHADOWS;_WITH_VKVG</DefineConstants>
-       </PropertyGroup>
-       <ItemGroup>
-               <Compile Include="DeferredPbrRenderer.cs;shadowMapRenderer.cs" />
-       </ItemGroup>
-       <ItemGroup Condition=" '$(Configuration)|$(Platform)' == 'DebugCrow|AnyCPU' ">
-               <Compile Include="main-crow.cs" />
-       </ItemGroup>
-       <ItemGroup Condition="$(Configuration) != 'DebugCrow' ">
-               <Compile Include="main.cs" />
-       </ItemGroup>
        <ItemGroup>
                <ProjectReference Include="..\..\addons\gltfLoader\gltfLoader.csproj" />
                <ProjectReference Include="..\..\addons\EnvironmentPipeline\EnvironmentPipeline.csproj" />
diff --git a/samples/deferred/main-crow.cs b/samples/deferred/main-crow.cs
deleted file mode 100644 (file)
index c9c1f91..0000000
+++ /dev/null
@@ -1,405 +0,0 @@
-using System;
-using System.Numerics;
-using Glfw;
-using Vulkan;
-using vke;
-using System.Collections.Generic;
-using System.Linq;
-
-namespace deferred {
-       class Program : Crow.CrowWin {
-               static void Main (string[] args) {
-#if DEBUG
-                       Instance.VALIDATION = true;
-                       Instance.DEBUG_UTILS = true;
-                       Instance.RENDER_DOC_CAPTURE = false;
-#endif
-                       DeferredPbrRenderer.TEXTURE_ARRAY = true;
-                       DeferredPbrRenderer.NUM_SAMPLES = VkSampleCountFlags.SampleCount1;
-                       DeferredPbrRenderer.HDR_FORMAT = VkFormat.R32g32b32a32Sfloat;
-                       DeferredPbrRenderer.MRT_FORMAT = VkFormat.R16g16b16a16Sfloat;
-
-                       PbrModelTexArray.TEXTURE_DIM = 1024;
-
-                       using (Program vke = new Program ()) {
-                               vke.Run ();                     
-                       }
-               }
-
-               #region crow ui
-               public Crow.Command CMDViewScenes, CMDViewEditor, CMDViewDebug, CMDViewMaterials;
-               void init_crow_commands () {
-                       CMDViewScenes = new Crow.Command (new Action (() => loadWindow ("#deferred.main.crow", this))) { Caption = "Lighting", Icon = new Crow.SvgPicture ("#deferred.crow.svg"), CanExecute = true };
-                       CMDViewEditor = new Crow.Command (new Action (() => loadWindow ("#deferred.scenes.crow", this))) { Caption = "Scenes", Icon = new Crow.SvgPicture ("#deferred.crow.svg"), CanExecute = true };
-                       CMDViewDebug = new Crow.Command (new Action (() => loadWindow ("#deferred.debug.crow", this))) { Caption = "Debug", Icon = new Crow.SvgPicture ("#deferred.crow.svg"), CanExecute = true };
-                       CMDViewMaterials = new Crow.Command (new Action (() => loadWindow ("#deferred.materials.crow", this))) { Caption = "Materials", Icon = new Crow.SvgPicture ("#deferred.crow.svg"), CanExecute = true };
-               }
-
-               public DeferredPbrRenderer.DebugView CurrentDebugView {
-                       get { return renderer.currentDebugView; }
-                       set {
-                               if (value == renderer.currentDebugView)
-                                       return;
-                               lock(crow.UpdateMutex)
-                                       renderer.currentDebugView = value;
-                               rebuildBuffers = true;
-                               NotifyValueChanged ("CurrentDebugView", renderer.currentDebugView);
-                       }
-               }
-
-               public float Gamma {
-                       get { return renderer.matrices.gamma; }
-                       set {
-                               if (value == renderer.matrices.gamma)
-                                       return;
-                               renderer.matrices.gamma = value;
-                               NotifyValueChanged ("Gamma", value);
-                               updateViewRequested = true;
-                       }
-               }
-               public float Exposure {
-                       get { return renderer.matrices.exposure; }
-                       set {
-                               if (value == renderer.matrices.exposure)
-                                       return;
-                               renderer.matrices.exposure = value;
-                               NotifyValueChanged ("Exposure", value);
-                               updateViewRequested = true;
-                       }
-               }
-               public float LightStrength {
-                       get { return renderer.lights[renderer.lightNumDebug].color.X; }
-                       set {
-                               if (value == renderer.lights[renderer.lightNumDebug].color.X)
-                                       return;
-                               renderer.lights[renderer.lightNumDebug].color = new Vector4(value);
-                               NotifyValueChanged ("LightStrength", value);
-                               renderer.uboLights.Update (renderer.lights);
-                       }
-               }
-               public List<DeferredPbrRenderer.Light> Lights => renderer.lights.ToList ();
-               public List<Model.Scene> Scenes => renderer.model.Scenes;
-               #endregion
-
-               public override string[] EnabledDeviceExtensions => new string[] {
-                       Ext.D.VK_KHR_swapchain,
-                       Ext.D.VK_EXT_debug_marker
-               };
-
-               protected override void configureEnabledFeatures (VkPhysicalDeviceFeatures available_features, ref VkPhysicalDeviceFeatures features) {
-                       base.configureEnabledFeatures (available_features, ref features);
-
-                       features.samplerAnisotropy = available_features.samplerAnisotropy;
-                       features.sampleRateShading = available_features.sampleRateShading;
-                       features.geometryShader = available_features.geometryShader;
-                       features.pipelineStatisticsQuery = true;
-
-                       if (available_features.textureCompressionETC2) {
-                               features.textureCompressionETC2 = true;
-                               Image.DefaultTextureFormat = VkFormat.Etc2R8g8b8a8UnormBlock;
-                       }else if (available_features.textureCompressionBC) {
-                               //features.textureCompressionBC = true;
-                               //Image.DefaultTextureFormat = VkFormat.Bc3UnormBlock;
-                       }
-
-
-               }
-
-               protected override void createQueues () {
-                       base.createQueues ();
-                       transferQ = new Queue (dev, VkQueueFlags.Transfer);
-               }
-
-               string[] cubemapPathes = {
-                       Utils.DataDirectory + "textures/papermill.ktx",
-                       Utils.DataDirectory + "textures/cubemap_yokohama_bc3_unorm.ktx",
-                       Utils.DataDirectory + "textures/gcanyon_cube.ktx",
-                       Utils.DataDirectory + "textures/pisa_cube.ktx",
-                       Utils.DataDirectory + "textures/uffizi_cube.ktx",
-               };
-               string[] modelPathes = {
-                               //"/mnt/devel/gts/vkChess.net/data/models/chess.glb",
-                               //"/home/jp/gltf/jaguar/scene.gltf",
-                               Utils.DataDirectory + "models/DamagedHelmet/glTF/DamagedHelmet.gltf",
-                               Utils.DataDirectory + "models/shadow.glb",
-                               Utils.DataDirectory + "models/Hubble.glb",
-                               Utils.DataDirectory + "models/MER_static.glb",
-                               Utils.DataDirectory + "models/ISS_stationary.glb",
-                       };
-
-               int curModelIndex = 0;
-               bool reloadModel;
-
-               Queue transferQ;
-               DeferredPbrRenderer renderer;
-               PipelineStatisticsQueryPool statPool;
-               TimestampQueryPool timestampQPool;
-               ulong[] results;
-
-               DebugReport dbgRepport;
-
-               protected override void initVulkan () {
-                       base.initVulkan ();
-
-#if DEBUG
-                       dbgRepport = new DebugReport (instance,
-                                       VkDebugReportFlagsEXT.ErrorEXT
-                                       | VkDebugReportFlagsEXT.DebugEXT
-                                       | VkDebugReportFlagsEXT.WarningEXT
-                                       | VkDebugReportFlagsEXT.PerformanceWarningEXT
-                               );
-#endif
-
-                       camera = new Camera (Utils.DegreesToRadians (45f), 1f, 0.1f, 16f);
-                       camera.SetPosition (0, 0, 2);
-
-                       renderer = new DeferredPbrRenderer (dev, swapChain, presentQueue, cubemapPathes[2], camera.NearPlane, camera.FarPlane);
-                       renderer.LoadModel (transferQ, modelPathes[curModelIndex]);
-                       camera.Model = Matrix4x4.CreateScale (1f / Math.Max (Math.Max (renderer.modelAABB.Width, renderer.modelAABB.Height), renderer.modelAABB.Depth));
-
-                       statPool = new PipelineStatisticsQueryPool (dev,
-                               VkQueryPipelineStatisticFlags.InputAssemblyVertices |
-                               VkQueryPipelineStatisticFlags.InputAssemblyPrimitives |
-                               VkQueryPipelineStatisticFlags.ClippingInvocations |
-                               VkQueryPipelineStatisticFlags.ClippingPrimitives |
-                               VkQueryPipelineStatisticFlags.FragmentShaderInvocations);
-
-                       timestampQPool = new TimestampQueryPool (dev);
-
-                       init_crow_commands ();
-
-                       crow.Load ("#deferred.menu.crow").DataSource = this;
-
-               }
-
-               protected override void recordDraw (PrimaryCommandBuffer cmd, int imageIndex) {
-                       statPool.Begin (cmd);
-                       renderer.buildCommandBuffers (cmd, imageIndex);
-                       statPool.End (cmd);
-               }
-
-               public override void UpdateView () {
-                       renderer.UpdateView (camera);
-                       updateViewRequested = false;
-#if WITH_SHADOWS
-                       if (renderer.shadowMapRenderer.updateShadowMap)
-                               renderer.shadowMapRenderer.update_shadow_map (cmdPool);
-#endif
-               }
-
-               int frameCount = 0;
-               public override void Update () {
-                       if (reloadModel) {
-                               renderer.LoadModel (transferQ, modelPathes[curModelIndex]);
-                               reloadModel = false;
-                               camera.Model = Matrix4x4.CreateScale (1f / Math.Max (Math.Max (renderer.modelAABB.Width, renderer.modelAABB.Height), renderer.modelAABB.Depth));
-                               updateViewRequested = true;
-                               rebuildBuffers = true;
-#if WITH_SHADOWS
-                               renderer.shadowMapRenderer.updateShadowMap = true;
-#endif
-                       }
-
-                       base.Update ();
-
-                       if (++frameCount > 20) {
-                               NotifyValueChanged ("fps", fps);
-                               frameCount = 0;
-                       }
-
-                       results = statPool.GetResults ();
-               }
-               protected override void OnResize () {           
-                       renderer.Resize ();
-                       base.OnResize ();
-               }
-
-               #region Mouse and keyboard
-               protected override void onMouseMove (double xPos, double yPos) {
-                       if (crow.ProcessMouseMove ((int)xPos, (int)yPos))
-                               return;
-
-                       double diffX = lastMouseX - xPos;
-                       double diffY = lastMouseY - yPos;
-                       if (MouseButton[0]) {
-                               camera.Rotate ((float)-diffX, (float)-diffY);
-                       } else if (MouseButton[1]) {
-                               camera.SetZoom ((float)diffY);
-                       } else
-                               return;
-
-                       updateViewRequested = true;
-               }
-               protected override void onMouseButtonDown (Glfw.MouseButton button) {
-                       if (crow.ProcessMouseButtonDown ((Crow.MouseButton)button))
-                               return;
-                       base.onMouseButtonDown (button);
-               }
-               protected override void onMouseButtonUp (Glfw.MouseButton button) {
-                       if (crow.ProcessMouseButtonUp ((Crow.MouseButton)button))
-                               return;
-                       base.onMouseButtonUp (button);
-               }
-               protected override void onKeyDown (Key key, int scanCode, Modifier modifiers) {
-                       if (crow.ProcessKeyDown ((Crow.Key)key))
-                               return;
-                       switch (key) {
-                               case Key.F:
-                                       if (modifiers.HasFlag (Modifier.Shift)) {
-                                               renderer.debugFace--;
-                                               if (renderer.debugFace < 0)
-                                                       renderer.debugFace = 5;
-                                       } else {
-                                               renderer.debugFace++;
-                                               if (renderer.debugFace >= 5)
-                                                       renderer.debugFace = 0;
-                                       }
-                                       rebuildBuffers = true;
-                                       break;
-                               case Key.M:
-                                       if (modifiers.HasFlag (Modifier.Shift)) {
-                                               renderer.debugMip--;
-                                               if (renderer.debugMip < 0)
-                                                       renderer.debugMip = (int)renderer.envCube.prefilterCube.CreateInfo.mipLevels - 1;
-                                       } else {
-                                               renderer.debugMip++;
-                                               if (renderer.debugMip >= renderer.envCube.prefilterCube.CreateInfo.mipLevels)
-                                                       renderer.debugMip = 0;
-                                       }
-                                       rebuildBuffers = true;
-                                       break;
-                               case Key.L:
-                                       if (modifiers.HasFlag (Modifier.Shift)) {
-                                               renderer.lightNumDebug--;
-                                               if (renderer.lightNumDebug < 0)
-                                                       renderer.lightNumDebug = (int)renderer.lights.Length - 1;
-                                       } else {
-                                               renderer.lightNumDebug++;
-                                               if (renderer.lightNumDebug >= renderer.lights.Length)
-                                                       renderer.lightNumDebug = 0;
-                                       }
-                                       rebuildBuffers = true;
-                                       break;
-                               case Key.Keypad0:
-                               case Key.Keypad1:
-                               case Key.Keypad2:
-                               case Key.Keypad3:
-                               case Key.Keypad4:
-                               case Key.Keypad5:
-                               case Key.Keypad6:
-                               case Key.Keypad7:
-                               case Key.Keypad8:
-                               case Key.Keypad9:
-                                       renderer.currentDebugView = (DeferredPbrRenderer.DebugView)(int)key-320;
-                                       rebuildBuffers = true;
-                                       break;
-                               case Key.KeypadDivide:
-                                       renderer.currentDebugView = DeferredPbrRenderer.DebugView.irradiance;
-                                       rebuildBuffers = true;
-                                       break;
-                               case Key.S:
-                                       if (modifiers.HasFlag (Modifier.Control)) {
-                                               renderer.pipelineCache.Save ();
-                                               Console.WriteLine ($"Pipeline Cache saved.");
-                                       } else {
-                                               renderer.currentDebugView = DeferredPbrRenderer.DebugView.shadowMap;
-                                               rebuildBuffers = true; 
-                                       }
-                                       break;
-                               case Key.Up:
-                                       if (modifiers.HasFlag (Modifier.Shift))
-                                               renderer.MoveLight(-Vector4.UnitZ);
-                                       else
-                                               camera.Move (0, 0, 1);
-                                       break;
-                               case Key.Down:
-                                       if (modifiers.HasFlag (Modifier.Shift))
-                                               renderer.MoveLight (Vector4.UnitZ);
-                                       else
-                                               camera.Move (0, 0, -1);
-                                       break;
-                               case Key.Left:
-                                       if (modifiers.HasFlag (Modifier.Shift))
-                                               renderer.MoveLight (-Vector4.UnitX);
-                                       else
-                                               camera.Move (1, 0, 0);
-                                       break;
-                               case Key.Right:
-                                       if (modifiers.HasFlag (Modifier.Shift))
-                                               renderer.MoveLight (Vector4.UnitX);
-                                       else
-                                               camera.Move (-1, 0, 0);
-                                       break;
-                               case Key.PageUp:
-                                       if (modifiers.HasFlag (Modifier.Shift))
-                                               renderer.MoveLight (Vector4.UnitY);
-                                       else
-                                               camera.Move (0, 1, 0);
-                                       break;
-                               case Key.PageDown:
-                                       if (modifiers.HasFlag (Modifier.Shift))
-                                               renderer.MoveLight (-Vector4.UnitY);
-                                       else
-                                               camera.Move (0, -1, 0);
-                                       break;
-                               case Key.F2:
-                                       if (modifiers.HasFlag (Modifier.Shift))
-                                               renderer.matrices.exposure -= 0.3f;
-                                       else
-                                               renderer.matrices.exposure += 0.3f;
-                                       break;
-                               case Key.F3:
-                                       if (modifiers.HasFlag (Modifier.Shift))
-                                               renderer.matrices.gamma -= 0.1f;
-                                       else
-                                               renderer.matrices.gamma += 0.1f;
-                                       break;
-                               case Key.F4:
-                                       if (camera.Type == Camera.CamType.FirstPerson)
-                                               camera.Type = Camera.CamType.LookAt;
-                                       else
-                                               camera.Type = Camera.CamType.FirstPerson;
-                                       Console.WriteLine ($"camera type = {camera.Type}");
-                                       break;
-                               case Key.KeypadAdd:
-                                       curModelIndex++;
-                                       if (curModelIndex >= modelPathes.Length)
-                                               curModelIndex = 0;
-                                       reloadModel = true;
-                                       break;
-                               case Key.KeypadSubtract:
-                                       curModelIndex--;
-                                       if (curModelIndex < 0)
-                                               curModelIndex = modelPathes.Length -1;
-                                       reloadModel = true;
-                                       break;
-                               default:
-                                       base.onKeyDown (key, scanCode, modifiers);
-                                       return;
-                       }
-                       updateViewRequested = true;
-               }
-               protected override void onKeyUp (Key key, int scanCode, Modifier modifiers) {
-                       if (crow.ProcessKeyUp ((Crow.Key)key))
-                               return;
-               }
-               protected override void onChar (CodePoint cp) {
-                       if (crow.ProcessKeyPress (cp.ToChar ()))
-                               return;
-               }
-               #endregion
-
-               protected override void Dispose (bool disposing) {
-                       if (disposing) {
-                               if (!isDisposed) {
-                                       renderer.Dispose ();
-                                       statPool.Dispose ();
-                                       timestampQPool.Dispose ();
-                                       dbgRepport?.Dispose ();
-                               }
-                       }
-
-                       base.Dispose (disposing);
-               }
-       }
-}
index 1e32c50a70afeb30006302f4217cb25e8bf4fd88..4d4d044a515897664d30bbd9441925bb3ed5e72c 100644 (file)
@@ -18,11 +18,11 @@ namespace deferred {
                static void Main (string[] args) {
 #if DEBUG
                        Instance.VALIDATION = true;
-                       Instance.RENDER_DOC_CAPTURE = true;
+                       Instance.RENDER_DOC_CAPTURE = false;
 #endif
                        SwapChain.PREFERED_FORMAT = VkFormat.B8g8r8a8Srgb;
                        DeferredPbrRenderer.TEXTURE_ARRAY = true;
-                       DeferredPbrRenderer.NUM_SAMPLES = VkSampleCountFlags.SampleCount8;
+                       DeferredPbrRenderer.NUM_SAMPLES = VkSampleCountFlags.SampleCount1;
                        DeferredPbrRenderer.HDR_FORMAT = VkFormat.R32g32b32a32Sfloat;
                        DeferredPbrRenderer.MRT_FORMAT = VkFormat.R32g32b32a32Sfloat;
 
@@ -37,9 +37,6 @@ namespace deferred {
                        Ext.I.VK_EXT_debug_utils,
                };
 
-               public override string[] EnabledDeviceExtensions => new string[] {
-                       Ext.D.VK_KHR_swapchain,
-               };
 
                protected override void configureEnabledFeatures (VkPhysicalDeviceFeatures available_features, ref VkPhysicalDeviceFeatures enabled_features) {
                        base.configureEnabledFeatures (available_features, ref enabled_features);
@@ -69,7 +66,7 @@ namespace deferred {
                                //Utils.DataDirectory + "models/Box.gltf",
                                //Utils.DataDirectory + "models/cubeOnPlane.glb",
                                //Utils.DataDirectory + "models/shadow.glb",
-                               Utils.DataDirectory + "models/cube.gltf",
+                               //Utils.DataDirectory + "models/cube.gltf",
                                Utils.DataDirectory + "models/DamagedHelmet/glTF/DamagedHelmet.gltf",
                                //Utils.DataDirectory + "models/shadow.glb",
                                Utils.DataDirectory + "models/Hubble.glb",
diff --git a/samples/deferred/mainShadow.cs b/samples/deferred/mainShadow.cs
deleted file mode 100644 (file)
index 0bc3103..0000000
+++ /dev/null
@@ -1,415 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Numerics;
-using System.Runtime.InteropServices;
-using Glfw;
-using VK;
-using CVKL;
-
-namespace deferredShadow {
-       class Program : VkWindow{       
-               static void Main (string[] args) {
-                       using (Program vke = new Program ()) {
-                               vke.Run ();
-                       }
-               }
-
-               VkSampleCountFlags samples = VkSampleCountFlags.SampleCount1;
-
-               public struct Matrices {
-                       public Matrix4x4 projection;
-                       public Matrix4x4 view;
-                       public Matrix4x4 model;
-                       public Vector4 lightPos;
-                       public float gamma;
-                       public float exposure;
-               }
-
-               public Matrices matrices = new Matrices {
-                       lightPos = new Vector4 (1.0f, 0.0f, 0.0f, 1.0f),
-                       gamma = 1.0f,
-                       exposure = 2.0f,
-               };
-
-               const uint SHADOW_MAP_SIZE = 4096;
-
-#if DEBUG
-               PipelineStatisticsQueryPool statPool;
-               TimestampQueryPool timestampQPool;
-               ulong[] results;
-#endif
-
-               protected override void configureEnabledFeatures (ref VkPhysicalDeviceFeatures features) {
-                       base.configureEnabledFeatures (ref features);
-#if DEBUG
-                       features.pipelineStatisticsQuery = true;
-#endif
-               }
-
-               Program () : base(true) {
-                       //camera.Model = Matrix4x4.CreateRotationX (Utils.DegreesToRadians (-90)) * Matrix4x4.CreateRotationY (Utils.DegreesToRadians (180));
-                       //camera.SetRotation (-0.1f,-0.4f);
-                       camera.SetPosition (0, 0, -3);
-
-                       init ();
-
-#if DEBUG
-                       statPool = new PipelineStatisticsQueryPool (dev,
-                               VkQueryPipelineStatisticFlags.InputAssemblyVertices |
-                               VkQueryPipelineStatisticFlags.InputAssemblyPrimitives |
-                               VkQueryPipelineStatisticFlags.ClippingInvocations |
-                               VkQueryPipelineStatisticFlags.ClippingPrimitives |
-                               VkQueryPipelineStatisticFlags.FragmentShaderInvocations);
-
-                       timestampQPool = new TimestampQueryPool (dev);
-#endif
-               }
-
-               Framebuffer[] frameBuffers;
-               Image gbColorRough, gbEmitMetal, gbN, gbPos;
-
-               DescriptorPool descriptorPool;
-               DescriptorSetLayout descLayoutMain, descLayoutModelTextures, descLayoutGBuff;
-               DescriptorSet dsMain, dsGBuff;
-
-               Pipeline gBuffPipeline, composePipeline;
-
-               HostBuffer uboMats;
-
-               RenderPass renderPass;
-
-               Model model;
-               EnvironmentCube envCube;
-
-               DebugDrawPipeline debugDraw;
-               Framebuffer[] debugFB;
-
-               void init () {
-                       VkFormat depthFormat = dev.GetSuitableDepthFormat ();
-                       renderPass = new RenderPass (dev);
-
-                       renderPass.AddAttachment (swapChain.ColorFormat, VkImageLayout.ColorAttachmentOptimal, VkSampleCountFlags.SampleCount1);
-                       renderPass.AddAttachment (depthFormat, VkImageLayout.DepthStencilAttachmentOptimal, samples);
-                       renderPass.AddAttachment (VkFormat.R8g8b8a8Unorm, VkImageLayout.ColorAttachmentOptimal);
-                       renderPass.AddAttachment (VkFormat.R8g8b8a8Unorm, VkImageLayout.ColorAttachmentOptimal);
-                       renderPass.AddAttachment (VkFormat.R16g16b16a16Sfloat, VkImageLayout.ColorAttachmentOptimal);
-                       renderPass.AddAttachment (VkFormat.R16g16b16a16Sfloat, VkImageLayout.ColorAttachmentOptimal);
-                       //renderPass.AddAttachment (VkFormat.R16g16b16a16Sfloat, VkImageLayout.DepthStencilReadOnlyOptimal);
-
-                       renderPass.ClearValues.Add (new VkClearValue { color = new VkClearColorValue (0.0f, 0.0f, 0.0f) });
-               renderPass.ClearValues.Add (new VkClearValue { depthStencil = new VkClearDepthStencilValue (1.0f, 0) });
-                       renderPass.ClearValues.Add (new VkClearValue { color = new VkClearColorValue (0.0f, 0.0f, 0.0f) });
-                       renderPass.ClearValues.Add (new VkClearValue { color = new VkClearColorValue (0.0f, 0.0f, 0.0f) });
-                       renderPass.ClearValues.Add (new VkClearValue { color = new VkClearColorValue (0.0f, 0.0f, 0.0f) });
-                       renderPass.ClearValues.Add (new VkClearValue { color = new VkClearColorValue (0.0f, 0.0f, 0.0f) });
-
-                       SubPass[] subpass = { new SubPass (), new SubPass (), new SubPass() };
-                       subpass[0].AddColorReference (  new VkAttachmentReference (2, VkImageLayout.ColorAttachmentOptimal),
-                                                                       new VkAttachmentReference (3, VkImageLayout.ColorAttachmentOptimal),
-                                                                       new VkAttachmentReference (4, VkImageLayout.ColorAttachmentOptimal),
-                                                                       new VkAttachmentReference (5, VkImageLayout.ColorAttachmentOptimal));
-                       subpass[0].SetDepthReference (1, VkImageLayout.DepthStencilAttachmentOptimal);
-
-                       subpass[1].AddColorReference (0, VkImageLayout.ColorAttachmentOptimal);
-                       subpass[1].AddInputReference (  new VkAttachmentReference (2, VkImageLayout.ShaderReadOnlyOptimal),
-                                                                       new VkAttachmentReference (3, VkImageLayout.ShaderReadOnlyOptimal),
-                                                                       new VkAttachmentReference (4, VkImageLayout.ShaderReadOnlyOptimal),
-                                                                       new VkAttachmentReference (5, VkImageLayout.ShaderReadOnlyOptimal));
-                       renderPass.AddSubpass (subpass);
-
-                       renderPass.AddDependency (Vk.SubpassExternal, 0,
-                VkPipelineStageFlags.BottomOfPipe, VkPipelineStageFlags.ColorAttachmentOutput,
-                VkAccessFlags.MemoryRead, VkAccessFlags.ColorAttachmentRead | VkAccessFlags.ColorAttachmentWrite);
-                       renderPass.AddDependency (0, 1,
-                VkPipelineStageFlags.ColorAttachmentOutput, VkPipelineStageFlags.FragmentShader,
-                VkAccessFlags.ColorAttachmentWrite, VkAccessFlags.ShaderRead);
-               renderPass.AddDependency (1, Vk.SubpassExternal,
-                VkPipelineStageFlags.ColorAttachmentOutput, VkPipelineStageFlags.BottomOfPipe,
-                VkAccessFlags.ColorAttachmentRead | VkAccessFlags.ColorAttachmentWrite, VkAccessFlags.MemoryRead);
-
-                        
-                       descriptorPool = new DescriptorPool (dev, 3,
-                               new VkDescriptorPoolSize (VkDescriptorType.UniformBuffer, 2),
-                               new VkDescriptorPoolSize (VkDescriptorType.CombinedImageSampler, 3),
-                               new VkDescriptorPoolSize (VkDescriptorType.InputAttachment, 4)
-                       );
-
-                       descLayoutMain = new DescriptorSetLayout (dev,
-                               new VkDescriptorSetLayoutBinding (0, VkShaderStageFlags.Vertex | VkShaderStageFlags.Fragment, VkDescriptorType.UniformBuffer),
-                               new VkDescriptorSetLayoutBinding (1, VkShaderStageFlags.Fragment, VkDescriptorType.CombinedImageSampler),
-                               new VkDescriptorSetLayoutBinding (2, VkShaderStageFlags.Fragment, VkDescriptorType.CombinedImageSampler),
-                               new VkDescriptorSetLayoutBinding (3, VkShaderStageFlags.Fragment, VkDescriptorType.CombinedImageSampler));
-
-                       descLayoutModelTextures = new DescriptorSetLayout (dev,
-                               new VkDescriptorSetLayoutBinding (0, VkShaderStageFlags.Fragment, VkDescriptorType.CombinedImageSampler),
-                               new VkDescriptorSetLayoutBinding (1, VkShaderStageFlags.Fragment, VkDescriptorType.CombinedImageSampler),
-                               new VkDescriptorSetLayoutBinding (2, VkShaderStageFlags.Fragment, VkDescriptorType.CombinedImageSampler),
-                               new VkDescriptorSetLayoutBinding (3, VkShaderStageFlags.Fragment, VkDescriptorType.CombinedImageSampler),
-                               new VkDescriptorSetLayoutBinding (4, VkShaderStageFlags.Fragment, VkDescriptorType.CombinedImageSampler)
-                       );
-
-                       descLayoutGBuff = new DescriptorSetLayout (dev,
-                               new VkDescriptorSetLayoutBinding (0, VkShaderStageFlags.Fragment, VkDescriptorType.InputAttachment),
-                               new VkDescriptorSetLayoutBinding (1, VkShaderStageFlags.Fragment, VkDescriptorType.InputAttachment),
-                               new VkDescriptorSetLayoutBinding (2, VkShaderStageFlags.Fragment, VkDescriptorType.InputAttachment),
-                               new VkDescriptorSetLayoutBinding (3, VkShaderStageFlags.Fragment, VkDescriptorType.InputAttachment));
-
-                       dsMain = descriptorPool.Allocate (descLayoutMain);
-                       dsGBuff = descriptorPool.Allocate (descLayoutGBuff);
-
-                       GraphicPipelineConfig cfg = GraphicPipelineConfig.CreateDefault (VkPrimitiveTopology.TriangleList, samples);
-                       cfg.Layout = new PipelineLayout (dev, descLayoutMain, descLayoutModelTextures, descLayoutGBuff);
-                       cfg.Layout.AddPushConstants (
-                               new VkPushConstantRange (VkShaderStageFlags.Vertex, (uint)Marshal.SizeOf<Matrix4x4> ()),
-                               new VkPushConstantRange (VkShaderStageFlags.Fragment, (uint)Marshal.SizeOf<Model.PbrMaterial> (), 64)
-                       );
-                       cfg.RenderPass = renderPass;
-                       cfg.blendAttachments.Add (new VkPipelineColorBlendAttachmentState (false));
-                       cfg.blendAttachments.Add (new VkPipelineColorBlendAttachmentState (false));
-                       cfg.blendAttachments.Add (new VkPipelineColorBlendAttachmentState (false));
-
-                       cfg.AddVertexBinding<Model.Vertex> (0);
-                       cfg.SetVertexAttributes (0, VkFormat.R32g32b32Sfloat, VkFormat.R32g32b32Sfloat, VkFormat.R32g32Sfloat);
-                       cfg.AddShader (VkShaderStageFlags.Vertex, "shaders/pbrtest.vert.spv");
-                       cfg.AddShader (VkShaderStageFlags.Fragment, "shaders/GBuffPbr.frag.spv");
-
-                       gBuffPipeline = new GraphicPipeline (cfg);
-                       cfg.blendAttachments.Clear ();
-                       cfg.blendAttachments.Add (new VkPipelineColorBlendAttachmentState (false));
-                       cfg.ResetShadersAndVerticesInfos ();
-                       cfg.SubpassIndex = 1;
-                       cfg.Layout = gBuffPipeline.Layout;
-                       cfg.depthStencilState.depthTestEnable = false;
-                       cfg.depthStencilState.depthWriteEnable = false;
-                       cfg.AddShader (VkShaderStageFlags.Vertex, "shaders/FullScreenQuad.vert.spv");
-                       cfg.AddShader (VkShaderStageFlags.Fragment, "shaders/pbrtest.frag.spv");
-                       composePipeline = new GraphicPipeline (cfg);
-
-                       envCube = new EnvironmentCube (presentQueue, renderPass);
-
-                       uboMats = new HostBuffer (dev, VkBufferUsageFlags.UniformBuffer, (ulong)Marshal.SizeOf<Matrices> () * 2);
-                       uboMats.Map ();//permanent map
-
-                       DescriptorSetWrites uboUpdate = new DescriptorSetWrites (descLayoutMain);
-                       uboUpdate.Write (dev, dsMain, uboMats.Descriptor,
-                               envCube.lutBrdf.Descriptor,
-                               envCube.irradianceCube.Descriptor,
-                               envCube.prefilterCube.Descriptor);
-                       uboMats.Descriptor.offset = (ulong)Marshal.SizeOf<Matrices> ();
-                       envCube.WriteDesc (uboMats.Descriptor);
-#if DEBUG
-                       debugDraw = new DebugDrawPipeline (dev, descLayoutMain, swapChain.ColorFormat);
-                       debugDraw.AddLine (Vector3.Zero, new Vector3(matrices.lightPos.X,matrices.lightPos.Y,matrices.lightPos.Z)*3, 1, 1, 1);
-                       debugDraw.AddLine (Vector3.Zero, Vector3.UnitX, 1, 0, 0);
-                       debugDraw.AddLine (Vector3.Zero, Vector3.UnitY, 0, 1, 0);
-                       debugDraw.AddLine (Vector3.Zero, Vector3.UnitZ, 0, 0, 1);
-#endif
-
-
-                       model = new Model (presentQueue, "../data/models/DamagedHelmet/glTF/DamagedHelmet.gltf");
-                       //model = new Model (presentQueue, "../data/models/chess.gltf");
-                       //model = new Model (presentQueue, "../data/models/Sponza/glTF/Sponza.gltf");
-                       //model = new Model (dev, presentQueue, "../data/models/icosphere.gltf");
-                       //model = new Model (dev, presentQueue, cmdPool, "../data/models/cube.gltf");
-                       model.WriteMaterialsDescriptorSets (descLayoutModelTextures,
-                               VK.AttachmentType.Color,
-                               VK.AttachmentType.Normal,
-                               VK.AttachmentType.AmbientOcclusion,
-                               VK.AttachmentType.PhysicalProps,
-                               VK.AttachmentType.Emissive);                            
-               }
-
-               void buildCommandBuffers () {
-                       for (int i = 0; i < swapChain.ImageCount; ++i) {
-                               cmds[i]?.Free ();
-                               cmds[i] = cmdPool.AllocateCommandBuffer ();
-                               cmds[i].Start ();
-
-#if DEBUG
-                               statPool.Begin (cmds[i]);
-                               recordDraw (cmds[i], frameBuffers[i]);
-                               statPool.End (cmds[i]);
-
-                               debugDraw.RecordDraw (cmds[i], debugFB[i], camera);
-#else
-                               recordDraw (cmds[i], frameBuffers[i]);
-#endif
-
-                               cmds[i].End ();
-                       }
-               }
-               void recordDraw (CommandBuffer cmd, Framebuffer fb) {
-                       renderPass.Begin (cmd, fb);
-
-                       cmd.SetViewport (fb.Width, fb.Height);
-                       cmd.SetScissor (fb.Width, fb.Height);
-
-                       cmd.BindDescriptorSet (gBuffPipeline.Layout, dsMain);
-                       gBuffPipeline.Bind (cmd);
-                       model.Bind (cmd);
-                       model.DrawAll (cmd, gBuffPipeline.Layout);
-
-                       renderPass.BeginSubPass (cmd);
-
-                       cmd.BindDescriptorSet (composePipeline.Layout, dsGBuff, 2);
-                       composePipeline.Bind (cmd);
-
-                       cmd.Draw (3, 1, 0, 0);
-
-                       renderPass.End (cmd);
-               }
-
-#region update
-               void updateMatrices () {
-                       camera.AspectRatio = (float)swapChain.Width / swapChain.Height;
-
-                       matrices.projection = camera.Projection;
-                       matrices.view = camera.View;
-                       matrices.model = camera.Model;
-                       uboMats.Update (matrices, (uint)Marshal.SizeOf<Matrices> ());
-                       matrices.view *= Matrix4x4.CreateTranslation (-matrices.view.Translation);
-                       matrices.model = Matrix4x4.Identity;
-                       uboMats.Update (matrices, (uint)Marshal.SizeOf<Matrices> (), (uint)Marshal.SizeOf<Matrices> ());
-               }
-
-               public override void UpdateView () {
-                       updateMatrices ();
-                       updateViewRequested = false;
-               }
-               public override void Update () {
-#if DEBUG
-                       results = statPool.GetResults ();
-#endif
-               }
-#endregion
-
-
-
-               void createGBuff () {
-                       gbColorRough?.Dispose ();
-                       gbEmitMetal?.Dispose ();
-                       gbN?.Dispose ();
-                       gbPos?.Dispose ();
-
-                       gbColorRough = new Image (dev, VkFormat.R8g8b8a8Unorm, VkImageUsageFlags.InputAttachment | VkImageUsageFlags.ColorAttachment, VkMemoryPropertyFlags.DeviceLocal, swapChain.Width, swapChain.Height);
-                       gbEmitMetal = new Image (dev, VkFormat.R8g8b8a8Unorm, VkImageUsageFlags.InputAttachment | VkImageUsageFlags.ColorAttachment, VkMemoryPropertyFlags.DeviceLocal, swapChain.Width, swapChain.Height);
-                       gbN = new Image (dev, VkFormat.R16g16b16a16Sfloat, VkImageUsageFlags.InputAttachment | VkImageUsageFlags.ColorAttachment, VkMemoryPropertyFlags.DeviceLocal, swapChain.Width, swapChain.Height);
-                       gbPos = new Image (dev, VkFormat.R16g16b16a16Sfloat, VkImageUsageFlags.InputAttachment | VkImageUsageFlags.ColorAttachment, VkMemoryPropertyFlags.DeviceLocal, swapChain.Width, swapChain.Height);
-
-                       gbColorRough.CreateView ();
-                       gbColorRough.CreateSampler ();
-                       gbEmitMetal.CreateView ();
-                       gbEmitMetal.CreateSampler ();
-                       gbN.CreateView ();
-                       gbN.CreateSampler ();
-                       gbPos.CreateView ();
-                       gbPos.CreateSampler ();
-
-                       DescriptorSetWrites uboUpdate = new DescriptorSetWrites (descLayoutGBuff);
-                       uboUpdate.Write (dev, dsGBuff,  gbColorRough.Descriptor,
-                                                                               gbEmitMetal.Descriptor,
-                                                                               gbN.Descriptor,
-                                                                               gbPos.Descriptor);
-                       gbColorRough.SetName ("GBuffColorRough");
-                       gbEmitMetal.SetName ("GBuffEmitMetal");
-                       gbN.SetName ("GBuffN");
-                       gbPos.SetName ("GBuffPos");
-               }
-
-               protected override void OnResize () {
-                       updateMatrices ();
-
-                       if (frameBuffers != null)
-                               for (int i = 0; i < swapChain.ImageCount; ++i)
-                                       frameBuffers[i]?.Dispose ();
-#if DEBUG
-                       if (debugFB != null)
-                               for (int i = 0; i < swapChain.ImageCount; ++i)
-                                       debugFB[i]?.Dispose ();
-#endif
-
-                       createGBuff ();
-
-                       frameBuffers = new Framebuffer[swapChain.ImageCount];
-                       debugFB = new Framebuffer[swapChain.ImageCount];
-
-                       for (int i = 0; i < swapChain.ImageCount; ++i) {
-                               frameBuffers[i] = new Framebuffer (renderPass, swapChain.Width, swapChain.Height, new Image[] {
-                                       swapChain.images[i], null, gbColorRough, gbEmitMetal, gbN, gbPos});
-#if DEBUG
-                               debugFB[i] = new Framebuffer (debugDraw.RenderPass, swapChain.Width, swapChain.Height,(debugDraw.Samples == VkSampleCountFlags.SampleCount1)
-                                       ? new Image[] { swapChain.images[i] } : new Image[] { null, swapChain.images[i] });
-                               debugFB[i].SetName ("main FB " + i);
-#endif
-                       }
-
-                       buildCommandBuffers ();
-               }
-
-
-               #region Mouse and keyboard
-               protected override void onKeyDown (Key key, int scanCode, Modifier modifiers) {
-                       switch (key) {
-                               case Key.F1:
-                                       if (modifiers.HasFlag (Modifier.Shift))
-                                               matrices.exposure -= 0.3f;
-                                       else
-                                               matrices.exposure += 0.3f;
-                                       break;
-                               case Key.F2:
-                                       if (modifiers.HasFlag (Modifier.Shift))
-                                               matrices.gamma -= 0.1f;
-                                       else
-                                               matrices.gamma += 0.1f;
-                                       break;
-                               case Key.F3:
-                                       if (camera.Type == Camera.CamType.FirstPerson)
-                                               camera.Type = Camera.CamType.LookAt;
-                                       else
-                                               camera.Type = Camera.CamType.FirstPerson;
-                                       Console.WriteLine ($"camera type = {camera.Type}");
-                                       break;
-                               default:
-                                       base.onKeyDown (key, scanCode, modifiers);
-                                       return;
-                       }
-                       updateViewRequested = true;
-               }
-#endregion
-
-               protected override void Dispose (bool disposing) {
-                       if (disposing) {
-                               if (!isDisposed) {
-                                       dev.WaitIdle ();
-                                       for (int i = 0; i < swapChain.ImageCount; ++i)
-                                               frameBuffers[i]?.Dispose ();
-
-                                       gbColorRough.Dispose ();
-                                       gbEmitMetal.Dispose ();
-                                       gbN.Dispose ();
-                                       gbPos.Dispose ();
-
-                                       gBuffPipeline.Dispose ();
-                                       composePipeline.Dispose ();
-
-                                       descLayoutMain.Dispose ();
-                                       descLayoutModelTextures.Dispose ();
-                                       descLayoutGBuff.Dispose ();
-
-                                       uboMats.Dispose ();
-                                       model.Dispose ();
-                                       envCube.Dispose ();
-
-                                       descriptorPool.Dispose ();
-#if DEBUG
-                                       debugDraw.Dispose ();
-                                       timestampQPool?.Dispose ();
-                                       statPool?.Dispose ();
-#endif
-                               }
-                       }
-
-                       base.Dispose (disposing);
-               }
-       }
-}
diff --git a/samples/deferred/mainWithDebugDrawer.cs b/samples/deferred/mainWithDebugDrawer.cs
deleted file mode 100644 (file)
index f95ed0a..0000000
+++ /dev/null
@@ -1,412 +0,0 @@
-using System;
-using System.Numerics;
-using System.Runtime.InteropServices;
-using Glfw;
-using VK;
-using CVKL;
-
-namespace deferredDebug {
-       class Program : VkWindow{       
-               static void Main (string[] args) {
-                       using (Program vke = new Program ()) {
-                               vke.Run ();
-                       }
-               }
-
-               VkSampleCountFlags samples = VkSampleCountFlags.SampleCount1;
-
-               public struct Matrices {
-                       public Matrix4x4 projection;
-                       public Matrix4x4 view;
-                       public Matrix4x4 model;
-                       public Vector4 lightPos;
-                       public float gamma;
-                       public float exposure;
-               }
-
-               public Matrices matrices = new Matrices {
-                       lightPos = new Vector4 (1.0f, 0, 0, 1.0f),
-                       gamma = 1.0f,
-                       exposure = 2.0f,
-               };
-
-#if DEBUG
-               PipelineStatisticsQueryPool statPool;
-               TimestampQueryPool timestampQPool;
-               ulong[] results;
-#endif
-
-               protected override void configureEnabledFeatures (ref VkPhysicalDeviceFeatures features) {
-                       base.configureEnabledFeatures (ref features);
-#if DEBUG
-                       features.pipelineStatisticsQuery = true;
-#endif
-               }
-
-               Program () : base(true) {
-                       camera.Model = Matrix4x4.CreateRotationX (Utils.DegreesToRadians (-90)) * Matrix4x4.CreateRotationY (Utils.DegreesToRadians (180));
-                       camera.SetRotation (-0.1f,-0.4f);
-                       camera.SetPosition (0, 0, -3);
-
-                       init ();
-
-#if DEBUG
-                       statPool = new PipelineStatisticsQueryPool (dev,
-                               VkQueryPipelineStatisticFlags.InputAssemblyVertices |
-                               VkQueryPipelineStatisticFlags.InputAssemblyPrimitives |
-                               VkQueryPipelineStatisticFlags.ClippingInvocations |
-                               VkQueryPipelineStatisticFlags.ClippingPrimitives |
-                               VkQueryPipelineStatisticFlags.FragmentShaderInvocations);
-
-                       timestampQPool = new TimestampQueryPool (dev);
-#endif
-               }
-
-               Framebuffer[] frameBuffers;
-               Image gbColorRough, gbEmitMetal, gbN, gbPos;
-
-               DescriptorPool descriptorPool;
-               DescriptorSetLayout descLayoutMain, descLayoutModelTextures, descLayoutGBuff;
-               DescriptorSet dsMain, dsGBuff;
-
-               Pipeline gBuffPipeline, composePipeline;
-
-               HostBuffer uboMats;
-
-               RenderPass renderPass;
-
-               Model model;
-               EnvironmentCube envCube;
-
-               DebugDrawPipeline debugDraw;
-               Framebuffer[] debugFB;
-
-               void init () {
-                       renderPass = new RenderPass (dev);
-                       renderPass.AddAttachment (swapChain.ColorFormat, VkImageLayout.ColorAttachmentOptimal, VkSampleCountFlags.SampleCount1);
-                       renderPass.AddAttachment (dev.GetSuitableDepthFormat(), VkImageLayout.DepthStencilAttachmentOptimal, samples);
-                       renderPass.AddAttachment (VkFormat.R8g8b8a8Unorm, VkImageLayout.ColorAttachmentOptimal);
-                       renderPass.AddAttachment (VkFormat.R8g8b8a8Unorm, VkImageLayout.ColorAttachmentOptimal);
-                       renderPass.AddAttachment (VkFormat.R16g16b16a16Sfloat, VkImageLayout.ColorAttachmentOptimal);
-                       renderPass.AddAttachment (VkFormat.R16g16b16a16Sfloat, VkImageLayout.ColorAttachmentOptimal);
-
-                       renderPass.ClearValues.Add (new VkClearValue { color = new VkClearColorValue (0.0f, 0.0f, 0.0f) });
-               renderPass.ClearValues.Add (new VkClearValue { depthStencil = new VkClearDepthStencilValue (1.0f, 0) });
-                       renderPass.ClearValues.Add (new VkClearValue { color = new VkClearColorValue (0.0f, 0.0f, 0.0f) });
-                       renderPass.ClearValues.Add (new VkClearValue { color = new VkClearColorValue (0.0f, 0.0f, 0.0f) });
-                       renderPass.ClearValues.Add (new VkClearValue { color = new VkClearColorValue (0.0f, 0.0f, 0.0f) });
-                       renderPass.ClearValues.Add (new VkClearValue { color = new VkClearColorValue (0.0f, 0.0f, 0.0f) });
-
-                       SubPass[] subpass = { new SubPass (), new SubPass () };
-                       subpass[0].AddColorReference (  new VkAttachmentReference (2, VkImageLayout.ColorAttachmentOptimal),
-                                                                       new VkAttachmentReference (3, VkImageLayout.ColorAttachmentOptimal),
-                                                                       new VkAttachmentReference (4, VkImageLayout.ColorAttachmentOptimal),
-                                                                       new VkAttachmentReference (5, VkImageLayout.ColorAttachmentOptimal));
-                       subpass[0].SetDepthReference (1, VkImageLayout.DepthStencilAttachmentOptimal);
-
-                       subpass[1].AddColorReference (0, VkImageLayout.ColorAttachmentOptimal);
-                       subpass[1].AddInputReference (  new VkAttachmentReference (2, VkImageLayout.ShaderReadOnlyOptimal),
-                                                                       new VkAttachmentReference (3, VkImageLayout.ShaderReadOnlyOptimal),
-                                                                       new VkAttachmentReference (4, VkImageLayout.ShaderReadOnlyOptimal),
-                                                                       new VkAttachmentReference (5, VkImageLayout.ShaderReadOnlyOptimal));
-                       renderPass.AddSubpass (subpass);
-
-                       renderPass.AddDependency (Vk.SubpassExternal, 0,
-                VkPipelineStageFlags.BottomOfPipe, VkPipelineStageFlags.ColorAttachmentOutput,
-                VkAccessFlags.MemoryRead, VkAccessFlags.ColorAttachmentRead | VkAccessFlags.ColorAttachmentWrite);
-                       renderPass.AddDependency (0, 1,
-                VkPipelineStageFlags.ColorAttachmentOutput, VkPipelineStageFlags.FragmentShader,
-                VkAccessFlags.ColorAttachmentWrite, VkAccessFlags.ShaderRead);
-               renderPass.AddDependency (1, Vk.SubpassExternal,
-                VkPipelineStageFlags.ColorAttachmentOutput, VkPipelineStageFlags.BottomOfPipe,
-                VkAccessFlags.ColorAttachmentRead | VkAccessFlags.ColorAttachmentWrite, VkAccessFlags.MemoryRead);
-
-                        
-                       descriptorPool = new DescriptorPool (dev, 3,
-                               new VkDescriptorPoolSize (VkDescriptorType.UniformBuffer, 2),
-                               new VkDescriptorPoolSize (VkDescriptorType.CombinedImageSampler, 3),
-                               new VkDescriptorPoolSize (VkDescriptorType.InputAttachment, 4)
-                       );
-
-                       descLayoutMain = new DescriptorSetLayout (dev,
-                               new VkDescriptorSetLayoutBinding (0, VkShaderStageFlags.Vertex | VkShaderStageFlags.Fragment, VkDescriptorType.UniformBuffer),
-                               new VkDescriptorSetLayoutBinding (1, VkShaderStageFlags.Fragment, VkDescriptorType.CombinedImageSampler),
-                               new VkDescriptorSetLayoutBinding (2, VkShaderStageFlags.Fragment, VkDescriptorType.CombinedImageSampler),
-                               new VkDescriptorSetLayoutBinding (3, VkShaderStageFlags.Fragment, VkDescriptorType.CombinedImageSampler));
-
-                       descLayoutModelTextures = new DescriptorSetLayout (dev,
-                               new VkDescriptorSetLayoutBinding (0, VkShaderStageFlags.Fragment, VkDescriptorType.CombinedImageSampler),
-                               new VkDescriptorSetLayoutBinding (1, VkShaderStageFlags.Fragment, VkDescriptorType.CombinedImageSampler),
-                               new VkDescriptorSetLayoutBinding (2, VkShaderStageFlags.Fragment, VkDescriptorType.CombinedImageSampler),
-                               new VkDescriptorSetLayoutBinding (3, VkShaderStageFlags.Fragment, VkDescriptorType.CombinedImageSampler),
-                               new VkDescriptorSetLayoutBinding (4, VkShaderStageFlags.Fragment, VkDescriptorType.CombinedImageSampler)
-                       );
-
-                       descLayoutGBuff = new DescriptorSetLayout (dev,
-                               new VkDescriptorSetLayoutBinding (0, VkShaderStageFlags.Fragment, VkDescriptorType.InputAttachment),
-                               new VkDescriptorSetLayoutBinding (1, VkShaderStageFlags.Fragment, VkDescriptorType.InputAttachment),
-                               new VkDescriptorSetLayoutBinding (2, VkShaderStageFlags.Fragment, VkDescriptorType.InputAttachment),
-                               new VkDescriptorSetLayoutBinding (3, VkShaderStageFlags.Fragment, VkDescriptorType.InputAttachment));
-
-                       dsMain = descriptorPool.Allocate (descLayoutMain);
-                       dsGBuff = descriptorPool.Allocate (descLayoutGBuff);
-
-                       GraphicPipelineConfig cfg = GraphicPipelineConfig.CreateDefault (VkPrimitiveTopology.TriangleList, samples);
-                       cfg.Layout = new PipelineLayout (dev, descLayoutMain, descLayoutModelTextures, descLayoutGBuff);
-                       cfg.Layout.AddPushConstants (
-                               new VkPushConstantRange (VkShaderStageFlags.Vertex, (uint)Marshal.SizeOf<Matrix4x4> ()),
-                               new VkPushConstantRange (VkShaderStageFlags.Fragment, sizeof(int), 64)
-                       );
-                       cfg.RenderPass = renderPass;
-                       cfg.blendAttachments.Add (new VkPipelineColorBlendAttachmentState (false));
-                       cfg.blendAttachments.Add (new VkPipelineColorBlendAttachmentState (false));
-                       cfg.blendAttachments.Add (new VkPipelineColorBlendAttachmentState (false));
-
-                       cfg.AddVertexBinding<Model.Vertex> (0);
-                       cfg.SetVertexAttributes (0, VkFormat.R32g32b32Sfloat, VkFormat.R32g32b32Sfloat, VkFormat.R32g32Sfloat);
-                       cfg.AddShader (VkShaderStageFlags.Vertex, "shaders/pbrtest.vert.spv");
-                       cfg.AddShader (VkShaderStageFlags.Fragment, "shaders/GBuffPbr.frag.spv");
-
-                       gBuffPipeline = new GraphicPipeline (cfg);
-                       cfg.blendAttachments.Clear ();
-                       cfg.blendAttachments.Add (new VkPipelineColorBlendAttachmentState (false));
-                       cfg.ResetShadersAndVerticesInfos ();
-                       cfg.SubpassIndex = 1;
-                       cfg.Layout = gBuffPipeline.Layout;
-                       cfg.depthStencilState.depthTestEnable = false;
-                       cfg.depthStencilState.depthWriteEnable = false;
-                       cfg.AddShader (VkShaderStageFlags.Vertex, "shaders/FullScreenQuad.vert.spv");
-                       cfg.AddShader (VkShaderStageFlags.Fragment, "shaders/pbrtest.frag.spv");
-                       composePipeline = new GraphicPipeline (cfg);
-
-                       envCube = new EnvironmentCube (presentQueue, renderPass);
-
-                       uboMats = new HostBuffer (dev, VkBufferUsageFlags.UniformBuffer, (ulong)Marshal.SizeOf<Matrices> () * 2);
-                       uboMats.Map ();//permanent map
-
-                       DescriptorSetWrites uboUpdate = new DescriptorSetWrites (descLayoutMain);
-                       uboUpdate.Write (dev, dsMain, uboMats.Descriptor,
-                               envCube.lutBrdf.Descriptor,
-                               envCube.irradianceCube.Descriptor,
-                               envCube.prefilterCube.Descriptor);
-                       uboMats.Descriptor.offset = (ulong)Marshal.SizeOf<Matrices> ();
-                       envCube.WriteDesc (uboMats.Descriptor);
-#if DEBUG
-                       debugDraw = new DebugDrawPipeline (dev, descLayoutMain, swapChain.ColorFormat);
-                       debugDraw.AddLine (Vector3.Zero, new Vector3(matrices.lightPos.X,matrices.lightPos.Y,matrices.lightPos.Z)*3, 1, 1, 1);
-                       debugDraw.AddLine (Vector3.Zero, Vector3.UnitX, 1, 0, 0);
-                       debugDraw.AddLine (Vector3.Zero, Vector3.UnitY, 0, 1, 0);
-                       debugDraw.AddLine (Vector3.Zero, Vector3.UnitZ, 0, 0, 1);
-#endif
-
-
-                       model = new Model (presentQueue, "../data/models/DamagedHelmet/glTF/DamagedHelmet.gltf");
-                       //model = new Model (presentQueue, "../data/models/chess.gltf");
-                       //model = new Model (presentQueue, "../data/models/Sponza/glTF/Sponza.gltf");
-                       //model = new Model (dev, presentQueue, "../data/models/icosphere.gltf");
-                       //model = new Model (dev, presentQueue, cmdPool, "../data/models/cube.gltf");
-                       model.WriteMaterialsDescriptorSets (descLayoutModelTextures,
-                               VK.AttachmentType.Color,
-                               VK.AttachmentType.Normal,
-                               VK.AttachmentType.AmbientOcclusion,
-                               VK.AttachmentType.PhysicalProps,
-                               VK.AttachmentType.Emissive);                            
-               }
-
-               void buildCommandBuffers () {
-                       for (int i = 0; i < swapChain.ImageCount; ++i) {
-                               cmds[i]?.Free ();
-                               cmds[i] = cmdPool.AllocateCommandBuffer ();
-                               cmds[i].Start ();
-
-#if DEBUG
-                               statPool.Begin (cmds[i]);
-                               recordDraw (cmds[i], frameBuffers[i]);
-                               statPool.End (cmds[i]);
-
-                               debugDraw.RecordDraw (cmds[i], debugFB[i], camera);
-#else
-                               recordDraw (cmds[i], frameBuffers[i]);
-#endif
-
-                               cmds[i].End ();
-                       }
-               }
-               void recordDraw (CommandBuffer cmd, Framebuffer fb) {
-                       renderPass.Begin (cmd, fb);
-
-                       cmd.SetViewport (fb.Width, fb.Height);
-                       cmd.SetScissor (fb.Width, fb.Height);
-
-                       cmd.BindDescriptorSet (gBuffPipeline.Layout, dsMain);
-                       gBuffPipeline.Bind (cmd);
-                       model.Bind (cmd);
-                       model.DrawAll (cmd, gBuffPipeline.Layout);
-
-                       renderPass.BeginSubPass (cmd);
-
-                       cmd.BindDescriptorSet (composePipeline.Layout, dsGBuff, 2);
-                       composePipeline.Bind (cmd);
-
-                       cmd.Draw (3, 1, 0, 0);
-
-                       renderPass.End (cmd);
-               }
-
-#region update
-               void updateMatrices () {
-                       camera.AspectRatio = (float)swapChain.Width / swapChain.Height;
-
-                       matrices.projection = camera.Projection;
-                       matrices.view = camera.View;
-                       matrices.model = camera.Model;
-                       uboMats.Update (matrices, (uint)Marshal.SizeOf<Matrices> ());
-                       matrices.view *= Matrix4x4.CreateTranslation (-matrices.view.Translation);
-                       matrices.model = Matrix4x4.Identity;
-                       uboMats.Update (matrices, (uint)Marshal.SizeOf<Matrices> (), (uint)Marshal.SizeOf<Matrices> ());
-               }
-
-               public override void UpdateView () {
-                       updateMatrices ();
-                       updateViewRequested = false;
-               }
-               public override void Update () {
-#if DEBUG
-                       results = statPool.GetResults ();
-#endif
-               }
-#endregion
-
-
-
-               void createGBuff () {
-                       gbColorRough?.Dispose ();
-                       gbEmitMetal?.Dispose ();
-                       gbN?.Dispose ();
-                       gbPos?.Dispose ();
-
-                       gbColorRough = new Image (dev, VkFormat.R8g8b8a8Unorm, VkImageUsageFlags.InputAttachment | VkImageUsageFlags.ColorAttachment, VkMemoryPropertyFlags.DeviceLocal, swapChain.Width, swapChain.Height);
-                       gbEmitMetal = new Image (dev, VkFormat.R8g8b8a8Unorm, VkImageUsageFlags.InputAttachment | VkImageUsageFlags.ColorAttachment, VkMemoryPropertyFlags.DeviceLocal, swapChain.Width, swapChain.Height);
-                       gbN = new Image (dev, VkFormat.R16g16b16a16Sfloat, VkImageUsageFlags.InputAttachment | VkImageUsageFlags.ColorAttachment, VkMemoryPropertyFlags.DeviceLocal, swapChain.Width, swapChain.Height);
-                       gbPos = new Image (dev, VkFormat.R16g16b16a16Sfloat, VkImageUsageFlags.InputAttachment | VkImageUsageFlags.ColorAttachment, VkMemoryPropertyFlags.DeviceLocal, swapChain.Width, swapChain.Height);
-
-                       gbColorRough.CreateView ();
-                       gbColorRough.CreateSampler ();
-                       gbEmitMetal.CreateView ();
-                       gbEmitMetal.CreateSampler ();
-                       gbN.CreateView ();
-                       gbN.CreateSampler ();
-                       gbPos.CreateView ();
-                       gbPos.CreateSampler ();
-
-                       DescriptorSetWrites uboUpdate = new DescriptorSetWrites (descLayoutGBuff);
-                       uboUpdate.Write (dev, dsGBuff,  gbColorRough.Descriptor,
-                                                                               gbEmitMetal.Descriptor,
-                                                                               gbN.Descriptor,
-                                                                               gbPos.Descriptor);
-                       gbColorRough.SetName ("GBuffColorRough");
-                       gbEmitMetal.SetName ("GBuffEmitMetal");
-                       gbN.SetName ("GBuffN");
-                       gbPos.SetName ("GBuffPos");
-               }
-
-               protected override void OnResize () {
-                       updateMatrices ();
-
-                       if (frameBuffers != null)
-                               for (int i = 0; i < swapChain.ImageCount; ++i)
-                                       frameBuffers[i]?.Dispose ();
-#if DEBUG
-                       if (debugFB != null)
-                               for (int i = 0; i < swapChain.ImageCount; ++i)
-                                       debugFB[i]?.Dispose ();
-#endif
-
-                       createGBuff ();
-
-                       frameBuffers = new Framebuffer[swapChain.ImageCount];
-                       debugFB = new Framebuffer[swapChain.ImageCount];
-
-                       for (int i = 0; i < swapChain.ImageCount; ++i) {
-                               frameBuffers[i] = new Framebuffer (renderPass, swapChain.Width, swapChain.Height, new Image[] {
-                                       swapChain.images[i], null, gbColorRough, gbEmitMetal, gbN, gbPos});
-#if DEBUG
-                               debugFB[i] = new Framebuffer (debugDraw.RenderPass, swapChain.Width, swapChain.Height,(debugDraw.Samples == VkSampleCountFlags.SampleCount1)
-                                       ? new Image[] { swapChain.images[i] } : new Image[] { null, swapChain.images[i] });
-                               debugFB[i].SetName ("main FB " + i);
-#endif
-                       }
-
-                       buildCommandBuffers ();
-               }
-
-
-               #region Mouse and keyboard
-               protected override void onKeyDown (Key key, int scanCode, Modifier modifiers) {
-                       switch (key) {
-                               case Key.F1:
-                                       if (modifiers.HasFlag (Modifier.Shift))
-                                               matrices.exposure -= 0.3f;
-                                       else
-                                               matrices.exposure += 0.3f;
-                                       break;
-                               case Key.F2:
-                                       if (modifiers.HasFlag (Modifier.Shift))
-                                               matrices.gamma -= 0.1f;
-                                       else
-                                               matrices.gamma += 0.1f;
-                                       break;
-                               case Key.F3:
-                                       if (camera.Type == Camera.CamType.FirstPerson)
-                                               camera.Type = Camera.CamType.LookAt;
-                                       else
-                                               camera.Type = Camera.CamType.FirstPerson;
-                                       Console.WriteLine ($"camera type = {camera.Type}");
-                                       break;
-                               default:
-                                       base.onKeyDown (key, scanCode, modifiers);
-                                       return;
-                       }
-                       updateViewRequested = true;
-               }
-#endregion
-
-               protected override void Dispose (bool disposing) {
-                       if (disposing) {
-                               if (!isDisposed) {
-                                       dev.WaitIdle ();
-                                       for (int i = 0; i < swapChain.ImageCount; ++i)
-                                               frameBuffers[i]?.Dispose ();
-
-                                       gbColorRough.Dispose ();
-                                       gbEmitMetal.Dispose ();
-                                       gbN.Dispose ();
-                                       gbPos.Dispose ();
-
-                                       gBuffPipeline.Dispose ();
-                                       composePipeline.Dispose ();
-
-                                       descLayoutMain.Dispose ();
-                                       descLayoutModelTextures.Dispose ();
-                                       descLayoutGBuff.Dispose ();
-
-                                       uboMats.Dispose ();
-                                       model.Dispose ();
-                                       envCube.Dispose ();
-
-                                       descriptorPool.Dispose ();
-#if DEBUG
-                                       foreach (Framebuffer fb in debugFB) 
-                                               fb.Dispose ();
-
-                                       debugDraw.Dispose ();
-                                       timestampQPool?.Dispose ();
-                                       statPool?.Dispose ();
-#endif
-                               }
-                       }
-
-                       base.Dispose (disposing);
-               }
-       }
-}
diff --git a/samples/deferred/modelWithVkvgStats.cs b/samples/deferred/modelWithVkvgStats.cs
deleted file mode 100644 (file)
index f4ea123..0000000
+++ /dev/null
@@ -1,359 +0,0 @@
-using System;
-using System.Numerics;
-using System.Runtime.InteropServices;
-using Glfw;
-using CVKL;
-using VK;
-using static CVKL.Camera;
-
-namespace modelWithVkvgStats {
-       class Program : VkWindow {
-
-               PipelineStatisticsQueryPool statPool;
-               TimestampQueryPool timestampQPool;
-
-               ulong[] results;
-
-               protected override void configureEnabledFeatures (ref VkPhysicalDeviceFeatures features) {
-                       base.configureEnabledFeatures (ref features);
-                       features.pipelineStatisticsQuery = true;
-               }
-               public struct Matrices {
-                       public Matrix4x4 projection;
-                       public Matrix4x4 view;
-                       public Matrix4x4 model;
-                       public Vector4 lightPos;
-                       public float gamma;
-                       public float exposure;
-               }
-
-               public Matrices matrices = new Matrices { 
-                       lightPos = new Vector4 (0.0f, 0.0f, -2.0f, 1.0f),
-                       gamma = 1.0f,
-                       exposure = 2.0f,
-               };
-
-               HostBuffer uboMats;
-
-               DescriptorPool descriptorPool;
-               DescriptorSetLayout descLayoutMatrix;
-               DescriptorSetLayout descLayoutTextures;
-               DescriptorSet dsMats;
-
-               GraphicPipeline pipeline;
-               GraphicPipeline uiPipeline;
-               Framebuffer[] frameBuffers;
-
-               Model model;
-
-               vkvg.Device vkvgDev;
-        vkvg.Surface vkvgSurf;
-               Image vkvgImage;
-
-        void vkvgDraw () {
-
-            using (vkvg.Context ctx = new vkvg.Context (vkvgSurf)) {
-                               ctx.Operator = vkvg.Operator.Clear;
-                               ctx.Paint ();
-                               ctx.Operator = vkvg.Operator.Over;
-
-                               ctx.LineWidth = 1;
-                               ctx.SetSource (0.1, 0.1, 0.1, 0.3);
-                               ctx.Rectangle (5.5, 5.5, 400, 250);
-                               ctx.FillPreserve ();
-                               ctx.Flush ();
-                               ctx.SetSource (0.8, 0.8, 0.8);
-                               ctx.Stroke ();
-
-                               ctx.FontFace = "mono";
-                               ctx.FontSize = 10;
-                               int x = 16;
-                               int y = 40, dy = 16;
-                               ctx.MoveTo (x, y);
-                               ctx.ShowText (string.Format ($"fps:     {fps,5} "));
-                               ctx.MoveTo (x + 200, y - 0.5);
-                               ctx.Rectangle (x + 200, y - 8.5, 0.1 * fps, 10);
-                               ctx.SetSource (0.1, 0.9, 0.1);
-                               ctx.Fill ();
-                               ctx.SetSource (0.8, 0.8, 0.8);
-                               y += dy;
-                               ctx.MoveTo (x, y);
-                               ctx.ShowText (string.Format ($"Exposure:{matrices.exposure,5} "));
-                               y += dy;
-                               ctx.MoveTo (x, y);
-                               ctx.ShowText (string.Format ($"Gamma:   {matrices.gamma,5} "));
-                               if (results == null)
-                                       return;
-
-                               y += dy*2;
-                               ctx.MoveTo (x, y);
-                               ctx.ShowText ("Pipeline Statistics");
-                               ctx.MoveTo (x-2, 2.5+y);
-                               ctx.LineTo (x+160, 2.5+y);
-                               ctx.Stroke ();
-                               y += 4;
-                               x += 20;
-
-                               for (int i = 0; i < statPool.RequestedStats.Length; i++) {
-                                       y += dy;
-                                       ctx.MoveTo (x, y);
-                                       ctx.ShowText (string.Format ($"{statPool.RequestedStats[i].ToString(),-30} :{results[i],12:0,0} "));
-                               }
-
-                               y += dy;
-                               ctx.MoveTo (x, y);
-                               ctx.ShowText (string.Format ($"{"Elapsed microsecond",-20} :{timestampQPool.ElapsedMiliseconds:0.0000} "));
-                       }
-               }
-
-               Program () : base () {
-                       vkvgDev = new vkvg.Device (instance.Handle, phy.Handle, dev.VkDev.Handle, presentQueue.qFamIndex,
-                               vkvg.SampleCount.Sample_4, presentQueue.index);
-
-                       camera.Type = CamType.FirstPerson;
-                       camera.Model = Matrix4x4.CreateScale (0.05f) * Matrix4x4.CreateRotationX((float)Math.PI);
-                       //Camera.SetRotation (-0.1f,-0.4f);
-                       camera.SetPosition (0, 2, -3);
-                                       
-                       init ();
-
-                       model = new Model (presentQueue, "../data/models/Sponza/glTF/Sponza.gltf");
-                       model.WriteMaterialsDescriptorSets (descLayoutTextures,
-                               VK.AttachmentType.Color,
-                               VK.AttachmentType.Normal,
-                               VK.AttachmentType.AmbientOcclusion,
-                               VK.AttachmentType.PhysicalProps,
-                               VK.AttachmentType.Emissive);
-               }
-
-               void init (VkSampleCountFlags samples = VkSampleCountFlags.SampleCount4) { 
-                       descriptorPool = new DescriptorPool (dev, 2,
-                               new VkDescriptorPoolSize (VkDescriptorType.UniformBuffer),
-                               new VkDescriptorPoolSize (VkDescriptorType.CombinedImageSampler)
-                       );
-
-                       descLayoutMatrix = new DescriptorSetLayout (dev,
-                               new VkDescriptorSetLayoutBinding (0, VkShaderStageFlags.Vertex|VkShaderStageFlags.Fragment, VkDescriptorType.UniformBuffer),
-                               new VkDescriptorSetLayoutBinding (1, VkShaderStageFlags.Fragment, VkDescriptorType.CombinedImageSampler)
-                       );
-
-                       descLayoutTextures = new DescriptorSetLayout (dev, 
-                               new VkDescriptorSetLayoutBinding (0, VkShaderStageFlags.Fragment, VkDescriptorType.CombinedImageSampler),
-                               new VkDescriptorSetLayoutBinding (1, VkShaderStageFlags.Fragment, VkDescriptorType.CombinedImageSampler),
-                               new VkDescriptorSetLayoutBinding (2, VkShaderStageFlags.Fragment, VkDescriptorType.CombinedImageSampler),
-                               new VkDescriptorSetLayoutBinding (3, VkShaderStageFlags.Fragment, VkDescriptorType.CombinedImageSampler),
-                               new VkDescriptorSetLayoutBinding (4, VkShaderStageFlags.Fragment, VkDescriptorType.CombinedImageSampler)
-                       );
-
-                       dsMats = descriptorPool.Allocate (descLayoutMatrix);
-
-                       GraphicPipelineConfig cfg = GraphicPipelineConfig.CreateDefault (VkPrimitiveTopology.TriangleList, samples);
-
-                       cfg.Layout = new PipelineLayout (dev, descLayoutMatrix, descLayoutTextures);
-                       cfg.Layout.AddPushConstants (
-                               new VkPushConstantRange (VkShaderStageFlags.Vertex, (uint)Marshal.SizeOf<Matrix4x4> ()),
-                               new VkPushConstantRange (VkShaderStageFlags.Fragment, (uint)Marshal.SizeOf<Model.PbrMaterial> (), 64)
-                       );
-                       cfg.RenderPass = new RenderPass (dev, swapChain.ColorFormat, dev.GetSuitableDepthFormat (), samples);
-
-                       cfg.AddVertexBinding<Model.Vertex> (0);
-                       cfg.SetVertexAttributes (0, VkFormat.R32g32b32Sfloat, VkFormat.R32g32b32Sfloat, VkFormat.R32g32Sfloat);
-
-                       cfg.AddShader (VkShaderStageFlags.Vertex, "shaders/pbrtest.vert.spv");
-                       cfg.AddShader (VkShaderStageFlags.Fragment, "shaders/pbrtest.frag.spv");
-
-                       pipeline = new GraphicPipeline (cfg);
-
-                       cfg.ResetShadersAndVerticesInfos ();
-                       cfg.AddShader (VkShaderStageFlags.Vertex, "shaders/FullScreenQuad.vert.spv");
-                       cfg.AddShader (VkShaderStageFlags.Fragment, "shaders/simpletexture.frag.spv");
-
-                       cfg.blendAttachments[0] = new VkPipelineColorBlendAttachmentState (true);
-
-                       uiPipeline = new GraphicPipeline (cfg);
-
-                       uboMats = new HostBuffer (dev, VkBufferUsageFlags.UniformBuffer, (ulong)Marshal.SizeOf<Matrices>());
-                       uboMats.Map ();//permanent map
-
-                       DescriptorSetWrites uboUpdate = new DescriptorSetWrites (dsMats, descLayoutMatrix.Bindings[0]);                         
-                       uboUpdate.Write (dev, uboMats.Descriptor);
-
-                       cfg.Layout.SetName ("Main Pipeline layout");
-                       uboMats.SetName ("uboMats");
-                       descriptorPool.SetName ("main pool");
-                       descLayoutTextures.SetName ("descLayoutTextures");
-
-                       statPool = new PipelineStatisticsQueryPool (dev,
-                               VkQueryPipelineStatisticFlags.InputAssemblyVertices |
-                               VkQueryPipelineStatisticFlags.InputAssemblyPrimitives |
-                               VkQueryPipelineStatisticFlags.ClippingInvocations |
-                               VkQueryPipelineStatisticFlags.ClippingPrimitives |
-                               VkQueryPipelineStatisticFlags.FragmentShaderInvocations);
-
-                       timestampQPool = new TimestampQueryPool (dev);
-
-               }
-
-               void buildCommandBuffers () {
-                       for (int i = 0; i < swapChain.ImageCount; ++i) {                                                                
-                cmds[i]?.Free ();
-
-                               cmds[i] = cmdPool.AllocateCommandBuffer ();
-                               cmds[i].Start ();
-
-                               statPool.Begin (cmds[i]);
-                               cmds[i].BeginRegion ("draw" + i, 0.5f, 1f, 0f);
-                               cmds[i].Handle.SetDebugMarkerName (dev, "cmd Draw" + i); 
-                               recordDraw (cmds[i], frameBuffers[i]);
-                               cmds[i].EndRegion ();
-                               statPool.End (cmds[i]);                 
-                               cmds[i].End ();
-                       }
-               } 
-               void recordDraw (CommandBuffer cmd, Framebuffer fb) {
-                       cmd.BeginRegion ("models", 0.5f, 1f, 0f);
-                       pipeline.RenderPass.Begin (cmd, fb);
-
-                       cmd.SetViewport (fb.Width, fb.Height);
-                       cmd.SetScissor (fb.Width, fb.Height);
-
-                       cmd.BindDescriptorSet (pipeline.Layout, dsMats);
-                       pipeline.Bind (cmd);
-                       model.Bind (cmd);
-                       model.DrawAll (cmd, pipeline.Layout);
-
-                       cmd.EndRegion ();
-                       cmd.BeginRegion ("vkvg", 0.5f, 1f, 0f);
-                       uiPipeline.Bind (cmd);
-
-                       timestampQPool.Start (cmd);
-
-                       vkvgImage.SetLayout (cmd, VkImageAspectFlags.Color, VkImageLayout.ColorAttachmentOptimal, VkImageLayout.ShaderReadOnlyOptimal,
-                               VkPipelineStageFlags.ColorAttachmentOutput, VkPipelineStageFlags.FragmentShader);
-
-                       cmd.Draw (3, 1, 0, 0);
-
-                       vkvgImage.SetLayout (cmd, VkImageAspectFlags.Color, VkImageLayout.ShaderReadOnlyOptimal, VkImageLayout.ColorAttachmentOptimal,
-                               VkPipelineStageFlags.FragmentShader, VkPipelineStageFlags.BottomOfPipe);
-
-                       timestampQPool.End (cmd);
-
-                       pipeline.RenderPass.End (cmd);
-                       cmd.EndRegion ();
-               }
-
-               #region update
-               void updateMatrices () {
-
-                       camera.AspectRatio = (float)swapChain.Width / swapChain.Height;
-
-                       matrices.projection = camera.Projection;
-                       matrices.view = camera.View;
-                       matrices.model = camera.Model;
-                       uboMats.Update (matrices, (uint)Marshal.SizeOf<Matrices> ());
-               }
-                       
-               public override void UpdateView () {
-                       updateMatrices ();
-                       updateViewRequested = false;
-               }
-               public override void Update () {
-                       results = statPool.GetResults ();
-                       vkvgDraw ();
-               }
-               #endregion
-
-               #region mouse and keyboard
-               protected override void onKeyDown (Key key, int scanCode, Modifier modifiers) {
-                       switch (key) {
-                               case Key.F1:
-                                       if (modifiers.HasFlag (Modifier.Shift))
-                                               matrices.exposure -= 0.3f;
-                                       else
-                                               matrices.exposure += 0.3f;
-                                       break;
-                               case Key.F2:
-                                       if (modifiers.HasFlag (Modifier.Shift))
-                                               matrices.gamma -= 0.1f;
-                                       else
-                                               matrices.gamma += 0.1f;
-                                       break;
-                               case Key.F3:
-                                       if (camera.Type == CamType.FirstPerson)
-                                               camera.Type = CamType.LookAt;
-                                       else
-                                               camera.Type = CamType.FirstPerson;
-                                       break;
-                               default:
-                                       base.onKeyDown (key, scanCode, modifiers);
-                                       return;
-                       }
-                       updateViewRequested = true;
-               }
-               #endregion
-
-               protected override void OnResize () {
-
-                       vkvgImage?.Dispose ();
-                       vkvgSurf?.Dispose ();
-                       vkvgSurf = new vkvg.Surface (vkvgDev, (int)swapChain.Width, (int)swapChain.Height);
-                       vkvgImage = new Image (dev, new VkImage ((ulong)vkvgSurf.VkImage.ToInt64 ()), VkFormat.B8g8r8a8Unorm,
-                               VkImageUsageFlags.ColorAttachment, (uint)vkvgSurf.Width, (uint)vkvgSurf.Height);
-                       vkvgImage.CreateView (VkImageViewType.ImageView2D, VkImageAspectFlags.Color);
-                       vkvgImage.CreateSampler (VkFilter.Nearest,VkFilter.Nearest, VkSamplerMipmapMode.Nearest, VkSamplerAddressMode.ClampToBorder);
-
-                       vkvgImage.Descriptor.imageLayout = VkImageLayout.ShaderReadOnlyOptimal;
-                       DescriptorSetWrites uboUpdate = new DescriptorSetWrites (dsMats, descLayoutMatrix.Bindings[1]);                         
-                       uboUpdate.Write (dev, vkvgImage.Descriptor);
-
-                       updateMatrices ();
-
-                       if (frameBuffers!=null)
-                               for (int i = 0; i < swapChain.ImageCount; ++i)
-                                       frameBuffers[i]?.Dispose ();
-
-                       frameBuffers = new Framebuffer[swapChain.ImageCount];
-
-                       for (int i = 0; i < swapChain.ImageCount; ++i) {
-                               frameBuffers[i] = new Framebuffer (pipeline.RenderPass, swapChain.Width, swapChain.Height,
-                                       (pipeline.Samples == VkSampleCountFlags.SampleCount1) ? new Image[] {
-                                               swapChain.images[i],
-                                               null
-                                       } : new Image[] {
-                                               null,
-                                               null,
-                                               swapChain.images[i]
-                                       });
-                               frameBuffers[i].SetName ("main FB " + i);
-
-                       }
-
-                       buildCommandBuffers ();
-               }       
-
-               protected override void Dispose (bool disposing) {
-                       if (disposing) {
-                               if (!isDisposed) {
-                                       dev.WaitIdle ();
-                                       for (int i = 0; i < swapChain.ImageCount; ++i)
-                                               frameBuffers[i]?.Dispose ();
-                                       model.Dispose ();
-                                       pipeline.Dispose ();
-                                       descLayoutMatrix.Dispose ();
-                                       descLayoutTextures.Dispose ();
-                                       descriptorPool.Dispose ();
-
-                                       uboMats.Dispose ();
-
-                                       vkvgSurf?.Dispose ();
-                                       vkvgDev.Dispose ();
-
-                                       timestampQPool.Dispose ();
-                                       statPool.Dispose ();
-                               }
-                       }
-
-                       base.Dispose (disposing);
-               }
-       }
-}
index 28e3760aa86caf94a268a62068d582e99ecab656..040fd62f5aff4ae23c5342f638cb7ba4ceb18da2 100644 (file)
@@ -55,7 +55,7 @@ namespace vke {
 
                        descriptorPool = new DescriptorPool (Dev, 2,
                                new VkDescriptorPoolSize (VkDescriptorType.UniformBuffer, 2),
-                               new VkDescriptorPoolSize (VkDescriptorType.CombinedImageSampler, 9)
+                               new VkDescriptorPoolSize (VkDescriptorType.CombinedImageSampler, 8)
                        );
 
                        descLayoutMain = new DescriptorSetLayout (Dev,
@@ -63,8 +63,7 @@ namespace vke {
                                new VkDescriptorSetLayoutBinding (1, VkShaderStageFlags.Fragment, VkDescriptorType.CombinedImageSampler),
                                new VkDescriptorSetLayoutBinding (2, VkShaderStageFlags.Fragment, VkDescriptorType.CombinedImageSampler),
                                new VkDescriptorSetLayoutBinding (3, VkShaderStageFlags.Fragment, VkDescriptorType.CombinedImageSampler),
-                               new VkDescriptorSetLayoutBinding (4, VkShaderStageFlags.Fragment, VkDescriptorType.UniformBuffer),
-                               new VkDescriptorSetLayoutBinding (5, VkShaderStageFlags.Fragment, VkDescriptorType.CombinedImageSampler));//ui image
+                               new VkDescriptorSetLayoutBinding (4, VkShaderStageFlags.Fragment, VkDescriptorType.UniformBuffer));                             
 
                        descLayoutTextures = new DescriptorSetLayout (Dev,
                                new VkDescriptorSetLayoutBinding (0, VkShaderStageFlags.Fragment, VkDescriptorType.CombinedImageSampler),
@@ -91,6 +90,8 @@ namespace vke {
 
                        init (cfg);
 
+                       cfg.DisposeShaders ();
+
                        dsMain = descriptorPool.Allocate (descLayoutMain);
 
                        envCube = new Environment.EnvironmentCube (cubemapPathes[0], layout, staggingQ, RenderPass);
index 9ce48ebd37472edef50fa77f08a23bfed299be64..3fe3246aa980c35eb2b521858eb9966ec3e5b633 100644 (file)
@@ -26,15 +26,7 @@ namespace pbrSample {
                                vke.Run ();
                        }
                }
-               protected override void configureEnabledFeatures (VkPhysicalDeviceFeatures available_features, ref VkPhysicalDeviceFeatures enabled_features) {
-                       base.configureEnabledFeatures (available_features, ref enabled_features);
-#if PIPELINE_STATS
-                       features.pipelineStatisticsQuery = true;
-#endif
-                       enabled_features.samplerAnisotropy = available_features.samplerAnisotropy;
-               }
-
-               VkSampleCountFlags samples = VkSampleCountFlags.SampleCount8;
+               VkSampleCountFlags samples = VkSampleCountFlags.SampleCount1;
 
                FrameBuffers frameBuffers;
                PBRPipeline pbrPipeline;
@@ -75,95 +67,8 @@ namespace pbrSample {
 
                DebugView currentDebugView = DebugView.none;
 
-#if PIPELINE_STATS
-               PipelineStatisticsQueryPool statPool;
-               TimestampQueryPool timestampQPool;
-               ulong[] results;
-#endif
                bool queryUpdatePrefilCube, showDebugImg;
 
-#if WITH_VKVG
-               //DescriptorSet dsDebugImg;
-               //void initDebugImg () {
-               //      dsDebugImg = descriptorPool.Allocate (descLayoutMain);
-               //      pbrPipeline.envCube.debugImg.Descriptor.imageLayout = VkImageLayout.ShaderReadOnlyOptimal;
-               //      DescriptorSetWrites uboUpdate = new DescriptorSetWrites (dsDebugImg, descLayoutMain);
-               //      uboUpdate.Write (dev, pbrPipeline.envCube.debugImg.Descriptor);
-               //}
-
-               VkvgPipeline.VkvgPipeline vkvgPipeline;
-
-               void vkvgDraw () {
-                       using (vkvg.Context ctx = vkvgPipeline.CreateContext ()) {
-                               ctx.Clear ();
-
-                               ctx.LineWidth = 1;
-                               ctx.SetSource (0.1, 0.1, 0.1, 0.8);
-                               ctx.Rectangle (5.5, 5.5, 320, 300);
-                               ctx.FillPreserve ();
-                               ctx.Flush ();
-                               ctx.SetSource (0.8, 0.8, 0.8);
-                               ctx.Stroke ();
-
-                               ctx.FontFace = "mono";
-                               ctx.FontSize = 8;
-                               int x = 16;
-                               int y = 40, dy = 16;
-                               ctx.MoveTo (x, y);
-                               ctx.ShowText (string.Format ($"fps:     {fps,5} "));
-                               ctx.MoveTo (x + 200, y - 0.5);
-                               ctx.Rectangle (x + 200, y - 8.5, 0.1 * fps, 10);
-                               ctx.SetSource (0.1, 0.9, 0.1);
-                               ctx.Fill ();
-                               ctx.SetSource (0.8, 0.8, 0.8);
-                               y += dy;
-                               ctx.MoveTo (x, y);
-                               ctx.ShowText (string.Format ($"Exposure:{pbrPipeline.matrices.exposure,5} "));
-                               y += dy;
-                               ctx.MoveTo (x, y);
-                               ctx.ShowText (string.Format ($"Gamma:   {pbrPipeline.matrices.gamma,5} "));
-                               y += dy;
-                               ctx.MoveTo (x, y);
-                               ctx.ShowText (string.Format ($"Light pos:   {lightPos.ToString ()} "));
-
-#if PIPELINE_STATS
-                               if (results == null)
-                                       return;
-
-                               y += dy*2;
-                               ctx.MoveTo (x, y);
-                               ctx.ShowText ("Pipeline Statistics");
-                               ctx.MoveTo (x-2, 4.5+y);
-                               ctx.LineTo (x+160, 4.5+y);
-                               ctx.Stroke ();
-                               y += 4;
-                               x += 20;
-
-                               for (int i = 0; i < statPool.RequestedStats.Length; i++) {
-                                       y += dy;
-                                       ctx.MoveTo (x, y);
-                                       ctx.ShowText (string.Format ($"{statPool.RequestedStats[i].ToString(),-30} :{results[i],12:0,0} "));
-                               }
-                               /*y += dy;
-                               ctx.MoveTo (x, y);
-                               ctx.ShowText (string.Format ($"{"Elapsed microsecond",-20} :{timestampQPool.ElapsedMiliseconds:0.0000} "));*/
-#endif
-                               y += dy;
-                               ctx.MoveTo (x, y);
-                               ctx.ShowText (string.Format ($"{"Debug draw (numpad 0->6)",-30} : {currentDebugView.ToString ()} "));
-                               /*y += dy;
-                               ctx.MoveTo (x, y);
-                               ctx.ShowText (string.Format ($"{"Debug Prefil Face: (f)",-30} : {pbrPipeline.envCube.debugFace.ToString ()} "));
-                               y += dy;
-                               ctx.MoveTo (x, y);
-                               ctx.ShowText (string.Format ($"{"Debug Prefil Mip: (m)",-30} : {pbrPipeline.envCube.debugMip.ToString ()} "));
-                               */
-                               vkvgPipeline.DrawResources (ctx, (int)Width, (int)Height);
-                       }
-               }
-#endif
-
-
                Vector4 lightPos = new Vector4 (1, 0, 0, 0);
                uint curModelIndex = 0;
 
@@ -178,21 +83,6 @@ namespace pbrSample {
                                new RenderPass (dev, swapChain.ColorFormat, dev.GetSuitableDepthFormat (), samples));
 
                        loadCurrentModel ();
-
-#if PIPELINE_STATS
-                       statPool = new PipelineStatisticsQueryPool (dev,
-                               VkQueryPipelineStatisticFlags.InputAssemblyVertices |
-                               VkQueryPipelineStatisticFlags.InputAssemblyPrimitives |
-                               VkQueryPipelineStatisticFlags.ClippingInvocations |
-                               VkQueryPipelineStatisticFlags.ClippingPrimitives |
-                               VkQueryPipelineStatisticFlags.FragmentShaderInvocations);
-
-                       timestampQPool = new TimestampQueryPool (dev);
-#endif
-
-#if WITH_VKVG
-                       vkvgPipeline = new VkvgPipeline.VkvgPipeline (instance, dev, presentQueue, pbrPipeline);
-#endif
                }
 
                bool rebuildBuffers, reloadModel;
@@ -201,14 +91,7 @@ namespace pbrSample {
                        for (int i = 0; i < swapChain.ImageCount; ++i) {
                                cmds[i]?.Free ();
                                cmds[i] = cmdPool.AllocateAndStart ();
-#if PIPELINE_STATS
-                               statPool.Begin (cmds[i]);
-                               recordDraw (cmds[i], frameBuffers[i]);
-                               statPool.End (cmds[i]);
-#else
                                recordDraw (cmds[i], frameBuffers[i]);
-#endif
-
                                cmds[i].End ();
                        }
                }
@@ -219,10 +102,6 @@ namespace pbrSample {
                        cmd.SetScissor (fb.Width, fb.Height);
 
                        pbrPipeline.RecordDraw (cmd);
-
-#if WITH_VKVG
-                       vkvgPipeline.RecordDraw (cmd);
-#endif
                        pbrPipeline.RenderPass.End (cmd);
                }
 
@@ -259,16 +138,10 @@ namespace pbrSample {
                                reloadModel = false;
                                rebuildBuffers = true;
                        }
-#if PIPELINE_STATS
-                       results = statPool.GetResults ();
-#endif
                        if (rebuildBuffers) {
                                buildCommandBuffers ();
                                rebuildBuffers = false;
                        }
-#if WITH_VKVG
-                       vkvgDraw ();
-#endif
                }
                #endregion
 
@@ -277,11 +150,6 @@ namespace pbrSample {
                        base.OnResize ();
 
                        dev.WaitIdle ();
-#if WITH_VKVG
-                       vkvgPipeline.Resize ((int)swapChain.Width, (int)swapChain.Height,
-                               new DescriptorSetWrites (pbrPipeline.dsMain, pbrPipeline.Layout.DescriptorSetLayouts[0].Bindings[5]));
-#endif
-
                        UpdateView ();
 
                        frameBuffers?.Dispose ();
@@ -313,32 +181,7 @@ namespace pbrSample {
                                else
                                        curModelIndex = curModelIndex < (uint)modelPathes.Length - 1 ? curModelIndex + 1 : 0;
                                reloadModel = true;
-                               break;
-                       /*
-                               case Key.F:
-                                       if (modifiers.HasFlag (Modifier.Shift)) {
-                                               pbrPipeline.envCube.debugFace --;
-                                               if (pbrPipeline.envCube.debugFace < 0)
-                                                       pbrPipeline.envCube.debugFace = 5;
-                                       } else {
-                                               pbrPipeline.envCube.debugFace ++;
-                                               if (pbrPipeline.envCube.debugFace > 5)
-                                                       pbrPipeline.envCube.debugFace = 0;
-                                       }
-                                       queryUpdatePrefilCube = updateViewRequested = true;
-                                       break;
-                               case Key.M:
-                                       if (modifiers.HasFlag (Modifier.Shift)) {
-                                               pbrPipeline.envCube.debugMip --;
-                                               if (pbrPipeline.envCube.debugMip < 0)
-                                                       pbrPipeline.envCube.debugMip = (int)pbrPipeline.envCube.prefilterCube.CreateInfo.mipLevels - 1;
-                                       } else {
-                                               pbrPipeline.envCube.debugMip ++;
-                                               if (pbrPipeline.envCube.debugMip > pbrPipeline.envCube.prefilterCube.CreateInfo.mipLevels)
-                                                       pbrPipeline.envCube.debugMip = 0;
-                                       }
-                                       queryUpdatePrefilCube = updateViewRequested = true;
-                                       break;*/
+                               break;                  
                        case Key.P:
                                showDebugImg = !showDebugImg;
                                queryUpdatePrefilCube = updateViewRequested = true;
@@ -439,14 +282,6 @@ namespace pbrSample {
                                        dev.WaitIdle ();
                                        frameBuffers?.Dispose ();
                                        pbrPipeline.Dispose ();
-#if WITH_VKVG
-                                       vkvgPipeline.Dispose ();
-#endif
-
-#if PIPELINE_STATS
-                                       timestampQPool?.Dispose ();
-                                       statPool?.Dispose ();
-#endif
                                }
                        }
 
index 1648b091c22e7142da9fe962601611a12b7658a9..cb7b729748b9e752a2e94fd2b1d0663df4c35bdd 100644 (file)
@@ -12,8 +12,7 @@
        
   <ItemGroup>
     <ProjectReference Include="..\..\addons\gltfLoader\gltfLoader.csproj" />
-    <ProjectReference Include="..\..\addons\VkvgPipeline\VkvgPipeline.csproj" />
-               <ProjectReference Include="..\..\addons\EnvironmentPipeline\EnvironmentPipeline.csproj" />
+       <ProjectReference Include="..\..\addons\EnvironmentPipeline\EnvironmentPipeline.csproj" />
   </ItemGroup>    
   
 </Project>
diff --git a/samples/pbr/ui/fps.crow b/samples/pbr/ui/fps.crow
deleted file mode 100755 (executable)
index 351f059..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0"?>
-<VerticalStack Left="10" Top="100" Width="30%" Height="Fit" Spacing="2" Background="0.3,0.3,0.3,0.9" Margin="20">
-    <HorizontalStack Height="Fit">
-       <Label Text="Fps:" Width="80" Background="SteelBlue"/>
-       <Label Text="{fps}" />
-    </HorizontalStack>
-    <HorizontalStack Height="Fit">
-        <Label Text="Gamma:" Width="80" Background="SteelBlue"/>
-        <Slider Height="20" Value="{²Gamma}" Maximum="10.0" SmallIncrement="0.1" LargeIncrement="1.0"/>
-        <Label Text="{Gamma}" Width="40" TextAlignment="Right"/>
-    </HorizontalStack>
-    <HorizontalStack Height="Fit">
-        <Label Text="Exposure:" Width="80" Background="SteelBlue"/>
-        <Slider Height="20" Value="{²Exposure}" Maximum="10.0" SmallIncrement="0.1" LargeIncrement="1.0"/>
-        <Label Text="{Exposure}" Width="40" TextAlignment="Right"/>
-    </HorizontalStack>
-<!--        <ComboBox Data="{cubemapPathes}"/>-->
-</VerticalStack>
-<!--<Window Caption="Showcase" Height="30%" Width="20%" Top="10" Left="10">-->
-<!--</Window>-->
-<!--<Label Text="{fps}" Background="SteelBlue" Margin="0" Font="mono,20"/>-->
-
index 38f81d5296a7368b243ec47796fbe3190f888781..7fcb6d8f60be1983067d647ba2ff490c9757b6e0 100644 (file)
@@ -48,10 +48,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "deferred", "samples\deferre
 EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "pbr", "samples\pbr\pbr.csproj", "{7EB2430B-6BC0-4AE9-B1FA-57C3DB2AE1C5}"
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "glow", "samples\glow\glow.csproj", "{82947B19-1EFA-4DF9-8BB8-56B0B48F3FBE}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "crowWin", "samples\crowWin\crowWin.csproj", "{A05AAF6C-E925-4EF1-B051-A6DDA5BCB536}"
-EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CrowWindow", "addons\CrowWindow\CrowWindow.csproj", "{5AE929DA-4EA2-4BD9-BA38-7258AA9D2E4D}"
 EndProject
 Global
@@ -204,26 +200,6 @@ Global
                {7EB2430B-6BC0-4AE9-B1FA-57C3DB2AE1C5}.Release|Any CPU.Build.0 = Release|Any CPU
                {7EB2430B-6BC0-4AE9-B1FA-57C3DB2AE1C5}.ReleaseSpirVTasks|Any CPU.ActiveCfg = Release|Any CPU
                {7EB2430B-6BC0-4AE9-B1FA-57C3DB2AE1C5}.ReleaseSpirVTasks|Any CPU.Build.0 = Release|Any CPU
-               {82947B19-1EFA-4DF9-8BB8-56B0B48F3FBE}.BuildPackages|Any CPU.ActiveCfg = Release|Any CPU
-               {82947B19-1EFA-4DF9-8BB8-56B0B48F3FBE}.BuildPackages|Any CPU.Build.0 = Release|Any CPU
-               {82947B19-1EFA-4DF9-8BB8-56B0B48F3FBE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {82947B19-1EFA-4DF9-8BB8-56B0B48F3FBE}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {82947B19-1EFA-4DF9-8BB8-56B0B48F3FBE}.DebugCrow|Any CPU.ActiveCfg = Debug|Any CPU
-               {82947B19-1EFA-4DF9-8BB8-56B0B48F3FBE}.DebugCrow|Any CPU.Build.0 = Debug|Any CPU
-               {82947B19-1EFA-4DF9-8BB8-56B0B48F3FBE}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {82947B19-1EFA-4DF9-8BB8-56B0B48F3FBE}.Release|Any CPU.Build.0 = Release|Any CPU
-               {82947B19-1EFA-4DF9-8BB8-56B0B48F3FBE}.ReleaseSpirVTasks|Any CPU.ActiveCfg = Debug|Any CPU
-               {82947B19-1EFA-4DF9-8BB8-56B0B48F3FBE}.ReleaseSpirVTasks|Any CPU.Build.0 = Debug|Any CPU
-               {A05AAF6C-E925-4EF1-B051-A6DDA5BCB536}.BuildPackages|Any CPU.ActiveCfg = Release|Any CPU
-               {A05AAF6C-E925-4EF1-B051-A6DDA5BCB536}.BuildPackages|Any CPU.Build.0 = Release|Any CPU
-               {A05AAF6C-E925-4EF1-B051-A6DDA5BCB536}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {A05AAF6C-E925-4EF1-B051-A6DDA5BCB536}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {A05AAF6C-E925-4EF1-B051-A6DDA5BCB536}.DebugCrow|Any CPU.ActiveCfg = Debug|Any CPU
-               {A05AAF6C-E925-4EF1-B051-A6DDA5BCB536}.DebugCrow|Any CPU.Build.0 = Debug|Any CPU
-               {A05AAF6C-E925-4EF1-B051-A6DDA5BCB536}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {A05AAF6C-E925-4EF1-B051-A6DDA5BCB536}.Release|Any CPU.Build.0 = Release|Any CPU
-               {A05AAF6C-E925-4EF1-B051-A6DDA5BCB536}.ReleaseSpirVTasks|Any CPU.ActiveCfg = Debug|Any CPU
-               {A05AAF6C-E925-4EF1-B051-A6DDA5BCB536}.ReleaseSpirVTasks|Any CPU.Build.0 = Debug|Any CPU
                {5AE929DA-4EA2-4BD9-BA38-7258AA9D2E4D}.BuildPackages|Any CPU.ActiveCfg = Release|Any CPU
                {5AE929DA-4EA2-4BD9-BA38-7258AA9D2E4D}.BuildPackages|Any CPU.Build.0 = Release|Any CPU
                {5AE929DA-4EA2-4BD9-BA38-7258AA9D2E4D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
@@ -252,8 +228,6 @@ Global
                {8185163E-A67C-4C0E-8548-67E2A9F16309} = {16439374-B8DB-4643-8116-EB3358B49A12}
                {D9A41382-444E-44ED-B638-3D8F06F2FBC2} = {16439374-B8DB-4643-8116-EB3358B49A12}
                {7EB2430B-6BC0-4AE9-B1FA-57C3DB2AE1C5} = {16439374-B8DB-4643-8116-EB3358B49A12}
-               {82947B19-1EFA-4DF9-8BB8-56B0B48F3FBE} = {16439374-B8DB-4643-8116-EB3358B49A12}
-               {A05AAF6C-E925-4EF1-B051-A6DDA5BCB536} = {16439374-B8DB-4643-8116-EB3358B49A12}
                {5AE929DA-4EA2-4BD9-BA38-7258AA9D2E4D} = {4AA67AB0-C331-4CB2-9C00-B74F5DE31658}
        EndGlobalSection
        GlobalSection(ExtensibilityGlobals) = postSolution
index 1d61ad8710a4f0643995891a0babdaf54bcfe365..b3c6ec5bc6b27c25336436a9c8c7037b3f5e6457 100644 (file)
@@ -39,8 +39,6 @@ namespace vke {
                                        info.basePipelineIndex = 0;
 
                                        Utils.CheckResult (Vk.vkCreateComputePipelines (Dev.VkDev, Cache == null ? VkPipelineCache.Null : Cache.handle, 1, ref info, IntPtr.Zero, out handle));
-
-                                       Dev.DestroyShaderModule (info.stage.module);
                                }
                        }
                        base.Activate ();
index 2151656e322f0862bab62fc57745c4e429bf15af..fca29f2143e009cbd8fce9d6b870bae1762dbe85 100644 (file)
@@ -174,8 +174,9 @@ namespace vke {
             throw new InvalidOperationException ("Could not find a suitable memory type!");
         }
         public VkFormat GetSuitableDepthFormat () {
-            VkFormat[] formats = new VkFormat[] { VkFormat.D32SfloatS8Uint, VkFormat.D32Sfloat, VkFormat.D24UnormS8Uint, VkFormat.D16UnormS8Uint, VkFormat.D16Unorm };
+            VkFormat[] formats = new VkFormat[] {VkFormat.D32SfloatS8Uint, VkFormat.D32Sfloat, VkFormat.D24UnormS8Uint, VkFormat.D16UnormS8Uint, VkFormat.D16Unorm };
             foreach (VkFormat f in formats) {
+                               Console.WriteLine ( (int)phy.GetFormatProperties (f).optimalTilingFeatures);
                 if (phy.GetFormatProperties (f).optimalTilingFeatures.HasFlag(VkFormatFeatureFlags.DepthStencilAttachment))
                     return f;
             }