2008-02-12
■[レイトレ] パストレーシング
3dchayaさんの所の姫路城です。読み込みはTriMesh2ライブラリ。
128レイ/ピクセルだとまだざらつきます。
パストレーシングとして必要なものはすべて実装したはず。
■[llvm][Cell] llvm-2.2リリース
LLVMの2.2がリリースされています。
個人的に今回の目玉はCellのSPUバックエンドが正式にリリースに入ったことでしょうか。
(前からsvnからソース落としてコンパイルすれば使えてた)
■[LLVM] llvmとllvm-gccのコンパイルのしかた
llvm
まずはllvm.
ソースを適当にダウンロードして解凍して./configureしてmake.
spuバックエンドを使いたいので明示的に--enable-targetsで指定する。
デフォルトデバッグビルドなので--enable-optimizedが必要。
$ ./configure --enable-optimized --enable-targets=x86,x86_64,powerpc,spu $ make
バイナリはReleaseの下に作られる。
インストールする場合はmake install
$ make install
インストール先は/usr/local/binだが./configureのときに--prefix=で変えることもできる。
llvm-gcc
次はllvm-gcc.これはえらい苦労した。なぜかgcc3系とgcc40,gcc42でコンパイルするとエラーが出た。
(FreeBSDはgccがバージョン毎に違う名前でインストールされる)
しかたがないのでgcc43系を使った。正確にはgcc-4.3.0_20080201
なんかdefine__STD_MACROSを定義しろとか何とかエラーでたかも。
llvmとllvm-gccを解凍したディレクトリと平行にobjとbinを作ってそこでコンパイル(そうしろとREADMEに書いてあったから)
環境変数LLVMOBJDIRが必要。絶対パスで指定すればそれでもいい。
llvmの下のReleaseを指定する。
$ mkdir obj $ mkdir install $ cd obj $ ../llvm-gcc-4.2/configure --prefix=`pwd`/../install --enable-llvm=`pwd`/../llvm/Release --enable-languages=c,c++ --enable-gcc=gcc43 --enable-gxx=g++43
\--enable-llvmはLLVMのバイナリのルートを指す(微妙な表現だ)。普通は ../llvm/Release
この下に bin example lib があるはず。
\--enable-gcc=gcc43と--enable-gxx=g++43はコンパイラとしてgcc4.3系列を指定している(つもり)。
以前gcc4.3系列でないとコンパイル出来ないことがあったので念のため。普通は不要。
$ alias gcc gcc43 $ alias g++ g++43
もやってしまったため、どちらが効いたのかよくわからない。
終わったらmake
$ make $ make install
これで前に作ったinstallディレクトリにインストールされる。
注意:今FreeBSD7.0で試したらllvm-gccのコンパイルでエラーが出た。
$ cd llvm/Release $ ln -s ../include include

