-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathChangeLog.txt
2142 lines (1597 loc) · 177 KB
/
ChangeLog.txt
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
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
2024-05-08 Jörgen Lundgren <joergen.lundgren@macroing.org>
* CHANGE: Fix bugs in the Disney material in the GPU-renderer.
2024-05-01 Jörgen Lundgren <joergen.lundgren@macroing.org>
* CHANGE: Fix bugs in the Trowbridge Reitz microfacet distribution implementations.
2024-04-28 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add the Color, Curve, Filter and Noise APIs from the library Art4J.
* REMOVE: Remove the dependency to the library Art4J.
2024-04-27 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add the JavaFX Concurrent, JavaFX Scene Control, JavaFX Scene Image and JavaFX Scene Layout APIs from the library Macroing JavaFX.
* REMOVE: Remove the dependency to the library Macroing JavaFX.
2024-04-25 Jörgen Lundgren <joergen.lundgren@macroing.org>
* CHANGE: Update the triangle intersection and computation algorithms in the GPU-renderer.
2023-12-30 Jörgen Lundgren <joergen.lundgren@macroing.org>
* CHANGE: Update the copyright notice.
2023-11-16 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add an error float implementation to the sphere in the GPU-renderer.
2023-08-19 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add the EDouble and EFloat classes.
* CHANGE: Refactor the Sphere3F and Sphere3FReader classes.
2023-08-15 Jörgen Lundgren <joergen.lundgren@macroing.org>
* CHANGE: Refactor the Scene BSSRDF API.
* CHANGE: Refactor the Renderer GPU API.
2023-08-02 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add the methods getMaxComponentValue(), getMaxDimension() and permute(Vector3D, int, int, int) to the Vector3D class.
* ADD: Add the methods getMaxComponentValue(), getMaxDimension() and permute(Vector3F, int, int, int) to the Vector3F class.
* ADD: Add the method permute(Point3D, int, int, int) to the Point3D class.
* ADD: Add the method permute(Point3F, int, int, int) to the Point3F class.
* CHANGE: Update the method intersectionT(Ray3F, float, float) in the Triangle3F class.
* CHANGE: Update the SeparableBSSRDF class.
2023-07-26 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add the SubsurfaceMaterial class to the Scene Material API.
2023-07-25 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add the FourierBXDF and FourierBXDFTable classes to the Scene BXDF API.
* ADD: Add the FourierMaterial class to the Scene Material API.
2023-07-24 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add the Interpolation API.
* ADD: Add the method findInterval(int, IntPredicate) to the Ints class.
* CHANGE: Refactor the Scene BSSRDF API.
2023-07-14 Jörgen Lundgren <joergen.lundgren@macroing.org>
* CHANGE: Fix a bug in the Scene BSSRDF API.
2023-07-10 Jörgen Lundgren <joergen.lundgren@macroing.org>
* CHANGE: Refactor the Scene BSSRDF API.
2023-06-29 Jörgen Lundgren <joergen.lundgren@macroing.org>
* CHANGE: Refactor the Scene BSSRDF API.
* CHANGE: Fix a bug in BSDF.
2023-06-28 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add the KDSubsurfaceMaterial class.
* CHANGE: Refactor the Scene BSSRDF API.
* CHANGE: Update the Scene class to support BSSRDF.
2023-06-27 Jörgen Lundgren <joergen.lundgren@macroing.org>
* CHANGE: Refactor the Scene BSSRDF API.
2023-06-26 Jörgen Lundgren <joergen.lundgren@macroing.org>
* CHANGE: Refactor the Scene BSSRDF API.
2023-06-25 Jörgen Lundgren <joergen.lundgren@macroing.org>
* CHANGE: Refactor the Scene Material API.
2023-06-22 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add support for tone map operators to the GPU-renderer. They can be changed in the GUI.
2023-06-16 Jörgen Lundgren <joergen.lundgren@macroing.org>
* CHANGE: Fix PerezLight in the CPU- and GPU renderers.
2023-06-15 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add the method loadHDR(File) to the PixelImageF class.
* ADD: Add the method toIntArrayRGBE() to the ImageF class.
* ADD: Add support for HDR lights using ImageLight.
2023-06-11 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add support for TranslucentMaterial in the GUI.
* CHANGE: Replace the Node API with the Visitor API in Macroing Java.
2023-06-06 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add support for TranslucentMaterial to the GPU-renderer.
2023-05-27 Jörgen Lundgren <joergen.lundgren@macroing.org>
* CHANGE: Fix a bug in the Scene class related to the Ray Tracing algorithm. It should not allow multiple lobes when computing BSDF instances.
2023-05-18 Jörgen Lundgren <joergen.lundgren@macroing.org>
* CHANGE: Fix a bug in AbstractShape3FKernel.
2023-03-04 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add support for FresnelSpecularBXDF to the GlassMaterial implementation in the GPU-renderer.
2023-02-12 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add TranslucentMaterial.
* CHANGE: Fix a bug in Sphere3D and Sphere3F.
2023-01-08 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add support for Hyperboloid3F, Rectangle3F, RectangularCuboid3F and Triangle3F in the GUI.
* ADD: Add a car scene. The model and textures were created by Martin Sandgren (https://github.com/carlmartus).
2023-01-07 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add the JavaFX Shape API. It is now being used by the GUI when adding primitives.
2022-12-31 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add support for UberMaterial in the GUI.
* ADD: Add support for UberMaterial in the Scene Compiler API.
* ADD: Add support for UberMaterial in the GPU-renderer.
2022-12-30 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add a dependency to Macroing JavaFX.
* ADD: Add support for DisneyMaterial in the GUI.
* REMOVE: Remove the JavaFX Concurrent, JavaFX Scene Control, JavaFX Scene Image and JavaFX Scene Layout APIs. They are now located in the library Macroing JavaFX.
2022-12-29 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add support for PolkaDotMaterial in the GUI.
* ADD: Add preview images to MaterialPicker and TexturePicker.
* CHANGE: Update MetalMaterialGridPane.
2022-12-28 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add group name, object name and material name for triangle meshes in the scene property view of the GUI.
* ADD: Add the JavaFX Material API.
* ADD: Add support for BlendTexture in the GUI.
* ADD: Add a TexturePicker class to the JavaFX Texture API.
* CHANGE: Update the BullseyeTextureGridPane, CheckerboardTextureGridPane and PolkaDotTextureGridPane classes to use the TexturePicker instead of ColorPicker.
* CHANGE: Update the copyright notice.
2022-12-27 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add the JavaFX Texture API.
* CHANGE: Update the primitive toggle feature. The selection is more pronounced. It is now also supported by the ray casting and ray tracing algorithms.
* CHANGE: Update the dependency to Macroing Java.
* REMOVE: Remove the Doubles class.
2022-12-26 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add the methods getPrimitiveInstanceID() and togglePrimitiveInstanceID(int) to the Scene class.
* ADD: Add the methods setPrimitiveInstanceID(int), primitiveGetInstanceIDLHS() and primitiveGetInstanceIDRHS() to the AbstractSceneKernel class.
* ADD: Add primitive toggle support to the GPU renderer.
* CHANGE: Change the UI for the texture creation tool in the application.
2022-12-25 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add a requirement to the environment variable JAVAFX_HOME in the Apache Ant build file. It should point to the root of JavaFX, which contains the bin and lib directories. This is a fix for an issue that started recently. For some reason the build script started to fail. Perhaps due to a recent upgrade to Windows 11.
2022-12-24 Jörgen Lundgren <joergen.lundgren@macroing.org>
* CHANGE: Replace some usage of methods and constants in the Floats class in the Utility API with methods and constants from the Floats and Randoms classes in Macroing Java.
2022-12-23 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add support for more textures in the GUI.
* CHANGE: Replace some usage of methods and constants in the Floats class in the Utility API with methods and constants from the Floats and Randoms classes in Macroing Java.
2022-12-22 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: It is now possible to add primitives to and remove primitives from the GPU renderer. Some optimizations should still be added when removing primitives. When no shapes, materials and textures etc. are used by any primitives, they should be removed to keep the scene size as small as possible.
* ADD: It is now possible to define simple textures that will be used when adding primitives. This feature is not final and will be changed in the future. It is a temporary solution.
* CHANGE: Fix a bug when sampling Sphere3D and Sphere3F.
2022-12-17 Jörgen Lundgren <joergen.lundgren@macroing.org>
* CHANGE: Replace most methods and constants in the Doubles class in the Utility API with methods and constants from the Doubles and Randoms classes in Macroing Java.
* REMOVE: Remove the method radicalInverse(int, long) from the Floats class.
* REMOVE: Remove the Longs class.
2022-12-17 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add initial support for creating primitives via the GUI in the GPU renderer.
2022-12-14 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add the methods imageToneMapFilmicCurve(float, float, float, float, float, float, float, float), imageToneMapFilmicCurveACESModifiedVersion1(float), imageToneMapReinhard(float), imageToneMapReinhardModifiedVersion1(float), imageToneMapReinhardModifiedVersion2(float) and imageToneMapUnreal3(float) to the AbstractImageKernel class.
* CHANGE: Fix a bug with sphere sampling in the GPU-renderer.
2022-12-12 Jörgen Lundgren <joergen.lundgren@macroing.org>
* CHANGE: Fix a bug in CompiledShape3FCache that made some triangle meshes to fail.
* REMOVE: Remove the Bytes class.
2022-12-10 Jörgen Lundgren <joergen.lundgren@macroing.org>
* REMOVE: Remove floating-point error computations to simplify the APIs. They were mostly unused and probably incorrect.
2022-12-04 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add support for DiffuseAreaLight to the GPU-renderer. It's not fully functional yet, but close enough for now.
2022-10-24 Jörgen Lundgren <joergen.lundgren@macroing.org>
* CHANGE: Update the dependency to Macroing Art4J, for Java 8.
* CHANGE: Update the dependency to Macroing Java, for Java 8.
2022-10-23 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add the method onUpdate(Scene, float) to the SceneObserver interface and a default no-op implementation to the AbstractSceneObserver class.
* ADD: Add the method update() to the Scene class. This method will compute the delta and pass it to the onUpdate(Scene, float) method for all SceneObserver instances that have been added.
* ADD: Add the Animation.java scene file to show how animations can be performed. It works best on the GPU at this point.
2022-10-21 Jörgen Lundgren <joergen.lundgren@macroing.org>
* CHANGE: Update the dependency to Macroing Art4J.
* CHANGE: Update the dependency to Macroing Java.
2022-10-20 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add the methods isSamplingCenter() and setSamplingCenter(boolean) to the Camera class.
* ADD: Add the DepthCamera.java scene file to simulate a depth camera.
* ADD: Add a new Depth Camera rendering algorithm. It works in both CPU- and GPU-renderers.
2022-09-29 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add a dependency to the new "official" Aparapi from Syncleus. This was necessary in order to support newer OpenCL versions, such as version 3.0.
* ADD: Add a dependency to Apache BCEL, in order for the new Aparapi dependency to work.
* CHANGE: Update the AbstractGPURenderer and AbstractKernel classes. They now use the new Aparapi version.
* CHANGE: Add a missing final modifier to the Doubles class.
* REMOVE: Remove the old dependency to Macroing / Aparapi.
2022-09-04 Jörgen Lundgren <joergen.lundgren@macroing.org>
* CHANGE: Update the dependency to Macroing Art4J.
* REMOVE: Remove the Color API. It can be found in the Art4J library.
2022-08-27 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add a dependency to Macroing Art4J. Its repository is currently in private mode.
* CHANGE: Update the dependency to Macroing Java.
* REMOVE: Remove ArrayComponentOrder and PackedIntComponentOrder from the Color API. They can be found in the Art4J library.
* REMOVE: Remove the Filter API. It can be found in the Art4J library.
* REMOVE: Remove the Noise API. It can be found in the Art4J library.
* REMOVE: Remove ChromaticSpectralCurveD, Color, Color3D, Color4D, ColorSpaceD, ConstantSpectralCurveD, IrregularSpectralCurveD, RegularSpectralCurveD and SpectralCurveD from the Color API. Most of them can be found in the Art4J library.
* REMOVE: Remove ByteImageD, ConvolutionKernel33D, ConvolutionKernel55D, DoubleImageD, ImageD, IntImageD and PixelImageD from the Image API. Some replacements for them can be found in the Art4J library.
2022-08-14 Jörgen Lundgren <joergen.lundgren@macroing.org>
* REMOVE: Remove the Image 2 API again. The API has been moved to a separate library. This new library will likely replace the Change API, Color API, Filter API, Image API and Noise API in the future. It is currently in a private repository.
2022-07-19 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add the methods random(double), random(double, double) and rint(double) to the Doubles class.
* ADD: Add the methods random(float), random(float, float) and rint(float) to the Floats class.
* ADD: Add the ConvolutionKernelNF class.
* ADD: Add new float-based methods to the Color class.
* CHANGE: Update the Image 2 API.
* CHANGE: Refactor the Color API and update all affected APIs.
2022-07-18 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add the NodeCacheUnitTests class.
* ADD: Add the RenderingAlgorithmUnitTests class.
* ADD: Add unit tests to the PackedIntComponentOrderUnitTests class.
* ADD: Add the methods blend(Color4D, Color4D, Color4D, Color4D, double, double), getCached(Color4D), getCacheSize() and clearCache() to the Color4D class.
* ADD: Add the methods blend(Color4F, Color4F, Color4F, Color4F, float, float), getCached(Color4F), getCacheSize() and clearCache() to the Color4F class.
* ADD: Add the Color class that contains color operations for primitive types.
* ADD: Add the Image 2 API. This API may replace the Image API in the future. But it is not ready yet.
* ADD: Add the constructor Color4D(Color4F) to the Color4D class.
* ADD: Add the constructor Color4F(Color4D) to the Color4F class.
* ADD: Add the method blend(Color3D, Color3D, Color3D, Color3D, double, double) to the Color3D class.
* ADD: Add the method blend(Color3F, Color3F, Color3F, Color3F, float, float) to the Color3F class.
* ADD: Add the constructor Color3D(Color4F) to the Color3D class.
* ADD: Add the constructor Color3F(Color4D) to the Color3F class.
2022-06-26 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add the methods perspective(AngleD, double, double, double) and screenSpaceTransform(double, double) to the Matrix44D class.
* ADD: Add the methods perspective(AngleF, float, float, float) and screenSpaceTransform(float, float) to the Matrix44F class.
2022-06-25 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add unit tests to the DoublesUnitTests, FloatsUnitTests and IntsUnitTests classes.
* ADD: Add unit tests to the AxisAlignedBoundingBox3DUnitTests, AxisAlignedBoundingBox3FUnitTests, BoundingSphere3DUnitTests, BoundingSphere3FUnitTests, InfiniteBoundingVolume3DUnitTests and InfiniteBoundingVolume3FUnitTests classes.
* ADD: Add the NodeMockA and NodeMockB classes that implements Node.
* ADD: Add the NodeFilterMock class that implements NodeFilter.
* ADD: Add the NodeFilterUnitTests and NodeTraversalExceptionUnitTests classes.
* ADD: Add the methods transform(Triangle3D, Matrix44D, Matrix44D) and transformAndDivide(Triangle3D, Matrix44D, Matrix44D) to the Triangle3D class.
* ADD: Add the method isInsideViewFrustum() to the Triangle3D.Vertex3D class.
* ADD: Add the methods transform(Triangle3F, Matrix44F, Matrix44F) and transformAndDivide(Triangle3F, Matrix44F, Matrix44F) to the Triangle3F class.
* ADD: Add the method isInsideViewFrustum() to the Triangle3F.Vertex3F class.
* ADD: Add the constructor Triangle3D(Vertex3D, Vertex3D, Vertex3D, boolean) to the Triangle3D class.
* ADD: Add the constructor Triangle3F(Vertex3F, Vertex3F, Vertex3F, boolean) to the Triangle3F class.
* ADD: Add the constructor Vertex3D(Point2D, Point4D, Vector3D, boolean) to the Triangle3D.Vertex3D class.
* ADD: Add the constructor Vertex3F(Point2F, Point4F, Vector3F, boolean) to the Triangle3F.Vertex3F class.
* ADD: Add the method lookAt(Point3F, Vector3F) to the Transform class.
* ADD: Add the method rotate(Quaternion4D, Vector3D) to the Vector3D class.
* ADD: Add the method rotate(Quaternion4F, Vector3F) to the Vector3F class.
* REMOVE: Remove the method findInterval(int, IntPredicate) from the Ints class. The method has been moved to the Distribution1F class.
* REMOVE: Remove the AbstractReflectiveNodeHierarchicalVisitor class.
2022-05-28 Jörgen Lundgren <joergen.lundgren@macroing.org>
* CHANGE: Refactor parts of the GPU-renderer.
2022-05-27 Jörgen Lundgren <joergen.lundgren@macroing.org>
* CHANGE: Refactor parts of the GPU-renderer.
2022-05-24 Jörgen Lundgren <joergen.lundgren@macroing.org>
* CHANGE: Refactor parts of the GPU-renderer.
2022-05-22 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add unit tests to the Vector3DUnitTests and Vector3FUnitTests classes.
* CHANGE: Refactor parts of the GPU-renderer.
* REMOVE: Remove the method refraction2(Vector3D, Vector3D, double) from the Vector3D class.
* REMOVE: Remove the method refraction2(Vector3F, Vector3F, float) from the Vector3F class.
2022-05-21 Jörgen Lundgren <joergen.lundgren@macroing.org>
* CHANGE: The fields of the Matrix33D, Matrix33F, Matrix44D, Matrix44F, OrthonormalBasis33D and OrthonormalBasis33F classes have been made public.
* CHANGE: Update all classes and unit tests that have been affected by the change in the Matrix33D, Matrix33F, Matrix44D, Matrix44F, OrthonormalBasis33D and OrthonormalBasis33F classes.
* REMOVE: Remove the methods getElement11(), getElement12(), getElement13(), getElement21(), getElement22(), getElement23(), getElement31(), getElement32() and getElement33() from the Matrix33D and Matrix33F classes.
* REMOVE: Remove the methods getElement11(), getElement12(), getElement13(), getElement14(), getElement21(), getElement22(), getElement23(), getElement24(), getElement31(), getElement32(), getElement33(), getElement34(), getElement41(), getElement42(), getElement43() and getElement44() from the Matrix44D and Matrix44F classes.
* REMOVE: Remove the methods getU(), getV() and getW() from the OrthonormalBasis33D and OrthonormalBasis33F classes.
2022-05-19 Jörgen Lundgren <joergen.lundgren@macroing.org>
* CHANGE: Rename the methods negateComponent1(Vector3D), negateComponent2(Vector3D) and negateComponent3(Vector3D) in the Vector3D class to negateX(Vector3D), negateY(Vector3D) and negateZ(Vector3D), respectively.
* CHANGE: Rename the methods faceForwardComponent3(Vector3D, Vector3D) and faceForwardComponent3Negated(Vector3D, Vector3D) in the Vector3D class to faceForwardZ(Vector3D, Vector3D) and faceForwardZNegated(Vector3D, Vector3D), respectively.
* CHANGE: Rename the methods negateComponent1(Vector3F), negateComponent2(Vector3F) and negateComponent3(Vector3F) in the Vector3F class to negateX(Vector3F), negateY(Vector3F) and negateZ(Vector3F), respectively.
* CHANGE: Rename the methods faceForwardComponent3(Vector3F, Vector3F) and faceForwardComponent3Negated(Vector3F, Vector3F) in the Vector3F class to faceForwardZ(Vector3F, Vector3F) and faceForwardZNegated(Vector3F, Vector3F), respectively.
* CHANGE: Update all classes and unit tests that have been affected by the change in the Quaternion4D, Quaternion4F, Vector3D and Vector3F classes.
* CHANGE: Rename the fields component1, component2, component3 and component4 in the Quaternion4D and Quaternion4F classes to x, y, z and w, respectively. They have also been made public.
* REMOVE: Remove the methods getComponent1(), getComponent2(), getComponent3(), getU(), getV(), getW(), getX(), getY() and getZ() from the Vector3D and Vector3F classes.
* REMOVE: Remove the methods getComponent1(), getComponent2(), getComponent3(), getComponent4(), getW(), getX(), getY() and getZ() from the Quaternion4D and Quaternion4F classes.
2022-05-17 Jörgen Lundgren <joergen.lundgren@macroing.org>
* CHANGE: Rename the fields component1 and component2 in the Point2I and Vector2I classes to x and y, respectively. They have also been made public.
* CHANGE: Update all classes and unit tests that have been affected by the change in the Point2I and Vector2I classes.
* CHANGE: Rename the fields component1, component2 and component3 in the Point3D, Point3F, Vector3D and Vector3F classes to x, y and z, respectively. They have also been made public.
* CHANGE: Rename the fields component1, component2, component3 and component4 in the Point4D, Point4F, Vector4D and Vector4F classes to x, y, z and w, respectively. They have also been made public.
* CHANGE: Update all classes and unit tests that have been affected by the change in the Point3D, Point3F, Point4D, Point4F, Vector4D and Vector4D classes.
* REMOVE: Remove the methods getComponent1(), getComponent2(), getU(), getV(), getX() and getY() from the Point2I and Vector2I classes.
* REMOVE: Remove the methods getComponent1(), getComponent2(), getComponent3(), getComponent4(), getW(), getX(), getY() and getZ() from the Point4D, Point4F, Vector4D and Vector4F classes.
* REMOVE: Remove the methods getComponent1(), getComponent2(), getComponent3(), getU(), getV(), getW(), getX(), getY() and getZ() from the Point3D and Point3F classes.
2022-05-15 Jörgen Lundgren <joergen.lundgren@macroing.org>
* CHANGE: Rename the method rotate(Point2D, AngleD) in the Point2D class to rotateCounterclockwise(Point2D, AngleD).
* CHANGE: Rename the method rotate(Point2F, AngleF) in the Point2F class to rotateCounterclockwise(Point2F, AngleF).
* CHANGE: Rename the fields component1 and component2 in the Point2D, Point2F, Vector2D and Vector2F classes to x and y, respectively. They have also been made public.
* CHANGE: Update all classes and unit tests that have been affected by the change in the Point2D, Point2F, Vector2D and Vector2F classes.
* REMOVE: Remove the methods addDistanceKm(Point2D, double, double), distanceKm(Point2D, Point2D), getComponent(int), getComponent1(), getComponent2(), getLatitude(), getLongitude(), getU(), getV(), getX() and getY() from the Point2D class.
* REMOVE: Remove the methods addDistanceKm(Point2F, float, float), distanceKm(Point2F, Point2F), getComponent(int), getComponent1(), getComponent2(), getLatitude(), getLongitude(), getU(), getV(), getX() and getY() from the Point2F class.
* REMOVE: Remove the methods getComponent1(), getComponent2(), getU(), getV(), getX(), getY(), negateComponent1(Vector2D), negateComponent2(Vector2D), u(), u(double), v() and v(double) from the Vector2D class.
* REMOVE: Remove the methods getComponent1(), getComponent2(), getU(), getV(), getX(), getY(), negateComponent1(Vector2F), negateComponent2(Vector2F), u(), u(float), v() and v(float) from the Vector2F class.
2022-05-03 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add the Sphere3DUnitTests class.
2022-05-01 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add the Plane3FUnitTests class.
* CHANGE: Update the Plane3D class so that it is located on the point [0.0, 0.0, 0.0] and has a surface normal of [0.0, 0.0, 1.0]. Its variables have been removed.
* CHANGE: Update the Plane3F class so that it is located on the point [0.0, 0.0, 0.0] and has a surface normal of [0.0, 0.0, 1.0]. Its variables have been removed.
* CHANGE: Update the Sphere3D class so that it is located on the point [0.0, 0.0, 0.0] and has a radius of 1.0. Its variables have been removed.
* CHANGE: Update the Sphere3F class so that it is located on the point [0.0, 0.0, 0.0] and has a radius of 1.0. Its variables have been removed.
* CHANGE: Update the Plane3DUnitTests class.
* CHANGE: Update the Plane3DReader and Plane3FReader classes because of the changes to Plane3D and Plane3F, respectively.
* CHANGE: Update the Sphere3DReader and Sphere3FReader classes because of the changes to Sphere3D and Sphere3F, respectively.
* CHANGE: Update the AbstractSceneKernel, AbstractShape3FKernel and CompiledShape3FCache classes because of the changes to Plane3F and Sphere3F.
* REMOVE: Remove the Demo class.
2022-04-28 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add the Polygon2DReaderUnitTests, Polygon2DUnitTests, Polygon2FReaderUnitTests, Polygon2FUnitTests, Polygon2IReaderUnitTests and Polygon2IUnitTests classes.
* ADD: Add the method getPoints() to the Polygon2D and Polygon2F classes.
* ADD: Add the Plane3DUnitTests class.
* CHANGE: Update the equals(Object) and hashCode() methods in the Polygon2D, Polygon2F and Polygon2I classes.
* CHANGE: The points B and D in the Rectangle2D, Rectangle2F and Rectangle2I classes have been swapped by default. Before they were counter clockwise and now they are clockwise.
* CHANGE: Update the equals(Object) and hashCode() methods in the Plane3D and Plane3F classes.
2022-04-27 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add the Triangle2DReaderUnitTests, Triangle2DUnitTests, Triangle2FReaderUnitTests, Triangle2FUnitTests and Triangle2IReaderUnitTests classes.
* CHANGE: Fix spelling mistakes in the copyright notice of some unit test files.
2022-04-26 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add unit tests to the Rectangle2IUnitTests class.
* ADD: Add the Rectangle2DReaderUnitTests, Rectangle2DUnitTests, Rectangle2FReaderUnitTests, Rectangle2FUnitTests, Rectangle2IReaderUnitTests and Triangle2IUnitTests classes.
* CHANGE: Update the equals(Object), hashCode() and toString() methods in the Rectangle2D and Rectangle2F classes.
* CHANGE: Update the equals(Object) and hashCode() methods in the Triangle2I class.
2022-04-25 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add unit tests to the Rectangle2IUnitTests class.
2022-04-24 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add the BoxFilter2DUnitTests, BoxFilter2FUnitTests, CatmullRomFilter2DUnitTests, CatmullRomFilter2FUnitTests, GaussianFilter2DUnitTests, GaussianFilter2FUnitTests, LanczosSincFilter2DUnitTests, LanczosSincFilter2FUnitTests, MitchellFilter2DUnitTests, MitchellFilter2FUnitTests, TriangleFilter2DUnitTests and TriangleFilter2FUnitTests classes.
* ADD: Add the constructor CatmullRomFilter2D() to the CatmullRomFilter2D class.
* ADD: Add the constructor CatmullRomFilter2F() to the CatmullRomFilter2F class.
* CHANGE: Update the equals(Object), hashCode() and toString() methods in the BoxFilter2D, BoxFilter2F, CatmullRomFilter2D, CatmullRomFilter2F, GaussianFilter2D, GaussianFilter2F, LanczosSincFilter2D, LanczosSincFilter2F, MitchellFilter2D, MitchellFilter2F, TriangleFilter2D and TriangleFilter2F classes.
* CHANGE: Update the method evaluate(double, double) in the CatmullRomFilter2D class.
* CHANGE: Update the method evaluate(float, float) in the CatmullRomFilter2F class.
* REMOVE: Remove the constructor CatmullRomFilter2D(double, double) from the CatmullRomFilter2D class.
* REMOVE: Remove the constructor CatmullRomFilter2F(float, float) from the CatmullRomFilter2F class.
* REMOVE: Remove the method intersection(Rectangle2D, Rectangle2D) from the Rectangle2D class.
* REMOVE: Remove the method intersection(Rectangle2F, Rectangle2F) from the Rectangle2F class.
* REMOVE: Remove the method intersection(Rectangle2I, Rectangle2I) from the Rectangle2I class.
2022-04-23 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add unit tests to the IntsUnitTests class.
* CHANGE: Update the dependency to Macroing Java.
* CHANGE: Rename the method errorReciprocal(double) in the Doubles class to errorInverse(double).
* CHANGE: Rename the method errorReciprocal(float) in the Floats class to errorInverse(float).
* REMOVE: Remove the Timer class. It has been replaced by the Timer class in Macroing Java.
2022-04-15 Jörgen Lundgren <joergen.lundgren@macroing.org>
* CHANGE: Update the dependency to Macroing Java.
* REMOVE: Remove the methods create(int), create(int, byte) and create(int, byte, byte, byte, byte) from the ByteArrays class. These methods have been replaced by Arrays.repeat(byte[], int) in Macroing Java.
* REMOVE: Remove the DoubleArrays class. The method create(int, double, double, double, double) has been replaced by Arrays.repeat(double[], int) in Macroing Java.
* REMOVE: Remove the method merge(float[]...) from the FloatArrays class. It has been replaced by Arrays.merge(float[]...) in Macroing Java.
* REMOVE: Remove the methods merge(int[], int), merge(int[], int[]) and merge(int[]...) from the IntArrays class. These methods have been replaced by Arrays.merge(int[]...) in Macroing Java.
* REMOVE: Remove the ByteArrays class. The method convert(int[]) has been replaced by Arrays.toByteArray(int[]) in Macroing Java.
* REMOVE: Remove the methods convert(List<T>, Function<T, int[]>) and convert(List<T>, Function<T, int[]>, int) from the IntArrays class. These methods have been replaced by Arrays.toIntArray(List<T>, Function<T, int[]>) in Macroing Java.
* REMOVE: Remove the methods create(int) and create(int, int) from the IntArrays class. These methods have been replaced by Arrays.repeat(int[], int) in Macroing Java.
* REMOVE: Remove the method equal(int[], int[], int, int, int) from the IntArrays class. This method has been replaced by Arrays.equals(int[], int[], int, int, int) in Macroing Java.
* REMOVE: Remove the methods convert(List<T>, Function<T, float[]>) and convert(List<T>, Function<T, float[]>, int) from the FloatArrays class. These methods have been replaced by Arrays.toFloatArray(List<T>, Function<T, float[]>) in Macroing Java.
* REMOVE: Remove the methods create(int), create(int, FloatSupplier), create(int, float) and create(int, float, float, float, float) from the FloatArrays class. These methods have been replaced by Arrays.repeat(float[], int) in Macroing Java.
* REMOVE: Remove the method equal(float[], float[], int, int, int) from the FloatArrays class. This method has been replaced by Arrays.equals(float[], float[], int, int, int) in Macroing Java.
* REMOVE: Remove the LongArrays class. The method create(int, LongSupplier) has been replaced by Arrays.generateLongArray(int, IntToLongFunction) in Macroing Java.
* REMOVE: Remove the method indexOf(float[], float[], boolean, boolean) from the FloatArrays class. This method has been replaced by Arrays.indexOf(float[], float[], boolean, boolean) in Macroing Java.
* REMOVE: Remove the methods indexOf(int, int[]) and indexOf(int[], int[], boolean, boolean) from the IntArrays class. These methods have been replaced by Arrays.indexOf(int, int[]) and Arrays.indexOf(int[], int[], boolean, boolean) in Macroing Java.
* REMOVE: Remove the FloatArrays class. The methods splice(float[], int), splice(float[], int, int), splice(float[], int, int, float[]) and splice(float[], int, int, float[], float[]) have been replaced by Arrays.splice(float[], int), Arrays.splice(float[], int, int) and Arrays.splice(float[], int, int, float[]) in Macroing Java.
* REMOVE: Remove the IntArrays class. The methods splice(int[], int), splice(int[], int, int), splice(int[], int, int, int[]) and splice(int[], int, int, int[], int[]) have been replaced by Arrays.splice(int[], int), Arrays.splice(int[], int, int) and Arrays.splice(int[], int, int, int[]) in Macroing Java.
2022-04-13 Jörgen Lundgren <joergen.lundgren@macroing.org>
* CHANGE: Fix a bug in the GPU-based version of GlassMaterial. The DielectricFresnel-based SpecularBRDF type used the R-, G- and B-components in reverse order.
2022-04-10 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add a dependency to Macroing Java.
* CHANGE: Move PixelD to PixelImageD.PixelD. It is now a nested class rather than a top level class.
* CHANGE: Move PixelF to PixelImageF.PixelF. It is now a nested class rather than a top level class.
* REMOVE: Remove the Java AWT Image API.
* REMOVE: Remove the Java I/O API.
* REMOVE: Remove the Java Lang API.
* REMOVE: Remove the Java Util API.
* REMOVE: Remove the Java Util Concurrent Atomic API.
* REMOVE: Remove the Java Util Function API.
2022-04-07 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add the ByteArraysUnitTests, DoubleArraysUnitTests, DoublesUnitTests, IntsUnitTests and LongArraysUnitTests classes.
* ADD: Add unit tests to the FloatsUnitTests class.
* CHANGE: Fix a bug in the method indexOf(byte[], byte[], boolean, boolean) in the ByteArrays class.
* CHANGE: Fix a bug in the method indexOf(long[], long[], boolean, boolean) in the LongArrays class.
* REMOVE: Remove the methods equal(byte[], byte[], int, int, int), indexOf(byte, byte[]), indexOf(byte[], byte[], boolean, boolean), merge(byte[], byte), merge(byte[], byte[]), splice(byte[], int), splice(byte[], int, int), splice(byte[], int, int, byte[]) and splice(byte[], int, int, byte[], byte[]) from the ByteArrays class.
* REMOVE: Remove the methods convert(List<T>, Function<T, long[]>), convert(List<T>, Function<T, long[]>, int), convert(byte[]), convert(byte[], boolean), create(int), create(int, long), equal(long[], long[], int, int, int), indexOf(long, long[]), indexOf(long[], long[], boolean, boolean), merge(long[], long), merge(long[], long[]), merge(long[]...), splice(long[], int), splice(long[], int, int), splice(long[], int, int, long[]) and splice(long[], int, int, long[], long[]) from the LongArrays class.
* REMOVE: Remove the methods convert(List<T>, Function<T, double[]>), convert(List<T>, Function<T, double[]>, int), create(int), create(int, DoubleSupplier), create(int, double), equal(double[], double[], int, int, int), indexOf(double, double[]), indexOf(double[], double[], boolean, boolean), merge(double[], double), merge(double[], double[]), merge(double[]...), splice(double[], int), splice(double[], int, int), splice(double[], int, int, double[]) and splice(double[], int, int, double[], double[]) from the DoubleArrays class.
* REMOVE: Remove the methods indexOf(float, float[]), merge(float[], float) and merge(float[], float[]) from the FloatArrays class.
* REMOVE: Remove the methods convert(byte[]), convert(byte[], boolean) and create(int, IntSupplier) from the IntArrays class.
* REMOVE: Remove the Simplex API.
* REMOVE: Remove the Sound API.
* REMOVE: Remove the FilterNB interface and the EchoFilterNB class from the Filter API.
* REMOVE: Remove the CircularBuffer and CircularBufferException classes from the Utility API.
2022-03-27 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add the FloatsUnitTests class.
* REMOVE: Remove the method remainder(double, double) from the Doubles class. Use the % operator instead. It worked almost like %, with some differences for the sign.
* REMOVE: Remove the method remainder(float, float) from the Floats class. Use the % operator instead. It worked almost like %, with some differences for the sign.
2022-03-26 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add the BytesUnitTests, LongsUnitTests and ParameterArgumentsUnitTests classes.
* CHANGE: Move the tan-computations for the field of view of the camera from AbstractSceneKernel to CompiledCameraCache. This is a minor optimization.
2022-03-24 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add support for ImageLight to the GPU renderer.
* CHANGE: Refactor the classes AbstractLightKernel, AbstractSceneKernel, CompiledLightCache and CompiledSceneModifier in order to remove support for the LDRImageLight class and add support for the ImageLight class.
* REMOVE: Remove the HDRImageLight and LDRImageLight classes.
2022-03-22 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add the ImageLight class. This one will soon replace the new HDRImageLight class and the old LDRImageLight class. Support for it on the GPU is required first.
* ADD: Add the HDRImageLight class.
* ADD: Add the methods toDoubleArray() and toDoubleArray(ArrayComponentOrder) to the ImageD class.
* ADD: Add the methods toFloatArray() and toFloatArray(ArrayComponentOrder) to the ImageF class.
* CHANGE: Fix a bug in the method getPixel(int, int, PixelOperation) in the classes PixelImageD and PixelImageF.
* CHANGE: Fix a bug in the methods undoGammaCorrection() and update(BiFunction<Color4D, Point2I, Color4D>, Rectangle2I) in the ImageD class.
* CHANGE: Fix a bug in the methods undoGammaCorrection() and update(BiFunction<Color4F, Point2I, Color4F>, Rectangle2I) in the ImageF class.
* TEST: The updated JavaSceneLoader class has been tested using Java 11.
2022-03-21 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add a run.bat file that is copied to the distribution when building the project using Apache Ant.
* CHANGE: Update the JavaSceneLoader class. The changes had to be made in order to support Java 11. In Java 9, Field.isAccessible() is deprecated. Calling Field.setAccessible(boolean) resulted in an illegal access in Java 11 (and possibly Java 9). In Java 9, ClassLoader.getSystemClassLoader() does not return a URLClassLoader anymore, which also had to be fixed. This change has only been partially tested in Java 11 at this point.
2022-03-20 Jörgen Lundgren <joergen.lundgren@macroing.org>
* CHANGE: Fix Javadoc issues in the TrowbridgeReitzMicrofacetDistribution class.
* CHANGE: Fix Javadoc issues in the AbstractMaterialKernel class.
2022-03-19 Jörgen Lundgren <joergen.lundgren@macroing.org>
* CHANGE: Change the default values passed to the constructors of the PlasticMaterial class.
* CHANGE: Update the GPURenderer and PlasticMaterial scenes to use the default PlasticMaterial configuration.
* CHANGE: Update the native files for Aparapi. So Dayflower may work on other operating systems or architectures now. But it has not been tested yet.
2022-03-13 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add the Rectangle2IUnitTests class.
* ADD: Add the methods fillRegion(int, int, BiFunction<Color4D, Point2I, Color4D>) and fillRegion(int, int, BiFunction<Color4D, Point2I, Color4D>, BiPredicate<Color4D, Point2I>) to the ImageD class.
* ADD: Add the methods fillRegion(int, int, BiFunction<Color4F, Point2I, Color4F>) and fillRegion(int, int, BiFunction<Color4F, Point2I, Color4F>, BiPredicate<Color4F, Point2I>) to the ImageF class.
* ADD: Add the constant IDENTITY to the ConvolutionKernel33D, ConvolutionKernel33F, ConvolutionKernel55D and ConvolutionKernel55F classes.
* ADD: Add the method pow2(double) to the Doubles class.
* ADD: Add the method pow2(float) to the Floats class.
* CHANGE: Refactor the name of the method sampleNormal(Vector3F, Point2F) in the MicrofacetDistribution, BeckmannMicrofacetDistribution and TrowbridgeReitzMicrofacetDistribution classes to sampleHalfway(Vector3F, Point2F).
* CHANGE: Refactor the name of the parameter normal in the method computeDifferentialArea(Vector3F) in the MicrofacetDistribution, BeckmannMicrofacetDistribution and TrowbridgeReitzMicrofacetDistribution classes to halfway.
* CHANGE: Refactor the name of the parameter normal in the method computeProbabilityDensityFunctionValue(Vector3F, Vector3F) in the MicrofacetDistribution class to halfway.
* CHANGE: Update the random() method in the Doubles and Floats classes to use ThreadLocalRandom instead of a Random class.
* CHANGE: Refactor the method addButton(String, EventHandler<ActionEvent>) in the CenteredVBox class to addButton(String, EventHandler<ActionEvent>, boolean). The boolean parameter is used for the disabled state.
* CHANGE: Update the GUI to disable certain buttons when running the GPU renderer. The functionality of these buttons are not supported by it yet.
* CHANGE: Rename the constant EDGE_DETECTION in the ConvolutionKernel33D and ConvolutionKernel33F classes to RIDGE_DETECTION.
* CHANGE: Change the Edge Detection operation in the ScreenRendererApplication to Ridge Detection.
* CHANGE: Update the toString() method of the Rectangle2I class.
* REMOVE: Remove the method image4DTextureGetColor4D(double[], double) from the Texture class in the Simplex API.
* REMOVE: Remove the methods getHeight() and getWidth() from the Rectangle2D, Rectangle2F and Rectangle2I classes.
2022-03-08 Jörgen Lundgren <joergen.lundgren@macroing.org>
* CHANGE: When DayflowerApplication was rendering and was closed, the program would not terminate. This has been fixed. The bug was described in issue #3.
2022-02-20 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add unit tests to the Color3DUnitTests, Color3FUnitTests, Color4DUnitTests and Color4FUnitTests classes.
2022-02-19 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add the method sobel() to the ImageD and ImageF classes.
* ADD: Add the method toBufferedImage(boolean) to the Image class. If the boolean parameter is true, the BufferedImage will use BufferedImage.TYPE_INT_RGB instead of BufferedImage.TYPE_INT_ARGB.
* CHANGE: Fix the save(...) methods in the Image class to work with JPEG images. Previously images saved as JPEG would be somewhat pink. This was caused by the alpha-channel.
2022-01-10 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add the method contains(Point3D) to the CompoundShape3D, Cone3D, ConstructiveSolidGeometry3D, Curve3D, Cylinder3D, Disk3D, Hyperboloid3D, Paraboloid3D, Torus3D and TriangleMesh3D classes.
* ADD: Add the method contains(Point3F) to the CompoundShape3F, Cone3F, ConstructiveSolidGeometry3F, Curve3F, Cylinder3F, Disk3F, Hyperboloid3F, Paraboloid3F, Torus3F and TriangleMesh3F classes.
* ADD: Add the method contains(Point3D) to the Shape3D interface.
* ADD: Add the method contains(Point3F) to the Shape3F interface.
2022-01-07 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add unit tests to the AngleDUnitTests and AngleFUnitTests classes.
* CHANGE: Fix a bug in the method wrapAround(double, double, double) in the Doubles class.
* CHANGE: Fix a bug in the method wrapAround(float, float, float) in the Floats class.
* CHANGE: Fix unit tests in the AngleDUnitTests and AngleFUnitTests classes.
2022-01-06 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add unit tests to the AngleDUnitTests and AngleFUnitTests classes.
* CHANGE: Update the copyright notice for the Scene API, Scene BSSRDF API, Scene BXDF API, Scene Compiler API, Scene Demo API, Scene Fresnel API, Scene Light API, Scene Loader API, Scene Material API, Scene Microfacet API, Scene Modifier API, Scene Texture API, Simplex API, Sound API, Utility API, Wavefront Material API, Wavefront Object API and Test APIs.
* CHANGE: Update the toString() method of the AngleD and AngleF classes.
2022-01-05 Jörgen Lundgren <joergen.lundgren@macroing.org>
* CHANGE: Update the copyright notice for the JavaFX Application API, JavaFX Concurrent API, JavaFX Scene Canvas API, JavaFX Scene Control API, JavaFX Scene Image API, JavaFX Scene Layout API, Node API, Noise API, Parameter API, Renderer API, Renderer CPU API, Renderer GPU API, Renderer Observer API and Sampler API.
2022-01-02 Jörgen Lundgren <joergen.lundgren@macroing.org>
* CHANGE: Update the copyright notice for the Geometry Bounding Volume API, Geometry Bounding Volume Hierarchy API, Geometry Rasterizer API, Geometry Shape API, Image API, Java AWT Image API, Java I/O API, Java Lang API, Java Util API, Java Util Concurrent Atomic API and Java Util Function API.
2022-01-01 Jörgen Lundgren <joergen.lundgren@macroing.org>
* CHANGE: Update the copyright notice for the Change API, Color API, Filter API and Geometry API.
2021-12-28 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add support for creating a more compact form of the BVH in the GPU-renderer. It is a little bit faster in some cases.
2021-12-27 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add the AbstractBoundingVolume3FKernel and AbstractShape3FKernel classes.
* CHANGE: Change the compiled representations of the AxisAlignedBoundingBox3F and BoundingSphere3F classes to be referenced using relative instead of absolute offsets.
* CHANGE: Update the super class of the AbstractModifierKernel class from AbstractGeometryKernel to AbstractShape3FKernel.
* REMOVE: Remove all methods related to BoundingVolume3F and Shape3F types from the AbstractGeometryKernel class.
2021-12-26 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add unit tests to the Circle2IUnitTests and LineSegment2IUnitTests classes.
* ADD: Add the methods getMaximum() and getMinimum() to the Circle2I, LineSegment2I, Polygon2I, Rectangle2I and Triangle2I classes.
* ADD: Add the methods getMaximum() and getMinimum() to the Shape2I interface.
* ADD: Add unit tests to the Point2IUnitTests class.
* ADD: Add the methods maximum(Point2I, Point2I, Point2I, Point2I) and minimum(Point2I, Point2I, Point2I, Point2I) to the Point2I class.
* ADD: Add the methods max(int, int, int, int) and min(int, int, int, int) to the Ints class.
* ADD: Add the LineSegment2DReaderUnitTests, LineSegment2FReaderUnitTests and LineSegment2IReaderUnitTests classes.
* CHANGE: Update the method getBounds() of the Image class.
* CHANGE: Change the copy() method of the ImageD and ImageF classes from abstract to final and call copy(Shape2I) with getBounds() as parameter.
* CHANGE: Change the abstract copy(Rectangle2I) methods of the ImageD and ImageF classes to final copy(Shape2I) methods and add implementations.
* CHANGE: Change the copy(Rectangle2I) method of the Image class to copy(Shape2I).
* CHANGE: Update the union(Rectangle2D, Rectangle2D) method in the Rectangle2D class to handle rotated Rectangle2D instances correctly.
* CHANGE: Update the union(Rectangle2F, Rectangle2F) method in the Rectangle2F class to handle rotated Rectangle2F instances correctly.
* CHANGE: Update the union(Rectangle2I, Rectangle2I) method in the Rectangle2I class to handle rotated Rectangle2I instances correctly.
* REMOVE: Remove the copy() and copy(Rectangle2I) methods from the ByteImageD, ByteImageF, DoubleImageD, FloatImageF, IntImageD, IntImageF, PixelImageD and PixelImageF classes.
2021-12-25 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add the methods getSurfaceNormalGCorrectlyOriented() and getSurfaceNormalSCorrectlyOriented() to the Intersection class.
* CHANGE: Update the GPU-renderer to use correctly oriented surface normals.
* CHANGE: Update the BSDF, Scene, PerezLight, ClearCoatMaterial and SurfaceNormalTexture classes to use the new getSurfaceNormalGCorrectlyOriented() and getSurfaceNormalSCorrectlyOriented() methods.
* CHANGE: Update the NormalMapLDRImageModifier class. It now uses the surface normal of the geometry in the calculations, rather than the one for shading.
* CHANGE: Update the NormalMapLDRImageModifier implementation in the AbstractGeometryKernel and AbstractModifierKernel classes. The bilinear interpolation is removed and the methods intersectionLHSSetOrthonormalBasisSWTransform(float, float, float) and intersectionRHSSetOrthonormalBasisSWTransform(float, float, float) now use the surface normal of the geometry in the calculations, rather than the one for shading.
2021-12-23 Jörgen Lundgren <joergen.lundgren@macroing.org>
* CHANGE: Update the methods ray3FSetFromSurfaceIntersectionPointAndVector3FLHS() and ray3FSetFromSurfaceIntersectionPointAndVector3FRHS() in the AbstractGeometryKernel class to work more like the CPU renderer.
* CHANGE: Change back the precision of the cos() and sin() methods in the AngleF class. It did not work out in the end.
* CHANGE: Update unit tests in the Matrix44FUnitTests class.
2021-12-22 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add the methods cos() and sin() to the AngleD and AngleF classes.
* ADD: Add unit tests to the Matrix44DUnitTests and Matrix44FUnitTests classes.
* ADD: Add unit tests to the Quaternion4DUnitTests and Quaternion4FUnitTests classes.
* CHANGE: Update unit tests in Matrix44FUnitTests to account for the precision changes in the Matrix44F class.
* CHANGE: Update the methods rotate(AngleD, Vector3D), rotate(AngleD, double, double, double), rotateX(AngleD), rotateY(AngleD) and rotateZ(AngleD) in the Matrix44D class to use the cos() and sin() methods provided by the AngleD class.
* CHANGE: Update the methods rotate(AngleF, Vector3F), rotate(AngleF, float, float, float), rotateX(AngleF), rotateY(AngleF) and rotateZ(AngleF) in the Matrix44F class to use the cos() and sin() methods provided by the AngleF class. This results in better precision. The methods rotateX(float), rotateX(float, boolean), rotateY(float), rotateY(float, boolean), rotateZ(float) and rotateZ(float, boolean) do not have this precision yet.
* CHANGE: Update the normalize(Quaternion4D) method in the Quaternion4D class. It now checks if it is normalized or not.
* CHANGE: Update the normalize(Quaternion4F) method in the Quaternion4F class. It now checks if it is normalized or not.
2021-12-20 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add the method orthonormalBasis33FSetFromUV(float, float, float, float, float, float) to the AbstractGeometryKernel class.
2021-12-19 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add the methods intersectionLHSSetOrthonormalBasisGFromOrthonormalBasis33F(), intersectionLHSSetOrthonormalBasisSFromOrthonormalBasis33F(), intersectionRHSSetOrthonormalBasisGFromOrthonormalBasis33F() and intersectionRHSSetOrthonormalBasisSFromOrthonormalBasis33F() to the AbstractGeometryKernel class.
* ADD: Add unit tests to the OrthonormalBasis33DUnitTests and OrthonormalBasis33FUnitTests classes.
* CHANGE: Update the method orthonormalBasis33FSetFromWV(float, float, float, float, float, float) in the AbstractGeometryKernel class to normalize the U-direction. It was assumed it would be normalized by construction, but that may not always be the case.
* CHANGE: Update the methods intersectionLHSSetOrthonormalBasisSWTransform(float, float, float) and intersectionRHSSetOrthonormalBasisSWTransform(float, float, float) in the AbstractGeometryKernel class to also update the U- and V-directions.
* CHANGE: Update the methods setSurfaceNormalG(Vector3F) and setSurfaceNormalS(Vector3F) in the Intersection class to take OrthonormalBasis33F.getV() into account when creating a new OrthonormalBasis33F instance.
* CHANGE: Update the method sample(Point2D, SurfaceIntersection3D) in the Sphere3D class. The method coordinateSystem(Vector3D) in the OrthonormalBasis33D class was removed. The constructor OrthonormalBasis33D(Vector3D) is essentially the same.
* CHANGE: Update the method sample(Point2F, SurfaceIntersection3F) in the Sphere3F class. The method coordinateSystem(Vector3F) in the OrthonormalBasis33F class was removed. The constructor OrthonormalBasis33F(Vector3F) is essentially the same.
* REMOVE: Remove the methods coordinateSystem(Vector3D) and lerp(OrthonormalBasis33D, OrthonormalBasis33D, double) from the OrthonormalBasis33D class.
* REMOVE: Remove the methods coordinateSystem(Vector3F) and lerp(OrthonormalBasis33F, OrthonormalBasis33F, float) from the OrthonormalBasis33F class.
2021-12-18 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add the OrthonormalBasis33DUnitTests and OrthonormalBasis33FUnitTests classes.
* CHANGE: Fix a cache issue in the Vector3DUnitTests and Vector3FUnitTests classes.
2021-12-17 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add the Quaternion4DUnitTests and Quaternion4FUnitTests classes.
* ADD: Add unit tests to the Matrix44DUnitTests and Matrix44FUnitTests classes.
* CHANGE: Change the aperture radius interval in the application.
* CHANGE: Update the toString() method of the Quaternion4D and Quaternion4F classes.
2021-12-16 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add unit tests to the Point3DUnitTests and Point3FUnitTests classes.
* CHANGE: Update the method testReciprocal() in the Vector2DUnitTests and Vector2FUnitTests classes.
* CHANGE: Update the method reciprocal(Vector2D) in the Vector2D class.
* CHANGE: Update the method reciprocal(Vector2F) in the Vector2F class.
2021-12-15 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add a unit test for Point2I.midpoint(Point2I, Point2I) to the Point2IUnitTests class.
* ADD: Add the method midpoint(Point2I, Point2I) to the Point2I class.
* ADD: Add the LineSegment2DUnitTests, LineSegment2FUnitTests and LineSegment2IUnitTests classes.
2021-12-14 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add the Circle2DReaderUnitTests, Circle2FReaderUnitTests and Circle2IReaderUnitTests classes.
* CHANGE: Update the method rotate(OrthonormalBasis33D) in the Matrix44D class. It may be slightly faster now.
* CHANGE: Update the method rotate(OrthonormalBasis33F) in the Matrix44F class. It may be slightly faster now.
2021-12-13 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add unit tests to the Circle2DUnitTests and Circle2FUnitTests classes.
* ADD: Add the Circle2IUnitTests class.
2021-12-12 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add a null check to the method read(DataInput, int) in all *Reader classes of the Geometry Shape API.
* ADD: Add the AxisAlignedBoundingBox3DReaderUnitTests, AxisAlignedBoundingBox3FReaderUnitTests, Circle2DUnitTests, Circle2FUnitTests, DefaultBoundingVolume3DReaderUnitTests and DefaultBoundingVolume3FReaderUnitTests classes.
* ADD: Add unit tests to the AxisAlignedBoundingBox3DUnitTests and AxisAlignedBoundingBox3FUnitTests classes.
* CHANGE: Update the toString() method of the Circle2D and Circle2F classes.
* CHANGE: Change the signature of the method union(AxisAlignedBoundingBox3D, Point3D) in the class AxisAlignedBoundingBox3D to union(BoundingVolume3D, Point3D).
* CHANGE: Change the signature of the method union(AxisAlignedBoundingBox3F, Point3F) in the class AxisAlignedBoundingBox3F to union(BoundingVolume3F, Point3F).
* CHANGE: Update the Vector3DUnitTests and Vector3FUnitTests classes.
* CHANGE: Update the method reciprocal(Vector3D) in the Vector3D class. It would return 0.0D for non-finite numbers, but that caused a bug in the AxisAlignedBoundingBox3D class, which relied on division by 0 to return infinity.
* CHANGE: Update the method reciprocal(Vector3F) in the Vector3F class. It would return 0.0F for non-finite numbers, but that caused a bug in the AxisAlignedBoundingBox3F class, which relied on division by 0 to return infinity.
* CHANGE: Update the method vector3FSetNormalize(float, float, float) in the AbstractGeometryKernel class to check if the vector is already normalized.
2021-12-11 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add the AxisAlignedBoundingBox3DUnitTests and AxisAlignedBoundingBox3FUnitTests classes.
* ADD: Add the BoundingSphere3DReaderUnitTests, BoundingSphere3FReaderUnitTests, InfiniteBoundingVolume3DReaderUnitTests and InfiniteBoundingVolume3FReaderUnitTests classes.
* ADD: Update the StringsUnitTests class.
* ADD: Add the methods toNonScientificNotationJava(double) and toNonScientificNotationJava(float) to the Strings class.
* ADD: Add a null check to the method read(DataInput, int) in the AxisAlignedBoundingBox3DReader, AxisAlignedBoundingBox3FReader, BoundingSphere3DReader, BoundingSphere3FReader, DefaultBoundingVolume3DReader, DefaultBoundingVolume3FReader, InfiniteBoundingVolume3DReader and InfiniteBoundingVolume3FReader classes.
* ADD: Add unit tests to the BoundingSphere3DUnitTests class.
* ADD: Add unit tests to the BoundingSphere3FUnitTests class.
* CHANGE: Update unit tests in the Ray2DUnitTests, Ray2FUnitTests, Ray3DUnitTests and Ray3FUnitTests classes.
* CHANGE: Fix a bug in the method getClosestPointTo(Point3D) in the BoundingSphere3D class. It should return the Point3D supplied as a parameter if it is the closest point.
* CHANGE: Fix a bug in the method getClosestPointTo(Point3F) in the BoundingSphere3F class. It should return the Point3F supplied as a parameter if it is the closest point.
* CHANGE: Update the toString() method of the BoundingSphere3D, BoundingSphere3F, Color3D, Color3F, Color4D, Color4F, Matrix33D, Matrix33F, Matrix44D, Matrix44F, Point2D, Point2F, Point3D, Point3F, Point4D, Point4F, Vector2D, Vector2F, Vector3D, Vector3F, Vector4D and Vector4F classes.
2021-12-10 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add the method getMidpoint() to the InfiniteBoundingVolume3D and InfiniteBoundingVolume3F classes.
* ADD: Add the BoundingSphere3DUnitTests, BoundingSphere3FUnitTests, InfiniteBoundingVolume3DUnitTests and InfiniteBoundingVolume3FUnitTests classes.
* ADD: Add the AbstractLDRImageModifier class.
* CHANGE: Update the return type of the method transform(Matrix44D) in the InfiniteBoundingVolume3D class from BoundingVolume3D to InfiniteBoundingVolume3D.
* CHANGE: Update the return type of the method transform(Matrix44F) in the InfiniteBoundingVolume3F class from BoundingVolume3F to InfiniteBoundingVolume3F.
* CHANGE: Update the CompiledModifierCache, CompiledSceneModifier, AbstractModifierKernel and AbstractSceneKernel classes to reflect the new name of NormalMapLDRImageModifier.
* CHANGE: Update the IDs for the NoOpModifier, NormalMapLDRImageModifier, SimplexNoiseNormalMapModifier and SteepParallaxMapLDRImageModifier classes.
* CHANGE: Rename the class LDRImageNormalMapModifier to NormalMapLDRImageModifier and change it such that it extends AbstractLDRImageModifier rather than implements Modifier.
* CHANGE: Rename the class LDRImageSteepParallaxMapModifier to SteepParallaxMapLDRImageModifier and change it such that it extends AbstractLDRImageModifier rather than implements Modifier.
* REMOVE: Remove the methods load(File), load(File, AngleF), load(File, AngleF, Vector2F), load(String), load(String, AngleF), load(String, AngleF, Vector2F), redoGammaCorrectionSRGB(LDRImageNormalMapModifier) and undoGammaCorrectionSRGB(LDRImageNormalMapModifier) from the LDRImageNormalMapModifier class. These operations can be performed by the Image API.
* REMOVE: Remove the methods load(File), load(File, AngleF), load(File, AngleF, Vector2F), load(String), load(String, AngleF), load(String, AngleF, Vector2F), redoGammaCorrectionSRGB(LDRImageSteepParallaxMapModifier) and undoGammaCorrectionSRGB(LDRImageSteepParallaxMapModifier) from the LDRImageSteepParallaxMapModifier class. These operations can be performed by the Image API.
2021-12-09 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add the methods calculateBitangent() and calculateTangent() to the Triangle3D and Triangle3F classes.
* ADD: Add support for Modifiers to the Ray Caster in the CPU renderer.
* ADD: Add the LDRImageSteepParallaxMapModifier class.
* ADD: Add the method setTextureCoordinates(Point2F) to the Intersection class.
* ADD: Add unit tests to the Vector4DUnitTests class.
* ADD: Add unit tests to the Vector4FUnitTests class.
* CHANGE: Update the IDs for the NoOpModifier and SimplexNoiseNormalMapModifier classes.
* CHANGE: Update the methods divide(Vector4D, double) and normalize(Vector4D) in the Vector4D class.
* CHANGE: Update the methods divide(Vector4F, float) and normalize(Vector4F) in the Vector4F class.
2021-12-07 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add a NodeHierarchicalVisitorMock class that implements NodeHierarchicalVisitor to traverse Nodes in different paths or throw a RuntimeException.
* ADD: Add a NodeVisitorMock class that implements NodeVisitor to throw a RuntimeException.
* ADD: Add the Ray2DUnitTests, Ray2FUnitTests, Ray3DUnitTests and Ray3FUnitTests classes.
* ADD: Add unit tests to the Vector2IUnitTests class.
* ADD: Add unit tests to the Vector3DUnitTests class.
* ADD: Add unit tests to the Vector3FUnitTests class.
2021-12-06 Jörgen Lundgren <joergen.lundgren@macroing.org>
* CHANGE: Update Point4DUnitTests and Point4FUnitTests for full unit test coverage.
* CHANGE: Update Vector2DUnitTests and Vector2FUnitTests for full unit test coverage.
2021-12-05 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add the WritableImageCacheUnitTests class.
* ADD: Add the method size() to the WritableImageCache class.
* ADD: Add unit tests to the Vector3DUnitTests class.
* ADD: Add unit tests to the Vector3FUnitTests class.
* ADD: Add the FloatUnaryOperatorUnitTests and TriFunctionUnitTests classes.
* ADD: Add the StringsUnitTests class.
* ADD: Add unit tests to the Vector2DUnitTests class.
* ADD: Add unit tests to the Vector2FUnitTests class.
* ADD: Add a DataOutputMock class that implements DataOutput to throw an IOException.
* CHANGE: Update ArrayComponentOrder and ArrayComponentOrderUnitTests for full unit test coverage.
* CHANGE: Fix a bug in FloatUnaryOperator. The method identity() was not static, which it should be.
* CHANGE: Update the testWrite() method in the Color3DUnitTests, Color3FUnitTests, Matrix33DUnitTests, Matrix33FUnitTests, Matrix44DUnitTests, Matrix44FUnitTests, Point2DUnitTests, Point2FUnitTests, Point2IUnitTests, Point3DUnitTests, Point3FUnitTests, Point4DUnitTests, Point4FUnitTests, Vector2DUnitTests and Vector2FUnitTests classes to use the DataOutputMock class.
2021-12-04 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add the method perpendicular(Vector2D) to the Vector2D class.
* ADD: Add the method perpendicular(Vector2F) to the Vector2F class.
* ADD: Add the method perpendicular(Vector2I) to the Vector2I class.
* ADD: Add the constants NEXT_DOWN_1_1, NEXT_DOWN_1_2, NEXT_DOWN_1_3, NEXT_UP_1_1, NEXT_UP_1_2 and NEXT_UP_1_3 to the Doubles and Floats classes.
* ADD: Add the methods nextDown(double) and nextUp(double) to the Doubles class.
* ADD: Add the methods nextDown(float) and nextUp(float) to the Floats class.
* ADD: Add the Vector2DUnitTests, Vector2FUnitTests, Vector2IUnitTests, Vector3DUnitTests, Vector3FUnitTests, Vector4DUnitTests and Vector4FUnitTests classes.
* CHANGE: Update the method orthogonal(Vector2D, Vector2D) in the Vector2D class.
* CHANGE: Update the method orthogonal(Vector2F, Vector2F) in the Vector2F class.
* CHANGE: Update the methods random() and randomNormalized() in the Vector2D, Vector2F, Vector3D and Vector3F classes. They now produce random component values between -1.0 and 1.0, instead of between 0.0 and 1.0.
* CHANGE: Update the methods isUnitVector() and normalize(Vector2D) in the Vector2D class.
* CHANGE: Update the methods isUnitVector() and normalize(Vector2F) in the Vector2F class.
* CHANGE: Update the methods isUnitVector() and normalize(Vector3D) in the Vector3D class.
* CHANGE: Update the methods isUnitVector() and normalize(Vector3F) in the Vector3F class.
* CHANGE: Update the toString() method of the Vector2D, Vector2F, Vector3D, Vector3F, Vector4D and Vector4F classes.
* REMOVE: Remove the methods nextDownPBRT(double) and nextUpPBRT(double) from the Doubles class. They are replaced with the methods nextDown(double) and nextUp(double).
* REMOVE: Remove the methods nextDownPBRT(float) and nextUpPBRT(float) from the Floats class. They are replaced with the methods nextDown(float) and nextUp(float).
2021-12-03 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add the AngleDUnitTests and AngleFUnitTests classes.
2021-12-02 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add the Matrix44DUnitTests and Matrix44FUnitTests classes.
* ADD: Add unit tests to the Matrix33DUnitTests class.
* ADD: Add unit tests to the Matrix33FUnitTests class.
* CHANGE: Update the method normalize(Vector3D) in the Vector3D class.
* CHANGE: Update the method normalize(Vector3F) in the Vector3F class.
* CHANGE: Update the method rotate(Vector3D, Vector3D) in the Matrix44D class.
* CHANGE: Update the method rotate(Vector3F, Vector3F) in the Matrix44F class.
* CHANGE: Update the toString() method of the Matrix44D and Matrix44F classes.
* CHANGE: Fix a bug in the determinant() method of the Matrix33D class.
* CHANGE: Fix a bug in the determinant() method of the Matrix33F class.
* REMOVE: Remove the method setupPRNG() and the fields seedArray_$private$1 and setupPRNG from the AbstractKernel class. The PRNG that used private memory was slightly faster in some cases, but it did not work out as expected. Some artifacts were introduced.
2021-11-30 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add the Matrix33DUnitTests and Matrix33FUnitTests classes.
* ADD: Add unit tests to the Point3DUnitTests class.
* ADD: Add unit tests to the Point3FUnitTests class.
* CHANGE: Update the toString() method of the Matrix33D and Matrix33F classes.
* CHANGE: Fix a bug in the method centroid(Point3D, Point3D, Point3D, Point3D, Point3D, Point3D, Point3D, Point3D) in the Point3D class.
* CHANGE: Fix a bug in the method centroid(Point3F, Point3F, Point3F, Point3F, Point3F, Point3F, Point3F, Point3F) in the Point3F class.
2021-11-28 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add unit tests to the Point2DUnitTests class.
* ADD: Add unit tests to the Point2FUnitTests class.
* ADD: Add unit tests to the Point2IUnitTests class.
* ADD: Add unit tests to the Point3DUnitTests class.
* ADD: Add unit tests to the Point3FUnitTests class.
* ADD: Add unit tests to the Point4DUnitTests class.
* ADD: Add unit tests to the Point4FUnitTests class.
* CHANGE: Update the toString() method of the Point3D, Point3F, Point4D and Point4F classes.
2021-11-27 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add unit tests to the Point2DUnitTests class.
* ADD: Add unit tests to the Point2FUnitTests class.
2021-11-26 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add unit tests to the Point2DUnitTests class.
* ADD: Add unit tests to the Point2FUnitTests class.
2021-11-25 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add the Point2DUnitTests, Point2FUnitTests, Point2IUnitTests, Point3DUnitTests, Point3FUnitTests, Point4DUnitTests and Point4FUnitTests classes.
* ADD: Add the ChromaticSpectralCurveDUnitTests, ChromaticSpectralCurveFUnitTests, Color4DUnitTests, ColorSpaceDUnitTests, ColorSpaceFUnitTests, ConstantSpectralCurveDUnitTests, ConstantSpectralCurveFUnitTests, IrregularSpectralCurveDUnitTests, IrregularSpectralCurveFUnitTests, RegularSpectralCurveDUnitTests and RegularSpectralCurveFUnitTests classes.
* ADD: Add the method equals(Color4D) to the Color4D class.
* ADD: Add the method equals(Color4F) to the Color4F class.
* CHANGE: Update the toString() method of the Point2D and Point2F classes.
2021-11-23 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add a simple renderer implementation for the Ray Tracing option in the GPU-renderer.
* CHANGE: Perform some optimizations to the GPU-renderer, including the PRNG.
* CHANGE: Update the methods saturateF(float, float, float) and saturateI(int, int, int) in the AbstractKernel class. In the past, the two parameters at the end could be either minimum and maximum or maximum and minimum. Now they are assumed to be minimum and maximum.
2021-11-20 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add the method equals(Color3D) to the Color3D class.
* ADD: Add the method equals(Color3F) to the Color3F class.
* ADD: Add the method equals(BSDF) to the BSDF class.
* ADD: Add the field bXDFMatchArray_$private$8 to the AbstractMaterialKernel class. It stores the IDs for matching BXDFs, to simplify selection.
* CHANGE: Optimize the BSDF class.
2021-11-18 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add the methods drawShape(Shape2I), drawShape(Shape2I, BiFunction<Color4D, Point2I, Color4D>), drawShape(Shape2I, Color3D), drawShape(Shape2I, Color4D), drawShapeComplement(Shape2I), drawShapeComplement(Shape2I, BiFunction<Color4D, Point2I, Color4D>), drawShapeComplement(Shape2I, Color3D), drawShapeComplement(Shape2I, Color4D), fillShape(Shape2I), fillShape(Shape2I, BiFunction<Color4D, Point2I, Color4D>), fillShape(Shape2I, Color3D), fillShape(Shape2I, Color4D), fillShapeComplement(Shape2I), fillShapeComplement(Shape2I, BiFunction<Color4D, Point2I, Color4D>), fillShapeComplement(Shape2I, Color3D) and fillShapeComplement(Shape2I, Color4D) to the ImageD class.
* ADD: Add the methods drawShape(Shape2I), drawShape(Shape2I, BiFunction<Color4F, Point2I, Color4F>), drawShape(Shape2I, Color3F), drawShape(Shape2I, Color4F), drawShapeComplement(Shape2I), drawShapeComplement(Shape2I, BiFunction<Color4F, Point2I, Color4F>), drawShapeComplement(Shape2I, Color3F), drawShapeComplement(Shape2I, Color4F), fillShape(Shape2I), fillShape(Shape2I, BiFunction<Color4F, Point2I, Color4F>), fillShape(Shape2I, Color3F), fillShape(Shape2I, Color4F), fillShapeComplement(Shape2I), fillShapeComplement(Shape2I, BiFunction<Color4F, Point2I, Color4F>), fillShapeComplement(Shape2I, Color3F) and fillShapeComplement(Shape2I, Color4F) to the ImageF class.
* ADD: Add the methods contains(Point2I, boolean) and findPoints(boolean) to the Circle2I class.
* ADD: Add the methods contains(Point2I, boolean) and findPoints(boolean) to the LineSegment2I class.
* ADD: Add the methods contains(Point2I, boolean) and findPoints(boolean) to the Polygon2I class.
* ADD: Add the methods contains(Point2I, boolean) and findPoints(boolean) to the Rectangle2I class.
* ADD: Add the methods contains(Point2I, boolean), findPoints(), getLineSegments() and getRectangle() to the Triangle2I class.
* ADD: Add the methods contains(Point2I, boolean), findPoints(), findPoints(boolean), findPointsOfComplement(Shape2I), findPointsOfComplement(Shape2I, boolean), findPointsOfIntersection(Shape2I) and findPointsOfIntersection(Shape2I, boolean) to the Shape2I interface.
* REMOVE: Remove the methods drawCircle(...), drawCircleComplement(...), drawLineSegment(...), drawPolygon(...), drawRectangle(...), drawTriangle(...), fillCircle(...), fillCircleComplement(...), fillPolygon(...), fillRectangle(...) and fillTriangle(...) from the ImageD and ImageF classes.
* REMOVE: Remove the methods contains(Point2I), findPointsOfComplement(), findPointsOfComplement(Rectangle2I), findPointsOfComplement(Rectangle2I, boolean), findPointsOfIntersection(), findPointsOfIntersection(Rectangle2I) and findPointsOfIntersection(Rectangle2I, boolean) from the Circle2I class.
* REMOVE: Remove the method contains(Point2I) from the LineSegment2I class.
* REMOVE: Remove the methods contains(Point2I), findPointsOfIntersection(Rectangle2I) and findPointsOfIntersection(Rectangle2I, boolean) from the Polygon2I class.
* REMOVE: Remove the method contains(Point2I) from the Rectangle2I class.
* REMOVE: Remove the method contains(Point2I) from the Triangle2I class.
2021-11-17 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add the method toneMap(double) to the ImageD class.
* ADD: Add the method toneMap(float) to the ImageF class.
2021-11-16 Jörgen Lundgren <joergen.lundgren@macroing.org>
* CHANGE: Update the intersection methods in the GPU renderer. Instead of one set of methods, two exists, such that information about intersected AreaLight instances can be stored.
* CHANGE: Fix a bug in the SubstrateMaterial implementation in the GPU renderer.
2021-11-14 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add the method getTurbidity() to the PerezLight class.
* ADD: Add the methods color3FLHSSetConvertXYZToRGB(float, float, float) and color3FRHSSetConvertXYZToRGB(float, float, float) to the AbstractImageKernel class.
* ADD: Add the method ray3FCameraGenerateTriangleFilter() to the AbstractSceneKernel class.
* ADD: Add the methods redoGammaCorrection(), redoGammaCorrection(ColorSpaceD), undoGammaCorrection() and undoGammaCorrection(ColorSpaceD) to the ImageD class.
* ADD: Add the methods redoGammaCorrection(), redoGammaCorrection(ColorSpaceF), undoGammaCorrection() and undoGammaCorrection(ColorSpaceF) to the ImageF class.
* ADD: Add the method getDefault() to the ColorSpaceD and ColorSpaceF classes.
* CHANGE: Optimize the memory requirement for the PerezLight in the GPU renderer.
* CHANGE: Fix a bug in the method color3FRHSSetBlend(float, float, float) in the AbstractImageKernel class.
* CHANGE: Update the Path Tracer in the GPURenderer class to use the method ray3FCameraGenerateTriangleFilter(). This produces less ringing.
* CHANGE: Update the implementation of the PerezLight in the AbstractLightKernel class.
* CHANGE: Rename the methods imageRedoGammaCorrectionPBRT() and imageUndoGammaCorrectionPBRT() to imageRedoGammaCorrection() and imageUndoGammaCorrection() in the AbstractImageKernel class and update their implementations.
* REMOVE: Remove the methods redoGammaCorrectionPBRT(), redoGammaCorrectionSRGB(), undoGammaCorrectionPBRT() and undoGammaCorrectionSRGB() from the ImageD class.
* REMOVE: Remove the methods redoGammaCorrectionPBRT(), redoGammaCorrectionSRGB(), undoGammaCorrectionPBRT() and undoGammaCorrectionSRGB() from the ImageF class.
* REMOVE: Remove the methods convertRGBToXYZUsingPBRT(Color3D), convertRGBToXYZUsingSRGB(Color3D), convertXYZToRGBUsingPBRT(Color3D), convertXYZToRGBUsingSRGB(Color3D), redoGammaCorrectionPBRT(Color3D), redoGammaCorrectionSRGB(Color3D), undoGammaCorrectionPBRT(Color3D) and undoGammaCorrectionSRGB(Color3D) from the Color3D class.
* REMOVE: Remove the methods convertRGBToXYZUsingPBRT(Color3F), convertRGBToXYZUsingSRGB(Color3F), convertXYZToRGBUsingPBRT(Color3F), convertXYZToRGBUsingSRGB(Color3F), redoGammaCorrectionPBRT(Color3F), redoGammaCorrectionSRGB(Color3F), undoGammaCorrectionPBRT(Color3F) and undoGammaCorrectionSRGB(Color3F) from the Color3F class.
* REMOVE: Remove the methods convertRGBAToXYZAUsingPBRT(Color4D), convertRGBAToXYZAUsingSRGB(Color4D), convertXYZAToRGBAUsingPBRT(Color4D), convertXYZAToRGBAUsingSRGB(Color4D), redoGammaCorrectionPBRT(Color4D), redoGammaCorrectionSRGB(Color4D), undoGammaCorrectionPBRT(Color4D) and undoGammaCorrectionSRGB(Color4D) from the Color4D class.
* REMOVE: Remove the methods convertRGBAToXYZAUsingPBRT(Color4F), convertRGBAToXYZAUsingSRGB(Color4F), convertXYZAToRGBAUsingPBRT(Color4F), convertXYZAToRGBAUsingSRGB(Color4F), redoGammaCorrectionPBRT(Color4F), redoGammaCorrectionSRGB(Color4F), undoGammaCorrectionPBRT(Color4F) and undoGammaCorrectionSRGB(Color4F) from the Color4F class.
2021-11-13 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add unit tests to the Color3DUnitTests class.
* ADD: Add unit tests to the Color3FUnitTests class.
* CHANGE: Update the gamma correction in ColorSpaceD and ColorSpaceF to account for values outside the range [0.0, 1.0]. The results will then be similar to the PBRT version.
* CHANGE: Change the maximum decimal places for the method toNonScientificNotation(double) in the Strings class from 8 to 16. The method toNonScientificNotation(float) is still using 8 as before.
2021-11-11 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add the methods toColorRGB(boolean) and toColorXYZ(boolean) to the SpectralCurveD and SpectralCurveF classes.
* ADD: Add unit tests to the ArrayComponentOrderUnitTests class.
* CHANGE: Update the PerezLight class to use the legacy version of SpectralCurveF.toColorXYZ(boolean).
* CHANGE: Update the ChromaticSpectralCurveD and ChromaticSpectralCurveF classes to use the legacy versions of toColorXYZ(boolean).
2021-11-09 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add unit tests to the ArrayComponentOrderUnitTests class.
2021-11-08 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add unit tests to the Color3DUnitTests class.
* ADD: Add unit tests to the Color3FUnitTests class.
2021-11-06 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add the Color4FUnitTests class.
* ADD: Add the PackedIntComponentOrderUnitTests class.
* CHANGE: Update the toString() method of the Color4D and Color4F classes.
2021-11-05 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add unit tests to the Color3DUnitTests class.
* ADD: Add unit tests to the Color3FUnitTests class.
2021-11-04 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add the Color3DUnitTests class.
* ADD: Add unit tests to the Color3FUnitTests class.
2021-11-02 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add the ArrayComponentOrderUnitTests class.
* ADD: Add unit tests to the Color3FUnitTests class.
* CHANGE: Fix a bug in the method readRAsInt(byte[], int) of the ArrayComponentOrder enum. It returned a byte and not an int.
2021-11-01 Jörgen Lundgren <joergen.lundgren@macroing.org>
* ADD: Add unit tests to the Color3FUnitTests class.
2021-10-31 Jörgen Lundgren <joergen.lundgren@macroing.org>
* CHANGE: Update the default Filter2D class used in PixelImageD from MitchellFilter2D to GaussianFilter2D. MitchellFilter2D creates negative filter weights whereas GaussianFilter2D does not.
* CHANGE: Update the default Filter2F class used in PixelImageF from MitchellFilter2F to GaussianFilter2F. MitchellFilter2F creates negative filter weights whereas GaussianFilter2F does not.
* CHANGE: Fix a bug in AbstractCPURenderer.
2021-10-30 Jörgen Lundgren <joergen.lundgren@macroing.org>