[Shadertoy] シェーダのみで表現されたとある惑星……思わず信じられないと叫びたくなる出来栄え!
GLSL だけで表現された世界
今回は、ちょっと普段と趣向を変えて、シェーダだけで表現されたデモを投稿できるサービスである Shadertoy から、驚きの GLSL 作品をご紹介します。
Shadertoy には、いい意味で頭がおかしい人たちがたくさん生息しています。もちろん、彼らの生み出すデモ作品もとんでもない出来栄えのものばかり。
今回ご紹介するのもそんな作品のなかのひとつです。
珍しい長編ムービーのような作品
Shadertoy には前述のとおり、たくさんのキチガイな作品が投稿されていますが、ここまで長編ムービー仕立てになっているものは珍しいです。
約 2 分ほどの時間を掛けて、ゆっくりとシーンが切り替わっていきます。冒頭は、ややカメラを引き気味に、宇宙空間に浮かぶ土星のような惑星の全体が映ります。
惑星の周囲にある輪に影が落ち、近くに恒星があるのだろうなということが想像できます。
しばらく眺めていると、その恒星を背にしたシーンへ切り替わります。レンズフレアのようなものまでしっかり表現されており、すごくキレイに仕上がっていますね。ここから先も、これらがまったく同じ一つのシェーダから生み出されている映像だとは、にわかに信じがたい美しいシーンが次々と登場します。
これらはすべて、事前に撮影した映像ではなく リアルタイムに生成されたグラフィックス です。
しかも、モデルデータを読み込んで描画する通常の WebGL のデモとは、根本的に考え方が違います。実際に WebGL で描画されているのは板ポリゴンが一枚だけ。その板ポリゴン上のすべてのピクセルに、フラグメントシェーダを走らせることでこの映像を生み出しています。
惑星を宇宙空間から見た様子だけでなく、惑星の表面の様子を表現したシーンもあります。たゆたう波が見事に表現されていますね。
実は、今回登場する惑星に形が似ている土星には、海は存在しません。
土星はその大半が大気で構成されている惑星なので、今回のデモに登場する星とはだいぶ違っています。作品に「Saturn」の名前が入っていないのは、そういう理由からなのかもしれません。
ここまでレベルの高いデモでありながら、負荷は思ったほど高くなく、非常にスムーズに動作します。
様々に切り替わるシーン、さらには、耳を澄ませばシェーダによるサウンド再生まで行われており、まさに映像作品と呼んで差し支えないレベルにまで達しています。
なかなか真似してみようと思って真似できるようなものではないですが、シェーダプログラミングに興味があるなら、一度ご覧になってみることをオススメします。本当に、素晴らしい作品だと思います。
負荷が高くて見られないという方やモバイルでご覧になっている方のために、youtube のリンクも貼っておきます。
リンク:
Planet Shadertoy - YouTube ※youtube 版