2018年03月一覧

DirectX Raytrace (DXR) の始め方

GDC で話題になっていた DirectX Raytracing (DXR) が触ってみることができるようになった模様です。

Microsoft が DirectX のサンプルプログラムを公開しているリポジトリで、先日の DXR のサンプルが追加されていました。
https://github.com/Microsoft/DirectX-Graphics-Samples

今回はこれを起動させるまでを説明します。

準備

まずはリポジトリからファイルをダウンロードするか、 git を使って clone して取得してきます。
以前にリポジトリを clone している人は、 pull で最新状態に更新しておきます。

この中の Samples/Desktop/D3D12Raytracing というフォルダの中がサンプルコードとなります。

VisualStudio 2017 と、最新の Windows SDK が必要になるので、Visual Studio インストーラーから Windows SDK 10.0.16299 を含むように設定します。

続きを読む


Vulkan, D3D11 InterOp

Vulkan 1.1 で クロスプロセス API の相互運用機能 が標準に含まれたようだったので、再び Vulkan と DirectX11 (D3D11) の相互運用にチャレンジしてみました。
使用した拡張名としては以下のものになります。

  • VK_KHR_external_memory_capabilities
  • VK_KHR_external_memory
  • VK_KHR_external_memory_win32

動作結果としては以下のようになり、一応は動作させることができました。

続きを読む


Vulkan 1.1 が発表された

Vulkan といえば 1.0 のバージョンのまま、マイナーバージョンアップを黙々と続けているものでしたが、今回 1.1 の発表となりました。実情としては 1.0.70 ≒ 1.1.70 みたいな感じで、 1.1.0 からの再スタートというナンバリングではないようです。
この記事を書いている時点においては、少々出遅れしたためか、既に Windows の Vulkan SDK では 1.1.70.1 なるバージョンが出ていたりします。

続きを読む


WPF の ListView で選択項目を中央にしたスクロール制御

ListView で選択された項目をコントロールの中央に表示したいと思うことがあります。今回はこれを実現するべく実装を考えてみました。考え方としては ListView が持っている ScrollViewer を制御して、スクロールを制御することにしました。

結果

実装した結果を示します。作成したアプリの動きとしては次のようになっています。

  • 選択状態にあるものを画面外にスクロールさせたとして、”アジャスト”ボタンを押すと、その項目が中央になるように表示
  • 項目の番号を指定して”選択”ボタンを押すと、対象の項目を選択状態にして、その項目が中央になるように表示

続きを読む


ListView での VerticalContentAlignment バインディングエラー

ListView(+ListViewItem) のスタイルをいじってバインディングのエラーが出るのは分かるのですが、予期しないところでエラーが出るので困っていました。今回、ひとまずどういったときにエラーメッセージが出るのかが掴めたのと、今後同じように悩まないためにもメモとして残しておこうと思います。

バインディングエラーと対策

ListView あたりのスタイルをいじっていて以下のようなワーニングメッセージを見ることがありました。特にこの辺りのバインディングいじっていないのに出てしまうので疑問に思っていましたが、起因しているものが分かりました。

このエラーメッセージは、内容が動的に変化するコントロールにおいてよく出るようです。自分の場合には ListView などで仮想化して使っている場合に、このような症状が出るようです。

そこで ListViewItem のプロパティセッターに以下のようにしてパラメータをセットするようにして解決できました。

仮想化ありの場合

仮想化ありの場合においては上記の設定でうまく出来ませんでした。 ListViewItem の中身をカスタムする時に、 Blend を用いて既存のものをコピーして、編集する方法で行いましたが、当初のようなエラーメッセージを見ることになりました。

対策としては以下のように編集しました。

ListViewItem のテンプレートを Blend を用いて既存のものをコピーして作った場合、上記の(※)の部分についてもバインディングが設定されています。しかしそれにより今回のようなバインディングエラーが通知されてしまうため、項目そのものを削除しました。

まとめ

この手のものは、他にも動的な右クリックのメニュー(コンテキストメニュー)を作っているときにも、出遭いそうな気がします。参考情報を見ると、 WPF での既知の問題といえる内容にも見えます。

参考情報


今更ながらに Unity をインストール&入門した

世間では Unity を触っていない人の方が少なくなってきた感がある今日この頃ですが、自分もようやく PC に Unity 2017 をインストールしました。恥ずかしながら、全くといっていいほど触っていなかったのでまずは入門書を買ってきて、そこから始めることにしました。

続きを読む


Linux のしくみ という書籍を買った&読んだ

「試して理解 Linux のしくみ」という本を買いました。今回はタイトルよりも目次を見て買ったタイプです。
最近は”積ん読”が増えてきたので、買ったらまずは流してでも通読しておくように心がけようと思っている今日この頃です。


自分がこの本のいいなと思ったポイントは、物理メモリとのページングの機構が説明されているところでした。図も多用してわかりやすく描かれているように感じました。次点では、ファイルシステム周りの解説がよかったですね。ただいずれも深い内容というには足りない状態なので、この本は入門という位置付けになります。

昔だと 初めて読む 486 が定番でしたし、 Windows 環境なら インサイド Windows のメモリ管理を読むのがよいと思います。ただどちらも初心者が手出しするには難しい内容かと思うので、その前のステップとしてこの本は良さそうに思います。試して理解のとおりコードによる実験を通すので、この部分も自習にはいいかもしれません。

ただ自分としては期待していただけに、内容がやや初心者よりで物足りなさを感じました。悪い本ではないと思いますが、お値段とのバランス考えるとやや高いかなという印象です。


この インサイド Windows もまた随分と古い状態になってしまったので新しいものが出て欲しいですね。書籍の形で買うとなるとプレミア価格になってしまっているようなので、ご注意ください(Kindle版ならほぼ定価っぽいです)