Help us understand the problem. What is going on with this article?

初めてのvulkanプログラム第1章 Vulkan プログラムとは、何か

目次に戻る

今年もqiita アドベントカレンダーが始まりました。皆さんの興味のある分野は、c++、python、html、unity、UE4...と様々なものがあると思います。
ここは、地道に一人で、vulkan プログラムに関するチュートリアルを書いていく場所です。それでもよろしければ25日間よろしくお願いします。

概要

このアドベントカレンダーは25日間かけてvulkan purogramingを入門していきます。vulkan purogramingに関する日本語の記事や、書籍が少ないため、入りにくい世界ではありますが。自分がグラフィクスエンジニアになるための窓口になれたら嬉しいです。

vulkanとは

vulkanの前世代Openglは(1992年)IBMのPowerpc、pc98が流行っていた時代に登場しました。現在では、intelのcoreシリーズ、AMDのRyzen等のメニーコアCPUが主流ですが当時は、1コアのCPUが主流でした。multicore cpuができたのは2004年です。ほんとに最近のことですね。openglは、過去の遺産との互換性を維持するため、多くの弱点がある。これらのレガシーな環境をリセットして、新しくマルチスレッドや、シェーディング中間言語対応といった、近代的な技術が投入されたapiがvulkanです。vulkanはドイツ語で火山を意味するらしい.

火山

Openglの弱点?

1.マルチGPU

Directxの場合DXGIアダプターを列挙することで複数のGPUを搭載したシステムで任意のGPUを選択して使用することができる。これによりGPGPU演算を実行させ、アプリケーションの並行処理させ、処理性能を向上させるいった使い方ができる。OpenGLでは、GPUを選択的に使用したり、それぞれのGPUに対して操作を行うことは、標準化されていない。nvidia SLIに対応したGPUを用いてSLI構成を行うことで、GPUドライバー側で分散処理させることはできるが、SLIは主にOpenGLやDirectxのグラフィックスレンダリングを自動的に分散処理して高速化する技術のためSLI環境下でのGPGPUは、多くの制約や注意点がある。SLIでは、ハードウェアメモリーのミラーリングが行われるため、2つのGPUをつないでもGPUメモリーの合計値にならない。

2.GPGPU機能と、レンダリングコンテキスト機能

Opengl apiは必ずウィンドウを作成してから出ないとコンピュートシェーダーを利用することができない。つまり、スクリーンを必要としない処理でも、必ずウィンドウを生成しなければいけない

3.マルチスレッド対応

Directxでは、マルチスレッドを活用して描画パフォーマンスを向上させる仕組みが導入されているが。Openglでは、相当機能をサポートしていない。
Directxでは、デバイスインターフェースがセーフスレッドのため、サブスレッドからのソース生成や、複数のスレッドからの同時生成に標準で対応している。しかしOpenglでは、レンダリングコンテキストを生成したスレッドのみがリソースを扱えるようになっているため、サブスレッドでリソース生成を行うには、wglShareLists()といったプラットフォーム依存のAPIを利用して明示的にコンテキストの共有を行うことが必要である

*1 DXGI: windowsから見たグラフィクスデバイスインターフェース
*2 Nvidia SLI: 複数のグラフィクスデバイスを並列動作させ、出力を一つにまとめて、描写処理を高速化させる技術

maruticore prosessa

まとめ

openglは、互換性を保つために変えられない部分が多くある。特にGPGPUとマルチスレッド対応について、Directxと比べて更新の対応が難しい部分がある。そのため新apiとしてVulkanを開発することによってこれらの新しい技術を搭載したlinux、windows、Mac OS、androidその他環境でも使えるオープンなグラフィクスapiを作ろうとしている。

その他気になることがありましたら、コメント、メール、twitterで連絡ください

参考書

書籍

Vulkan Cookbook
Learning Vulkan
Vulkan Programming Guide: The Official Guide to Learning Vulkan
Introduction to Computer Graphics and the Vulkan API

youtube

The Khronos Group
Niko Kauppi
NvidiaDeveloper
Qualcomm Developer

連絡先

tweeter: tositada_nakada
mail: nakadasanda@outlook.com

寄付

paypal: tositada_nakada
Amazon: 欲しいものリスト

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away