毎日練習した成果、最高で分間200文字まで行った。 実際にプログラミングで使うには、ショートカットキーやら記号の位置やらも覚えなくてはならないので、もう少しかかりそうだ。
最近Dvorak配列でタイピングの練習をしている。 Qwertyより打ち易くていい感じだ。 現在のスコアは分間130文字。 Qwertyは250。 まだまだ遅いな
Project EulerのProblem3をやった。 問題は素因数分解で、最大の素数を求めるもの。 素数を求めて割り切れるか確かめていけばいいだけだ。実に簡単…、じゃなかった。 分解する数が600851475143と超でかい。intじゃ収まらない。と思ったら、Lisp系の言語は多…
面白そうなサイトを見つけた。 Project Euler http://odz.sakura.ne.jp/projecteuler/index.php?Project%20Euler数学の問題をプログラムで解いていく、とういうものだ。言語は何でもいいのでSchemeで解くことにした。初めの問題は、3と5の倍数で1000未満の数…
Schemeを習得するために本を読んだりネットの解説ページ見たりしてるんだけど、こんなので本当に使い物になるプログラムが書けるのか疑問だ。しかし、構文とかばっかしやっててもつまらないので、何かゲームでも作りながら覚えたい。。 出来るだけシンプルな…
ちょっとしたデータの操作とかをするのに毎回Cで書いてたんだけど、面倒になってきたのでサクっと処理できるようにスクリプトなんかやろうと思って買ってきた。 Cygwin+Gauche+Meadowの環境で動かしてる。Emacsなんて使ったことがなかったので現在奮闘中。導…
早速、Expression Template(ET)を試してみることにした。 ずいぶん前に、買って置いたC++テンプレートテクニックを参考に実装してみる。 そのままでは詰まらないので、ベクトルの次元数を型情報としてテンプレート引数にとるようにしてみた。Traitsってやつ…
レンダラが重いので、SIMDを使ってVectorの演算部分を書き直したのだが・・・。テストしてみると、超遅い。外積を求める演算を100000回させたら、SIMD使って無い方が1ms。でSIMDで書いた奴は15ms・・・。 シャッフルを多用したり、水平演算を噛ましてるのが…
何故かハンドアセンブルに興味がわいたので、例のアレをやってみた。 B2 48 B4 02 CD 21 B2 65 CD 21 B2 6C CD 21 B2 6C CD 21 B2 6F CD 21 B2 20 CD 21 B2 57 CD 21 B2 6F CD 21 B2 72 CD 21 B2 6C CD 21 B2 64 CD 21 B2 21 CD 21 CD 20バイナリエディタか…
幾つか細かいバクを潰したのと、屈折の実装をした。 一番の基本の拡散反射の式が間違っていたらしく、直したらかなり綺麗になった。 一応、集光模様っぽいのが出ている。しかし、まだ、完全にレンダリング方程式を再現していない。 完全再現のために次は直接…
反射を実装した。が、何かノイズがでてる・・・。 特に左の奴はまともに描画すらされていない。何も考えずに書いていたせいで、クラス間の依存関係が酷くなってきた。書き直したいけど、もう少し頑張ろう。。
放射輝度推定が出来るようになったので、サクッとレンダリングしてみた。 と言いたいが、超時間掛かった。効率無視のゴリ押しコード書いてたから仕方ないか。 放出フォトン数500000個、放射輝度推定に1000個。 なんか、それっぽくはなったけど全然リアルじゃ…
フォトンの反射を実装した。と言っても一番簡単な鏡面反射だけだが。 次は光線追跡部分。この辺りは一般的なレイトレと同じようにレイを追跡して計算する。ただフォトンマッピングではレイが衝突したときに、その周りのフォトンを探して輝度の計算を行う。交…
最近忙しくて趣味のプログラムを書く時間が余りない。 以前からフォトンマッピングのレンダラを作成しているのだが、ようやくフォトンをばら撒いてKDTreeを構成するところまで来た。 といっても、ベクトルの交差判定くらいしかしてないので、まだ先は長い・…
ゲーム会社に就職が決まった。一段落ついたし、またプログラム再開するか。。
何か忘れていると思ったら、深度バッファを書いていなかった。 後は深度値を比較して塗りつぶし判定をする。出力してみたが、切れ目が入ってるようだ。。
ワイヤーフレームが出来たので、次はラスタライズに挑戦。 ブレゼンハムという有名な手法を使ってピクセルを塗りつぶした。まだシェーディングを行っていないので、ベタ塗り状態。
授業が暇だったので、ワイヤーフレームでボックスを表示するプログラムを書いてみた。頂点を行列でスクリーン座標に変換しているだけだし、よく考えたらいつもやってることだ。 面白くなってきたので、ポリゴンを塗りつぶすプログラムも書いてみた。 次は変…
いままでD3DXのやつを使っていたけど、そろそろ自分で書こうと思い、ベクトルとマトリクスを書いてる最中。 その中でも、逆行列を求める関数の高速化が悩みどころだ。3次正方行列までなら行列式とかを使って地道に計算してもいいが、4次だと計算量が馬鹿に…
自前でピクセルデータとかいじらないし、使い道があるか分からんけど。 Bitmap ^buffer = gcnew Bitmap(256, 256); // ロック対象矩形 Rectangle rect(0, 0, 256, 256); // 書き込み専用でbufferをロック Drawing::Imaging::BitmapData ^bmp_data = buffer->…
Sさんに輪郭抽出の話をしたら、フィルタを使わない方法を教えてもらった。 メッシュの面を裏返して、少しだけ拡大して黒で描画するというものだ。早速実装したが、カメラの距離によって輪郭線の太さが変わってしまう。輪郭線といっても元はメッシュだから当…
前回上手くいかなかった輪郭線の抽出をフィルタを使ってやってみた。 t-potさんの本を参考にフィルタを作成。 一度レンダリングした画像の深度バッファからテクセルの差分をとって輪郭線を書く。 という方法で実装した。元がアセンブラのコードだったので、H…
トゥーンシェーダを実装してみた。 まず、色の階調化だけど、これは簡単にできた。ライトのベクトルと法線の内積をとって、UV座標を計算。ベクトルは正規化しないとU値が1より大きくなるので注意。このままでは、値が0以下のこともありえるので、0から1の範…
やる気が出ないで、一月以上日記つけるのをサボってしまった。 最近はSさんに触発されてやる気が出てきたので、何か新しいことをやろうと思い、マルチスレッド関係の本を買ってきた。学校の課題とかもあるので、のんびり勉強中…
描画バッファをスワップするたびに、謎のちらつきが発生。 ソースを読み返したら深度バッファ使ってないのに、深度バッファのクリアフラグが書かれているのを発見。 消去したら直ったが、これで30分くらい無駄になった・・・。アライメントの関係でBitmapは…
PSPSDKのGuを使用して画像表示するとこまでやった。 サンプルではテクスチャを事前にbin2oでオブジェクトファイルにして読み込んでいるが、いちいち画像を追加するたびにMakefileを書き直さなくてはいけないし、rawファイルしか使えないので面倒すぎる。デー…
PSPSDKのfreadを使って画像を読み込もうとしたのだが、512*512のビットマップをロードするのに軽く30秒以上かかる。遅すぎる。 いろいろと調べていたら、ファイルの読み込みは、sceIoRead関数で4byte境界で行ったほうが、早くなるらしいとのこと。とりあえず…
PSP修理の失敗談を友人Mにしたら、PSPを貸しても良いと言ってくれたので、有難く借りてきた。 まずはPSPSDKのインストールからはじめた。が、俺はlinuxなどさっぱり分からないので、解説サイトを見ながら試行錯誤する羽目に。。一日掛けて何とかインストール…
以前頼んだ液晶は二日後位に届き無事に交換することができ、起動も確認できた。が、少しいじってみるとメモリースティックとUMDを認識しない状態であることが判明。しかもかなりの頻度でフリーズ・・・。 仕方ないので完全に分解して掃除&どこが悪いのか調…
去年の暮れ頃、友人に画面の割れたPSPをもらった。 修理しようにも金欠で、部品どころか飯も買えないような状況だったので、そのまま放置していたが、長期休暇にバイトしたこともあり、金銭的な余裕ができたので修理することにした。 PSPの状態は、液晶割れ…