Raspberry Pi でパケット遅延器


Raspberry Pi を使って、パケットの遅延器を作ってみました。
Linux なら2枚の NIC を使って簡単に作ることができます。これの Raspberry Pi 版となります。

USB-NIC を増設

Raspberry Pi 2/3 には1つの LAN ポートしかないため、2つめを追加する必要があります。
そこで今回 USB NIC を追加しました。手元にあったのが ESXi でも使うことが出来た LAN-GTJU3H3 だったのでこれを使用しました。
ちょうど Raspbian 2017-09 版でも装着したら、すぐに使えるという状態だったので手軽でした。


同様のチップを採用しているものも素直に動くのでは、と思います。

続きを読む


ソフトパーティクルの実装方法


テクスチャとして読み込むデプスバッファと、アウトプットマージャーにセットしたデプスバッファでデプステストを使っての事例として、ソフトパーティクルがお題に合致している感じだったので試してみました。
ようやく読み込み専用 DepthStencilView を意味あるものとして使えたかなと思います。

ソフトパーティクル

ソフトパーティクルとは、パーティクルに使用するビルボードとモデルや背景の境界部分をぼかすことによって、ハードなエッジを見せないようにするための技法です。
ハードなエッジとは以下のようなものです。ソフトパーティクルを無効化して描画したものになります。

続きを読む




Flask を使ったプロジェクトひな形


Python で WebApplication のフレームワークと言えば、Django が強いみたいですが、様々なことがラッピングされて一見ブラックボックス感が強いと思いました。
特に、始めてフレームワークを触る人には難しい印象でした。
自分は Python 初心者ではありますが、 Flask というフレームワークは使いやすさを感じたので紹介したいと思います。

Flask とは

Flask (フラスコ)とは、 Python の WebApplication フレームワークの1つです。
シンプルな機能を提供していることから、マイクロフレームワークとも言われています。

以下のようなコードで即 Web アプリの準備が整うため、手軽に始めることが出来ます。

このようなコードで http://localhost:3000/ にアクセスすると “Hello” という結果を返すものが動き始めます。
ここから色々なものを実装して付け足していくことで、アプリケーションが出来ていくので、凄く初心者にもわかりやすく&始めやすいものになっているのではないかと思います。


続きを読む


読み取り専用 DepthStencilView


今更ですがディファードレンダリングのコードを書いていました。ポイントライトをたくさんおける仕組みなのがいいですね。
古いタイプのレンダリングコードとはまた違った感じで、入力は既に描画したテクスチャを参照してデータが入ってくるのは新鮮でした。

そのときに、既に描画済みのデプスバッファを参照しつつも、デプステストは有効にしたいというようなケースでワーニングに出遭ってしまいました。

リソースハザードの発生

今回の場合では、デプスバッファがシェーダーへの入力と、パイプラインの出力(出力マージャー)に設定されているために、リソースハザードの警告が発生しました。
デプスステンシルステートで、 D3D11_DEPTH_WRITE_MASK_ZERO を設定して、書き込まれないようにしていてもこの警告は発生します。

ピクセルシェーダーで ShaderResource として読み込む設定だったため、以下の警告が VisualStudio で表示されました。

対応策

今回の例では ID3D11DepthStencilView をもう1つ作成することになりました。
読み込み専用としての ID3D11DepthStencilView を作成します。これは以下のようにして作成します。
フラグに D3D11_DSV_READ_ONLY_DEPTH を設定するのがポイントです。難点はこのフラグの存在に気付きにくいことでしょうか。

今更ですが、デプスバッファをテクスチャとして読み込むためには、デプステクスチャ作成時に BindFlags を D3D11_BIND_DEPTH_STENCIL | D3D11_BIND_SHADER_RESOURCE で作成します。このとき、フォーマットは DXGI_FORMAT_D32_FLOAT ではなく、 DXGI_FORMAT_R32_TYPELESS を使って作成しておく必要がありました。
DXGI_FORMAT_R32_FLOAT, DXGI_FORMAT_D32_FLOAT のフォーマットを指定して、各ビューの作成を行います。

感想

現時点においては簡単なものしか入れていないため、まだデプスバッファをINにもOUTにも設定して有効活用するといったところまでは到達していません。やろうと思ったら今までに説明した内容に出遭ってしまったので記事にしてみました。

デプスバッファを出力マージャーに設定しておきたいのはデプステストや Depth Bounds Test とかを活用したいという狙いです。
あとは、デプスを入力として参照したかったのは SSAO や ワールド位置の復元をこのバッファから出来れば、G-buffer に出さなくていい(削減できる)と考えたからです。


Windows10 1607 に Windows Update の適用済みディスクを作る


以前に Windows7 に WindowsUpdate 適用済みディスクを作成する記事を書きました。
あれから環境も変わって Windows10 を使うことも増えてきました。今度は Windows10 で同じように統合したいと思うようになりました。
そこで Windows10 の環境でも Windows update を適用済みディスクを作るといったことにチャレンジしてみます。

用意するもの・環境など

必要になるものは以下のものです。

  • Windows10 のインストールディスク
  • 適用させたい WindowsUpdate の msu ファイル群

インストールディスクについては MSDN で入手できるものを使用しました。パッケージ版のインストールディスクらでも同様のことは可能のはずです。

作業環境としては以下の状態でやっています。

  • Windows10 1703 (CreatorsUpdate)
  • 現時点における最新の Windows ADK

dism コマンドでバージョンを確認したところ以下のようになっていました。

続きを読む


WPF TreeView の破線描画付き その3


もうすこし TreeView の見た目に足掻いてみました。
今までのものは項目の部分でクリックが有効になるのですが、 Windows エクスプローラーなどではその行で選択できるようです。
これを実現してみようとトライしてみました。

結果

現時点の実装状態ではこんな感じが出来ています。

実現方法

通常のものだと TreeViewItem の要素は 田 の形で区切られて、右下の部分にさらなる子供のデータを表示するという実装になっています。
親から子供まで行をフルに選択させつつ見た目は従来通り、ということを実現するためにはこの方法を変更する必要があります。

では、どう実現するかですが、ここでは子供の深さ分を横にスライドするという方法を行ってみました。現在の深さからマージンを返すコンバーターを用意して、この実装としました。

今回のこの実装もまた GitHub のほうにおいてあります。
https://github.com/techlabxe/TreeViewCustomized2


WPF TreeView で破線付きを作ってみた その2


先日の続きの話になります。
TreeView の階層構造を破線でつなげて描画したものにするといったネタになります。

TreeView 本体ではなく、 TreeViewItem のテンプレートを編集して以下のようなものが実現できました。

標準のテンプレートで変更した箇所と言えば、開閉のための三角を+や-に変更したところでしょうか。
未使用の列については破線を描くために Rectangle を配置しています。

また今回の産物は GitHub のほうで公開してみることにしました。
何かの参考になったり、不具合の修正など提案して頂けたら幸いに思います。

https://github.com/techlabxe/TreeViewCustomized


WPF TreeView で破線付きを作ってみた


昔の Windows のツリーコントロールは破線によって項目が繋がっていたような気がします。
そんなツリーコントロールが WPF で実現できないかと思って試してみました。

まずは以下のページの情報を基本として使わせてもらいました。
https://stackoverflow.com/questions/19560466/how-to-make-wpf-treeview-style-as-winforms-treeview
http://d.hatena.ne.jp/Tan90909090/20150705/1436085068

こうして出来上がったのが以下のようなものです。

ただフォルダの開閉が思うように動いて、ぱっと見た感じの印象は悪くないのですが、実が項目の選択が出来ないという問題が残っています。

標準のテンプレートを変更してみる

標準の TreeView および TreeViewItem のテンプレートをカスタムする方向で再度トライしてみました。標準のスタイルとテンプレートはこちら、「TreeView のスタイルとテンプレート」 にて公開されています。

これを基本として、破線を書くようにしてみたものがこちらです。

TreeViewItem の中身が、Grid によって”田”のように区切られており、使用されていない箇所で条件によって破線を描画するようなパーツを配置して実現しています。

  • 項目末尾の部分(画面内での readme フォルダ)の部分の破線処理の補正
  • フォルダのアイコン
  • フォルダ開閉のボタンを田に変更する

このような点を修正したら、(記憶にある)昔ながらの TreeView になるのではと思っています。