問題タブ [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.
ios - 定数 float3x3 をシェーダ ファイルに追加しようとするとコンパイラ エラーが発生する
このコードを Metal 言語ファイルに追加しようとしています:
またはこれ
メタル コンパイラで次のエラーが表示されます。
しかし、もしそうなら
コンパイルエラーは発生しません。
何がうまくいかないのですか?ベクトル型でも問題なく動作します。
コード内で定数行列を直接定義するにはどうすればよいでしょうか?
c++ - シェーダー C との互換性の欠如は問題ですか?
私はUp and Running with Metal, Part 2を進めており、利用可能な最高の言語機能を使用してすべてのコードを書き直す方法を学ぼうとしています。これらの機能の 1 つは C++ コンストラクターです。Cg と GLSL に欠けていたシェーダーで使用できることを非常に嬉しく思います。
このコードはデバイス上で問題なく動作しますが、次の警告が表示されます。
'vertex_main' には C リンケージが指定されていますが、C と互換性のないユーザー定義型 'ColoredVertex' を返します
それは問題ですか?Cリンケージが指定されている理由がわかりません。また、問題がなければ、バグを報告するとともに、警告を無効にする方法もわかりません。これは私がやりたいことです。
ios - iOS アプリのオプションのレンダラーとして金属のサポートを追加
私は、openGL ES レンダリングを使用して iOS アプリに取り組んでいます。メタル サポートに取り組んでおり、iOS 7.1 を搭載したデバイスでアプリを起動するとクラッシュが発生しています (iOS 7.1 以降のデバイスを対象としています)。
dyld: ライブラリがロードされていません: /System/Library/Frameworks/Metal.framework/Metal
Metal.framework がアプリでまだ使用されていない場合でも、アプリはそれを読み込もうとし、ios7 の一部ではないフレームワークとしてクラッシュします。
デバイスが ios8+ の場合にのみ、どのように金属フレームワークを動的にリンクできますか?
ios - 複雑な図形のレイ トレーサー
iOS 用の MetalFramework を使用してリアルタイム レイ トレーサーを実装しました。これは、12 面体、20 面体、8 面体、立方体などの光学プリズムを追跡するために実装されています。光線をたどって図形との交点を探し、次に光線がプリズム内でどのように動くかを調べます。レイは人影を離れ、スカイボックスとの交点を探す。問題は複雑な図です。立方体の fps をテストすると 60 ですが、12 面体の fps をテストすると 6 です。私のアルゴリズムでは、図との交点は三角形との交点と同じです。これは、光線と図形との交差をチェックするときに、すべての三角形との交差をチェックする必要があることを意味します。すべての三角形の交点をチェックしないようにする方法が必要です。ありがとう。
ios - iOS Metal: ユーザー インタラクションの有効化
ユーザーの操作が必要な iOS メタルを使用してシンプルなアプリを構築しようとしています。画面をタッチすると、画面上のフォーカスがタッチしたポイントに移動します。タッチすると、タッチされたポイントに近づく Zen Garden アプリのようなものです。どの方法を使用するか、またはこれを設計する方法についての考え/提案/議論は大歓迎です。
ありがとう!
ios - 640x480@60fps の高速ビデオ キャプチャ
最小限のリソースを使用して 60 fps でビデオをキャプチャしたいと考えています。これは、フレームごとに最大で 16 ~ 20 ミリ秒を使用する必要があり、ほとんどの時間がフレームでの大量の計算に占有されるためです。
現在、プリセットを使用してAVCaptureSessionPreset1280x720
いますが、640x480 で計算を行いたいと考えています。そうしないと、デバイスが追いつきません。ここから問題が始まります。Apple が開発者に許可していることに従って、640x480@60fps で直接キャプチャすることはできず、現在のサイズ変更は非常に遅いです。
私は Metal カーネル シェーダーで画像のサイズ変更を使用していますが、98% の時間 (Instruments で確認) が次の 2 行に費やされています。
基本的にメモリロード/ストア命令で。理論的にはiPhoneのCPUとGPUの間でメモリが共有されているため、この部分は私を困惑させます。
メタルコードはもっと速くあるべきだと思いますか? また、Metal を使用したビデオ プレゼンテーションも行っていますが、問題はありません (GPU で最大 1 ミリ秒、サイズ変更には最大 20 ミリ秒かかります)。
画像のサイズを変更するより高速な方法はありませんか? Image I/O の経験はどうですか?
アップデート:
ワークグループのサイズを 22x22x1 に増やしたところ、画像のサイズ変更のパフォーマンスが GPU の 20 ミリ秒から 8 ミリ秒に向上しました。まだ私が望むものではありませんが、より良いです。
更新 2:
CoreGraphics に切り替えましたが、十分に高速です。この投稿を参照してください。
ios - iPhone 6 でこのメタル シェーダに 20 ミリ秒かかるのはなぜですか?
Metal で単純なポイント シェーダーを作成しましたが、10K ポイントで実行が非常に遅くなります。すべての頂点はインターリーブされたバッファーにあり、4 バイトにアラインされた属性がありますが、それでも非常に低速です (>70ms CPU および ~20ms GPU)。頂点シェーダーには約 9 ミリ秒かかりますが、フラグメント シェーダーには 12 ~ 13 ミリ秒かかります (!)。
必要なときにバッファをリロードするので、CPU を脇に置きますが、GPU のパフォーマンスを損なう可能性のあるものはありますか?
更新:
多くの CPU を使用していた独立した関数を最適化すると、GPU の使用率も低下しました。これで、シェーダー全体が約 1 ミリ秒で実行されます。CPU が次のサイクルを実行するのを待っていたため、GPU 時間が非常に高かったかどうか知りたいです。
ios - iOS Metal: 関数を使用してコンピューティング パイプラインの状態を作成できません
iOS Metal Framework を使用して、GPU で数独を解くためのシンプルなアプリを作成しようとしていました。
このブログ投稿の指示に従っていました。
私はここで自分のコードをバージョン化します:
(この質問を書いている時点で、HEAD は commit c3e06e0 です)
そして、呼び出し時にエラーが発生しました
これは、ViewController で MTLDevice をセットアップしている間です (95 行目):
私が得るエラーは次のとおりです。
iOS 8.1.3を搭載したiPhone 6 Plusでこれを実行しています
私が得たエラーの原因は何ですか?