Esempio n. 1
0
        public VulkanExample
        (
            IMgGraphicsConfiguration configuration,
            IMgSwapchainCollection swapchains,
            IMgGraphicsDevice graphicsDevice,
            IMgPresentationLayer presentationLayer,
            ITriangleDemoShaderPath shaderPath
        )
        {
            mConfiguration     = configuration;
            mSwapchains        = swapchains;
            mGraphicsDevice    = graphicsDevice;
            mPresentationLayer = presentationLayer;
            mTrianglePath      = shaderPath;

            mWidth  = 1280U;
            mHeight = 720U;

            try
            {
                mConfiguration.Initialize(mWidth, mHeight);
                InitSwapchain(mWidth, mHeight);
                Prepare();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Esempio n. 2
0
 public MgSwapchainCollection(IMgPresentationSurface layer, IMgGraphicsConfiguration graphicsConfiguration, IMgImageTools imageTools)
 {
     mLayer = layer;
     mGraphicsConfiguration = graphicsConfiguration;
     mImageTools            = imageTools;
     Format = MgFormat.UNDEFINED;
 }
Esempio n. 3
0
 public MgDefaultGraphicsDevice(IMgGraphicsConfiguration configuration, IMgImageTools imageTools)
 {
     mGraphicsConfiguration = configuration;
     // SHOULD BE HIDDEN
     mFramebuffers = new MgFramebufferCollection(mGraphicsConfiguration);
     mImageTools   = imageTools;
 }
Esempio n. 4
0
 public void ReleaseUnmanagedResources(IMgGraphicsConfiguration configuration)
 {
     if (mStaticStorage != null)
     {
         mStaticStorage.Storage.Destroy(configuration.Device, null);
     }
 }
Esempio n. 5
0
 public GltfModelLoader(
     IMgGraphicsConfiguration config,
     MgOptimizedStorageBuilder builder
     )
 {
     mConfiguration = config;
     mBuilder       = builder;
 }
Esempio n. 6
0
        private bool InitialiseMg()
        {
            try
            {
                // SINGLETONS HERE
                var localDevice = MTLDevice.SystemDefault;

                if (localDevice == null)
                {
                    Console.WriteLine("Metal is not supported on this device");
                    return(false);
                }

                // APPLICATION HERE
                mContainer.Register <SpinningCube>(Lifestyle.Singleton);

                RegisterMagnesiumSingletons(localDevice);

                RegisterMagnesiumMappings();

                // RESOLVE HERE

                mDriver = mContainer.GetInstance <MgDriverContext>();

                var err = mDriver.Initialize(
                    new Magnesium.MgApplicationInfo
                {
                    ApplicationName    = "MetalSample",
                    EngineName         = "Magnesium",
                    ApplicationVersion = 1,
                    EngineVersion      = 1,
                    ApiVersion         = Magnesium.MgApplicationInfo.GenerateApiVersion(1, 0, 17),
                },
                    Magnesium.MgInstanceExtensionOptions.ALL
                    );

                if (err != Result.SUCCESS)
                {
                    throw new InvalidOperationException("Metal is not supported on this device : " + err);
                }

                mGraphicsConfiguration = mContainer.GetInstance <IMgGraphicsConfiguration>();

                mApplication = mContainer.GetInstance <SpinningCube>();

                // BIND TO VIEW
                mApplicationView.Delegate = this;
                mApplicationView.Device   = localDevice;

                return(true);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                throw ex;
            }
        }
Esempio n. 7
0
 public MgOptimizedStorageBuilder(
     IMgGraphicsConfiguration config,
     IMgOptimizedStoragePartitioner segmenter,
     IMgOptimizedStoragePartitionVerifier verifier
     )
 {
     mConfiguration = config;
     mSplitter      = segmenter;
     mVerifier      = verifier;
 }
Esempio n. 8
0
 public GltfSceneLoader(
     IMgGraphicsConfiguration config,
     MgOptimizedStorageBuilder builder,
     IPbrEffectPath pbrEffectPath
     )
 {
     mConfiguration = config;
     mBuilder       = builder;
     mPbrEffectPath = pbrEffectPath;
 }
Esempio n. 9
0
 public MgPresentationLayer
 (
     IMgGraphicsConfiguration graphicsConfiguration,
     IMgSwapchainCollection collection,
     IMgPresentationBarrierEntrypoint barrier
 )
 {
     mGraphicsConfiguration = graphicsConfiguration;
     mCollection            = collection;
     mBarrier = barrier;
 }
Esempio n. 10
0
 public MgGraphicsConfigurationManager(
     IMgGraphicsConfiguration configuration,
     IMgSwapchainCollection swapchains,
     IMgGraphicsDevice graphicsDevice,
     IMgPresentationLayer presentationLayer
     )
 {
     mConfiguration     = configuration;
     mSwapchains        = swapchains;
     mGraphicsDevice    = graphicsDevice;
     mPresentationLayer = presentationLayer;
 }
Esempio n. 11
0
 public MgOptimizedStoragePartitionVerifier(IMgGraphicsConfiguration configuration)
 {
     mConfiguration = configuration;
     mPackingOrder  = new MgBufferUsageFlagBits[]
     {
         MgBufferUsageFlagBits.INDEX_BUFFER_BIT
         , MgBufferUsageFlagBits.UNIFORM_BUFFER_BIT
         , MgBufferUsageFlagBits.INDIRECT_BUFFER_BIT
         , MgBufferUsageFlagBits.STORAGE_BUFFER_BIT
         , MgBufferUsageFlagBits.STORAGE_TEXEL_BUFFER_BIT
         , MgBufferUsageFlagBits.TRANSFER_DST_BIT
         , MgBufferUsageFlagBits.TRANSFER_SRC_BIT
         , MgBufferUsageFlagBits.UNIFORM_TEXEL_BUFFER_BIT
         , MgBufferUsageFlagBits.VERTEX_BUFFER_BIT
     };
 }
Esempio n. 12
0
 public OpenTKGraphicsDevice(
     INativeWindow window,
     IMgGraphicsConfiguration configuration,
     IGLFramebufferHelperSelector selector,
     IGLExtensionLookup extensions,
     IMgGraphicsDeviceLogger logger,
     IGLRenderer queueRenderer,
     IGLBackbufferContext bbContext
     )
 {
     mGraphicsConfiguration = configuration;
     mView          = new GLNullImageView();
     mWindow        = window;
     mExtensions    = extensions;
     mLogger        = logger;
     mSelector      = selector;
     mQueueRenderer = queueRenderer;
     mBBContext     = bbContext;
     // SHOULD BE HIDDEN
     mFramebuffers = new MgFramebufferCollection(mGraphicsConfiguration);
 }
Esempio n. 13
0
        public SpinningCube(
            IMgGraphicsConfiguration configuration,
            IMgSwapchainCollection swapchains,
            IMgGraphicsDevice graphicsDevice,
            IMgPresentationLayer presentationLayer
            )
        {
            mConfiguration     = configuration;
            mSwapchains        = swapchains;
            mGraphicsDevice    = graphicsDevice;
            mPresentationLayer = presentationLayer;

            mWidth  = 640;
            mHeight = 480;

            mConfiguration.Initialize(mWidth, mHeight);
            SetupGraphicsDevice();

            InitializeMesh();
            InitializeUniforms();
            InitializeRenderCommandBuffers();
            InitializeGraphicsPipeline();
        }
Esempio n. 14
0
 public KTXTextureManager(IMgTextureGenerator optimizer, IMgGraphicsConfiguration configuration)
 {
     mTextureOptimizer      = optimizer;
     mGraphicsConfiguration = configuration;
 }
Esempio n. 15
0
        public void Prepare(IMgGraphicsConfiguration configuration, IMgGraphicsDevice screen)
        {
            var loader     = new Loader();
            var dataLoader = new DataLoader();
            var device     = configuration.Device;

            using (var fs = File.Open("Data/Triangle.gltf", FileMode.Open))
            {
                // load model file
                var model = glTFLoader.Interface.LoadModel(fs);
                // load meta data
                var metaData = loader.LoadMetaData(model);
                // load data
                var data = dataLoader.LoadData(".", model);

                var staticRequest = new MgStorageBlockAllocationRequest();
                // allocate partitions for static data
                // mesh
                var meshLocations = AllocateMeshes(staticRequest, metaData.Meshes, metaData.Accessors, metaData.BufferViews);

                var meshPrimitives = ExtractMeshPrimitives(metaData.Materials,
                                                           out MgtfMaterial[] sceneMaterials,
                                                           metaData.Meshes,
                                                           meshLocations);

                // images
                var images = ExamineImages(data.Images, data.Buffers);

                // initialize static data storage

                var staticCreateInfo = new MgOptimizedStorageCreateInfo
                {
                    Allocations = staticRequest.ToArray(),
                };

                mStaticStorage = mBuilder.Build(staticCreateInfo);

                // build static artifacts
                // render target
                // descriptor set layout + pipeline layout
                var pass = new ScenePass
                {
                    RenderTarget = screen,
                    Effects      = new[] {
                        new ScenePassEffect
                        {
                            Factory      = mPbrFactory,
                            EffectLayout = mPbrFactory.CreateEffectLayout(configuration.Device),
                        }
                    }
                };

                pass.Initialize(
                    configuration.Device,
                    meshPrimitives,
                    sceneMaterials);

                // allocate dynamic data
                var dynamicRequest = new MgStorageBlockAllocationRequest();

                var limits    = new MgPhysicalDeviceLimits();
                var worldData = AllocateWorldData(dynamicRequest, limits.MaxUniformBufferRange);

                var storageIndices = AllocateMaterials(sceneMaterials, dynamicRequest, limits);

                // per instance data

                // build dynamic artifacts
                // semaphores
                // fences
                // descriptor sets

                // initialize dynamic data storage

                // copy data across
                // buffers
                // images

                // map dynamic data

                // build command buffers
            }
        }
Esempio n. 16
0
 public void ReleaseManagedResources(IMgGraphicsConfiguration configuration)
 {
 }
Esempio n. 17
0
 public AmtGraphicsDevice(MTKView view, IMgGraphicsConfiguration config)
 {
     mApplicationView = view;
     mConfiguration   = config;
     mFramebuffers    = new MgFramebufferCollection(config);
 }
Esempio n. 18
0
 public MgFramebufferCollection(IMgGraphicsConfiguration configuration)
 {
     mGraphicsConfiguration = configuration;
 }
Esempio n. 19
0
 public void Update(IMgGraphicsConfiguration configuration)
 {
 }
Esempio n. 20
0
 public MgLinearImageOptimizer(IMgGraphicsConfiguration configuration, IMgImageTools imageTools)
 {
     mGraphicsConfiguration = configuration;
     mImageTools            = imageTools;
 }
Esempio n. 21
0
 public MgStagingBufferOptimizer(IMgGraphicsConfiguration configuration, IMgImageTools imageTools)
 {
     mGraphicsConfiguration = configuration;
     mImageTools            = imageTools;
 }