Direct3D 12を始める – Fence (1)
Windows 10 Technical Preview向けのWindows SDKには、最新のDirectXのライブラリが同梱されています。 その中でもまだ情報が少ないDirect3D 12に焦点を当て、筆者が調べたことをまとめて記事にしていきます。 前回はCommand Queue、Command List、Command Allocatorについて説明しました。...
View ArticleDirect3D 12を始める – Pipeline State
Windows 10 Technical Preview向けのWindows SDKには、最新のDirectXのライブラリが同梱されています。 その中でもまだ情報が少ないDirect3D 12に焦点を当て、筆者が調べたことをまとめて記事にしていきます。 前回はFenceについて説明しました。 今回はPipelineStateついて説明します。 ■パイプラインステートとは Direct3D...
View ArticleWindows 10でDirect3Dのデバッグランタイムをインストールする方法
Windows 10でD3D11_CREATE_DEVICE_DEBUGフラグを指定してD3D11CreateDevice()を呼び出したところ、HRESULT 0x887a002dを返して失敗しました。 ログにはこんなメッセージが出ていました。 D3D11CreateDevice: Flags (0x2) were specified which require the D3D11 SDK...
View Article.NET Standardで旧来のWindows向け.NET DLLを使う
.NET Standardで、VisualStudio 2015以前で作成した.NET FrameworkのDLLを使う方法です。 が、なぜかdotnet runできないので、ビルドするところまでです。実行はできません。 ■まえおき .NET Coreでは、標準ライブラリがBCL (Base Class Library)から整理し直したCore Library、別名CoreFXに変わりました。...
View ArticleUnityで深度バッファからカメラZを取得
忘れないようにメモ。 Unity 2017.1 float LinearEyeDepth(float rawdepth) { float x, y, z, w; #if UNITY_REVERSED_Z x = -1.0 + _NearClip / _FarClip; y = 1; z = x / _NearClip; w = 1 / _NearClip; #else x = 1.0 -...
View ArticleTriangle Culling
Triangle Cullingを実装してみました。 アイデア 出典はOptimizing the Graphics Pipeline with Compute [Graham16]です。 Radeon GPU(PS4/XboxOne世代)のプリミティブ処理能力が低いから、余っているALU性能を活用してプリミティブをカリングし、高速化しようぜという話が書かれています。...
View ArticleDirectX12の新しいBarrier
昨日、DirectX Agility SDK 1.700.10で追加された、ResourceBarrier()を刷新する新しいバリアAPI(Enhanced Barrier)が公開されました。しかしSDKはあるもののドキュメントが見当たりません。そこで、ヘッダの中身を見ながら考察してみました。 ID3D12GraphicsCommandList7 : public...
View ArticleGame Porting Toolkitメモ
私のGitHub上で遊んでいるDirectX 12プログラムを、Macで動かしたくなりました。 今回動かしたのは、このシンプルなRust + DX12プログラムです。MacからVisual Studioプロジェクトをビルドするのは面倒そうなので、GitHub ActionsでArtifactsにアップロードして取り出しました。...
View ArticleTang Nano 9KのBSRAMのタイミング
シングルポートBSRAMが仕様書通りの挙動になっているかどうかを、実際に動かして確認する。今回はRead-before-writeのBypassモードのみ確認している。(Pipelineモードはどこで使うのだろうか?) 公式のBlock SRAM (BSRAM) の仕様書はこちら クリックしてUG285E.pdfにアクセス...
View ArticleTang Nano 9KからMacへUART送信する
UARTのことを何も知らないところから始めて、通信を成功させるまでに色々罠にハマったので、メモ。LEDチカチカデバッグだけではしんどいこともあると思って実装したが、思ったほど手軽ではなかったので、諸学者は後回しでも良い気がする。 最初に、成功したコードを丸ごと貼り付ける。次のWebページのコードを参考にした。【Tang Nano 9K】uart送信 module top ( input wire...
View Article