前回公開したデモのソースコードを公開。 デバッグ用コードや見た目が地味で没にしたコードもコメント化されて残ってます。nasm -f bin -o ファイル名.bin ファイル名.asm でブートセクタ用バイナリを生成 nasm -dMSDOS -f bin -o ファイル名.com ファイル名…
前回作ったプログラムのブートセクタ版を公開します。 使用するときは自己責任でお願いします。 B8 20 7C 8E D0 BC 00 16 B8 13 00 CD 10 31 D2 B9 3F 00 51 89 CB 88 DE 88 DD B8 10 10 CD 10 59 E2 F1 B0 B6 E6 43 FC B8 20 7C 8E D8 BF 00 16 B9 00 10 60…
PCの電源を入れてからOSが起動するまでをおおまかに説明すると 1, CPUが初期化されてBIOSにあるプログラムが実行される 2, BIOSは設定されたメディア(ハードディスクとかフロッピーディスク等)のブートセクタと呼ばれる最初の512bytesを読み込んでメモリに書…
C言語系ではよく以下のようにループカウンタにi, jという名前の変数を使う。 for(int i=0; i<3; ++i) for(int j=0; j<7; ++j) { printf("%d, %d\n", i, j); } 今まで外側のループカウンタから順番にi, j, k, ...という変数名を付けていたがこのやり方には欠…
・前準備 boost 1.35.0ではmpiが使えるようなのでcygwinにmpich2をインストールしてみた。 Pythonが入ってないとconfigureで失敗するので入れておく。 普通にソースコードをゲットして ./configure make make install でインストールできた。 自宅に一台しか…
http://d.hatena.ne.jp/gpuppur/20080420 でビルドしたgccでは boost-1.35.0をビルドするときにboost::serializeのwchar_t関連を使っているファイルでコンパイルエラーがでる。 ググったところ http://d.hatena.ne.jp/y-hamigaki/20070327 iconv.hがないとli…
cygwinのsetup.exeでは少し古いgcc-3.4.4しかインストールできないようなので現在最新の4.3.0をインストールすることにした。 ここにやり方をメモしておく。 きちんとgccをインストールしたい方はgccのドキュメントを参照して下さい。 必要なpackageのリスト…
C++のCRTP(Curiously Recurring Template Pattern)の話。CRTPでは継承クラスの関数を使って基底クラスの関数を実装することができる。 #include <iostream> template<class T> class base { const T& get_this() const { return static_cast<const T&>(*this); } void p_impl() const { st</const></class></iostream>…
boost_1_34_0のnumeric ublasのソースコードを読んでいると std::swap_ranges (data_, data_ + (std::max) (size_, a.size_), a.data_); という感じのstd::maxやstd::minを括弧で囲んだ式をちょくちょく見かける。 それは標準のテンプレート関数なんだけど、…
以前、gpuppurのソースコードをsourceforgeのsubversionにimportしようとしたけどsshあたりでうまくいかず断念していた。 昨日再び挑戦したところ、すんなりとimportに成功した。以前使っていたcygwinのsshに不具合でもあったのだろうか。
vimには覚えきれないほど機能があるんで、ときどき http://vimdoc.sourceforge.net/ を読んで使い方をちまちま覚えてたりする。 今日はかなりいい機能を発見した。 overview->usr_24.txt Inserting quickly->*24.3* Completion 今まで知らなくて損した。 現…
最近はCPU上で動作するRay tracerを開発中。 未踏が終わってしばらくした後、とりあえずoctreeを実装してみたけどあまり速くならなかった。各ノードに子ノードへのポインタを持たせないことによってメモリを節約しキャッシュ効率が少し上がるような設計にし…
データのバックアップを取ったり、復元するときの効率について考えてみた。 ハードディスクAから別のハードディスクBへサイズがxのデータをコピーし、その後ハードディスクBからさらに別のハードディスクCへそのデータをコピーすることについて考えてみる。 …
id:Ozy:20070509>酷い日本のソフトウェア産業 近い将来、ソフトウェアの生産性が飛躍的に向上し、世の中のソフトの大半が自動的に生成、保守、管理されるようになり、単なる作業員プログラマがいなくなるときが来るかもしれません。そしてプログラマは新しい…
PC watchの記事にCellFactor: RevolutionのフルバージョンがAGEIAのサイトから無料で落とせるとのことが書いてあったので、久々にAGEIAのサイトに行ってみた。 日本ではPhysXを持っている人は少ないようで、さらにPhysX SDKで何か開発している人は結構少ない…
プログラマーとして地球環境のことを考えると、C++やアセンブリ言語のような実行効率指向な言語がいいかもしれない。 例えば、Javaで書いたプログラムだと計算に1時間掛かるのが、C++で30分で計算できるなら電気代が半分になる。 PHPで書いたサーバプログラ…
Sourceforge.jpにGPUPPURプロジェクトを登録し、GPUPPURのソースコードを公開しました。 GPUPPURプロジェクトページ: http://sourceforge.jp/projects/gpuppur/ GPUPPURのソースコードの特徴は C++で書かれている 今のところVisual C++ 2005でしかコンパイ…
GPUPPURはGPUとPPUを活用して高速化を狙ってたのですが、PPUに必要なAPIがまだ公開されていないために結局GPU+CPUでレンダリングを行なっています。 それで実際には、多くの場合OpenGLやDirect3Dを使ったほうが高速にレンダリングできるのですが、特定の条件…
c++言語でテンプレート関連のコンパイルエラーは非常に読みにくいです。 ですがインデントすれば結構読み易くなります。 例えば以下のようg++からのコンパイル エラーメッセージ src/gpuppur/cpu/cpu_raytracer.hpp:479: error: `void gpuppur::cpu_raytrace…
今までGPUPPURをNVIDIAのグラフィックスカードだけで開発していたので、テストのためにATIのRadeonX1650Proを取り付けてテストしてみました。 GPUPPURではあまり複雑なシェーダを使ってなかったので問題無く動きましたが他のプログラムでGLSL関連のエラーが…
GPUPPURayを使ってレンダリングした画像のキャプチャです。 GPUPPURayではレイトレーシング法でレンダリングしているわけですが、キャプチャ画像ではレイトレーシング法によって反射を計算しているわけではなく環境マップを使って擬似的に反射を表現していま…
最近日記を全然更新してませんが、GPUPPURの開発が進んでないというわけではありません。ただ、面倒なので更新してないだけですorz とりあえず今までのところできたのは、 ・レイトレーシングするGPUPPURayとラスタライジングするGPUPPURasで(いくつか制約は…
多くのC++のライブラリは、ライブラリファイルをプログラムにリンクし、ライブラリ内の関数やクラスを使うソースコードではライブラリのヘッダファイルをインクルードするというふうになっています。GPUPPURでもお世話になっているBoost C++ libraryはインス…
GPUPPURでstanford bunnyをレンダリングしたのでそのキャプチャ画像を未踏ユースのwikiの自己紹介のページに貼りました。 stanford bunnyは約70k個の三角形からなる図形です。今のGPUPPURのGPUPPURayでレイトレーシング法でstanford bunnyをレンダリングした…
しばらく、忙しかったり疲れてたりして更新してませんでした。GPUPPURのほうは予定よりも遅れていますが大きな問題も特に無く開発が進んでいます。 GPUPPURのようにDirectXを使った実装とOpenGLを使った実装の両方を使いたい場合は、普通以下のように書くと…
人間には波があり、調子のいい日、悪い日があると思いますが、どうやら今日は調子の悪い日のようでした。それでもGPUPPURを開発し続けなければならないので、できるだけ自分の好きなことをやることにしました。そこで最適化をやることにしました。もちろんタ…
VisualC++2005を使っているとコンパイル時に標準ライブラリ、boost library, PhysXSDK等のヘッダファイルから大量の警告が発生します。少しでもバグを無くす為に常に警告レベルを最大にしてコンパイルするようにしているのですが、他人の書いた、あまり自分…
GPUPPURでOpenGLやDirect3Dのテクスチャを同じように扱えるようなクラスを作ろうと思いどのように設計するか迷ったので、OpenGLのSpecificationsを読んでいました。ちなみに仕様書では関数や定数名の頭にあるgl*やGL_*は省略されて書いてあります。ですので…
やっとGPUPPURUTでの泥臭いところから少し3Dに近いGPUPPURayの実装をできるかと思ったら、現実はそうはいきませんでした。 DirectX関連のエラー処理をするマクロでエラーをファイルに書き出すようにしてたので、OpenGLのエラーもエラーログに書き出すことに…
少し遅れて午後からの参加でしたが、いろいろ面白いとか凄い話がいろいろ聴けました。 こんな凄い人々がこれだけ集まったのは生まれ初めて見ました。やはり自分の住んでいるところが田舎だなぁと思いました。 提案内容がよくわからなかったのを具体的に知る…