Tang Nano 9KからMacへUART送信する
UARTのことを何も知らないところから始めて、通信を成功させるまでに色々罠にハマったので、メモ。LEDチカチカデバッグだけではしんどいこともあると思って実装したが、思ったほど手軽ではなかったので、諸学者は後回しでも良い気がする。 最初に、成功したコードを丸ごと貼り付ける。次のWebページのコードを参考にした。【Tang Nano 9K】uart送信 module top ( input wire...
View ArticleTang Nano 9KのBSRAMのタイミング
シングルポートBSRAMが仕様書通りの挙動になっているかどうかを、実際に動かして確認する。今回はRead-before-writeのBypassモードのみ確認している。(Pipelineモードはどこで使うのだろうか?) 公式のBlock SRAM (BSRAM) の仕様書はこちら クリックしてUG285E.pdfにアクセス...
View ArticleGame Porting Toolkitメモ
私のGitHub上で遊んでいるDirectX 12プログラムを、Macで動かしたくなりました。 今回動かしたのは、このシンプルなRust + DX12プログラムです。MacからVisual Studioプロジェクトをビルドするのは面倒そうなので、GitHub ActionsでArtifactsにアップロードして取り出しました。...
View ArticleDirectX12の新しいBarrier
昨日、DirectX Agility SDK 1.700.10で追加された、ResourceBarrier()を刷新する新しいバリアAPI(Enhanced Barrier)が公開されました。しかしSDKはあるもののドキュメントが見当たりません。そこで、ヘッダの中身を見ながら考察してみました。 ID3D12GraphicsCommandList7 : public...
View ArticleTriangle Culling
Triangle Cullingを実装してみました。 アイデア 出典はOptimizing the Graphics Pipeline with Compute [Graham16]です。 Radeon GPU(PS4/XboxOne世代)のプリミティブ処理能力が低いから、余っているALU性能を活用してプリミティブをカリングし、高速化しようぜという話が書かれています。...
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 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 ArticleWindows 10でDirect3Dのデバッグランタイムをインストールする方法
Windows 10でD3D11_CREATE_DEVICE_DEBUGフラグを指定してD3D11CreateDevice()を呼び出したところ、HRESULT 0x887a002dを返して失敗しました。 ログにはこんなメッセージが出ていました。 D3D11CreateDevice: Flags (0x2) were specified which require the D3D11 SDK...
View ArticleDirect3D 12を始める – Pipeline State
Windows 10 Technical Preview向けのWindows SDKには、最新のDirectXのライブラリが同梱されています。 その中でもまだ情報が少ないDirect3D 12に焦点を当て、筆者が調べたことをまとめて記事にしていきます。 前回はFenceについて説明しました。 今回はPipelineStateついて説明します。 ■パイプラインステートとは Direct3D...
View ArticleDirect3D 12を始める – Fence (1)
Windows 10 Technical Preview向けのWindows SDKには、最新のDirectXのライブラリが同梱されています。 その中でもまだ情報が少ないDirect3D 12に焦点を当て、筆者が調べたことをまとめて記事にしていきます。 前回はCommand Queue、Command List、Command Allocatorについて説明しました。...
View ArticleDirect3D 12を始める – Command
Windows 10 Technical Preview向けのWindows SDKには、最新のDirectXのライブラリが同梱されていますその中でもまだ情報が少ないDirect3D 12に焦点を当て、筆者が調べたことをまとめて記事にしていきます。 現時点でSDKはプレビュー版であり、リリース版では仕様変更の可能性があります。 書きかけにつき今後図を追加するかもしれません。...
View ArticleDirect3D 12の実験コード
DirectX 12を使ったプログラムをGithubで公開しています。 公式のサンプルがないので手探りですが、何かの参考にしてください。 DirectXのチュートリアルに似た感じで、プロジェクトごとにDirect3D 12の各機能にスポットを当てています。 解説記事は近いうちに書く予定です。
View ArticleIDF14で公開されていたGDC2014からのDierct3D 12のアップデート
Intelが2014年9月に行ったIntel Developer Summit 14で、Direct3D 12に関する情報がアップデートされていたことが分かりました。 ソース:IDF2014の資料ダウンロードページ 以前、筆者はGDC2014の資料を基にSlideshareでDirect3D 12についてまとめた資料を公開しましたが、ほとんどはその資料と同じ内容です。...
View Article頂点バッファを使わず全画面に描画する頂点シェーダ
いつも忘れるのでメモしておきます。 バリエーションは今後増える予定。 ■GLSL ES 3.0 #version 300 es in int gl_VertexID; void main() { int x = (gl_VertexID & 1) * -2 + 1; int y = (gl_VertexID & 2) * -1 + 1; gl_Position = vec4(x,...
View ArticleHLSLで浮動小数点数のアトミック演算
Direct3D 11のシェーダでバッファや共有メモリに対してアトミック演算を行うことがありますが、HLSLのAtomic演算(Interlocked関数)はuintかint型を対象としていて、floatには対応していません。今回は、無理やりInterlocked関数を使って浮動小数点数の比較を行ってみました。 ■方法...
View ArticleDirect3D 12
先月の夏休み前から細々と書いていたDirect3D 12の概要を資料が完成しました。 Slideshareにアップロードしています。 たぶん間違いだらけなので指摘等あればご連絡ください。
View Article【日本語訳】Direct3D 12 概要 Part3:リソースバインド
Intelのブログに”Direct3D 12 Overview Part 3: Resource Binding“という記事が上がっています。 Direct3D 12に関してはMicrosoftがPowerPointと動画を公開していますが、文章による詳細な解説はほとんど見られません。このブログの記事はDirect3D 12の前情報としては貴重なものなので、日本語訳に挑戦しました。...
View ArticleC++11のconstexprで遊ぶ
関数呼び出しの結果をコンパイル時に計算し、定数として扱えてしまうconstexprで遊びました。 ■constexprの利点 テンプレートメタプログラミングのような難しいテクニックが不要で人間にやさしく、コンパイル速度が速い ■例:数字で表現された文字列の総和 constexpr unsigned int sumNumberStep(const char *p, int index, int...
View ArticleMaxwell (GM107) の命令スループット
CUDAのドキュメントが更新されて、GM107ことGeForce GTX 750 / GeForce GTX 750Tiの命令スループットが追加されていたのでまとめました。 【重要】情報の正確性は保障しません。 ■命令スループット CUDA C Programming Guide, Low Level Optimizations for AMD GCN, A look at instruction...
View ArticleOpenGL 4.xを少し
とりあえず横線を書くだけ。 Mac OS 10.9.2 (Marvericks) + Xcode 5.1 + Mac mini late 2012 (Intel HD Graphics 4000) 多少手直しすればWindowsでも動くはず(注意:Windows版のIntelドライバはOpenGL 4.0までしか対応していないので、バージョン指定を変えること)...
View Article