Slides, source-code and screencasts of introductory talk about raymarching held at C++user-group meeting in Aachen, Germany in May of 2018
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
build
data
experimental-shaders
include
raymarcher-gl
shaders
src
.clang-format
.gitignore
AUTHORS
CMakeLists.txt
LICENSE
README
bg-1.jpg
bg-10.jpg
bg-11.jpg
bg-12.jpg
bg-13.jpg
bg-14.jpg
bg-15.jpg
bg-16.jpg
bg-17.jpg
bg-18.jpg
bg-19.jpg
bg-2.jpg
bg-3.jpg
bg-4.jpg
bg-5.jpg
bg-6.jpg
bg-7.jpg
bg-8.jpg
bg-9.jpg
demo-0.sh
demo-1.sh
demo-2.sh
demo-3.sh
demo-4.sh
demo-5.sh
diagram-10-terrain.png
diagram-10-terrain.svg
diagram-11-objects.png
diagram-11-objects.svg
diagram-2-raymarching-2d.png
diagram-2-raymarching-2d.svg
diagram-3-view-ray-creation.png
diagram-3-view-ray-creation.svg
diagram-4-raymarching-in-3d.png
diagram-4-raymarching-in-3d.svg
diagram-5-lambert-shading.png
diagram-5-lambert-shading.svg
diagram-6-blinn-phong-shading.png
diagram-6-blinn-phong-shading.svg
diagram-7-shadows.png
diagram-7-shadows.svg
diagram-8-reflection.png
diagram-8-reflection.svg
diagram-9-booleans.png
diagram-9-booleans.svg
start-vortrag.sh
vortrag.pdf
vortrag.pin

README

This is the repository of an introductory talk about raymarching held at
our local C++-user-group meeting in Aachen, Germany during May 2018.

Screencasts for some of the supplied examples:
	* metaballs - https://www.youtube.com/embed/FW-8AaYzP_w
	* gyroid - https://www.youtube.com/embed/QqFFAoQWzTY
	* distortion - https://www.youtube.com/embed/uQ0vd2YQ9CM
	* truchet - https://www.youtube.com/embed/6Ljz1-MLXbY

Build-dependencies are:

	* clang++ 4.x or g++ 6.x
	* SDL 2.0.5
	* SDL_image 2.0.1
	* OpenGL 4.x
	* GLEW 1.13.0
	* cmake 3.5.x

Currently Linux is the most frequently tested platform. macOS should work
too. Windows (using MSYS/MinGW) is also supported. Visual-Studio support
under Windows is being worked on. To build the binaries you do
the usual...

	1> cd build
	1> cmake ..
	1> make -j4
	1> cd ..

The usage of raymarcher-gl looks like this:

	raymarcher-gl <shader-file> [<width> <height> <fps-rate> <texture-file> <texture-file> <texture-file> <texture-file>]

Example use of the built executables:

	1> build/raymarcher-nongl
	1> build/raymarcher-gl shaders/basic-3d-raymarching.glsl
	1> build/raymarcher-gl shaders/texture-terrain.glsl 720 360 60 data/noise-256x256.png

Interaction - if available (depending on the shader) - allows some viewpoint or
object/plane manipulation with the mouse. The <SPACE>-key pauses the rendering-loop
of a program, <F11> toggles between fullscreen and windowed and the <ESC>-key quits
a program.

You can live edit any loaded (fragment) shader-file. The raymarcher-gl binary will
recognize any changes and try to reload/recompile the updated shader. In case of an
error, it will dump the error-messages from the OpenGL-driver to stdout. Fix or undo
the error to get a valid graphics-output again.

In the directory experimental-shaders are a bunch of shaders not featured or
mentioned in the talk itself. They are more of a playground to try out some
ideas.