Ejemplo n.º 1
0
        static void Main(string[] args)
        {
            Engine.AppName          = "Kokoro.PlanetGen.Gpu";
            Engine.EnableValidation = true;
            Engine.RebuildShaders   = true;
            Engine.Initialize();

            var graph = new FrameGraph(0);

            Engine.RenderGraph = graph;

            dropletCache = new GpuBuffer("dropletCache")
            {
                Usage       = BufferUsage.Storage | BufferUsage.TransferSrc,
                MemoryUsage = MemoryUsage.GpuOnly,
                Mapped      = false,
            };
            dropletCache.Build(0);

            //Generate a heightmap
            heightMap = new HeightMapGen("heightMap", terrainSide);

            //Populate particle buffer
            //Iterate particle simulation

            vertS = new SpecializedShader()
            {
                Name               = "FST_Vert",
                Shader             = ShaderSource.Load(ShaderType.VertexShader, "FullScreenTriangle/vertex.glsl"),
                SpecializationData = null
            };

            fragS = new SpecializedShader()
            {
                Name               = "UVR_Frag",
                Shader             = ShaderSource.Load(ShaderType.FragmentShader, "FullScreenTriangle/clear_frag.glsl"),
                SpecializationData = null,
            };

            depthImages     = new Image[GraphicsDevice.MaxFramesInFlight];
            depthImageViews = new ImageView[GraphicsDevice.MaxFramesInFlight];
            for (int i = 0; i < GraphicsDevice.MaxFramesInFlight; i++)
            {
                depthImages[i] = new Image($"depthImage_{i}")
                {
                    Cubemappable  = false,
                    Width         = GraphicsDevice.Width,
                    Height        = GraphicsDevice.Height,
                    Depth         = 1,
                    Dimensions    = 2,
                    InitialLayout = ImageLayout.Undefined,
                    Layers        = 1,
                    Levels        = 1,
                    MemoryUsage   = MemoryUsage.GpuOnly,
                    Usage         = ImageUsage.DepthAttachment | ImageUsage.Sampled,
                    Format        = ImageFormat.Depth32f,
                };
                depthImages[i].Build(0);

                depthImageViews[i] = new ImageView($"depthImageView_{i}")
                {
                    BaseLayer  = 0,
                    BaseLevel  = 0,
                    Format     = ImageFormat.Depth32f,
                    LayerCount = 1,
                    LevelCount = 1,
                    ViewType   = ImageViewType.View2D,
                };
                depthImageViews[i].Build(depthImages[i]);
            }

            Engine.OnRebuildGraph += Engine_OnRebuildGraph;
            Engine.OnRender       += Engine_OnRender;
            Engine.OnUpdate       += Engine_OnUpdate;
            Engine.Start(0);
        }