2022-12-13 10:42 AM
この記事では、複数のArchicadバージョンにまたがる2Dの近代化プロジェクトについて、いくつかの洞察を提供することを目的としています。線分のレンダリングの変化とその効果に注目します。
タイトル通り、ソフトの内部構造に興味がある方には、なぜこのように変化していったのかをより深く理解するためにお勧めの資料です。
詳細を説明する前に、使用されている専門用語の簡単な概要を説明します。
Archicad自体はクロスプラットフォームですが、レンダリングを処理する基本的なソースコードは長い間、クロスプラットフォームではありませんでした。初期の試みは、Archicad 22でOpenGL 3.3に支えられた拡張可能なソフトウェアインターフェイスの導入が行われました。これを(Archicadの)GPUインターフェースと呼ぶことにしています。
Archicad 25の開発中に、私たちは(macOSで最初に)近代化プロジェクトを開始しました。これには2つの目標がありました。
また、当時のアンチエイリアシングソリューション(MSAA)が原因でドライバーのクラッシュが多発したことも、後者を支持する論拠となりました。
この(Archicad 26をターゲットとした)近代化の次のマイルストーンは、WindowsのハイブリッドDirect 3D-OpenGL描画インフラストラクチャ(レガシー実装と呼ぶことにします)を更新することでした。その他にも次のような懸念がありました:
私たちが下した決断は、レガシーな実装を取り除き、プラットフォームに依存しないGPUインターフェースの下でDirect3Dの機能を再実装することでした。これは、Archicad 26から、レンダリングAPIの違いに対処することなく改良できる、真のクロスプラットフォーム実装が可能になったことを意味します。
アンチエイリアス部分は、直線の方向に垂直なガウス関数(いわゆるベル曲線)にすぎません。なお、"線"という言葉を使っていますが、実際には長方形のポリゴン(多角形)であることに注意してください。From left to right: aliased, MSAA, shader-based rendering
アルゴリズムの強みは、ラウンドキャップ(実際には任意のタイプのキャップ)を自由にレンダリングできることです。レガシー実装では、キャップは実際のジオメトリを計算することによって行われていました。そのため、不必要なメモリを使用し、高いズームレベルでは分割表示されていましたThe legacy implementation (left) had to manually generate rounded caps, whilst the new one (right) calculates them during rasterization
また、MSAAから直接得られるメモリも節約できます(つまり、ドライバがサブピクセルサンプル用にメモリを割り当てる必要がありません)。
新しいDirect3D実装は、マルチGPUシステムにおいて、より強力なGPUを自動的に検出します。必要に応じて、次のレジストリキーをゼロに設定することで、この機能をオフにできます。
HKCU\SOFTWARE\Graphisoft\Archicad\Archicad XXXX\Graphix\AutoDetectGPU
ノートパソコンをお使いの方で、長時間電源に接続できない場合におすすめです。Windowsの省電力設定だけでは効果がない場合がありますので、ご注意ください。
一般的に、レジストリに触れることはお勧めしません。ご不明な場合は、テクニカルサポートまでお問い合わせください。