You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

229 lines
6.8 KiB

  1. Credits
  2. =======
  3. The 3D-viewer contains parts, source code or adaptations or implementations that should give the following aknowledge:
  4. cbvh_packet_traversal.cpp
  5. -------------------------------
  6. Contains an implementation of the algorithm described in the paper:
  7. "Ray Tracing Deformable Scenes Using Dynamic Bounding Volume Hierarchies"
  8. http://www.cs.cmu.edu/afs/cs/academic/class/15869-f11/www/readings/wald07_packetbvh.pdf
  9. by INGO WALD, SOLOMON BOULOS, and PETER SHIRLEY from University of Utah
  10. Contains an implementation of the algorithm described in the paper:
  11. "Large Ray Packets for Real-time Whitted Ray Tracing"
  12. http://cseweb.ucsd.edu/~ravir/whitted.pdf
  13. by Ryan Overbeck1, Ravi Ramamoorthi from Columbia University and William R. Mark from
  14. Intel Corporation and University of Texas at Austin
  15. cbvh_pbrt.h
  16. -----------
  17. Contains a BVH implementation from the source code of the book
  18. "Physically Based Rendering" (v2 and v3) http://www.pbrt.org/
  19. Copyright(c) 1998-2015 Matt Pharr, Greg Humphreys, and Wenzel Jakob.
  20. LICENSE: https://github.com/mmp/pbrt-v3/blob/master/LICENSE.txt
  21. cbbox2d.cpp
  22. -----------
  23. bool CBBOX2D::Intersects( const SFVEC2F &aCenter, float aRadiusSquared ) const
  24. Contains an algorithm implementation based on the paper:
  25. "On Faster Sphere-Box Overlap Testing"
  26. http://www.mrtc.mdh.se/projects/3Dgraphics/paperF.pdf
  27. Thomas Larsson, Tomas Akenine-Möller, and Eric Lengyel
  28. bool CBBOX2D::Intersect( const RAY2D &aRay, float *t ) const
  29. Contains an algorithm implementation based on the article:
  30. http://tavianator.com/fast-branchless-raybounding-box-intersections/
  31. "FAST, BRANCHLESS RAY/BOUNDING BOX INTERSECTIONS", 2011 TAVIAN BARNES
  32. cfilledcircle2d.cpp, cring2d.cpp, croundseg.cpp
  33. -----------------------------------------------
  34. bool CFILLEDCIRCLE2D::Intersect( const RAYSEG2D &aSegRay, float *aOutT, SFVEC2F *aNormalOut ) const
  35. bool CRING2D::Intersect( const RAYSEG2D &aSegRay, float *aOutT, SFVEC2F *aNormalOut ) const
  36. bool CROUNDSEG::Intersect( const RAY &aRay, HITINFO &aHitInfo ) const
  37. Contains an algorithm based on:
  38. http://cs665pd.googlecode.com/svn/trunk/photon/sphere.cpp
  39. Steve Marschner's CS667 framework, email: srm at cs.cornell.edu
  40. TODO: ask author about the license of this source code.
  41. citemlayercsg2d.cpp
  42. -------------------
  43. bool CITEMLAYERCSG2D::Intersect( const RAYSEG2D &aSegRay, float *aOutT, SFVEC2F *aNormalOut ) const
  44. Based on ideas and implementation from
  45. http://homepages.paradise.net.nz/nickamy/raytracer/raytracer.htm
  46. Nick Chapman, email: nickamy@paradise.net.nz
  47. ctriangle2d.cpp
  48. ---------------
  49. bool CTRIANGLE2D::IsPointInside( const SFVEC2F &aPoint ) const
  50. Contains an algorithm based on:
  51. http://totologic.blogspot.co.uk/2014/01/accurate-point-in-triangle-test.html
  52. 2014 Cédric Jules, email: flash dot cedric at Google mail service
  53. cbbox.cpp
  54. ---------
  55. bool CBBOX::Intersect( const RAY &aRay, float *aOutHitt0, float *aOutHitt1 ) const
  56. Contains an algorithm based on:
  57. "Physically Based Rendering" (v2) http://www.pbrt.org/
  58. "Physical Based Ray Tracing" (by Matt Pharr and Greg Humphrey)
  59. https://github.com/mmp/pbrt-v2/blob/master/src/core/geometry.cpp#L68
  60. https://github.com/mmp/pbrt-v2/blob/master/src/accelerators/bvh.cpp#L126
  61. LICENSE: http://www.pbrt.org/LICENSE.txt
  62. cbbox_ray.cpp
  63. -------------
  64. bool CBBOX::Intersect( const RAY &aRay, float *t ) const
  65. Based on the source code from the paper:
  66. "This source code accompanies the Journal of Graphics Tools paper:
  67. "Fast Ray / Axis-Aligned Bounding Box Overlap Tests using Ray Slopes"
  68. by Martin Eisemann, Thorsten Grosch, Stefan Müller and Marcus Magnor
  69. Computer Graphics Lab, TU Braunschweig, Germany and
  70. University of Koblenz-Landau, Germany
  71. This source code is public domain, but please mention us if you use it."
  72. ccylinder.cpp
  73. -------------
  74. bool CVCYLINDER::Intersect( const RAY &aRay, HITINFO &aHitInfo ) const
  75. bool CVCYLINDER::IntersectP(const RAY &aRay , float aMaxDistance ) const
  76. Based on the source code from:
  77. http://www.cs.utah.edu/~lha/Code%206620%20/Ray4/Cylinder.cpp
  78. Linh Khanh Ha, University of Utah, email: lha sci.utah.edu
  79. TODO: Ask author about the source code license
  80. ctriangle.cpp
  81. -------------
  82. bool CTRIANGLE::Intersect( const RAY &aRay, HITINFO &aHitInfo ) const
  83. Implements a triangle ray intersection based on article:
  84. http://www.flipcode.com/archives/Raytracing_Topics_Techniques-Part_7_Kd-Trees_and_More_Speed.shtml
  85. by Jacco Bikker, that implement optimizations based on Ingo Wald's thesis.
  86. cfrustum.cpp
  87. ------------
  88. bool CFRUSTUM::Intersect( const CBBOX &aBBox ) const
  89. BAsed on the implementation from:
  90. https://github.com/nslo/raytracer/blob/2c2e0ff4bbb6082e07804ec7cf0b92673b98dcb1/src/raytracer/geom_utils.cpp#L66
  91. Nathan Slobody
  92. TODO: Ask author about the source code license
  93. clight.h
  94. --------
  95. Class CPOINTLIGHT Point light based on tutorial:
  96. http://ogldev.atspace.co.uk/www/tutorial20/tutorial20.html
  97. Etay Meiri, email: ogldev1 gmail
  98. mortoncodes.cpp
  99. ---------------
  100. Implementes Morton Codes base on the implementation of Fabian “ryg” Giesen
  101. https://fgiesen.wordpress.com/2009/12/13/decoding-morton-codes/
  102. ccamera.h
  103. ---------
  104. Frustum structure is based on the tutorial:
  105. http://www.lighthouse3d.com/tutorials/view-frustum-culling/
  106. cpostshader_ssao.cpp
  107. --------------------
  108. SSAO based on an implementation by:
  109. Benjamin Blundell https://github.com/OniDaito/CoffeeGL/blob/master/misc/ssao.frag
  110. Also based from a post by martinsh at:
  111. http://www.gamedev.net/topic/556187-the-best-ssao-ive-seen/?view=findpost&p=4632208
  112. Latter adapter for CPU shader implementation and add other features specific to KiCad implementation.
  113. trackball.h, trackball.cpp
  114. --------------------------
  115. A virtual trackball implementation
  116. Written by Gavin Bell for Silicon Graphics, November 1988.
  117. Original code from: David M. Ciemiewicz, Mark Grossman, Henry Moreton, and Paul Haeberli
  118. License are in the files trackball.h and trackball.cpp
  119. 3d_fastmath.h
  120. -------------
  121. This file contains some functions from the PBRT 3 source code.
  122. https://github.com/mmp/pbrt-v3/blob/master/src/core/pbrt.h
  123. "Physically Based Rendering" (v3) http://www.pbrt.org/
  124. Copyright(c) 1998-2015 Matt Pharr, Greg Humphreys, and Wenzel Jakob.
  125. LICENSE: https://github.com/mmp/pbrt-v3/blob/master/LICENSE.txt
  126. 3d_math.h
  127. ---------
  128. inline SFVEC3F CosWeightedRandomHemisphereDirection( SFVEC3F n )
  129. Based on a post in:
  130. https://pathtracing.wordpress.com/2011/03/03/cosine-weighted-hemisphere/
  131. inline bool Refract( const SFVEC3F &aInVector, const SFVEC3F &aNormal, float aRin_over_Rout, SFVEC3F &aOutVector )
  132. https://github.com/mmp/pbrt-v3/blob/master/src/core/reflection.h
  133. "Physically Based Rendering" (v3) http://www.pbrt.org/
  134. Copyright(c) 1998-2015 Matt Pharr, Greg Humphreys, and Wenzel Jakob.
  135. LICENSE: https://github.com/mmp/pbrt-v3/blob/master/LICENSE.txt
  136. openmp_mutex.h
  137. --------------
  138. openMP mutex class based on:
  139. http://bisqwit.iki.fi/story/howto/openmp/
  140. by Joel Yliluoma, email bisqwit iki.fi