シムシティ開発チームAMAAイベント Xin Liu (MaxisSixAM) の発言より抜粋
3D化するにあたっての課題として、あらゆる角度から建物が見栄えするような照明が必要でした。過去のシムシティ(少なくとも照明の概念を持っていたもの)では、カメラが固定されていた為、細部は単純に建物、道路、地形などをスプライトカードに組み込むことで処理できていました。しかし建物が3Dでありカメラが自由に動けるようになると見た目が悪くなる場合があります。その場合の最も良い解決策は、すべての照明を動的に(カメラの移動にあわせて最適な見え方になるように)処理することでした。
その動的な照明を可能にするため、私たちは遅延ライトプリパスレンダリング(deferred light pre-pass rendering)と呼ばれる技術を使っています。ベースとなる照明システムは
DarkSporeから継承されました。しかし、DarkSporeのシステムでは、それぞれの照明のタイプごとに2,000個というハード的な制限があります。シムシティは多くのスポットライトを使用する傾向があり、中程度に発展した都市であっても簡単にこの制限を越えます。潜在的に数千のライトを一度に描画する可能性がある為、望ましくは制限を解除する必要がありました。
我々は、このように多くの数の照明を描画する為に、インスタンス化(instancing)と呼ばれる技術を用いています。最終的には、すべての照明が、同一のインスタンスバッファーによって共有され、分割することで単一の描画で、複数の照明を作り出すようにしたのです。これは簡単なことのように聞こえるかもしれませんが、種々のGPUパフォーマンスへの影響は私にとって興味深いものでした。
(無数の照明がある画面例:クリックすると8000×4456の画像へジャンプ)