231 lines
6.8 KiB
Plaintext
231 lines
6.8 KiB
Plaintext
Credits
|
|
=======
|
|
|
|
The 3D-viewer contains parts, source code or adaptations or implementations that should give the following
|
|
aknowledgments:
|
|
|
|
|
|
cbvh_packet_traversal.cpp
|
|
-------------------------------
|
|
|
|
Contains an implementation of the algorithm described in the paper:
|
|
"Ray Tracing Deformable Scenes Using Dynamic Bounding Volume Hierarchies"
|
|
http://www.cs.cmu.edu/afs/cs/academic/class/15869-f11/www/readings/wald07_packetbvh.pdf
|
|
by INGO WALD, SOLOMON BOULOS, and PETER SHIRLEY from University of Utah
|
|
|
|
Contains an implementation of the algorithm described in the paper:
|
|
"Large Ray Packets for Real-time Whitted Ray Tracing"
|
|
http://cseweb.ucsd.edu/~ravir/whitted.pdf
|
|
by Ryan Overbeck1, Ravi Ramamoorthi from Columbia University and William R. Mark from
|
|
Intel Corporation and University of Texas at Austin
|
|
|
|
|
|
|
|
cbvh_pbrt.h
|
|
-----------
|
|
|
|
Contains a BVH implementation from the source code of the book
|
|
"Physically Based Rendering" (v2 and v3) http://www.pbrt.org/
|
|
Copyright(c) 1998-2015 Matt Pharr, Greg Humphreys, and Wenzel Jakob.
|
|
LICENSE: https://github.com/mmp/pbrt-v3/blob/master/LICENSE.txt
|
|
|
|
|
|
|
|
cbbox2d.cpp
|
|
-----------
|
|
|
|
bool CBBOX2D::Intersects( const SFVEC2F &aCenter, float aRadiusSquared ) const
|
|
Contains an algorithm implementation based on the paper:
|
|
"On Faster Sphere-Box Overlap Testing"
|
|
http://www.mrtc.mdh.se/projects/3Dgraphics/paperF.pdf
|
|
Thomas Larsson, Tomas Akenine-Möller, and Eric Lengyel
|
|
|
|
|
|
bool CBBOX2D::Intersect( const RAY2D &aRay, float *t ) const
|
|
Contains an algorithm implementation based on the article:
|
|
http://tavianator.com/fast-branchless-raybounding-box-intersections/
|
|
"FAST, BRANCHLESS RAY/BOUNDING BOX INTERSECTIONS", 2011 TAVIAN BARNES
|
|
|
|
|
|
|
|
cfilledcircle2d.cpp, cring2d.cpp, croundseg.cpp
|
|
-----------------------------------------------
|
|
|
|
bool CFILLEDCIRCLE2D::Intersect( const RAYSEG2D &aSegRay, float *aOutT, SFVEC2F *aNormalOut ) const
|
|
bool CRING2D::Intersect( const RAYSEG2D &aSegRay, float *aOutT, SFVEC2F *aNormalOut ) const
|
|
bool CROUNDSEG::Intersect( const RAY &aRay, HITINFO &aHitInfo ) const
|
|
Contains an algorithm based on:
|
|
http://cs665pd.googlecode.com/svn/trunk/photon/sphere.cpp
|
|
Steve Marschner's CS667 framework, email: srm at cs.cornell.edu
|
|
|
|
TODO: ask author about the license of this source code.
|
|
|
|
|
|
|
|
citemlayercsg2d.cpp
|
|
-------------------
|
|
|
|
bool CITEMLAYERCSG2D::Intersect( const RAYSEG2D &aSegRay, float *aOutT, SFVEC2F *aNormalOut ) const
|
|
Based on ideas and implementation from
|
|
http://homepages.paradise.net.nz/nickamy/raytracer/raytracer.htm
|
|
Nick Chapman, email: nickamy@paradise.net.nz
|
|
|
|
|
|
|
|
ctriangle2d.cpp
|
|
---------------
|
|
|
|
bool CTRIANGLE2D::IsPointInside( const SFVEC2F &aPoint ) const
|
|
Contains an algorithm based on:
|
|
http://totologic.blogspot.co.uk/2014/01/accurate-point-in-triangle-test.html
|
|
2014 Cédric Jules, email: flash dot cedric at Google mail service
|
|
|
|
|
|
|
|
cbbox.cpp
|
|
---------
|
|
|
|
bool CBBOX::Intersect( const RAY &aRay, float *aOutHitt0, float *aOutHitt1 ) const
|
|
Contains an algorithm based on:
|
|
"Physically Based Rendering" (v2) http://www.pbrt.org/
|
|
"Physical Based Ray Tracing" (by Matt Pharr and Greg Humphrey)
|
|
|
|
https://github.com/mmp/pbrt-v2/blob/master/src/core/geometry.cpp#L68
|
|
https://github.com/mmp/pbrt-v2/blob/master/src/accelerators/bvh.cpp#L126
|
|
LICENSE: http://www.pbrt.org/LICENSE.txt
|
|
|
|
|
|
|
|
cbbox_ray.cpp
|
|
-------------
|
|
|
|
bool CBBOX::Intersect( const RAY &aRay, float *t ) const
|
|
Based on the source code from the paper:
|
|
|
|
"This source code accompanies the Journal of Graphics Tools paper:
|
|
|
|
"Fast Ray / Axis-Aligned Bounding Box Overlap Tests using Ray Slopes"
|
|
by Martin Eisemann, Thorsten Grosch, Stefan Müller and Marcus Magnor
|
|
Computer Graphics Lab, TU Braunschweig, Germany and
|
|
University of Koblenz-Landau, Germany
|
|
|
|
This source code is public domain, but please mention us if you use it."
|
|
|
|
|
|
|
|
ccylinder.cpp
|
|
-------------
|
|
|
|
bool CVCYLINDER::Intersect( const RAY &aRay, HITINFO &aHitInfo ) const
|
|
bool CVCYLINDER::IntersectP(const RAY &aRay , float aMaxDistance ) const
|
|
Based on the source code from:
|
|
http://www.cs.utah.edu/~lha/Code%206620%20/Ray4/Cylinder.cpp
|
|
Linh Khanh Ha, University of Utah, email: lha sci.utah.edu
|
|
|
|
TODO: Ask author about the source code license
|
|
|
|
|
|
|
|
ctriangle.cpp
|
|
-------------
|
|
|
|
bool CTRIANGLE::Intersect( const RAY &aRay, HITINFO &aHitInfo ) const
|
|
Implements a triangle ray intersection based on article:
|
|
http://www.flipcode.com/archives/Raytracing_Topics_Techniques-Part_7_Kd-Trees_and_More_Speed.shtml
|
|
by Jacco Bikker, that implement optimizations based on Ingo Wald's thesis.
|
|
|
|
|
|
|
|
cfrustum.cpp
|
|
------------
|
|
|
|
bool CFRUSTUM::Intersect( const CBBOX &aBBox ) const
|
|
BAsed on the implementation from:
|
|
https://github.com/nslo/raytracer/blob/2c2e0ff4bbb6082e07804ec7cf0b92673b98dcb1/src/raytracer/geom_utils.cpp#L66
|
|
Nathan Slobody
|
|
|
|
TODO: Ask author about the source code license
|
|
|
|
|
|
|
|
clight.h
|
|
--------
|
|
|
|
Class CPOINTLIGHT Point light based on tutorial:
|
|
http://ogldev.atspace.co.uk/www/tutorial20/tutorial20.html
|
|
Etay Meiri, email: ogldev1 gmail
|
|
|
|
|
|
|
|
mortoncodes.cpp
|
|
---------------
|
|
|
|
Implements Morton Codes base on the implementation of Fabian “ryg” Giesen
|
|
https://fgiesen.wordpress.com/2009/12/13/decoding-morton-codes/
|
|
|
|
|
|
|
|
ccamera.h
|
|
---------
|
|
|
|
Frustum structure is based on the tutorial:
|
|
http://www.lighthouse3d.com/tutorials/view-frustum-culling/
|
|
|
|
|
|
|
|
cpostshader_ssao.cpp
|
|
--------------------
|
|
|
|
SSAO based on an implementation by:
|
|
Benjamin Blundell https://github.com/OniDaito/CoffeeGL/blob/master/misc/ssao.frag
|
|
|
|
Also based from a post by martinsh at:
|
|
http://www.gamedev.net/topic/556187-the-best-ssao-ive-seen/?view=findpost&p=4632208
|
|
|
|
Latter adapter for CPU shader implementation and add other features specific to KiCad implementation.
|
|
|
|
|
|
trackball.h, trackball.cpp
|
|
--------------------------
|
|
|
|
A virtual trackball implementation
|
|
Written by Gavin Bell for Silicon Graphics, November 1988.
|
|
Original code from: David M. Ciemiewicz, Mark Grossman, Henry Moreton, and Paul Haeberli
|
|
License are in the files trackball.h and trackball.cpp
|
|
|
|
|
|
|
|
3d_fastmath.h
|
|
-------------
|
|
|
|
This file contains some functions from the PBRT 3 source code.
|
|
https://github.com/mmp/pbrt-v3/blob/master/src/core/pbrt.h
|
|
"Physically Based Rendering" (v3) http://www.pbrt.org/
|
|
Copyright(c) 1998-2015 Matt Pharr, Greg Humphreys, and Wenzel Jakob.
|
|
LICENSE: https://github.com/mmp/pbrt-v3/blob/master/LICENSE.txt
|
|
|
|
|
|
|
|
3d_math.h
|
|
---------
|
|
|
|
inline SFVEC3F CosWeightedRandomHemisphereDirection( SFVEC3F n )
|
|
Based on a post in:
|
|
https://pathtracing.wordpress.com/2011/03/03/cosine-weighted-hemisphere/
|
|
|
|
inline bool Refract( const SFVEC3F &aInVector, const SFVEC3F &aNormal, float aRin_over_Rout, SFVEC3F &aOutVector )
|
|
https://github.com/mmp/pbrt-v3/blob/master/src/core/reflection.h
|
|
"Physically Based Rendering" (v3) http://www.pbrt.org/
|
|
Copyright(c) 1998-2015 Matt Pharr, Greg Humphreys, and Wenzel Jakob.
|
|
LICENSE: https://github.com/mmp/pbrt-v3/blob/master/LICENSE.txt
|
|
|
|
|
|
|
|
openmp_mutex.h
|
|
--------------
|
|
|
|
openMP mutex class based on:
|
|
http://bisqwit.iki.fi/story/howto/openmp/
|
|
by Joel Yliluoma, email bisqwit iki.fi
|
|
|