Vulkan

Vulkan
All About Vulkan

Short Definition: Vulkan is a low-overhead, cross-platform 3D graphics and compute API by Khronos Group. Vulkan is intended to provide a variety of advantages over other APIs; e.g., OpenGL, OpenGL ES, Direct3D, Direct3D Mobile, etc. ([GR:] no comment in comparison with Metal (ø1) API).




Major Related Topics:
  
♦ Mesa 3D Graphics Library
♦ Mantle API

 



Notes:

(ø1) Metal: 

Metal is a low-level, low-overhead hardware-accelerated graphics and compute application programming interface (API) that debuted in iOS 8. It combines functionality similar to OpenGL and OpenCL under one API. It is intended to bring to iOS some of the performance benefits of similar APIs on other platforms, such as Khronos Group's cross-platform Vulkan and Microsoft's Direct3D 12 for Windows. Since June 8, 2015, Metal is available for iOS devices using the Apple A7 or later, as well as Macs (2012 models or later) running OS X El Capitan. Metal also further improves the capabilities of GPGPU programming by introducing compute shaders. Metal uses a new shading language based on C++11; this is implemented using Clang and LLVM. Support for Metal on OS X was announced at WWDC 2015. [Ref: https://en.wikipedia.org/wiki/Metal_(API)]

Metal is Apple's new low-level graphics API. With it, you can communicate with the GPU directly and conduct graphics, as well as other computational operations. Using Metal, you can create 2D and 3D apps or games by developing your own custom framework from the ground up, without relying on pre-existing frameworks such as SpriteKit and SceneKit. Metal, like any other graphics API, has a graphics pipeline with programmable shaders. You are also able to allocate the memory, including buffer and texture objects. Metal also has it own shader language for compiling and applying the shaders. But why do we need Metal when there is SceneKit? In SceneKit, SpriteKit, or any other game development framework, Metal first interacts with a graphics library, such as OpenGL ES, which in turn transfers the information to the GPU. [Ref: "Learning iOS 8 Game Development Using Swift", by: Siddharth Shekar, ISBN: 978-1-78439-355-7]

Metal is a new framework specified for GPU-accelerated advanced 3D graphics. Apple first introduced Metal in iOS 8. To work with Metal, you need a physical device as it's not supported yet in iOS simulator. The physical device must also have an Apple A7 or A8 processor or higher (at the moment there is no higher processor, but I have included it just in case Apple introduces A9 while you are reading this chapter). This means that you need an iPhone 5s or higher or an iPad Air or Mini (second generation) to run Metal. [Ref: "Application Development with Swift", by Hossam Ghareeb, ISBN: 978-1-78528-817-3]





Major Books:

♦ OpenGL® Programming Guide: The Official Guide to Learning OpenGL®, Version 4.5 with SPIR-V, Ninth Edition, by John Kessenich; Graham Sellers; Dave Shreiner, ISBN: 978-0-13-449549-1.





Major Links:

Optimize, Develop, and Debug with Vulkan Developer Tools [http://android-developers.blogspot.ca/2016/04/optimize-develop-and-debug-with-vulkan.html].





Major Videos:

Vulkan API Game Experience with the Galaxy S7 at E3 2016 [https://www.youtube.com/watch?v=73prhNQwLQs].





Major Game Engines Supporting Vulkan:

Unreal Engine 4 [GR: to be confirmed].




Major Games:

The Talos Principle.




END.

References:

Learning Vulkan
By: Parminder Singh
Publisher: Packt Publishing
Pub. Date: December 15, 2016
Web ISBN-13: 978-1-78646-084-4
Print ISBN-13: 978-1-78646-980-9
Pages in Print Edition: 466

 

2 comments:

  1. For the want of a nail the shoe was lost,
    For the want of a shoe the horse was lost,
    For the want of a horse the rider was lost,
    For the want of a rider the battle was lost,
    For the want of a battle the kingdom was lost,
    And all for the want of a horseshoe-nail.

    ReplyDelete
  2. mid:
    DECLARE @i int, @j int, @k int, @l int = 100;
    DECLARE @i2 int, @j2 int, @k2 int;
    SELECT @i = CHECKSUM(NewId()) % @l, @j = CHECKSUM(NewId()) % @l, @k = CHECKSUM(NewId()) % @l;
    SELECT @i, @j, @k;

    SET @i2 = 0.5 * @i + 0.5 * @j - 0.5 * ABS(@i - @j);

    SET @i2 = (2*@i + @j + @k - ABS(@j - @k) - ABS(2*@i - @j - @k + ABS(@j - @k))) * 0.25; -- min
    SET @j2 = (2*@i + @j + @k + ABS(@j - @k) + ABS(2*@i - @j - @k - ABS(@j - @k))) * 0.25; -- max
    SET @k2 = (2*@j + 2*@k + ABS(2*@i - @j - @k + ABS(@j - @k)) - ABS(2*@i - @j - @k - ABS(@j - @k))) * 0.25; -- mid

    SELECT @i2, @j2, @k2;

    ReplyDelete