Skip to content

onlyuser/dexvt-test

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Build Status

dexvt-test

Copyright (C) 2011-2017 mailto:onlyuser@gmail.com

About

dexvt-test is a c++/glsl/glm-based 3d engine. It features environment-mapped reflection/refraction/double refraction (with Fresnel effect, chromatic dispersion, and Beer's law), screen space ambient occlusion, bump mapping, Phong shading, Bloom filter, 3ds mesh import, 3D Inverse Kinematics (Cyclic Coordinate Descent), and platonic primitives generation. Platonic primitives supported include sphere, cube, cylinder, cone, grid, tetrahedron, and round brilliant diamond.

See sister project demonstrating IK features: dexvt-lite

Screenshots

Screenshot Screenshot Screenshot Screenshot Screenshot Screenshot Screenshot Screenshot Screenshot Screenshot Screenshot Screenshot Screenshot Screenshot Screenshot Screenshot Screenshot Screenshot Screenshot Screenshot Screenshot

Requirements

Unix tools and 3rd party components (accessible from $PATH):

gcc mesa-common-dev freeglut3-dev libglew-dev libglm-dev libpng-dev curl imagemagick

Resource files not included:

resource files purpose
data/SaintPetersSquare2/posx.png
data/SaintPetersSquare2/negx.png
data/SaintPetersSquare2/posy.png
data/SaintPetersSquare2/negy.png
data/SaintPetersSquare2/posz.png
data/SaintPetersSquare2/negz.png
Cube map texture (6 faces)
data/chesterfield_color.png Color map texture
data/chesterfield_normal.png Normal map texture
data/star_wars/TI_Low0.3ds 3D Studio mesh

Make Targets

target action
all make binaries
test all + run tests
clean remove all intermediate files
lint perform cppcheck
docs make doxygen documentation
resources download resource files
clean_lint remove cppcheck results
clean_docs remove doxygen documentation
clean_resources remove resource files

Controls

Keyboard:

key purpose
b toggle bounding-box
f toggle frame rate
g toggle guide wires
h toggle HUD
l toggle lights
n toggle normals
p toggle ortho-projection
t toggle texture
w toggle wireframe
x toggle axis
z toggle labels
up/down pitch
left/right yaw
pg-up/pg-dn roll
home toggle target
space toggle animation
esc exit

Mouse:

mouse-button + drag purpose
left orbit
right zoom

References

"Setting up an OpenGL development environment in Ubuntu Linux"
http://www.codeproject.com/Articles/182109/Setting-up-an-OpenGL-development-environment-in-Ub
"OpenGL Programming"
http://en.wikibooks.org/wiki/OpenGL_Programming
"Tutorial - Getting Started with the OpenGL Shading Language (GLSL)"
http://joshbeam.com/articles/getting_started_with_glsl/
"Cube Maps: Sky Boxes and Environment Mapping"
http://antongerdelan.net/opengl/cubemaps.html
"3D C/C++ tutorials - OpenGL - GLSL cube mapping"
http://www.belanecbn.sk/3dtutorials/index.php?id=24
"Skyboxes using glsl Version 330"
http://gamedev.stackexchange.com/questions/60313/skyboxes-using-glsl-version-330
"Rioki's Corner - GLSL Skybox"
http://www.rioki.org/2013/03/07/glsl-skybox.html
"How would you implement chromatic aberration?"
http://gamedev.stackexchange.com/questions/58408/how-would-you-implement-chromatic-aberration
"How do you calculate the angle between two normals in glsl?"
http://stackoverflow.com/questions/338762/how-do-you-calculate-the-angle-between-two-normals-in-glsl
"Chapter 7. Environment Mapping Techniques"
http://http.developer.nvidia.com/CgTutorial/cg_tutorial_chapter07.html
"Humus Cube Map Textures - Colosseum"
http://www.humus.name/index.php?page=Textures
"Kay's Blog Texture and game development freebies! - Well Preserved Chesterfield"
http://kay-vriend.blogspot.tw/2012/11/well-preserved-chesterfield.html
"Philip Rideout's OpenGL Bloom Tutorial"
http://prideout.net/archive/bloom/
"An investigation of fast real-time GPU-based image blur algorithms"
https://software.intel.com/en-us/blogs/2014/07/15/an-investigation-of-fast-real-time-gpu-based-image-blur-algorithms
"mattdesl/lwjgl-basics - ShaderLesson5"
https://github.com/mattdesl/lwjgl-basics/wiki/ShaderLesson5
"Jam3/glsl-fast-gaussian-blur - glsl-fast-gaussian-blur"
https://github.com/Jam3/glsl-fast-gaussian-blur
"john-chapman-graphics SSAO Tutorial"
http://john-chapman-graphics.blogspot.tw/2013/01/ssao-tutorial.html
"Know your SSAO artifacts"
http://mtnphil.wordpress.com/2013/06/26/know-your-ssao-artifacts/
"songho.ca OpenGL Projection Matrix"
http://www.songho.ca/opengl/gl_projectionmatrix.html
"3D MeshWorks"
http://www.jrbassett.com
"Missing gtc/constants.hpp #12"
g-truc/glm#12
"Kinematics (Advanced Methods in Computer Graphics) Part 4"
http://what-when-how.com/advanced-methods-in-computer-graphics/kinematics-advanced-methods-in-computer-graphics-part-4/
"alfanick's inverse-kinematics repo (ccd.cpp)"
https://github.com/alfanick/inverse-kinematics/blob/master/ccd.cpp
"Best Inverse kinematics algorithm with constraints on joint angles"
https://stackoverflow.com/questions/21373012/best-inverse-kinematics-algorithm-with-constraints-on-joint-angles
"Real-Time 3d Robotics UI (Python)"
https://coreykruger.wordpress.com/programming-and-scripting/462-2/
"Anand's blog - GPGPU In Android: Load a texture with floats and read it back"
http://www.anandmuralidhar.com/blog/tag/gpgpu/

Keywords

OpenGL, glsl shader, glm, environment map, cube map, normal map, bitangent, tbn matrix, ssao, screen space ambient occlusion, backface refraction, double refraction, second refraction, backface sampling, Fresnel effect, chromatic dispersion, chromatic aberration, Bloom filter, Beer's law, Snell's law, Newton's method, 3ds file import, round brilliant diamond rendering, gemstone rendering, hierarchy linkages, 3D inverse kinematics (cyclic coordinate descent)