joonsrenderer 1.1-java

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (255) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +53 -0
  3. data/.mvn/extensions.xml +8 -0
  4. data/CHANGELOG.md +2 -0
  5. data/Gemfile +6 -0
  6. data/LICENSE +674 -0
  7. data/README.md +2 -0
  8. data/Rakefile +43 -0
  9. data/docs/.gitignore +6 -0
  10. data/docs/_config.yml +20 -0
  11. data/docs/_includes/footer.html +38 -0
  12. data/docs/_includes/head.html +15 -0
  13. data/docs/_includes/header.html +27 -0
  14. data/docs/_includes/icon-github.html +1 -0
  15. data/docs/_includes/icon-github.svg +1 -0
  16. data/docs/_includes/icon-twitter.html +1 -0
  17. data/docs/_includes/icon-twitter.svg +1 -0
  18. data/docs/_layouts/default.html +20 -0
  19. data/docs/_layouts/page.html +14 -0
  20. data/docs/_layouts/post.html +15 -0
  21. data/docs/_posts/2017-01-08-animated_ray_tracing.md +72 -0
  22. data/docs/_posts/2017-01-08-welcome.md +78 -0
  23. data/docs/_sass/_base.scss +206 -0
  24. data/docs/_sass/_layout.scss +242 -0
  25. data/docs/_sass/_syntax-highlighting.scss +71 -0
  26. data/docs/about.md +12 -0
  27. data/docs/assets/Animation.ogv +0 -0
  28. data/docs/assets/Animation.png +0 -0
  29. data/docs/assets/basic.png +0 -0
  30. data/docs/assets/basic_traced.png +0 -0
  31. data/docs/css/main.scss +38 -0
  32. data/docs/favicon.ico +0 -0
  33. data/docs/feed.xml +30 -0
  34. data/docs/index.html +38 -0
  35. data/joonsrenderer.gemspec +23 -0
  36. data/lib/joonsrenderer.rb +12 -0
  37. data/lib/joonsrenderer/version.rb +3 -0
  38. data/pom.rb +75 -0
  39. data/pom.xml +163 -0
  40. data/src/main/java/SunflowGUI.java +1354 -0
  41. data/src/main/java/joons/JRFiller.java +79 -0
  42. data/src/main/java/joons/JRImagePanel.java +141 -0
  43. data/src/main/java/joons/JRRecorder.java +183 -0
  44. data/src/main/java/joons/JRStatics.java +199 -0
  45. data/src/main/java/joons/JoonsRenderer.java +837 -0
  46. data/src/main/java/org/sunflow/AsciiFileSunflowAPI.java +98 -0
  47. data/src/main/java/org/sunflow/Benchmark.java +313 -0
  48. data/src/main/java/org/sunflow/BinaryFileSunflowAPI.java +228 -0
  49. data/src/main/java/org/sunflow/FileSunflowAPI.java +354 -0
  50. data/src/main/java/org/sunflow/PluginRegistry.java +322 -0
  51. data/src/main/java/org/sunflow/RealtimeBenchmark.java +125 -0
  52. data/src/main/java/org/sunflow/RenderObjectMap.java +344 -0
  53. data/src/main/java/org/sunflow/SunflowAPI.java +762 -0
  54. data/src/main/java/org/sunflow/SunflowAPIInterface.java +277 -0
  55. data/src/main/java/org/sunflow/core/AccelerationStructure.java +20 -0
  56. data/src/main/java/org/sunflow/core/AccelerationStructureFactory.java +36 -0
  57. data/src/main/java/org/sunflow/core/BucketOrder.java +21 -0
  58. data/src/main/java/org/sunflow/core/Camera.java +125 -0
  59. data/src/main/java/org/sunflow/core/CameraLens.java +29 -0
  60. data/src/main/java/org/sunflow/core/CausticPhotonMapInterface.java +15 -0
  61. data/src/main/java/org/sunflow/core/Display.java +78 -0
  62. data/src/main/java/org/sunflow/core/Filter.java +27 -0
  63. data/src/main/java/org/sunflow/core/GIEngine.java +42 -0
  64. data/src/main/java/org/sunflow/core/Geometry.java +157 -0
  65. data/src/main/java/org/sunflow/core/GlobalPhotonMapInterface.java +21 -0
  66. data/src/main/java/org/sunflow/core/ImageSampler.java +26 -0
  67. data/src/main/java/org/sunflow/core/Instance.java +224 -0
  68. data/src/main/java/org/sunflow/core/InstanceList.java +83 -0
  69. data/src/main/java/org/sunflow/core/IntersectionState.java +120 -0
  70. data/src/main/java/org/sunflow/core/LightSample.java +104 -0
  71. data/src/main/java/org/sunflow/core/LightServer.java +382 -0
  72. data/src/main/java/org/sunflow/core/LightSource.java +67 -0
  73. data/src/main/java/org/sunflow/core/Modifier.java +16 -0
  74. data/src/main/java/org/sunflow/core/Options.java +20 -0
  75. data/src/main/java/org/sunflow/core/ParameterList.java +758 -0
  76. data/src/main/java/org/sunflow/core/PhotonStore.java +62 -0
  77. data/src/main/java/org/sunflow/core/PrimitiveList.java +70 -0
  78. data/src/main/java/org/sunflow/core/Ray.java +219 -0
  79. data/src/main/java/org/sunflow/core/RenderObject.java +25 -0
  80. data/src/main/java/org/sunflow/core/Scene.java +377 -0
  81. data/src/main/java/org/sunflow/core/SceneParser.java +58 -0
  82. data/src/main/java/org/sunflow/core/Shader.java +30 -0
  83. data/src/main/java/org/sunflow/core/ShadingCache.java +84 -0
  84. data/src/main/java/org/sunflow/core/ShadingState.java +939 -0
  85. data/src/main/java/org/sunflow/core/Statistics.java +85 -0
  86. data/src/main/java/org/sunflow/core/Tesselatable.java +36 -0
  87. data/src/main/java/org/sunflow/core/Texture.java +128 -0
  88. data/src/main/java/org/sunflow/core/TextureCache.java +48 -0
  89. data/src/main/java/org/sunflow/core/accel/BoundingIntervalHierarchy.java +652 -0
  90. data/src/main/java/org/sunflow/core/accel/KDTree.java +833 -0
  91. data/src/main/java/org/sunflow/core/accel/NullAccelerator.java +30 -0
  92. data/src/main/java/org/sunflow/core/accel/UniformGrid.java +329 -0
  93. data/src/main/java/org/sunflow/core/bucket/BucketOrderFactory.java +26 -0
  94. data/src/main/java/org/sunflow/core/bucket/ColumnBucketOrder.java +21 -0
  95. data/src/main/java/org/sunflow/core/bucket/DiagonalBucketOrder.java +28 -0
  96. data/src/main/java/org/sunflow/core/bucket/HilbertBucketOrder.java +65 -0
  97. data/src/main/java/org/sunflow/core/bucket/InvertedBucketOrder.java +28 -0
  98. data/src/main/java/org/sunflow/core/bucket/RandomBucketOrder.java +49 -0
  99. data/src/main/java/org/sunflow/core/bucket/RowBucketOrder.java +21 -0
  100. data/src/main/java/org/sunflow/core/bucket/SpiralBucketOrder.java +43 -0
  101. data/src/main/java/org/sunflow/core/camera/FisheyeLens.java +25 -0
  102. data/src/main/java/org/sunflow/core/camera/PinholeLens.java +43 -0
  103. data/src/main/java/org/sunflow/core/camera/SphericalLens.java +22 -0
  104. data/src/main/java/org/sunflow/core/camera/ThinLens.java +107 -0
  105. data/src/main/java/org/sunflow/core/display/FastDisplay.java +119 -0
  106. data/src/main/java/org/sunflow/core/display/FileDisplay.java +83 -0
  107. data/src/main/java/org/sunflow/core/display/FrameDisplay.java +97 -0
  108. data/src/main/java/org/sunflow/core/display/ImgPipeDisplay.java +109 -0
  109. data/src/main/java/org/sunflow/core/filter/BlackmanHarrisFilter.java +28 -0
  110. data/src/main/java/org/sunflow/core/filter/BoxFilter.java +16 -0
  111. data/src/main/java/org/sunflow/core/filter/CatmullRomFilter.java +29 -0
  112. data/src/main/java/org/sunflow/core/filter/CubicBSpline.java +32 -0
  113. data/src/main/java/org/sunflow/core/filter/GaussianFilter.java +24 -0
  114. data/src/main/java/org/sunflow/core/filter/LanczosFilter.java +30 -0
  115. data/src/main/java/org/sunflow/core/filter/MitchellFilter.java +28 -0
  116. data/src/main/java/org/sunflow/core/filter/SincFilter.java +25 -0
  117. data/src/main/java/org/sunflow/core/filter/TriangleFilter.java +16 -0
  118. data/src/main/java/org/sunflow/core/gi/AmbientOcclusionGIEngine.java +57 -0
  119. data/src/main/java/org/sunflow/core/gi/FakeGIEngine.java +48 -0
  120. data/src/main/java/org/sunflow/core/gi/InstantGI.java +194 -0
  121. data/src/main/java/org/sunflow/core/gi/IrradianceCacheGIEngine.java +268 -0
  122. data/src/main/java/org/sunflow/core/gi/PathTracingGIEngine.java +65 -0
  123. data/src/main/java/org/sunflow/core/light/DirectionalSpotlight.java +103 -0
  124. data/src/main/java/org/sunflow/core/light/ImageBasedLight.java +303 -0
  125. data/src/main/java/org/sunflow/core/light/PointLight.java +72 -0
  126. data/src/main/java/org/sunflow/core/light/SphereLight.java +166 -0
  127. data/src/main/java/org/sunflow/core/light/SunSkyLight.java +362 -0
  128. data/src/main/java/org/sunflow/core/light/TriangleMeshLight.java +296 -0
  129. data/src/main/java/org/sunflow/core/modifiers/BumpMappingModifier.java +37 -0
  130. data/src/main/java/org/sunflow/core/modifiers/NormalMapModifier.java +34 -0
  131. data/src/main/java/org/sunflow/core/modifiers/PerlinModifier.java +80 -0
  132. data/src/main/java/org/sunflow/core/parser/Keyword.java +39 -0
  133. data/src/main/java/org/sunflow/core/parser/RA2Parser.java +107 -0
  134. data/src/main/java/org/sunflow/core/parser/RA3Parser.java +68 -0
  135. data/src/main/java/org/sunflow/core/parser/SCAbstractParser.java +299 -0
  136. data/src/main/java/org/sunflow/core/parser/SCAsciiParser.java +251 -0
  137. data/src/main/java/org/sunflow/core/parser/SCBinaryParser.java +156 -0
  138. data/src/main/java/org/sunflow/core/parser/SCParser.java +1403 -0
  139. data/src/main/java/org/sunflow/core/parser/ShaveRibParser.java +174 -0
  140. data/src/main/java/org/sunflow/core/parser/TriParser.java +79 -0
  141. data/src/main/java/org/sunflow/core/photonmap/CausticPhotonMap.java +429 -0
  142. data/src/main/java/org/sunflow/core/photonmap/GlobalPhotonMap.java +530 -0
  143. data/src/main/java/org/sunflow/core/photonmap/GridPhotonMap.java +308 -0
  144. data/src/main/java/org/sunflow/core/primitive/Background.java +55 -0
  145. data/src/main/java/org/sunflow/core/primitive/BanchoffSurface.java +100 -0
  146. data/src/main/java/org/sunflow/core/primitive/Box.java +210 -0
  147. data/src/main/java/org/sunflow/core/primitive/CornellBox.java +476 -0
  148. data/src/main/java/org/sunflow/core/primitive/CubeGrid.java +318 -0
  149. data/src/main/java/org/sunflow/core/primitive/Cylinder.java +104 -0
  150. data/src/main/java/org/sunflow/core/primitive/Hair.java +275 -0
  151. data/src/main/java/org/sunflow/core/primitive/JuliaFractal.java +266 -0
  152. data/src/main/java/org/sunflow/core/primitive/ParticleSurface.java +114 -0
  153. data/src/main/java/org/sunflow/core/primitive/Plane.java +163 -0
  154. data/src/main/java/org/sunflow/core/primitive/QuadMesh.java +413 -0
  155. data/src/main/java/org/sunflow/core/primitive/Sphere.java +101 -0
  156. data/src/main/java/org/sunflow/core/primitive/SphereFlake.java +234 -0
  157. data/src/main/java/org/sunflow/core/primitive/Torus.java +145 -0
  158. data/src/main/java/org/sunflow/core/primitive/TriangleMesh.java +849 -0
  159. data/src/main/java/org/sunflow/core/renderer/BucketRenderer.java +491 -0
  160. data/src/main/java/org/sunflow/core/renderer/MultipassRenderer.java +237 -0
  161. data/src/main/java/org/sunflow/core/renderer/ProgressiveRenderer.java +171 -0
  162. data/src/main/java/org/sunflow/core/renderer/SimpleRenderer.java +106 -0
  163. data/src/main/java/org/sunflow/core/shader/AmbientOcclusionShader.java +53 -0
  164. data/src/main/java/org/sunflow/core/shader/AnisotropicWardShader.java +216 -0
  165. data/src/main/java/org/sunflow/core/shader/ConstantShader.java +31 -0
  166. data/src/main/java/org/sunflow/core/shader/DiffuseShader.java +65 -0
  167. data/src/main/java/org/sunflow/core/shader/GlassShader.java +147 -0
  168. data/src/main/java/org/sunflow/core/shader/IDShader.java +27 -0
  169. data/src/main/java/org/sunflow/core/shader/MirrorShader.java +68 -0
  170. data/src/main/java/org/sunflow/core/shader/NormalShader.java +32 -0
  171. data/src/main/java/org/sunflow/core/shader/PhongShader.java +89 -0
  172. data/src/main/java/org/sunflow/core/shader/PrimIDShader.java +30 -0
  173. data/src/main/java/org/sunflow/core/shader/QuickGrayShader.java +63 -0
  174. data/src/main/java/org/sunflow/core/shader/ShinyDiffuseShader.java +98 -0
  175. data/src/main/java/org/sunflow/core/shader/SimpleShader.java +24 -0
  176. data/src/main/java/org/sunflow/core/shader/TexturedAmbientOcclusionShader.java +31 -0
  177. data/src/main/java/org/sunflow/core/shader/TexturedDiffuseShader.java +31 -0
  178. data/src/main/java/org/sunflow/core/shader/TexturedPhongShader.java +31 -0
  179. data/src/main/java/org/sunflow/core/shader/TexturedShinyDiffuseShader.java +31 -0
  180. data/src/main/java/org/sunflow/core/shader/TexturedWardShader.java +31 -0
  181. data/src/main/java/org/sunflow/core/shader/UVShader.java +27 -0
  182. data/src/main/java/org/sunflow/core/shader/UberShader.java +149 -0
  183. data/src/main/java/org/sunflow/core/shader/ViewCausticsShader.java +33 -0
  184. data/src/main/java/org/sunflow/core/shader/ViewGlobalPhotonsShader.java +25 -0
  185. data/src/main/java/org/sunflow/core/shader/ViewIrradianceShader.java +25 -0
  186. data/src/main/java/org/sunflow/core/shader/WireframeShader.java +83 -0
  187. data/src/main/java/org/sunflow/core/tesselatable/BezierMesh.java +254 -0
  188. data/src/main/java/org/sunflow/core/tesselatable/FileMesh.java +251 -0
  189. data/src/main/java/org/sunflow/core/tesselatable/Gumbo.java +1147 -0
  190. data/src/main/java/org/sunflow/core/tesselatable/Teapot.java +237 -0
  191. data/src/main/java/org/sunflow/image/Bitmap.java +15 -0
  192. data/src/main/java/org/sunflow/image/BitmapReader.java +39 -0
  193. data/src/main/java/org/sunflow/image/BitmapWriter.java +79 -0
  194. data/src/main/java/org/sunflow/image/BlackbodySpectrum.java +16 -0
  195. data/src/main/java/org/sunflow/image/ChromaticitySpectrum.java +55 -0
  196. data/src/main/java/org/sunflow/image/Color.java +374 -0
  197. data/src/main/java/org/sunflow/image/ColorEncoder.java +94 -0
  198. data/src/main/java/org/sunflow/image/ColorFactory.java +122 -0
  199. data/src/main/java/org/sunflow/image/ConstantSpectralCurve.java +21 -0
  200. data/src/main/java/org/sunflow/image/IrregularSpectralCurve.java +57 -0
  201. data/src/main/java/org/sunflow/image/RGBSpace.java +207 -0
  202. data/src/main/java/org/sunflow/image/RegularSpectralCurve.java +30 -0
  203. data/src/main/java/org/sunflow/image/SpectralCurve.java +118 -0
  204. data/src/main/java/org/sunflow/image/XYZColor.java +50 -0
  205. data/src/main/java/org/sunflow/image/formats/BitmapBlack.java +27 -0
  206. data/src/main/java/org/sunflow/image/formats/BitmapG8.java +36 -0
  207. data/src/main/java/org/sunflow/image/formats/BitmapGA8.java +30 -0
  208. data/src/main/java/org/sunflow/image/formats/BitmapRGB8.java +40 -0
  209. data/src/main/java/org/sunflow/image/formats/BitmapRGBA8.java +40 -0
  210. data/src/main/java/org/sunflow/image/formats/BitmapRGBE.java +60 -0
  211. data/src/main/java/org/sunflow/image/formats/BitmapXYZ.java +38 -0
  212. data/src/main/java/org/sunflow/image/formats/GenericBitmap.java +73 -0
  213. data/src/main/java/org/sunflow/image/readers/BMPBitmapReader.java +39 -0
  214. data/src/main/java/org/sunflow/image/readers/HDRBitmapReader.java +155 -0
  215. data/src/main/java/org/sunflow/image/readers/IGIBitmapReader.java +104 -0
  216. data/src/main/java/org/sunflow/image/readers/JPGBitmapReader.java +39 -0
  217. data/src/main/java/org/sunflow/image/readers/PNGBitmapReader.java +40 -0
  218. data/src/main/java/org/sunflow/image/readers/TGABitmapReader.java +141 -0
  219. data/src/main/java/org/sunflow/image/writers/EXRBitmapWriter.java +395 -0
  220. data/src/main/java/org/sunflow/image/writers/HDRBitmapWriter.java +54 -0
  221. data/src/main/java/org/sunflow/image/writers/IGIBitmapWriter.java +75 -0
  222. data/src/main/java/org/sunflow/image/writers/PNGBitmapWriter.java +39 -0
  223. data/src/main/java/org/sunflow/image/writers/TGABitmapWriter.java +63 -0
  224. data/src/main/java/org/sunflow/math/BoundingBox.java +340 -0
  225. data/src/main/java/org/sunflow/math/MathUtils.java +159 -0
  226. data/src/main/java/org/sunflow/math/Matrix4.java +573 -0
  227. data/src/main/java/org/sunflow/math/MovingMatrix4.java +119 -0
  228. data/src/main/java/org/sunflow/math/OrthoNormalBasis.java +110 -0
  229. data/src/main/java/org/sunflow/math/PerlinScalar.java +331 -0
  230. data/src/main/java/org/sunflow/math/PerlinVector.java +132 -0
  231. data/src/main/java/org/sunflow/math/Point2.java +36 -0
  232. data/src/main/java/org/sunflow/math/Point3.java +133 -0
  233. data/src/main/java/org/sunflow/math/QMC.java +209 -0
  234. data/src/main/java/org/sunflow/math/Solvers.java +142 -0
  235. data/src/main/java/org/sunflow/math/Vector3.java +197 -0
  236. data/src/main/java/org/sunflow/system/BenchmarkFramework.java +73 -0
  237. data/src/main/java/org/sunflow/system/BenchmarkTest.java +17 -0
  238. data/src/main/java/org/sunflow/system/ByteUtil.java +119 -0
  239. data/src/main/java/org/sunflow/system/FileUtils.java +27 -0
  240. data/src/main/java/org/sunflow/system/ImagePanel.java +282 -0
  241. data/src/main/java/org/sunflow/system/Memory.java +18 -0
  242. data/src/main/java/org/sunflow/system/Parser.java +162 -0
  243. data/src/main/java/org/sunflow/system/Plugins.java +142 -0
  244. data/src/main/java/org/sunflow/system/RenderGlobalsPanel.java +209 -0
  245. data/src/main/java/org/sunflow/system/SearchPath.java +67 -0
  246. data/src/main/java/org/sunflow/system/Timer.java +53 -0
  247. data/src/main/java/org/sunflow/system/UI.java +112 -0
  248. data/src/main/java/org/sunflow/system/UserInterface.java +46 -0
  249. data/src/main/java/org/sunflow/system/ui/ConsoleInterface.java +48 -0
  250. data/src/main/java/org/sunflow/system/ui/SilentInterface.java +28 -0
  251. data/src/main/java/org/sunflow/util/FastHashMap.java +220 -0
  252. data/src/main/java/org/sunflow/util/FloatArray.java +77 -0
  253. data/src/main/java/org/sunflow/util/IntArray.java +77 -0
  254. data/src/test/java/a_maintest.java +129 -0
  255. metadata +300 -0
@@ -0,0 +1,77 @@
1
+ package org.sunflow.util;
2
+
3
+ public final class FloatArray {
4
+
5
+ private float[] array;
6
+ private int size;
7
+
8
+ public FloatArray() {
9
+ array = new float[10];
10
+ size = 0;
11
+ }
12
+
13
+ public FloatArray(int capacity) {
14
+ array = new float[capacity];
15
+ size = 0;
16
+ }
17
+
18
+ /**
19
+ * Append a float to the end of the array.
20
+ *
21
+ * @param f
22
+ */
23
+ public final void add(float f) {
24
+ if (size == array.length) {
25
+ float[] oldArray = array;
26
+ array = new float[(size * 3) / 2 + 1];
27
+ System.arraycopy(oldArray, 0, array, 0, size);
28
+ }
29
+ array[size] = f;
30
+ size++;
31
+ }
32
+
33
+ /**
34
+ * Write a value to the specified index. Assumes the array is already big
35
+ * enough.
36
+ *
37
+ * @param index
38
+ * @param value
39
+ */
40
+ public final void set(int index, float value) {
41
+ array[index] = value;
42
+ }
43
+
44
+ /**
45
+ * Read value from the array.
46
+ *
47
+ * @param index index into the array
48
+ * @return value at the specified index
49
+ */
50
+ public final float get(int index) {
51
+ return array[index];
52
+ }
53
+
54
+ /**
55
+ * Returns the number of elements added to the array.
56
+ *
57
+ * @return current size of the array
58
+ */
59
+ public final int getSize() {
60
+ return size;
61
+ }
62
+
63
+ /**
64
+ * Return a copy of the array, trimmed to fit the size of its contents
65
+ * exactly.
66
+ *
67
+ * @return a new array of exactly the right length
68
+ */
69
+ public final float[] trim() {
70
+ if (size < array.length) {
71
+ float[] oldArray = array;
72
+ array = new float[size];
73
+ System.arraycopy(oldArray, 0, array, 0, size);
74
+ }
75
+ return array;
76
+ }
77
+ }
@@ -0,0 +1,77 @@
1
+ package org.sunflow.util;
2
+
3
+ public final class IntArray {
4
+
5
+ private int[] array;
6
+ private int size;
7
+
8
+ public IntArray() {
9
+ array = new int[10];
10
+ size = 0;
11
+ }
12
+
13
+ public IntArray(int capacity) {
14
+ array = new int[capacity];
15
+ size = 0;
16
+ }
17
+
18
+ /**
19
+ * Append an integer to the end of the array.
20
+ *
21
+ * @param i
22
+ */
23
+ public final void add(int i) {
24
+ if (size == array.length) {
25
+ int[] oldArray = array;
26
+ array = new int[(size * 3) / 2 + 1];
27
+ System.arraycopy(oldArray, 0, array, 0, size);
28
+ }
29
+ array[size] = i;
30
+ size++;
31
+ }
32
+
33
+ /**
34
+ * Write a value to the specified index. Assumes the array is already big
35
+ * enough.
36
+ *
37
+ * @param index
38
+ * @param value
39
+ */
40
+ public final void set(int index, int value) {
41
+ array[index] = value;
42
+ }
43
+
44
+ /**
45
+ * Read value from the array.
46
+ *
47
+ * @param index index into the array
48
+ * @return value at the specified index
49
+ */
50
+ public final int get(int index) {
51
+ return array[index];
52
+ }
53
+
54
+ /**
55
+ * Returns the number of elements added to the array.
56
+ *
57
+ * @return current size of the array
58
+ */
59
+ public final int getSize() {
60
+ return size;
61
+ }
62
+
63
+ /**
64
+ * Return a copy of the array, trimmed to fit the size of its contents
65
+ * exactly.
66
+ *
67
+ * @return a new array of exactly the right length
68
+ */
69
+ public final int[] trim() {
70
+ if (size < array.length) {
71
+ int[] oldArray = array;
72
+ array = new int[size];
73
+ System.arraycopy(oldArray, 0, array, 0, size);
74
+ }
75
+ return array;
76
+ }
77
+ }
@@ -0,0 +1,129 @@
1
+ import processing.core.PApplet;
2
+ import joons.JoonsRenderer;
3
+
4
+ @SuppressWarnings("serial")
5
+ public class a_maintest extends PApplet {
6
+
7
+ JoonsRenderer jr;
8
+
9
+ //camera declarations
10
+ float eyeX = 0;
11
+ float eyeY = 0;
12
+ float eyeZ = 0;
13
+ float centerX = 0;
14
+ float centerY = 0;
15
+ float centerZ = -1;
16
+ float upX = 0;
17
+ float upY = 1;
18
+ float upZ = 0;
19
+ float fov = PI / 4;
20
+ float aspect = 4 / 3f;
21
+ float zNear = 5;
22
+ float zFar = 10000;
23
+
24
+ @Override
25
+ public void settings() {
26
+ size(800, 600, P3D);
27
+ }
28
+
29
+ @Override
30
+ public void setup() {
31
+
32
+ jr = new JoonsRenderer(this);
33
+ jr.setSampler("ipr"); //Rendering mode, either "ipr" or "bucket".
34
+ jr.setSizeMultiplier(1); //Set size of the .PNG file as a multiple of the Processing sketch size.
35
+ jr.setAA(-2, 0, 1); //Set anti-aliasing, (min, max, samples). -2 < min, max < 2, samples = 1,2,3,4..
36
+ jr.setCaustics(1); //Set caustics. 1 ~ 100. affects quality of light scattered through glass.
37
+ //jr.setTraceDepth(1,4,4); //Set trace depth, (diffraction, reflection, refraction). Affects glass. (1,4,4) is good.
38
+ //jr.setDOF(170, 5); //Set depth of field of camera, (focus distance, lens radius). Larger radius => more blurry.
39
+ }
40
+
41
+ @Override
42
+ public void draw() {
43
+ jr.beginRecord(); //Make sure to include methods you want rendered.
44
+ camera(eyeX, eyeY, eyeZ, centerX, centerY, centerZ, upX, upY, upZ);
45
+ perspective(fov, aspect, zNear, zFar);
46
+
47
+ jr.background(0, 255, 255); //background(gray), or (r, g, b), like Processing.
48
+ jr.background("gi_instant"); //Global illumination, normal mode.
49
+ //jr.background("gi_ambient_occlusion"); //Global illumination, ambient occlusion mode.
50
+
51
+ pushMatrix();
52
+ translate(0, 0, -120);
53
+ jr.background("cornell_box", 100, 100, 100); //cornellBox(width, height, depth);
54
+ popMatrix();
55
+
56
+ pushMatrix();
57
+ translate(-40, 20, -140);
58
+ pushMatrix();
59
+ rotateY(-PI / 8);
60
+
61
+ //jr.fill("light"); or
62
+ //jr.fill("light", r, g, b); or
63
+ //jr.fill("light", r, g, b, int samples);
64
+ jr.fill("light", 5, 5, 5);
65
+ sphere(13);
66
+ translate(27, 0, 0);
67
+
68
+ //jr.fill("mirror"); or
69
+ //jr.fill("mirror", r, g, b);
70
+ jr.fill("mirror", 255, 255, 255);
71
+ sphere(13);
72
+ translate(27, 0, 0);
73
+
74
+ //jr.fill("diffuse"); or
75
+ //jr.fill("diffuse", r, g, b);
76
+ jr.fill("diffuse", 150, 255, 255);
77
+ sphere(13);
78
+ translate(27, 0, 0);
79
+
80
+ //jr.fill("shiny"); or
81
+ //jr.fill("shiny", r, g, b); or
82
+ //jr.fill("shiny", r, g, b, shininess); or
83
+ jr.fill("shiny", 150, 255, 255, 0.1f);
84
+ sphere(13);
85
+ translate(27, 0, 0);
86
+ popMatrix();
87
+ rotateY(PI / 8);
88
+ translate(-10, -27, 30);
89
+
90
+ //jr.fill("ambient_occlusion"); or
91
+ //jr.fill("ambient_occlusion", bright r, bright g, bright b); or
92
+ //jr.fill("ambient occlusion", bright r, bright g, bright b, dark r, dark g, dark b, maximum distance, int samples);
93
+ jr.fill("ambient_occlusion", 150, 255, 255, 0, 0, 255, 50, 16);
94
+ sphere(13);
95
+ translate(27, 0, 0);
96
+
97
+ //jr.fill("phong", r, g, b);
98
+ jr.fill("phong", 150, 255, 255);
99
+ sphere(13);
100
+ translate(27, 0, 0);
101
+
102
+ //jr.fill("glass", r, g, b);
103
+ jr.fill("glass", 255, 255, 255);
104
+ sphere(13);
105
+ translate(27, 0, 0);
106
+
107
+ //jr.fill("constant", r, g, b);
108
+ jr.fill("constant", 150, 255, 255);
109
+ sphere(13);
110
+ popMatrix();
111
+
112
+ jr.endRecord(); //Make sure to end record.
113
+ jr.displayRendered(true); //Display rendered image if rendering completed, and the argument is true.
114
+ }
115
+
116
+ /**
117
+ * Press 'r' key to start rendering.
118
+ */
119
+ @Override
120
+ public void keyPressed() {
121
+ if (key == 'r' || key == 'R') {
122
+ jr.render();
123
+ }
124
+ }
125
+
126
+ public static void main(String[] args) {
127
+ PApplet.main(new String[]{"a_maintest"});
128
+ }
129
+ }
metadata ADDED
@@ -0,0 +1,300 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: joonsrenderer
3
+ version: !ruby/object:Gem::Version
4
+ version: '1.1'
5
+ platform: java
6
+ authors:
7
+ - monkstone
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-01-08 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: A realistic ray tracer for propane and JRubyArt
14
+ email:
15
+ - mamba2928@yahoo.co.uk
16
+ executables: []
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - ".gitignore"
21
+ - ".mvn/extensions.xml"
22
+ - CHANGELOG.md
23
+ - Gemfile
24
+ - LICENSE
25
+ - README.md
26
+ - Rakefile
27
+ - docs/.gitignore
28
+ - docs/_config.yml
29
+ - docs/_includes/footer.html
30
+ - docs/_includes/head.html
31
+ - docs/_includes/header.html
32
+ - docs/_includes/icon-github.html
33
+ - docs/_includes/icon-github.svg
34
+ - docs/_includes/icon-twitter.html
35
+ - docs/_includes/icon-twitter.svg
36
+ - docs/_layouts/default.html
37
+ - docs/_layouts/page.html
38
+ - docs/_layouts/post.html
39
+ - docs/_posts/2017-01-08-animated_ray_tracing.md
40
+ - docs/_posts/2017-01-08-welcome.md
41
+ - docs/_sass/_base.scss
42
+ - docs/_sass/_layout.scss
43
+ - docs/_sass/_syntax-highlighting.scss
44
+ - docs/about.md
45
+ - docs/assets/Animation.ogv
46
+ - docs/assets/Animation.png
47
+ - docs/assets/basic.png
48
+ - docs/assets/basic_traced.png
49
+ - docs/css/main.scss
50
+ - docs/favicon.ico
51
+ - docs/feed.xml
52
+ - docs/index.html
53
+ - joonsrenderer.gemspec
54
+ - lib/commons-compiler-3.0.6.jar
55
+ - lib/janino-3.0.6.jar
56
+ - lib/joonsrenderer.jar
57
+ - lib/joonsrenderer.rb
58
+ - lib/joonsrenderer/version.rb
59
+ - pom.rb
60
+ - pom.xml
61
+ - src/main/java/SunflowGUI.java
62
+ - src/main/java/joons/JRFiller.java
63
+ - src/main/java/joons/JRImagePanel.java
64
+ - src/main/java/joons/JRRecorder.java
65
+ - src/main/java/joons/JRStatics.java
66
+ - src/main/java/joons/JoonsRenderer.java
67
+ - src/main/java/org/sunflow/AsciiFileSunflowAPI.java
68
+ - src/main/java/org/sunflow/Benchmark.java
69
+ - src/main/java/org/sunflow/BinaryFileSunflowAPI.java
70
+ - src/main/java/org/sunflow/FileSunflowAPI.java
71
+ - src/main/java/org/sunflow/PluginRegistry.java
72
+ - src/main/java/org/sunflow/RealtimeBenchmark.java
73
+ - src/main/java/org/sunflow/RenderObjectMap.java
74
+ - src/main/java/org/sunflow/SunflowAPI.java
75
+ - src/main/java/org/sunflow/SunflowAPIInterface.java
76
+ - src/main/java/org/sunflow/core/AccelerationStructure.java
77
+ - src/main/java/org/sunflow/core/AccelerationStructureFactory.java
78
+ - src/main/java/org/sunflow/core/BucketOrder.java
79
+ - src/main/java/org/sunflow/core/Camera.java
80
+ - src/main/java/org/sunflow/core/CameraLens.java
81
+ - src/main/java/org/sunflow/core/CausticPhotonMapInterface.java
82
+ - src/main/java/org/sunflow/core/Display.java
83
+ - src/main/java/org/sunflow/core/Filter.java
84
+ - src/main/java/org/sunflow/core/GIEngine.java
85
+ - src/main/java/org/sunflow/core/Geometry.java
86
+ - src/main/java/org/sunflow/core/GlobalPhotonMapInterface.java
87
+ - src/main/java/org/sunflow/core/ImageSampler.java
88
+ - src/main/java/org/sunflow/core/Instance.java
89
+ - src/main/java/org/sunflow/core/InstanceList.java
90
+ - src/main/java/org/sunflow/core/IntersectionState.java
91
+ - src/main/java/org/sunflow/core/LightSample.java
92
+ - src/main/java/org/sunflow/core/LightServer.java
93
+ - src/main/java/org/sunflow/core/LightSource.java
94
+ - src/main/java/org/sunflow/core/Modifier.java
95
+ - src/main/java/org/sunflow/core/Options.java
96
+ - src/main/java/org/sunflow/core/ParameterList.java
97
+ - src/main/java/org/sunflow/core/PhotonStore.java
98
+ - src/main/java/org/sunflow/core/PrimitiveList.java
99
+ - src/main/java/org/sunflow/core/Ray.java
100
+ - src/main/java/org/sunflow/core/RenderObject.java
101
+ - src/main/java/org/sunflow/core/Scene.java
102
+ - src/main/java/org/sunflow/core/SceneParser.java
103
+ - src/main/java/org/sunflow/core/Shader.java
104
+ - src/main/java/org/sunflow/core/ShadingCache.java
105
+ - src/main/java/org/sunflow/core/ShadingState.java
106
+ - src/main/java/org/sunflow/core/Statistics.java
107
+ - src/main/java/org/sunflow/core/Tesselatable.java
108
+ - src/main/java/org/sunflow/core/Texture.java
109
+ - src/main/java/org/sunflow/core/TextureCache.java
110
+ - src/main/java/org/sunflow/core/accel/BoundingIntervalHierarchy.java
111
+ - src/main/java/org/sunflow/core/accel/KDTree.java
112
+ - src/main/java/org/sunflow/core/accel/NullAccelerator.java
113
+ - src/main/java/org/sunflow/core/accel/UniformGrid.java
114
+ - src/main/java/org/sunflow/core/bucket/BucketOrderFactory.java
115
+ - src/main/java/org/sunflow/core/bucket/ColumnBucketOrder.java
116
+ - src/main/java/org/sunflow/core/bucket/DiagonalBucketOrder.java
117
+ - src/main/java/org/sunflow/core/bucket/HilbertBucketOrder.java
118
+ - src/main/java/org/sunflow/core/bucket/InvertedBucketOrder.java
119
+ - src/main/java/org/sunflow/core/bucket/RandomBucketOrder.java
120
+ - src/main/java/org/sunflow/core/bucket/RowBucketOrder.java
121
+ - src/main/java/org/sunflow/core/bucket/SpiralBucketOrder.java
122
+ - src/main/java/org/sunflow/core/camera/FisheyeLens.java
123
+ - src/main/java/org/sunflow/core/camera/PinholeLens.java
124
+ - src/main/java/org/sunflow/core/camera/SphericalLens.java
125
+ - src/main/java/org/sunflow/core/camera/ThinLens.java
126
+ - src/main/java/org/sunflow/core/display/FastDisplay.java
127
+ - src/main/java/org/sunflow/core/display/FileDisplay.java
128
+ - src/main/java/org/sunflow/core/display/FrameDisplay.java
129
+ - src/main/java/org/sunflow/core/display/ImgPipeDisplay.java
130
+ - src/main/java/org/sunflow/core/filter/BlackmanHarrisFilter.java
131
+ - src/main/java/org/sunflow/core/filter/BoxFilter.java
132
+ - src/main/java/org/sunflow/core/filter/CatmullRomFilter.java
133
+ - src/main/java/org/sunflow/core/filter/CubicBSpline.java
134
+ - src/main/java/org/sunflow/core/filter/GaussianFilter.java
135
+ - src/main/java/org/sunflow/core/filter/LanczosFilter.java
136
+ - src/main/java/org/sunflow/core/filter/MitchellFilter.java
137
+ - src/main/java/org/sunflow/core/filter/SincFilter.java
138
+ - src/main/java/org/sunflow/core/filter/TriangleFilter.java
139
+ - src/main/java/org/sunflow/core/gi/AmbientOcclusionGIEngine.java
140
+ - src/main/java/org/sunflow/core/gi/FakeGIEngine.java
141
+ - src/main/java/org/sunflow/core/gi/InstantGI.java
142
+ - src/main/java/org/sunflow/core/gi/IrradianceCacheGIEngine.java
143
+ - src/main/java/org/sunflow/core/gi/PathTracingGIEngine.java
144
+ - src/main/java/org/sunflow/core/light/DirectionalSpotlight.java
145
+ - src/main/java/org/sunflow/core/light/ImageBasedLight.java
146
+ - src/main/java/org/sunflow/core/light/PointLight.java
147
+ - src/main/java/org/sunflow/core/light/SphereLight.java
148
+ - src/main/java/org/sunflow/core/light/SunSkyLight.java
149
+ - src/main/java/org/sunflow/core/light/TriangleMeshLight.java
150
+ - src/main/java/org/sunflow/core/modifiers/BumpMappingModifier.java
151
+ - src/main/java/org/sunflow/core/modifiers/NormalMapModifier.java
152
+ - src/main/java/org/sunflow/core/modifiers/PerlinModifier.java
153
+ - src/main/java/org/sunflow/core/parser/Keyword.java
154
+ - src/main/java/org/sunflow/core/parser/RA2Parser.java
155
+ - src/main/java/org/sunflow/core/parser/RA3Parser.java
156
+ - src/main/java/org/sunflow/core/parser/SCAbstractParser.java
157
+ - src/main/java/org/sunflow/core/parser/SCAsciiParser.java
158
+ - src/main/java/org/sunflow/core/parser/SCBinaryParser.java
159
+ - src/main/java/org/sunflow/core/parser/SCParser.java
160
+ - src/main/java/org/sunflow/core/parser/ShaveRibParser.java
161
+ - src/main/java/org/sunflow/core/parser/TriParser.java
162
+ - src/main/java/org/sunflow/core/photonmap/CausticPhotonMap.java
163
+ - src/main/java/org/sunflow/core/photonmap/GlobalPhotonMap.java
164
+ - src/main/java/org/sunflow/core/photonmap/GridPhotonMap.java
165
+ - src/main/java/org/sunflow/core/primitive/Background.java
166
+ - src/main/java/org/sunflow/core/primitive/BanchoffSurface.java
167
+ - src/main/java/org/sunflow/core/primitive/Box.java
168
+ - src/main/java/org/sunflow/core/primitive/CornellBox.java
169
+ - src/main/java/org/sunflow/core/primitive/CubeGrid.java
170
+ - src/main/java/org/sunflow/core/primitive/Cylinder.java
171
+ - src/main/java/org/sunflow/core/primitive/Hair.java
172
+ - src/main/java/org/sunflow/core/primitive/JuliaFractal.java
173
+ - src/main/java/org/sunflow/core/primitive/ParticleSurface.java
174
+ - src/main/java/org/sunflow/core/primitive/Plane.java
175
+ - src/main/java/org/sunflow/core/primitive/QuadMesh.java
176
+ - src/main/java/org/sunflow/core/primitive/Sphere.java
177
+ - src/main/java/org/sunflow/core/primitive/SphereFlake.java
178
+ - src/main/java/org/sunflow/core/primitive/Torus.java
179
+ - src/main/java/org/sunflow/core/primitive/TriangleMesh.java
180
+ - src/main/java/org/sunflow/core/renderer/BucketRenderer.java
181
+ - src/main/java/org/sunflow/core/renderer/MultipassRenderer.java
182
+ - src/main/java/org/sunflow/core/renderer/ProgressiveRenderer.java
183
+ - src/main/java/org/sunflow/core/renderer/SimpleRenderer.java
184
+ - src/main/java/org/sunflow/core/shader/AmbientOcclusionShader.java
185
+ - src/main/java/org/sunflow/core/shader/AnisotropicWardShader.java
186
+ - src/main/java/org/sunflow/core/shader/ConstantShader.java
187
+ - src/main/java/org/sunflow/core/shader/DiffuseShader.java
188
+ - src/main/java/org/sunflow/core/shader/GlassShader.java
189
+ - src/main/java/org/sunflow/core/shader/IDShader.java
190
+ - src/main/java/org/sunflow/core/shader/MirrorShader.java
191
+ - src/main/java/org/sunflow/core/shader/NormalShader.java
192
+ - src/main/java/org/sunflow/core/shader/PhongShader.java
193
+ - src/main/java/org/sunflow/core/shader/PrimIDShader.java
194
+ - src/main/java/org/sunflow/core/shader/QuickGrayShader.java
195
+ - src/main/java/org/sunflow/core/shader/ShinyDiffuseShader.java
196
+ - src/main/java/org/sunflow/core/shader/SimpleShader.java
197
+ - src/main/java/org/sunflow/core/shader/TexturedAmbientOcclusionShader.java
198
+ - src/main/java/org/sunflow/core/shader/TexturedDiffuseShader.java
199
+ - src/main/java/org/sunflow/core/shader/TexturedPhongShader.java
200
+ - src/main/java/org/sunflow/core/shader/TexturedShinyDiffuseShader.java
201
+ - src/main/java/org/sunflow/core/shader/TexturedWardShader.java
202
+ - src/main/java/org/sunflow/core/shader/UVShader.java
203
+ - src/main/java/org/sunflow/core/shader/UberShader.java
204
+ - src/main/java/org/sunflow/core/shader/ViewCausticsShader.java
205
+ - src/main/java/org/sunflow/core/shader/ViewGlobalPhotonsShader.java
206
+ - src/main/java/org/sunflow/core/shader/ViewIrradianceShader.java
207
+ - src/main/java/org/sunflow/core/shader/WireframeShader.java
208
+ - src/main/java/org/sunflow/core/tesselatable/BezierMesh.java
209
+ - src/main/java/org/sunflow/core/tesselatable/FileMesh.java
210
+ - src/main/java/org/sunflow/core/tesselatable/Gumbo.java
211
+ - src/main/java/org/sunflow/core/tesselatable/Teapot.java
212
+ - src/main/java/org/sunflow/image/Bitmap.java
213
+ - src/main/java/org/sunflow/image/BitmapReader.java
214
+ - src/main/java/org/sunflow/image/BitmapWriter.java
215
+ - src/main/java/org/sunflow/image/BlackbodySpectrum.java
216
+ - src/main/java/org/sunflow/image/ChromaticitySpectrum.java
217
+ - src/main/java/org/sunflow/image/Color.java
218
+ - src/main/java/org/sunflow/image/ColorEncoder.java
219
+ - src/main/java/org/sunflow/image/ColorFactory.java
220
+ - src/main/java/org/sunflow/image/ConstantSpectralCurve.java
221
+ - src/main/java/org/sunflow/image/IrregularSpectralCurve.java
222
+ - src/main/java/org/sunflow/image/RGBSpace.java
223
+ - src/main/java/org/sunflow/image/RegularSpectralCurve.java
224
+ - src/main/java/org/sunflow/image/SpectralCurve.java
225
+ - src/main/java/org/sunflow/image/XYZColor.java
226
+ - src/main/java/org/sunflow/image/formats/BitmapBlack.java
227
+ - src/main/java/org/sunflow/image/formats/BitmapG8.java
228
+ - src/main/java/org/sunflow/image/formats/BitmapGA8.java
229
+ - src/main/java/org/sunflow/image/formats/BitmapRGB8.java
230
+ - src/main/java/org/sunflow/image/formats/BitmapRGBA8.java
231
+ - src/main/java/org/sunflow/image/formats/BitmapRGBE.java
232
+ - src/main/java/org/sunflow/image/formats/BitmapXYZ.java
233
+ - src/main/java/org/sunflow/image/formats/GenericBitmap.java
234
+ - src/main/java/org/sunflow/image/readers/BMPBitmapReader.java
235
+ - src/main/java/org/sunflow/image/readers/HDRBitmapReader.java
236
+ - src/main/java/org/sunflow/image/readers/IGIBitmapReader.java
237
+ - src/main/java/org/sunflow/image/readers/JPGBitmapReader.java
238
+ - src/main/java/org/sunflow/image/readers/PNGBitmapReader.java
239
+ - src/main/java/org/sunflow/image/readers/TGABitmapReader.java
240
+ - src/main/java/org/sunflow/image/writers/EXRBitmapWriter.java
241
+ - src/main/java/org/sunflow/image/writers/HDRBitmapWriter.java
242
+ - src/main/java/org/sunflow/image/writers/IGIBitmapWriter.java
243
+ - src/main/java/org/sunflow/image/writers/PNGBitmapWriter.java
244
+ - src/main/java/org/sunflow/image/writers/TGABitmapWriter.java
245
+ - src/main/java/org/sunflow/math/BoundingBox.java
246
+ - src/main/java/org/sunflow/math/MathUtils.java
247
+ - src/main/java/org/sunflow/math/Matrix4.java
248
+ - src/main/java/org/sunflow/math/MovingMatrix4.java
249
+ - src/main/java/org/sunflow/math/OrthoNormalBasis.java
250
+ - src/main/java/org/sunflow/math/PerlinScalar.java
251
+ - src/main/java/org/sunflow/math/PerlinVector.java
252
+ - src/main/java/org/sunflow/math/Point2.java
253
+ - src/main/java/org/sunflow/math/Point3.java
254
+ - src/main/java/org/sunflow/math/QMC.java
255
+ - src/main/java/org/sunflow/math/Solvers.java
256
+ - src/main/java/org/sunflow/math/Vector3.java
257
+ - src/main/java/org/sunflow/system/BenchmarkFramework.java
258
+ - src/main/java/org/sunflow/system/BenchmarkTest.java
259
+ - src/main/java/org/sunflow/system/ByteUtil.java
260
+ - src/main/java/org/sunflow/system/FileUtils.java
261
+ - src/main/java/org/sunflow/system/ImagePanel.java
262
+ - src/main/java/org/sunflow/system/Memory.java
263
+ - src/main/java/org/sunflow/system/Parser.java
264
+ - src/main/java/org/sunflow/system/Plugins.java
265
+ - src/main/java/org/sunflow/system/RenderGlobalsPanel.java
266
+ - src/main/java/org/sunflow/system/SearchPath.java
267
+ - src/main/java/org/sunflow/system/Timer.java
268
+ - src/main/java/org/sunflow/system/UI.java
269
+ - src/main/java/org/sunflow/system/UserInterface.java
270
+ - src/main/java/org/sunflow/system/ui/ConsoleInterface.java
271
+ - src/main/java/org/sunflow/system/ui/SilentInterface.java
272
+ - src/main/java/org/sunflow/util/FastHashMap.java
273
+ - src/main/java/org/sunflow/util/FloatArray.java
274
+ - src/main/java/org/sunflow/util/IntArray.java
275
+ - src/test/java/a_maintest.java
276
+ homepage: https://ruby-processing.github.io/joonsrenderer/
277
+ licenses:
278
+ - GPL-3.0
279
+ metadata: {}
280
+ post_install_message:
281
+ rdoc_options: []
282
+ require_paths:
283
+ - lib
284
+ required_ruby_version: !ruby/object:Gem::Requirement
285
+ requirements:
286
+ - - ">="
287
+ - !ruby/object:Gem::Version
288
+ version: '0'
289
+ required_rubygems_version: !ruby/object:Gem::Requirement
290
+ requirements:
291
+ - - ">="
292
+ - !ruby/object:Gem::Version
293
+ version: '0'
294
+ requirements: []
295
+ rubyforge_project:
296
+ rubygems_version: 2.6.3
297
+ signing_key:
298
+ specification_version: 4
299
+ summary: From Sketch to Ray Traced Image
300
+ test_files: []