Unityで深度バッファからカメラ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 - _NearClip / _FarClip;
  y = _NearClip / _FarClip;
  z = x / _NearClip;
  w = y / _NearClip;
#endif

  return 1.0 / (z * rawdepth + w);
}

float d = _CameraDepthTexture.Load(int3(xy, 0));
float camera_z = LinearEyeDepth(d);

_NearClipと_FarClipの値は、CameraコンポーネントのnearClipPlaneとfarClipPlaneプロパティをそのまま渡せばよい。

広告

.NET Standardで旧来のWindows向け.NET DLLを使う

.NET Standardで、VisualStudio 2015以前で作成した.NET FrameworkのDLLを使う方法です。

が、なぜかdotnet runできないので、ビルドするところまでです。実行はできません

続きを読む

Windows 10でDirect3Dのデバッグランタイムをインストールする方法

Windows 10でD3D11_CREATE_DEVICE_DEBUGフラグを指定してD3D11CreateDevice()を呼び出したところ、HRESULT 0x887a002dを返して失敗しました。

ログにはこんなメッセージが出ていました。

D3D11CreateDevice: Flags (0x2) were specified which require the D3D11 SDK Layers for Windows 10, but they are not present on the system.
These flags must be removed, or the Windows 10 SDK must be installed.
Flags include: D3D11_CREATE_DEVICE_DEBUG

“Graphics Tools”というのをインストールすれば良いらしいので、手順をメモしておきます。

続きを読む

Direct3D 12を始める – Pipeline State

Windows 10 Technical Preview向けのWindows SDKには、最新のDirectXのライブラリが同梱されています。
その中でもまだ情報が少ないDirect3D 12に焦点を当て、筆者が調べたことをまとめて記事にしていきます。

前回はFenceについて説明しました。
今回はPipelineStateついて説明します。

続きを読む

Direct3D 12を始める – Fence (1)

Windows 10 Technical Preview向けのWindows SDKには、最新のDirectXのライブラリが同梱されています。
その中でもまだ情報が少ないDirect3D 12に焦点を当て、筆者が調べたことをまとめて記事にしていきます。

前回はCommand Queue、Command List、Command Allocatorについて説明しました。
今回はコマンドを管理する上で重要となるフェンスについて説明します。

現時点でSDKはプレビュー版であり、リリース版では仕様変更の可能性があります。
書きかけにつき今後図を追加するかもしれません。 続きを読む

Direct3D 12を始める – Command

Windows 10 Technical Preview向けのWindows SDKには、最新のDirectXのライブラリが同梱されていますその中でもまだ情報が少ないDirect3D 12に焦点を当て、筆者が調べたことをまとめて記事にしていきます。

現時点でSDKはプレビュー版であり、リリース版では仕様変更の可能性があります。
書きかけにつき今後図を追加するかもしれません。
続きを読む