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を括弧で囲んだ式をちょくちょく見かける。 それは標準のテンプレート関数なんだけど、…

sourceforgeのsubversionにimportした

以前、gpuppurのソースコードをsourceforgeのsubversionにimportしようとしたけどsshあたりでうまくいかず断念していた。 昨日再び挑戦したところ、すんなりとimportに成功した。以前使っていたcygwinのsshに不具合でもあったのだろうか。

vimの補完機能

vimには覚えきれないほど機能があるんで、ときどき http://vimdoc.sourceforge.net/ を読んで使い方をちまちま覚えてたりする。 今日はかなりいい機能を発見した。 overview->usr_24.txt Inserting quickly->*24.3* Completion 今まで知らなくて損した。 現…

Real Time Ray tracer

最近はCPU上で動作するRay tracerを開発中。 未踏が終わってしばらくした後、とりあえずoctreeを実装してみたけどあまり速くならなかった。各ノードに子ノードへのポインタを持たせないことによってメモリを節約しキャッシュ効率が少し上がるような設計にし…

データのバックアップと復元のスピード

データのバックアップを取ったり、復元するときの効率について考えてみた。 ハードディスクAから別のハードディスクBへサイズがxのデータをコピーし、その後ハードディスクBからさらに別のハードディスクCへそのデータをコピーすることについて考えてみる。 …

コード芸人!

id:Ozy:20070509>酷い日本のソフトウェア産業 近い将来、ソフトウェアの生産性が飛躍的に向上し、世の中のソフトの大半が自動的に生成、保守、管理されるようになり、単なる作業員プログラマがいなくなるときが来るかもしれません。そしてプログラマは新しい…

新しいPhysXが出るらしい

PC watchの記事にCellFactor: RevolutionのフルバージョンがAGEIAのサイトから無料で落とせるとのことが書いてあったので、久々にAGEIAのサイトに行ってみた。 日本ではPhysXを持っている人は少ないようで、さらにPhysX SDKで何か開発している人は結構少ない…

環境にやさしいプログラミング言語

プログラマーとして地球環境のことを考えると、C++やアセンブリ言語のような実行効率指向な言語がいいかもしれない。 例えば、Javaで書いたプログラムだと計算に1時間掛かるのが、C++で30分で計算できるなら電気代が半分になる。 PHPで書いたサーバプログラ…

GPUPPURのソースコードを公開

Sourceforge.jpにGPUPPURプロジェクトを登録し、GPUPPURのソースコードを公開しました。 GPUPPURプロジェクトページ: http://sourceforge.jp/projects/gpuppur/ GPUPPURのソースコードの特徴は C++で書かれている 今のところVisual C++ 2005でしかコンパイ…

特定条件下ではレイトレはGPUラスタよりも高速?

GPUPPURはGPUとPPUを活用して高速化を狙ってたのですが、PPUに必要なAPIがまだ公開されていないために結局GPU+CPUでレンダリングを行なっています。 それで実際には、多くの場合OpenGLやDirect3Dを使ったほうが高速にレンダリングできるのですが、特定の条件…

g++のエラーメッセージを読み易くする

c++言語でテンプレート関連のコンパイルエラーは非常に読みにくいです。 ですがインデントすれば結構読み易くなります。 例えば以下のようg++からのコンパイル エラーメッセージ src/gpuppur/cpu/cpu_raytracer.hpp:479: error: `void gpuppur::cpu_raytrace…

NVIDIAとATIのGLSL対応の差

今までGPUPPURをNVIDIAのグラフィックスカードだけで開発していたので、テストのためにATIのRadeonX1650Proを取り付けてテストしてみました。 GPUPPURではあまり複雑なシェーダを使ってなかったので問題無く動きましたが他のプログラムでGLSL関連のエラーが…

GPUPPURayでレイトレーシングで環境マップ

GPUPPURayを使ってレンダリングした画像のキャプチャです。 GPUPPURayではレイトレーシング法でレンダリングしているわけですが、キャプチャ画像ではレイトレーシング法によって反射を計算しているわけではなく環境マップを使って擬似的に反射を表現していま…