リアルなゲーム画面を実現するための大気散乱シミュレーションとよトピッ現役ゲームプログラマーが、仕事の事や思いついた事を書いてます。プログラム最近のゲームはが画面綺麗ですよね。ことはゲームエンジンがやってくれます。ゲームエンジンは使われれば使われるほど進化していきます。アンリアルエンジンはオープンソースなので、技術習得にちょうどいいです。まともに一から全部自分で作ろうとすると、やる事が多すぎて挫折すると思います。ここからコリジョンやらイベントやアニメーションブレンド、ポストエフェクトなど沢山工程をふみます。綺麗に見せる手法として、物理ベースレンダリングがあります。現実と同じように光源計算を行い、モデルの陰影をはっきりさせます。まともに計算してしまうと、光源計算で処理を取られてしまい、ゲームになりません。光の計算は事前にしておいて、モデルのレンダリング時にその結果を反映させます。そのため動的な光源計算には向いておりません。最近は何でもかんでもテクスチャにデータを入れます。昔はモデルの表面の絵をシールのように張るだけでした。画面に出ている絵は、こねくり回した最終形態の一枚のテクスチャみたいなものです。話を本題に戻して、大気散乱シミュレーションの話です。大気圏外から入ってくる光を減衰させながらスクリーン上の一ピクセルまで計算する感じです。レイリー散乱、ミー散乱等があります。レイリー散乱は、光源からの光が長距離大気中を通過すると赤くなっていきます。夕日のように地平線が赤くなるのは、光が長い距離大気中で減衰されるためです。ミー散乱はプログラム的には太陽を書いています。結果的に太陽になってくれるので助かります。大気中の粒子にあたって光が散乱するイメージです。両方足して空の色を決めます。そこからモデルに投影する光を球面調和関数を使い計算していきます。時間のかかる処理なので、事前に計算してパラメーターを求めます。16章を見るとよいです。ソースも公開されています。本ではバーテクスシェーダーで実現していますが、ピクセルシェーダーで表現するほうがきれいです。当時よりグラボが進化したため実現できています。肝心なのはカメラの位置とカメラの向き上の大気圏までの距離を計算することです。これにrayDirをかけて、rayPosを足せば、外周の交点が出ます。この式とオリジナルソースを合体して、天球を描画するときれいな空ができます。雲の減衰までできればいいんですけどね。誰も失敗したくてゲームを作っているわけではありません。チームの歯車がズレていたり、完成イメージが持てて...記事を読むゲーム制作ゲーム制作を仕事にするってどういう事か書きますね。私はゲームプログラマーなんですが、仕事が楽しくて仕方ありません。1999年に発売した、ドリームキャストソフトのガンダム戦記~コロニーの落ちた地で~です。以前は電車の中でゲームをする時はVITAを持ち歩いていました。プレイステーションPlusに加入しており、ゲー...記事を読む昔のガンダム戦記PS2版のガンダム戦記のアマゾン評価を見ていてなぜリアルに感じるのか?について、当時のことを思い出しました。最近は何でもかんでもリアルな映像でゲームを仕上げています。ゲームのプログラムは楽しそうに見えて、根気がいる事が多いです。ゲーム業界は物凄い狭い世界です。飲み会とかで、以前作ったゲームの話をする事があります。綺麗事を言うと知っておいたほうが良い、でも必ずしも必要ではありません。