Copyright (C) 2011-2017 mailto:[email protected]
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
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 |
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 |
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 |
- "Setting up an OpenGL development environment in Ubuntu Linux"
- http:https://www.codeproject.com/Articles/182109/Setting-up-an-OpenGL-development-environment-in-Ub
- "OpenGL Programming"
- http:https://en.wikibooks.org/wiki/OpenGL_Programming
- "Tutorial - Getting Started with the OpenGL Shading Language (GLSL)"
- http:https://joshbeam.com/articles/getting_started_with_glsl/
- "Cube Maps: Sky Boxes and Environment Mapping"
- http:https://antongerdelan.net/opengl/cubemaps.html
- "3D C/C++ tutorials - OpenGL - GLSL cube mapping"
- http:https://www.belanecbn.sk/3dtutorials/index.php?id=24
- "Skyboxes using glsl Version 330"
- http:https://gamedev.stackexchange.com/questions/60313/skyboxes-using-glsl-version-330
- "Rioki's Corner - GLSL Skybox"
- http:https://www.rioki.org/2013/03/07/glsl-skybox.html
- "How would you implement chromatic aberration?"
- http:https://gamedev.stackexchange.com/questions/58408/how-would-you-implement-chromatic-aberration
- "How do you calculate the angle between two normals in glsl?"
- http:https://stackoverflow.com/questions/338762/how-do-you-calculate-the-angle-between-two-normals-in-glsl
- "Chapter 7. Environment Mapping Techniques"
- http:https://http.developer.nvidia.com/CgTutorial/cg_tutorial_chapter07.html
- "Humus Cube Map Textures - Colosseum"
- http:https://www.humus.name/index.php?page=Textures
- "Kay's Blog Texture and game development freebies! - Well Preserved Chesterfield"
- http:https://kay-vriend.blogspot.tw/2012/11/well-preserved-chesterfield.html
- "Philip Rideout's OpenGL Bloom Tutorial"
- http:https://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:https://john-chapman-graphics.blogspot.tw/2013/01/ssao-tutorial.html
- "Know your SSAO artifacts"
- http:https://mtnphil.wordpress.com/2013/06/26/know-your-ssao-artifacts/
- "songho.ca OpenGL Projection Matrix"
- http:https://www.songho.ca/opengl/gl_projectionmatrix.html
- "3D MeshWorks"
- http:https://www.jrbassett.com
- "Missing gtc/constants.hpp #12"
- g-truc/glm#12
- "Kinematics (Advanced Methods in Computer Graphics) Part 4"
- http:https://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:https://www.anandmuralidhar.com/blog/tag/gpgpu/
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)