2007-01-01から1年間の記事一覧
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ではレイトレーシング法でレンダリングしているわけですが、キャプチャ画像ではレイトレーシング法によって反射を計算しているわけではなく環境マップを使って擬似的に反射を表現していま…