« 4KBプロシージャルGFX講座完成 | メイン | Packer »

2009年05月23日

4KB Intro "Elevated" was disassembled.

2chBBSのメガデモスレにいきなり 驚愕4KB Introの逆アセンブルされC言語化された
Elevated のソースコードがあがっていました。 ちょwwwww

とりあえず、保守の意味も含め、
まことに勝手ながら、転載させていただきます。

Elevated_cpp

日本のアプロダにあがっていたことを考えると
日本人のしわざ・・・。
こんなことできる人は限られてるはず・・・。166さんのヨカン・・?
とにかく、逆アセしたひと GJです。

ソースみてたら、超よさげなソースの予感なので解説です。

ソースコード内容:
個人的にアートの内容を解析して、仕組みを解説するのは気が引けますが、
まぁ手法についてはelevated のreadmeにも簡単に書いてあるので良しとしますか。

これがElevated の全貌だっ!!

- D3DXCreatePolygonで4面のポリゴンを生成
- D3DXTessellateNPatchesで4面ポリゴンを細分割した、ポリゴンメッシュ生成
- ノイズテーブル作成

[ 0パス目レンダリング(シェーダで計算) ]
- CPUでつくったノイズテーブルを使い、4角ポリゴンにピクセルシェーダを使いながら、
パーリンノイズを生成。これが地形データとなるが、外から与えられる係数によって
地形にそって動いたり、sinとcosによる曲線をうごくような視点位置を生成。
2x1のバッファにレンダリングしておく。

- レンダリングしたバッファをリードバックして視点位置を取得
- スクリプトシステムによる視点アニメーションパスからViewMatrixなどを生成し、
シェーダパラメータにセット

[ 1パス目レンダリング ]
- パーリンノイズを参照しながら、再分割された、ポリゴンメッシュをディスプレイスメントマッピングする
このとき高さや奥行きの座標情報をカラーとして出力する。

[ 2パス目レンダリング ]
- 1パス目でレンダリングした画像テクスチャとして、4角ポリゴンを描画。
- 1パス目でレンダリングした位置情報2Dの画像と、現在の視点位置をもとに
視点位置から視点方向にレイトレースして交差するときの深さが計算できる。
- 情報のテクスチャの近隣ピクセルの偏微分をとり、法線を生成。
- 法線、深さのパラメータ、スクリプトからのパラメータをあわせて、雪とか岩肌とか緑とかfogとかの
色を作成。一定値以下は海となる。同様にシェーダで海の色を作成。

[ 3パス目レンダリング ]
- バックバッファにレンダリング。1パス目のデプスの情報と2パス目のシェーディング情報をつかって
進行方向を中心に16回平均のモーションブラー処理を行う。いわゆる、2.5Dモーションブラー。
- 白フェードとか黒フェードの処理、画面全体にかかるノイズの付加処理。

-- 0パス目レンダリングにもどり繰り返し --


以上たぶんこんなかんじ。間違ってたら、誰か教えてください。
かなり短いシェーダのコードでも多くのテクニックが詰め込まれてますね。
パーリンノイズの関数がかなり使いまわされまくってますw

シェーダのコード的には4KB似なれてない人がみたら面くらうかもしれませんが、
私が見る限り意外にきれいだと思います。圧縮されやすいようなチューンに2週間かかったと
書いてありましたが、アニメーションやシーンのための定数などは切り詰めた感じではなく、
あくまでクオリティをたもったままの最適化までにとどまっている気がします。

大体なんとなく処理フローの予想はついてましたが、いざコードをみるといろいろ面白いところが
みえてきました。逆アセしてくださった方いい物をありがとうございました。


投稿者 kioku : 2009年05月23日 00:39

コメント

Hey guys, I've been reading here a while here and something came up all should know about.
I at long last cut my ex-girlfriend loose before the month ended. Since then, my cell phone has been getting bombed with unknown calls at all hours from numbers I don't recognize. I checked with the sherrif and telephone company, they could not care any less.

This went on the rest of a week and then a lawyer told me of this unqualifiedly approved technique for reverse cell phone lookup. It took all of like 30 sec. to strengthen it was her and her girlfriends who were doing all. A angry email from my lawyer and end of story!

投稿者 Barakk : 2009年07月12日 03:07

Hello there, been lurking a while here and something came up everybody should know.
I at long last cut my ex-gf loose before the holiday. Since then, my cell number has been ringing constantly with calls at all hours from numbers I don't recognize. I checked with the cops and cell carrier company, they could not care any less.

This went on through a week before a lawyer told me of this absolutely authorized method for reverse cell phone. It took seconds to strengthen it was her and her skank friends who were doing all. A short email from my lawyer and end of story!

投稿者 Hillary : 2009年07月12日 03:16