問題タブ [metal]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
swift - CVMetalTextureCacheCreateTextureFromImage を使用して Swift で CMSampleBuffer を CVMetalTexture に変換する
シンプルなレンダリング カメラ出力からメタル レイヤーへのパイプラインを実行しようとしていますが、Objective-C で十分に機能します (MetalVideoCapture サンプル アプリがあります)。それを迅速に翻訳します。私の超単純なキャプチャ バッファは次のようになります (サニタイズがないことは無視してください...)
videoTextureCache の場所var videoTextureCache: CVMetalTextureCache? = nil
しかし、それは私に与えますCannot invoke 'CVMetalTextureCacheCreateTextureFromImage' with an argument list of type '(CFAllocator!, CVMetalTextureCache, CVImageBuffer, nil, MTLPixelFormat, Int, Int, Int, inout CVMetalTextureRef)'
問題は、outTexture を nil に置き換えると、エラーがスローされなくなりますが、明らかにそれは役に立たないということです。関数のリファレンスによると、その最後の値には UnsafeMutablePointer?> が必要です。入手方法がわかりません。
macos - - [CAMetalLayer nextDrawable] OSX 10.11 Beta 2 での問題
に を追加するたびにCAMetalLayer
、NSView
メソッド[CAMetalLayer nextDrawable]
はnil
3 が成功した後に渡されid<CAMetalDrawable>
ます。
セットアップを構成するために 2 つの異なる方法を試しました。1つは、MTKViewを使用しCAMetalLayer
、そのを使用しましたが、機能しませんでした。次に、NSView
新しい を使用して作成しましCAMetalLayer
た。それもうまくいきませんでした。奇妙な問題がありました。
他の誰かがこの問題を抱えていることと、これを解決するための解決策を誰かが知っているかどうかを知りたい.
追加メモ:
メソッドをオーバーライドして MTKView 描画システムを使用したくありません (まだ)。また、これは iOS 8 では問題ではなく、iOS 9 のベータ版リリースではコードを試していません (まだ)。
アップデート
MTKViewDelegate
デリゲートを使用するようにドローアブル呼び出しを再ルーティングします。また、drawInView
デリゲート メソッドから、一貫性のあるドローアブル フレームを取得できました。ただしnextDrawable
、メソッドを から直接使用したいと考えていますCAMetalLayer
。これが他の誰かに役立つことを願っています。
metal - Metal で MTLTexture を CVMetalTextureRef または CMSampleBufferRef に変換する方法は?
MTLTexture を CVMtalTextureRef または CVPixelBufferRef に変換する際に問題が発生しました。私のコードは次のとおりです。
しかし、UIImageview が表示する画像は正しくありません。完全なコードはこちら.
ios - iOS - SpriteKit と Metal の組み合わせ
SpriteKit と Metal を組み合わせることは可能ですか? もしそうなら、物理世界で金属粒子とSKNodeを組み合わせて互いに衝突させるにはどうすればよいでしょうか。この種の要件に対する通常のアプローチは何ですか。
ありがとう
ios - オブジェクトファイルをMetalで表示
私はメタル API を使用して 3D オブジェクトを表示しようとしていて、このチュートリアル ( http://metalbyexample.com/textures-and-samplers/ ) に従いましたが、オブジェクトを変更しようとすると、オブジェクトで使用するオブジェクトがブロックのように表示されました。 ↑画像載せられなくてすみません、足用の物です。
オブジェクトが完全に表示されなかったか、またはこのようなものかどうかは理解できますが、ブロックだけの機能はありませんでした。
これについて何か助けはありますか?
3d - レイ キャストからラスタライズ スタイルの深度バッファを生成
グラフィックス パイプラインでレイ キャスティングと標準的なラスター化を混在させています。レイ キャスティングから、ラスター化と相互運用可能な適切な深度バッファーを生成する必要があります。
以前の回答が示唆しているように、レイキャスト交差のワールド位置を取得し、ラスタライズに使用するのと同じマトリックスでクリップ空間に変換できることを認識していますが、私の場合、これにはピクセルごとのマトリックスが必要になります乗算演算、および貴重なわずかな計算能力を節約するために、これは避けたいと思います。
ベクトル計算だけを使用してレイキャストから適切な深度値を計算する方法があるに違いないことは知っていますが、最初にそれを生成する計算 (つまり、透視投影の内部動作) については明確ではありません。射影行列なしで深度バッファを導出する方法がわかりません。
ios - Metal iOS で同等の tex2Dproj
Metal でハードウェア アクセラレーションによるテクスチャ プロジェクションを行うにはどうすればよいですか? その方法を説明しているリファレンスやリソースが見つかりません。
ios - 頂点/フラグメント シェーダーで 3x3 2D 変換を使用する方法 (Metal)
私はおそらく単純な仕事をしていますが、シェーダーでの投影の仕組みをまだ理解していないようです。テクスチャ クワッド (2 つの三角形) で 2D 透視変換を行う必要がありますが、視覚的には正しく見えません (たとえば、台形が CPU バージョンよりもわずかに高いか、伸びています)。
私はこの構造体を持っています:
そして、頂点シェーダーで次のようなことを行います(texCoords
クワッドコーナーのピクセル座標であり、ホモグラフィはピクセル座標で計算されます):
次に、フラグメント シェーダーで次のようにします。
結果は私が期待するものではありません。これに何時間も費やしましたが、わかりません。ベント
アップデート:
これらは、CPU のコードと結果 (別名、期待される結果) です。
これらは、GPU のコードと結果です (別名、間違った結果):
元の画像:
更新 2:
パースペクティブ分割はフラグメント シェーダーで行うべきであるという一般的な考えに反して、頂点シェーダーで分割すると (三角形間の歪みや継ぎ目がない場合) 、はるかに似た結果が得られますが、なぜでしょうか?
更新 3:
次の場合、同じ(間違った)結果が得られます。
- パースペクティブ分割をフラグメントシェーダーに移動します
- コードから分割を削除するだけです
非常に奇妙なことに、分裂が起こっていないように見えます。