1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230
|
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
|