月別アーカイブ: 2015年6月

Autodesk Maya 2016 と sRGB

Maya 2016 では Color Space を指定する Attribute が変更されているようです。

MFn::kFileTexture
Maya 2015 以前  colorProfile  int
Maya 2016       colorSpace    string

2015

getAttr file1.cp;
// Result: 3 //

2016

getAttr file1.cp;
// Result: 0 // 
getAttr file1.cs;
// Result: sRGB //
// 2015
int cp= getAttribute( object, "cp", &stat ); // colorProfile
switch( cp ){
case 3: // sRGB
    ...
    break;
}

// 2016
bool ifr= getAttribute( object, "ifr", &stat ); // ignoreColorSpaceFileRules
if( ifr ){
    MString  cs= getAttributeMString( object, "cs", &stat ); // colorSpace
    if( cs == "sRGB" ){
        ...
    }
}

exporter でトラブルがあったのでメモ。

関連エントリ
Maya 2015 ShaderFX のノード情報を読みだしてみる
Maya 2014 の Output Window と stderr
Maya ShaderFX

Direct3D 12 (DirectX12) GPU と API の対応表

分かる範囲、試せる範囲で結果をまとめました。
より詳しくは下記ページを参照してください。

GPU 世代対応表

GPU FeatureLevel D3D12 OpenGL OpenGL ES
GeForce Tesla 10_0 N 3.3 ES 3.0? GeForce GTX200
GeForce Fermi 11_0 N (Y) 4.5 ES 3.1 AEP Emu GeForce GTX400
GeForce Kepler 11_0 Y 4.5 ES 3.1 AEP Emu GeForce GTX680
GeForce Maxwell 11_0 Y 4.5 ES 3.1 AEP Emu GeForce GTX750
GeForce Maxwell 2 ? Y 4.5 ES 3.1 AEP ? GeForce GTX900
RADEON R700 10_1 N 3.3? ES ? RADEON HD 4000
RADEON VIEW5 11_0 N 4.5/4.4 ES 3.1 RADEON HD 5000
RADEON VLIW4 11_0 N 4.5/4.4 ES 3.1 RADEON HD 6000
RADEON GCN 1.0 11_1 Y 4.5/4.4 ES 3.1 RADEON HD 7000
RADEON GCN 1.1 12_0 Y 4.5/4.4 ES 3.1 RADEON R9 200/300
RADEON GCN 1.2 ? Y 4.5/4.4 ES 3.1 RADEON R9 285/380/Fury
HD Graphics 7 11_0 N 4.0 ES 3.1 HD 2500/4000
HD Graphics 7.5 11_1 Y 4.3 ES 3.1 HD 4600/5200
HD Graphics 8 ? Y ? ES 3.1 Iris Pro 6200

D3D12 の欄が Y の FeatureLevel は HW 機能ではなく D3D12 API が実際に返してきた値です。ドライバの更新で今後仕様が変わる可能性があります。実際に HD Graphics 4600 が 11_0 → 11_1 に変わりました。

GeForce Fermi (GeForce GTX 560 Ti 等) は Direct3D 12 サポート GPU に含まれますが、現在リリースされているドライバはまだ対応していません。
(NVIDIA Blog: GeForce DirectX 12 Drivers for Windows 10 Now WHQL-Certified)
6/29 現在 GeForce で D3D12 を試す場合 Kepler または Maxwell 以降が必要になります。

RADEON は Catalyst 15.6 beta で OpenGL 4.5 を返しますが shader は 4.4 のまま↓。

GL_VERSION: 4.5.13394 Core Profile/Debug Context 15.200.1023.5
GL_RENDERER: AMD Radeon HD 8400 / R3 Series
GL_VENDOR: ATI Technologies Inc.
GL_SHADING_LANGUAGE_VERSION: 4.40

関連エントリ
DirectX 12 (Direct3D 12) と GPU の対応

関連ページ
3D Low overhead API (Low Level API) Metal/D3D12/Vulkan
Direct3D 12 (DirectX 12) Windows 詳細
GPU 世代対応表

Android Wear 5.1.1 3D-imclock の更新と Moto 360

Moto 360 を 5.1.1 に更新すると描画位置がずれるらしいので 3D-imclock を修正しました。
あまりきちんと調べていませんが、画面の仕様が変わっているようです。

3D imclock for Android Wear
Google Play: 3D imclock for Android Wear

Moto 360 では、以前は 320×290 のスクリーンに対して OpenGL の Viewport Y に -30 の offset が入っていました。
Android Wear 5.1.1 からは 320×320 のバッファ扱いとなっており、Viewport の offset が無くなっているものと思われます。(この問題について書いた以前の記事は こちら )

Moto360                     Viewport
-------------------------------------------
Android 5.0      320x290    (0,-30,320,320)
Android 5.1.1    320x320    (0,0,320,320)

関連エントリ
Android Wear 5.0 Watch Face API 対応と互換性
Android Wear 3D のアナログ時計 (Watch Face)
Android Wear にゲームを移植

Android Wear 5.1.1 は Wi-Fi による同期に対応、Apple Watch との違い

Android Wear 5.1.1 は Wi-Fi 接続に対応しました。
利用できるのは Wi-Fi 機能を搭載したデバイスのみに限られますが、インターネットを経由した同期を行うことが可能です。

                        Bluetooth   Wi-Fi
-------------------------------------------------------------
Android Wear 4.4W~5.0  直接同期    --
Android Wear 5.1.1      直接同期    Internet 接続、Cloud 同期
Apple Watch             直接同期    LAN 経由同期 (P2P)

Apple Watch も Wi-Fi 接続を併用していますが Wi-Fi の使い方が異なります。

● Apple Watch の場合

Bluetooth の補佐として用いられているようです。
接続は自動化されており iPhone 側の設定を引き継ぎます。
そのため Watch 側には特に Wi-Fi の設定はありません。

iPhone と同じ Wi-Fi ルータを利用して LAN 内で直接転送が行われます。
あくまで iPhone と Watch 間の通信に用いられており、Apple Watch が直接インターネットに接続することは無いようです。

Apple: Apple Watch の Bluetooth と Wi-Fi について

● Android Wear の場合

Android Wear 側に独立した Wi-Fi の設定があります。
予め Wi-Fi の設定しておけば、Android Wear デバイスが直接 Internet への接続を行うことができます。実際に Google Map アプリでは、Bluetooth 接続が切れていても地図データを読み進めることができました。

さらに「クラウド同期」を有効にしておくと、スマートフォンやタブレットとの通信(同期)もインターネット経由で行うことが可能です。

有効にする方法
 1. Smartphone/Tablet 側のコンパニオンアプリ “Android Wear” の設定を開く
 2. クラウド同期を ON にする

Android Wear の場合は Apple Watch と違って同一のネットワーク (LAN) に接続しておく必要がありません。バッテリー消費を考えなければ、ペアリングしたスマートフォンやタブレットは家に置いたままで、Android Wear とモバイルルータだけ持ち歩くこともできるわけです。

通知などのメッセージが届くのはもちろん、設定などコンパニオンアプリを伴うものでもクラウド経由できちんと設定変更が反映されます。

関連ページ
Smart Watch 一覧

関連エントリ
Apple Watch のバッテリーと Android Wear 5.1
Apple Watch を使ってみた, Android Wear との比較など
Android Wear 単体で音楽再生を行うアプリ (2)
Android Wear 3D のアナログ時計 (Watch Face)
Android Wear の 3D 描画 と NDK r10
Android Wear にゲームを移植

DirectX 12 (Direct3D 12) と GPU の対応

Direct3D 12 はこれまでのメジャーアップデートと違い、
CPU 効率を改善することが目的の一つとなっています。

そのため GPU に対しては極端に大きな機能要求はなく、
基本的には Direct3D 11 世代の GPU でほぼそのまま対応します。
対応する GPU は下記の通りです。

・GeForce : Fermi 以降
・RADEON : GCN 以降
・Intel : Haswell 世代以降

Direct3D 12 ではリソースの扱いが大きく変更されています。
Slot 数のような API に起因する制限は基本的になくなっており、
仕様上はメモリの許す限り割り当てることが可能です。
ただしハードウエアが対応しているかどうかはまた別です。
いくつかの GPU で調べてみました。

RADEON RADEON GeForce GeForce Intel HD
R3 HD8400 HD 7750 GTX750Ti GTX650 Graphics 4600
GCN 1.1 HSA GCN 1.0 Maxwell Kepler 7.5th
15.200.1023 15.200.1023 353.30 353.30 10.18.15.4235
FEATURE_LEVEL 12_0 11_1 11_0 11_0 11_1
DoublePrec true true true true true
OMLogicOp true true true true true
MinPrecision NONE NONE NONE NONE NONE
TiledResTier Tier 2 Tire 1 Tier 1 Tier 1
ResBindingTier Tier 3 Tire 3 Tier 2 Tier 2 Tier 1
StencilRef true true false false false
TypedUAVFormat true true true false false
ROVsSupported false false false false true
ConservativeRas
GPUVAddrBits 38 31 31 31 31
StdSwizzle64K false false false false false
CrossNodeTier
CrossAdaptTex false false false false false
VPAndRTArray false false false false true
ResHeapTier Tier 2 Tire 2 Tier 1 Tier 1 Tier 2

ハードウエアの対応度を表しているのが Tier で、値が大きいほど制限が無くなります。
Tier が低い場合は D3D11 とほぼ同等です。
例えば 1シェーダーあたり 14 CBV, 128 SRV (Texture), 8 UAV, 16 Sampler など。

この中では RADEON (GCN) が D3D12 API への適応度が最も高いことがわかります。
RADEON (GCN) では数値上の制限がなく、メモリの許す限りいくつでも利用できるわけです。

Tier の詳細はこちら (MSDN Hardware Tiers)、表については こちら もご覧ください。

なおドライバは頻繁に更新されているので、今後仕様が変わる可能性があります。
予めご了承ください。

関連エントリ
Direct3D 12 と ASTC 圧縮 Texture
CPU 負荷が低い 新しい 3D API

関連ページ
3D Low overhead API (Low Level API) Metal/D3D12/Vulkan
Direct3D 12 (DirectX 12) Windows 詳細