C++ demos: prepare infrastructure, add spheres_shadow.cc
rename Ray::a to Ray::o
KdNode::shapes changed to pointer and added to union together with *children (to save memory)
+ − CCFLAGS=-I./src -Wall -Wno-write-strings -g -O3 -fno-strict-aliasing -DPTHREADS
+ − LDFLAGS=
+ −
+ − ifeq ($(OS), Windows_NT)
+ − CCFLAGS+=-I"C:/Program Files/Python25/include"
+ − LDFLAGS+=-L"C:\Program Files\Python25\libs" -lpython25 -lpthreadGC2
+ − MODULENAME=raytracer.pyd
+ − else
+ − CCFLAGS+=-pthread -fPIC `python-config --includes`
+ − MODULENAME=raytracermodule.so
+ − endif
+ −
+ − # optimizations
+ − #CCFLAGS+=-pipe -fomit-frame-pointer -ffast-math -msse3
+ −
+ −
+ − # TARGETS
+ − #########
+ −
+ − all: python-module
+ −
+ − python-module: $(MODULENAME)
+ −
+ − tests: testvector testmatrix
+ −
+ − clean:
+ − rm -f *.o $(MODULENAME) testvector testmatrix
+ −
+ −
+ − # RULES
+ − #######
+ −
+ − %.o: src/%.cc
+ − $(CXX) -c -o $@ src/$*.cc $(CCFLAGS)
+ −
+ − test%: tests/%.cc
+ − $(CXX) -o $@ tests/$*.cc $(CCFLAGS)
+ − ./$@
+ −
+ −
+ − # DEPENDENCIES
+ − ##############
+ −
+ − # C++ raytracer
+ − vector.o: src/vector.cc src/vector.h
+ − matrix.o: src/matrix.cc src/matrix.h src/vector.h
+ − noise.o: src/noise.cc src/noise.h
+ − scene.o: src/scene.cc src/scene.h src/vector.h src/noise.h src/common.h
+ − kdtree.o: src/kdtree.cc src/kdtree.h src/scene.h
+ − raytracer.o: src/raytracer.cc src/raytracer.h src/scene.h src/vector.h src/noise.h
+ −
+ − # python module
+ − raytracermodule.o: src/raytracermodule.cc src/raytracer.h src/scene.h src/vector.h
+ − $(MODULENAME): raytracermodule.o raytracer.o scene.o noise.o kdtree.o
+ − $(CXX) $^ -shared -o $@ $(LDFLAGS)
+ −
+ − # library tests
+ − testvector: tests/vector.cc src/vector.h