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.

204 lines
5.8 KiB

  1. #ifndef __DISK_KERNELS__
  2. #define __DISK_KERNELS__
  3. #if !defined(KERNEL_SMALL) && !defined(KERNEL_MEDIUM) && \
  4. !defined(KERNEL_LARGE) && !defined(KERNEL_VERYLARGE)
  5. static const int kSampleCount = 1;
  6. static const float2 kDiskKernel[1] = { float2(0, 0) };
  7. #endif
  8. #if defined(KERNEL_SMALL)
  9. // rings = 2
  10. // points per ring = 5
  11. static const int kSampleCount = 16;
  12. static const float2 kDiskKernel[kSampleCount] = {
  13. float2(0,0),
  14. float2(0.54545456,0),
  15. float2(0.16855472,0.5187581),
  16. float2(-0.44128203,0.3206101),
  17. float2(-0.44128197,-0.3206102),
  18. float2(0.1685548,-0.5187581),
  19. float2(1,0),
  20. float2(0.809017,0.58778524),
  21. float2(0.30901697,0.95105654),
  22. float2(-0.30901703,0.9510565),
  23. float2(-0.80901706,0.5877852),
  24. float2(-1,0),
  25. float2(-0.80901694,-0.58778536),
  26. float2(-0.30901664,-0.9510566),
  27. float2(0.30901712,-0.9510565),
  28. float2(0.80901694,-0.5877853),
  29. };
  30. #endif
  31. #if defined(KERNEL_MEDIUM)
  32. // rings = 3
  33. // points per ring = 7
  34. static const int kSampleCount = 22;
  35. static const float2 kDiskKernel[kSampleCount] = {
  36. float2(0,0),
  37. float2(0.53333336,0),
  38. float2(0.3325279,0.4169768),
  39. float2(-0.11867785,0.5199616),
  40. float2(-0.48051673,0.2314047),
  41. float2(-0.48051673,-0.23140468),
  42. float2(-0.11867763,-0.51996166),
  43. float2(0.33252785,-0.4169769),
  44. float2(1,0),
  45. float2(0.90096885,0.43388376),
  46. float2(0.6234898,0.7818315),
  47. float2(0.22252098,0.9749279),
  48. float2(-0.22252095,0.9749279),
  49. float2(-0.62349,0.7818314),
  50. float2(-0.90096885,0.43388382),
  51. float2(-1,0),
  52. float2(-0.90096885,-0.43388376),
  53. float2(-0.6234896,-0.7818316),
  54. float2(-0.22252055,-0.974928),
  55. float2(0.2225215,-0.9749278),
  56. float2(0.6234897,-0.7818316),
  57. float2(0.90096885,-0.43388376),
  58. };
  59. #endif
  60. #if defined(KERNEL_LARGE)
  61. // rings = 4
  62. // points per ring = 7
  63. static const int kSampleCount = 43;
  64. static const float2 kDiskKernel[kSampleCount] = {
  65. float2(0,0),
  66. float2(0.36363637,0),
  67. float2(0.22672357,0.28430238),
  68. float2(-0.08091671,0.35451925),
  69. float2(-0.32762504,0.15777594),
  70. float2(-0.32762504,-0.15777591),
  71. float2(-0.08091656,-0.35451928),
  72. float2(0.22672352,-0.2843024),
  73. float2(0.6818182,0),
  74. float2(0.614297,0.29582983),
  75. float2(0.42510667,0.5330669),
  76. float2(0.15171885,0.6647236),
  77. float2(-0.15171883,0.6647236),
  78. float2(-0.4251068,0.53306687),
  79. float2(-0.614297,0.29582986),
  80. float2(-0.6818182,0),
  81. float2(-0.614297,-0.29582983),
  82. float2(-0.42510656,-0.53306705),
  83. float2(-0.15171856,-0.66472363),
  84. float2(0.1517192,-0.6647235),
  85. float2(0.4251066,-0.53306705),
  86. float2(0.614297,-0.29582983),
  87. float2(1,0),
  88. float2(0.9555728,0.2947552),
  89. float2(0.82623875,0.5633201),
  90. float2(0.6234898,0.7818315),
  91. float2(0.36534098,0.93087375),
  92. float2(0.07473,0.9972038),
  93. float2(-0.22252095,0.9749279),
  94. float2(-0.50000006,0.8660254),
  95. float2(-0.73305196,0.6801727),
  96. float2(-0.90096885,0.43388382),
  97. float2(-0.98883086,0.14904208),
  98. float2(-0.9888308,-0.14904249),
  99. float2(-0.90096885,-0.43388376),
  100. float2(-0.73305184,-0.6801728),
  101. float2(-0.4999999,-0.86602545),
  102. float2(-0.222521,-0.9749279),
  103. float2(0.07473029,-0.99720377),
  104. float2(0.36534148,-0.9308736),
  105. float2(0.6234897,-0.7818316),
  106. float2(0.8262388,-0.56332),
  107. float2(0.9555729,-0.29475483),
  108. };
  109. #endif
  110. #if defined(KERNEL_VERYLARGE)
  111. // rings = 5
  112. // points per ring = 7
  113. static const int kSampleCount = 71;
  114. static const float2 kDiskKernel[kSampleCount] = {
  115. float2(0,0),
  116. float2(0.2758621,0),
  117. float2(0.1719972,0.21567768),
  118. float2(-0.061385095,0.26894566),
  119. float2(-0.24854316,0.1196921),
  120. float2(-0.24854316,-0.11969208),
  121. float2(-0.061384983,-0.2689457),
  122. float2(0.17199717,-0.21567771),
  123. float2(0.51724136,0),
  124. float2(0.46601835,0.22442262),
  125. float2(0.32249472,0.40439558),
  126. float2(0.11509705,0.50427306),
  127. float2(-0.11509704,0.50427306),
  128. float2(-0.3224948,0.40439552),
  129. float2(-0.46601835,0.22442265),
  130. float2(-0.51724136,0),
  131. float2(-0.46601835,-0.22442262),
  132. float2(-0.32249463,-0.40439564),
  133. float2(-0.11509683,-0.5042731),
  134. float2(0.11509732,-0.504273),
  135. float2(0.32249466,-0.40439564),
  136. float2(0.46601835,-0.22442262),
  137. float2(0.7586207,0),
  138. float2(0.7249173,0.22360738),
  139. float2(0.6268018,0.4273463),
  140. float2(0.47299224,0.59311354),
  141. float2(0.27715522,0.7061801),
  142. float2(0.056691725,0.75649947),
  143. float2(-0.168809,0.7396005),
  144. float2(-0.3793104,0.65698475),
  145. float2(-0.55610836,0.51599306),
  146. float2(-0.6834936,0.32915324),
  147. float2(-0.7501475,0.113066405),
  148. float2(-0.7501475,-0.11306671),
  149. float2(-0.6834936,-0.32915318),
  150. float2(-0.5561083,-0.5159932),
  151. float2(-0.37931028,-0.6569848),
  152. float2(-0.16880904,-0.7396005),
  153. float2(0.056691945,-0.7564994),
  154. float2(0.2771556,-0.7061799),
  155. float2(0.47299215,-0.59311366),
  156. float2(0.62680185,-0.4273462),
  157. float2(0.72491735,-0.22360711),
  158. float2(1,0),
  159. float2(0.9749279,0.22252093),
  160. float2(0.90096885,0.43388376),
  161. float2(0.7818315,0.6234898),
  162. float2(0.6234898,0.7818315),
  163. float2(0.43388364,0.9009689),
  164. float2(0.22252098,0.9749279),
  165. float2(0,1),
  166. float2(-0.22252095,0.9749279),
  167. float2(-0.43388385,0.90096885),
  168. float2(-0.62349,0.7818314),
  169. float2(-0.7818317,0.62348956),
  170. float2(-0.90096885,0.43388382),
  171. float2(-0.9749279,0.22252093),
  172. float2(-1,0),
  173. float2(-0.9749279,-0.22252087),
  174. float2(-0.90096885,-0.43388376),
  175. float2(-0.7818314,-0.6234899),
  176. float2(-0.6234896,-0.7818316),
  177. float2(-0.43388346,-0.900969),
  178. float2(-0.22252055,-0.974928),
  179. float2(0,-1),
  180. float2(0.2225215,-0.9749278),
  181. float2(0.4338835,-0.90096897),
  182. float2(0.6234897,-0.7818316),
  183. float2(0.78183144,-0.62348986),
  184. float2(0.90096885,-0.43388376),
  185. float2(0.9749279,-0.22252086),
  186. };
  187. #endif
  188. #endif // __DISK_KERNELS__