問題タブ [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.

0 投票する
1 に答える
1053 参照

ios - Metal を使用して円弧を描くにはどうすればよいですか?

iOS Metal API に関するいくつかのチュートリアルを行ったところ、Metal のすべてが三角形であると記載されていました。その場合、円弧を描きたい場合は、コア グラフィックスをインポートして使用する必要がありますか、またはそれを行う方法はありますか?それは金属を使用していますか?

ありがとう。

0 投票する
1 に答える
448 参照

ios - Metal ios での再帰

Metal シェーディング言語は再帰をサポートしていますか? 私はコードを持っています:

しかし、それを使用するカーネル関数をビルドすると、エラーが発生します。何か案は?

0 投票する
2 に答える
871 参照

ios - Metal 内の複数の MTLDevice インスタンス

Metal アプリで複数のデバイスを宣言できますか? device と defaultDevice の 2 つのデバイスを宣言しました。デバイスの代わりに defaultDevice を使用すると、「アンラップ中に nil が見つかりました..」という行で例外が発生します。また、デバイスを宣言するための慣例はありますか。

ありがとう。

0 投票する
2 に答える
6976 参照

ios - iOS メタル線幅

Metal で描いている線の幅を設定したいと思います。ここで説明されているように、point_size でポイントのサイズを設定できます。

https://developer.apple.com/library/prerelease/ios/documentation/Metal/Reference/MTLRenderCommandEncoder_Ref/index.html

しかし、それが線でどのように機能するかはわかりません。

0 投票する
2 に答える
4819 参照

ios - メタル入門

私は、現在 App Store でアプリケーションを使用している Objective-C / Swift ソフトウェア開発者 (トレーニング中) です。しかし、私は最近、Apple の OpenGL の新しい代替手段である Metal に本当に興味を持っています。しかし、どのように始めればよいのか正確にはわかりません... Apple のドキュメントは便利ですが、そもそも自分が何をしているのかを本当に理解している場合に限られます。始めるための良いヒントはありますか?私は 3D ゲーム プログラミングの分野をまったく探求したことがないので、最初に別の言語を学ぶことをお勧めしますか? もしそうなら、どれ?

その方法と理由を詳しく説明している優れたチュートリアルの本やサイトを探しているだけです。コードを入力するだけでなく、自分が何をしているのかを正確に理解したいのですが、言語や初心者向けの本が多すぎて、どこから始めればよいかわかりません... 誰か助けてくれませんか?

0 投票する
1 に答える
1511 参照

ios - ios metal: 1 つのコマンド バッファでの複数のカーネル呼び出し

Swift と組み合わせた Metal での複数のカーネル関数の実装に問題があります。

私の目標は、画像に対してブロック単位の DCT 変換を実装することです。DCT は、2 つの行列乗算で実装されます。

J = H * I * H^-1

次のコードは、カーネル関数自体と、swift コードで使用される呼び出しを示しています。各カーネル関数を単独で実行すると動作しますが、最初のカーネル関数から 2 番目の関数に書き込みバッファを渡すことができません。したがって、2 番目の関数は常に 0 だけで満たされたバッファーを返します。

すべての画像入力および出力バッファーは、RGB (各コンポーネントの 16 ビット整数) で 400x400 の大きさです。行列は 8x8 の 16 ビット整数です。

異なるカーネル関数のバッファの読み取りアクセスと書き込みアクセスを同期するために必要な特別なコマンドはありますか? それとも私は何か他のことを間違っていますか?

ご協力いただきありがとうございます

シェーダー.メタル

ViewController.swift

0 投票する
2 に答える
2016 参照

shader - メタル フラグメント シェーダーのピクセル座標

Metal を使用して 3D アプリを作成しています。3D でレンダリングするには、各ピクセルを制御する必要があります。通常の画面では、シェーダーに渡された [[position]] 変数で問題なく動作しているようです。しかし、倍率がある Retina ディスプレイでは、各画面座標は 2x2 (または 3x3) ピクセルを表します。

例として iPhone 6 の画面で詳しく説明します。画面座標は 375x667 で、ピクセル座標は 750x1334 です。これが私の(テスト)シェーダーコードです:

上記のテスト コードを使用すると、(正確に) 画面の左半分が青になり、右半分が赤になります。これは、pcoord が 750x1334 ではなく、座標系 375x667 で来ることを意味します。

質問:

  1. フラグメント シェーダーはすべてのピクセル座標に対して呼び出されますか? それとも、すべてのスクリーン座標に対してのみですか?

  2. すべてのピクセル座標に対して呼び出される場合、フラグメント シェーダー内の各ピクセルにアクセスするにはどうすればよいですか?

pcoord.y (上記のコード) で同じことを試してみましたが、同様の結果が得られました。