レンダリングと用途

1つのテクスチャを超えるサイズのレンダリング画像

画像が単一のテクスチャとして割り当てられない場合、そのサイズはGPUの最大テクスチャ寸法をはるかに超えることがあります。タイルレンダリングでは、処理可能な領域を評価し、完成したピクセルを出力表現へとストリーミングします。

大規模なエクスポート用に、タイルグリッドが表示されたマンデルブロートのレンダリング
大きすぎる画像は扱いやすいタイルに分割され、継ぎ目が目立たないように組み合わされます。画像: Björn Kindler / MandelKit · MandelKit Wissensgrafik · Eigene Darstellung · Own work

グローバルビュー、ローカルタイル

各タイルの座標は、出力全体の寸法と表示アスペクト比に基づいて算出されます。フラクタルを個別にフィットさせたり中央に配置したりしてはなりません。そうしないと、組み立てられた画像に連続したビューではなく、繰り返しのトリミングが含まれてしまいます。

大規模な出力には、1つのグローバル座標系が使用されます。各タイルは、個別に丸め処理されたカメラではなく、この座標系から正確に切り出されます。ピクセルの中心はタイルの境界を越えて連続していなければならず、そうでないと継ぎ目が目立ってしまいます。アスペクト比と表示されるフラクタル領域は画像全体に対して一度定義されるため、100,000ピクセルでのエクスポートでも画面表示の構図を維持することができます。

エフェクトには近傍が必要です

アンチエイリアシング、法線マップ、スクリーンスペースフィルターは、タイルの端を越えてサンプリングを行う場合があります。レンダリング時にガードバンドを生成し、組み立て時にそれらをトリミングすることで、継ぎ目を防ぐことができます。ヒストグラム均等化などのグローバルな手法については、別途統計処理パスが必要となるか、意図的に利用できないようになっています。

半径を指定するフィルターでは、タイルの端を越えたピクセルが必要となります。各タイルをハロー付きでレンダリングし、エフェクトを適用した後、コア部分に切り抜いてください。多段階のエフェクトでは、より大きな累積ハローが必要になる場合があります。重なりがない場合、個々のタイルは正しく見えていても、継ぎ目が目立ってしまいます。必要な半径はエフェクトの定義に属するものであり、エクスポートプランナーが把握しておく必要があります。

「ディスク」は「ピークメモリ」に置き換えてください

ディスクベースのエンコーダーまたは中間ストレージは、行やタイルが完成するたびにそれらを受け入れます。これにより、RAMやGPUメモリへの負荷が抑えられ、その代わりにストレージ、エンコードの制限、およびジョブ実行時間に負荷が移行します。進行状況の追跡、キャンセル、およびアトミックな最終処理は、長時間のエクスポートにおける正確性を確保するための重要な要素です。

画像全体がRAMまたは1つのMetalテクスチャに収まらない場合、完成したストリップは増分エンコーダーまたは一時ファイルに直接書き込まれます。進行状況にはレンダリングとエンコードを含める必要があり、キャンセル時には一時データを適切にクリーンアップする必要があります。単一の最終的なCGImageを要求してはなりません。その最終的な合成ステップを行うと、空白のエクスポートファイルやエンコード不可能な巨大なエクスポートファイルが生成されてしまうからです。

出典および参考文献

本記事は、以下の専門資料を原文のまま要約したものです。12年8月にアクセスし、編集上のレビューを行いました 2026。

  1. Metal overviewApple Developer Documentation
  2. The Science of Fractal ImagesSpringer