2016-05-30 5 views
0

レンダリング後のエフェクトでは、デプステクスチャを読み取る必要があります。マルチサンプリングがオフになっている限り、これは正常に動作します。しかし、マルチサンプリングではテクスチャの読み込みに問題があります。Metal //マルチサンプリングされた奥行きテクスチャを読み取る

depth2d_ms引数を使用してシェーダでマルチサンプルテクスチャを使用しようとすると、コンパイラは実行時に "Internal Compiler Error"というエラーメッセージで失敗します。

OpenGLでは、サンプル値を読み込むためにマルチサンプル深度バッファを分解した深度バッファに最初にblitするが、Metalではblitテクスチャのサンプル数が一致する必要があるというアサーションエラーが発生する1サンプルに4つのサンプルをブリッティングすることはありません。

マルチサンプリングを使用している間に、サンプルまたは非サンプリングの値をデプスバッファから読み取るにはどうすればよいですか?

答えて

2

私は答えは分かりません。しかし、解決策の下に試すことをお勧め:

は、以下のようMTLRenderPassDepthAttachmentDescriptorのstoreActionを設定します。

depthAttachment.storeAction = MTLStoreActionMultisampleResolve; 

と、別のテクスチャにそのresolveTextureを設定します。最後

depthAttachment.resolveTexture = targetResolvedDepthTexture. 

、targetResolvedDepthTextureを読み取ろうコンテンツ。

+0

はそのヒントをいただき、ありがとうございます。もちろん、解決されたカラーテクスチャを読むのと同じ手順です。 – Enie

0

MSAAの深さ解決はiOS GPUファミリ3 v1(iOS 9のA9 GPU)ではのみサポートされています。

は、機能の可用性文書に見てみましょう:

https://developer.apple.com/library/ios/documentation/Miscellaneous/Conceptual/MetalProgrammingGuide/MetalFeatureSetTables/MetalFeatureSetTables.html#//apple_ref/doc/uid/TP40014221-CH13-DontLinkElementID_8

+0

フィーチャテーブルには、OS Xファミリが深度テクスチャの解決をサポートしていないが、機能しているようです。私は何の誤りもありませんが、結果が100%正確かどうかは言えません。それでも、古いGPUファミリのデバイスでは、マルチサンプリングをあきらめたり、デプスバッファに依存するシェーダを使わなくてはならないのですか? – Enie

関連する問題