2006-12-01から1ヶ月間の記事一覧

RenderOption反映

RenderSettingsで設定した内容が実際のレンダリングに反映されるようになりました。だんだんと形になってきたような気がする。二回目にフレームバッファを更新すると表示が崩れるバグがGUIClientにある様なので明日直す。

TODO

http://www.checkpad.jp/list/show/312185なかなか進まないなぁ。

続・Render Settings Dialog

放射照度推定につかうフォトン数とスーパーサンプリングの設定がなかったので追加。

Render Settings Dialog

こんなかんじ。ほぼ一日かかったなぁと思ったら通信コードや制御コードもろもろでRenderSettings関連だけで1000行超えてるのね。UIは大変だ。

memcached

名前からして汎用的だからレンダラーに使えないかなぁと思ったら文字列処理特化みたいですね。がっくし。いちおうC言語向けAPIもあるみたい。

こういうカテゴリを作っちゃうからさらに日記ではなくTODO化していくんだろうけど。 SOA メモリオーダリング(参考:b2con 2006での中村さんの発表)

goto文

いや、Evilなのはわかっているんですけど多重ループを抜け出すのに使う(一昨日のエントリ参照)とかあるじゃないですか。そのときスコープの外にgotoするとそのスコープのローカル変数とかはどうなるんでしょう。ちゃんとデストラクタとか呼ばれるのかな。

unused variable warnings

仮想関数とかで引数は決まっているけれども関数本体では必要ない、という場合がある。そういうときは引数に名前をつけなければ警告なしになるということを最近知った。nytrの古いコードだとvoidにキャストして逃れてたりするけど、見つけ次第直してる。 bool…

Visual Studio 2005のタスク管理機能

こんなのが存在したのね。でも相変わらず日記をTODO&ChangeLog代わりにしそう。表示→その他のウインドウ→タスク一覧。

LLVM

http://lucille.atso-net.jp/blog/?p=251仮想命令セットを追加する、というのは盲点でした。なんで気づかなかったんだろう。でもJITコンパイル時まで対応させるのは相当骨が折れそうだ。

Rendering Option Settings

フォームのコードは書いた。イベントハンドラはまだ。単調なGUIコード書くのに飽きてきてペース減少中。これが終わったらマルチスレッド化なのでがんばろう。

Statistics Viewer

通信コードとGUI表示部書いた。通信コードやらcoreのコードやらに手を入れながら作ったのでえらく時間がかかってしまった。

補足:Rubyでの多段break(多重ループの抜け方)

http://www.ruby-lang.org/ja/man/?cmd=view;name=trap%3A%3A%A5%B9%A5%B3%A1%BC%A5%D7%A1%A2%C0%A9%B8%E6%B9%BD%C2%A4なるほど。throwしちゃうのか。C++でやるとやばげ。

fectiプロトコル

nytrで使っているオレオレRPC実装。2年前(3年前?)に書いたせいか久しぶりに使うと実装がボロボロだ。プロトコル自体はそこまでまずくない(と思う)ので近いうちに実装を大幅修正しないと。

C/C++での多段break

するにはやっぱりgoto文しかないのね。http://www.kmonos.net/alang/d/ctod.html#labelledbreakとか読んでるとD言語やりたくなるなぁ。C++の不満点はほとんど解消されてるみたいだし。でもネイティブ言語なのに(まともに使える)コンパイラが本家のみってい…

std::vectorでのforeach検証

超適当検証なので結果は保障しません。逆アセンブリをみてみるとunrollはiterator使った場合でもされているようです。ただかなり単純な処理でないとunrollされないので、気にしなくてもいいみたいです。配列形参照を使ったほうが3倍早い結果になりましたが、…

アダプティブな分散レンダリング

を思いついた。某アレに応募している都合上詳細は書けないが、既出だったら嫌だなぁ。

vectorでのforeach

const int nCount = vec.size(); for(int i = 0; i < nCount; ++i) { vec[i]を使った何か }と std::vector<asdf>::iterator i, iEnd = vec.end(); for(i = vec.begin(); i != iEnd; ++ i) { *iを使った何か }はどっちが早いんだろう?どっちも理論的には同じくらい</asdf>…

GUIプログラミング

一昨日のバグは大体つぶせました。ひたすらGUIやらソケット通信やらを組んでます。

JK FlipFlop

物理学基礎実験で論理回路の演習。NANDICを大量に使ってANDとかORとかNOTとか作る。そして接触不良に悩まされる。小学校のころにデジタルICキットを買って相当はまってたので懐かしかった。あのころトグルフリップフロップを自分で作ってみて動かなくて苦労…

実験に疲れて日記更新忘れてました。

短期TODO(目標金曜日まで!)

大量のコードの修正を一気にやったために、さらにバグが増える結果に。やっぱりひとつづつやったほうが格段にはやいです。コードを常に動く状態にしておくのが重要。 やはり、書いたコードが動作するのを見ると、「モチベーションがあがる」「問題の切り分け…

JIT compile

http://llvm.org/とかhttp://www.parrotcode.org/が有名どころかな?ただ、SIMDサポートはないんだろうなぁ…。レイトレーシングでバイトコードは避けたいところだ。マイクロポリゴン+バイトコードならまだ許せるけど。

レポートが・・・。

リファクタリングは続く

タスクシステムについて詰まる。書いたのは一年前なんだけど、細かい実装がなぜそうなっているのかわからなかったり。以下自分用メモ: guiclient側にもサーバーとの接続管理向けに似たようなタスク管理がある。統合できないか。 サーバ側の実装でcallback関…

Lock Free Synchronization

Lock-freeとWait-freeアルゴリズム - Wikipediaレンダラにも使えるかな? あとで書くかも。

プロトコル改良

全体的に手を入れてます。 サーバーステータスの定期的なポーリング シーン全体のAABBを不必要に とりあえず保留。サーバー側でシーン全体をまず生のまま受け取ってから、グリッドに突っ込むというのは効率がわるい。クライアント側でAABBわかるんならそっち…

プロトコルの改善

今の仕様だとサーバー側からクライアント側に伝えたいメッセージがあるとき、伝達する手段がない。(片方向のソケットしかない)定期的にポーリングするようにコードを書くのは楽だけど、将来のことを考えてTCPコネクションを2つ張るようにしたほうがいいの…

パフォーマンスカウンタ

サーバ側は通信部分以外完成。

パフォーマンスカウンタ

下書き書いた。サーバ側はこれでいけそう。GUIクライアントでの表示部もつくらないと。