プログラミング

Vulkan

Vulkanカスタムアロケータを使うとメモリリーク (NVIDIA環境)

Vulkan ではメモリ管理のためのアロケータを、ユーザー定義のものを用意して使うことができるようになっています。これを使ったときに、NVIDIA の環境でだけ挙動がおかしくなる場面があったので本記事を作成しました。本使い方による性能の善し悪しはあるにせよ、仕様通りの使い方ではあるはずなので、修正に期待したいところです。 もしかすると単に自分の使い方が悪いの...
プログラミング

ゼロからのOS自作入門をやってみる (2)

あれから続けて USB マウスの入力のところまで来たのですが、これが大変でした。結論としては、自分の環境では実機での動作確認に至らずでした。 マウス対応 GPDWIN は USB ポートが1つしかなく、ここに起動用の USB メモリを差してしまうとマウスが繋がりません。そして USB ハブを繋いでみると、 UEFI により起動のメモリを見つけて起動まではスム...
プログラミング

ゼロからのOS自作入門をやってみる (1)

ゼロからのOS自作入門を実際に手元で試してみました。ステップが多いので何回かに分けてやってみようと思っています。 環境の準備 普段使いの環境が Windows でなるべく環境をクリーンに保ちたかったため、 Docker を活用した DevContainer 環境で始めることにしました。既にこのコンテナを用意してくれている方がいらっしゃるので、ありがたく使わせ...
プログラミング

ImGui での文字滲みで確認すること

ImGui を使おうと組み込んで、以下の図に示すような文字の滲み・ぼけの症状に出遭ったときに確認するべきことを記載しておきます。なお、ImGuiを通常の組込をした場合には、このような状態になりません。 確認すべきこと 描画対象の解像度が正しく合っているか、これを確認しましょう。 上記の画像は、 DirectX のレンダーターゲットのサイズとウィンドウのクライ...
DirectX

32ビットアプリでは DXR は使えない?

DirectX Raytracing (DXR) のコードをゼロから書き始めて、気付いた点になります。 32bit アプリ (x86 ビルド設定) で以下のコードを実行したら、DXR をサポートしていないと返ってきました。 hr = D3D12CreateDevice(nullptr, D3D_FEATURE_LEVEL_11_0, IID_PPV_ARGS...
DirectX

DXR でスキニング対応をする (2)

前回は DXR におけるスキニングの実装の流れ(コンピュートシェーダー版) を軽く紹介しました。今回はその実装について踏み込んでいきます。 バッファの準備 コンピュートシェーダーによるスキニングによる頂点変形では、変形処理前の頂点列と変形後の頂点列の2つのバッファが必要になります。従来のレンダリングパイプラインの場合では変形前のバッファのみで済みましたが、今...
DirectX

DXR でスキニングを対応する (1)

DirectX Raytracing でモデル(3D形状)を描画できるようになると、次にキャラクターを出したくなります。このキャラクターというのが多くの場合スキニングモデル(エンベロープモデル)で作られているので、これに対応する必要が出てきます。 スキニングについて 各関節に見立てたボーンが動くことで、それによる頂点変形を施して描画する、という処理は、従来の...
プログラミング

現代版の「OS自作入門」本が出るらしい

まだ買うことができる「30日でできる!OS自作入門」という本があります。自分もちょっと昔にこの本を読んで、「あぁこうやってOSの無い世界で動くコードを作っていくのか」と勉強になりました。そして、普段は気にしないOSの裏側を見せてくれるような気がして、面白かったと思います。また自作入門とあるだけあって、簡単にできるんだなと感じることができました。実際に使えるも...
プログラミング

Azure Container Instances で簡単デプロイ (2)

前回 Azure Container Instances にデプロイするまでをトライしました。ステートレスなコンテナならば十分だったりしたのですが、やはりデータを保持したいのでデータベースをコンテナで用意してみることにしました。 Azure のマネージドなデータベースのサービスを使う方法も当然あります。むしろ自身のメンテナンスコストを下げていくには積極的に使...
サーバー構築

Azure Container Instances で簡単デプロイ

最近はコンテナを動かす基盤として、 AWS Fargate や ECS, GCP の GCE などありますが、一番簡単にコンテナをデプロイして動かすまでが出来ると思った Azure Container Instances を使ってみることにしました。 今回の前提条件として、動作させるサービス群は docker-compose.yml を用いて複数のコンテナが...