プログラミング

プログラミング

__cplusplus について

C++を使っていて、C のコードブロックを書きたいときに __cplusplus を使用して対処することがあります。 このとき、 __cplusplus が定義されていたら、現在は C++ のコンテキストでコンパイルしている、と判断していたわけですが、この __cplusplus は実はC++のバージョン値を持っていたということを今更知りました。 きっかけは...
Vulkan

Vulkan 1.2 の発表

2020/01/15 に Vulkan API も 1.2 のバージョンが発表されました。そして既に対応するドライバも公開が始まっています。このバージョン1.2では、何が変わったのかを記録しておきます(自分なりの解釈も入っているので、間違っていたらすみません)。 タイムラインセマフォ 大きな機能追加だと思います。今まで VkFence と VkSemapho...
プログラミング

C++ filesystem ヘッダの課題

Visual Studio 2019 のバージョン 16.3 以降で、 filesystem ヘッダの部分が変わりました。従来は experimental だったのが、正式版となったような感じです。何もしないでコンパイルが通る状況では無くなったので修正を施します。 バージョン判定 Visual Studio 2019 の途中のバージョンからの変更となるため、...
Vulkan

SwiftShader を試してみた

今年 SwiftShader が Vulkan 1.1 の conformance test を通過したと聞いたので、気になって手元でも試してみることにしました。 SwiftShader とは Google 製の CPU による Vulkan 実装というところです。次の場所で公開されています。 CPUでラスタライズ処理をするため、 GPU の機能を使用しませ...
DirectX

DirectX12 の書籍 「DirectX 12の魔道書」

自分も同人誌で DirectX12 や Vulkan のプログラミングの書籍を作っていますが、とうとう商業誌として DirectX12 の書籍が登場するようです。600ページを越えるかなりのボリューム感となっていますが、 DirectX12 をしっかり説明しつつ入門となるとこのくらいになってしまうのかもしれないですね。 内容としては、MMDモデルを描画&踊る...
DirectX

DirectX12 でテッセレーション

DirectX12 でのテッセレーションを確認してみています。テッセレーション自体は DirectX11 から使えるようになっているものですが、あまり事例を見かけないかなと思います。頂点シェーダーやピクセルシェーダーのように必須のものではありませんし、色々と制御が難しかったりしています。今回はテッセレーションの基本的な部分について、自分のメモです。 テッセレ...
DirectX

DirectX12 でシングルパスキューブマップ描画

DirectX12 で、ジオメトリシェーダーを用いてシングルパスでキューブマップ6面を描画を行う手順を確認しました。以前に各キューブマップ面毎に描画する方法は紹介しました。ジオメトリシェーダーを使うと1回の描画で6面へ描画ができます。 レンダーターゲットビュー・デプスステンシルビューの準備 描画先とするために、レンダーターゲットビューとデプスステンシルビュー...
DirectX

Windows10 20H1 での DirectX12 周辺の拡張の話

とうとう DirectX にも Mesh Shader が来るのかもしれません。 Microsoft のブログによると、 Windows10 の次のバージョン 20H1 にて次のような拡張が入りそうな感じです。 DirectX RayTracing Tier 1.1DirectX Mesh ShaderDirectX Sampler FeedbackText...
DirectX

ID3D12InfoQueue のお世話になった

描画用キューブマップを各面毎にクリアしたときに警告を出してしまったので、これらについて対処するための小ネタです。 レンダーターゲットを動的なカラーでクリアすると警告 レンダーターゲットを任意のカラーでクリアするとワーニングが発生します。レンダーターゲット生成時に指定したカラー値(デプス値)と違ったものでクリア処理を呼ぶと、パフォーマンスの観点から怒られるよう...
DirectX

DirectX12 でキューブマップ

DirectX12 でキューブマップを使ってみます。 今回は素直な実装で、キューブマップへの描画&利用についても試してみました。 キューブマップは DirectX10 以降では、2Dのテクスチャ画像を6つ保持するテクスチャ配列です。 この6つの面に、±X, ±Y, ±Z の方向を向いた3Dシーンが描画されています。これを環境マップとして使用して、反射先の色と...