Triangle Culling

Triangle Cullingを実装してみました。

アイデア

出典はOptimizing the Graphics Pipeline with Compute [Graham16]です。
Radeon GPU(PS4/XboxOne世代)のプリミティブ処理能力が低いから、余っているALU性能を活用してプリミティブをカリングし、高速化しようぜという話が書かれています。

今回は、スライドの中盤に書かれているTriangle Cullingのうち、Backface Culling, Frustum Culling, Small Primitive Cullingの3つを実装しました。

ソースコードはこちらあとでアップする

続きを読む

広告

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プロパティをそのまま渡せばよい。

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はプレビュー版であり、リリース版では仕様変更の可能性があります。
書きかけにつき今後図を追加するかもしれません。
続きを読む