2017-01-14 4 views
4

SpriteKitで書かれたゲームは、ぼかし効果を持つSKEffectNodeを使用してスプライトのセットをぼかします一緒に画面のかなり広い領域をカバーしています。 iMacとMacBook Proはこれに非常に喜んで対応しますが、より謙虚なMac Bookでは、エフェクトノードが追加されたフレームレートの著しい低下があります。効果はゲームの機能にとって重要ではないので、それほど強力でないグラフィック機能を持つマシンにはSKEffectNodeを追加しないでください。GPU集約効果を適用するかどうかを決定するためのグラフィック機能の問い合わせ(SpriteKit経由)

それでは、「GPUのパワー」や「テクスチャ効果を適用するときのパフォーマンス」や[ここでより良いメトリックを提案する]、そしてどのAPIを使って良いプログラムによるチェックをすればよいでしょうか?あなたの提案をありがとう!

+1

:ですこの効果は静的です。つまり、ぼかしの量をアニメーション化していないという意味では... 10単位から100単位まで、つまりいつものように。ぼかし100単位? – Confused

+1

Q2。ぼかしたいテクスチャは変わるのですか、それとも常に同じテクスチャですか? – Confused

+1

質問推論:ぼかし量が静的で、テクスチャを予測できる場合は、パフォーマンスを最適化するために重要なことを行うことができます。ぼかしを事前レンダリングし、ぼかしが必要なときにテクスチャとして適用するためにテクスチャとして保存します。効果。テクスチャが変更されてもぼかし量が一定であれば、必要に応じてぼかしを行い、ラスタライズをtrueに設定することができます:https://developer.apple。com/reference/spritekit/skeffectnode/1459381-shouldrasterize – Confused

答えて

5

ハードウェアの各世代での時間コストを正確に把握するには、実際のブラーリングプロセスとサンプルコンテンツを使用してパフォーマンステストを作成する必要があります。

ぼかしはプログラム的には本当に奇妙なものです。 Box Blurを使用すると、処理コストを抑えながら、すばらしい柔らかいガウスのぼかしの外観を最大限に引き出すことができます。ズームやモーションブラー(見た目は良い)は、ハードウェアが強い場合でも驚くほど高価です。

また、ぼかしを行うときに驚くほど効果的な「チート」があります。ディテールを必要としないので、特にぼかしが強い場合は、操作を大幅に最適化できます。

アップル、それは信じています、そのブラーで、例えば、このような何かをん:大規模それはバックアップこの小さな画像

  • スケールでガウスぼかしを行い、対象画像
  • を縮小

    1. 、やや
    2. は完全に希望のサイズ
    に縮小
  • それを柔らかくするために安価なボックスブラーを適用します(良いスケーリングのためのフィルタリングを設定して)うまくスケーリングの恩恵を受けひどい例として

    これがぼやけて、フルサイズの画像です:

    enter image description here

    そして、ここでは同じイメージのバージョンです、元のサイズの16分の1にスケーリングされ、ぼやけてしまい、ぼやけた画像がスケールアップされました。あなたが原因の良いスケーリングと細部の不足のために、見ることができるように、ぼやけた画像に差はほとんどありませんが、ブラーがはるかに少ない加工エネルギーと時間を要する:

    奇妙な質問してすみません

    enter image description here

  • +2

    +10バイク用 – Fluidity

    +0

    @フルイド素晴らしい!私も、素晴らしい答え。 –

    関連する問題