CUDA version of my renderer (real-time raytracing!)
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
3D-objects
VisualC
ac-macros
contrib
lib3ds-1.3.0
src Attempting to adapt to 64bit - also, detecting some common CUDA SDK l… Apr 6, 2016
.gitattributes
.gitignore
AUTHORS
COPYING
ChangeLog
INSTALL
Makefile.am
Makefile.in
NEWS
README
README.md
README.profile.CUDA
acinclude.m4
aclocal.m4
compile
config.guess
config.sub
configure
configure.ac
depcomp
install-sh
missing

README.md

Generated in the renderer's raytracing mode, with reflections and refractions enabled.

Full blog post about this code is here (screenshots, history, etc)

This is a real-time raytracer, supporting .3ds, .ply (ascii) and .tri (binary) formats.

COMPILE/INSTALL/RUN

Under Linux

The code has 3 dependencies: You must install...

- OpenGL (with GLEW and GLUT)
- libSDL
- CUDA toolkit

If you are using Debian, the first two are covered with:

sudo apt-get install libsdl1.2-dev libglew1.5-dev freeglut3-dev mesa-common-dev

...and the second is also quite easy - add the contrib and non-free collections to /etc/apt/sources.list - that is, at the end of your distro's repository line. In my case, it looks like this after editing:

deb http://ftp.gr.debian.org/debian/ jessie main non-free contrib

...and then:

$ sudo apt-get install nvidia-cuda-dev nvidia-cuda-toolkit

$ dpkg -l | grep nvidia-cuda
ii  nvidia-cuda-dev      6.0.37-5  amd64  NVIDIA CUDA development files
ii  nvidia-cuda-toolkit  6.0.37-5  amd64  NVIDIA CUDA development toolkit

After installing the dependencies, a simple...

./configure && make && ./src/cudaRenderer 3D-objects/chessboard.tri

...will work.

Under Windows

Make sure you have the CUDA toolkit installed (I used version 6.0)

Then:

  1. Open the cudaRenderer_vc90.sln with your Visual Studio
  2. Compile in Release mode
  3. Right-click on "cudaRenderer" in the Solution explorer, and select "Properties"
  4. Click on "Configuration Properties/Debugging"
  5. In the "Command Arguments", enter "..\3D-objects\chessboard.tri" and click OK
  6. Hit Ctrl-F5 to run.

You should see a rotating chessboard...

Read below for keyboard control intructions, or just press 'H' for help.

Note: I used the free Visual C++ 2008 Express Edition, but this should work with the commercial one, too.

Keyboard controls

Use the following keys to navigate around the object:

  • Hit 'H' for help.
  • Hit 'R' to stop/start auto-spin (camera rotates around the object).
  • Fly using the cursorKeys/A/Z.
  • Rotate the light with W/Q.
  • S/F are 'strafe' left/right
  • E/D are 'strafe' up/down (strafe keys don't work in auto-spin mode).
  • F4 toggles points mode
  • F5 toggles specular lighting
  • F6 toggles phong normal interpolation
  • F7 toggles reflections
  • F8 toggles shadows
  • F9 toggles anti-aliasing
  • ESC quits.

Misc

Since it reports frame rate at the end, you can use this as a benchmark for CUDA cards. Just spawn with "-b" to request benchmarking: (Note: keys don't work in benchmarking mode)

./src/cudaRenderer -b 150 3D-objects/chessboard.tri

This will draw 150 frames and report speed back. With my GT240, it reports:

Rendering 150 frames in 8.117 seconds. (18.4797 fps)

You can also do this easily via:

make bench