aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Doan <daviddoan@Davids-MacBook-Pro-193.local>2023-12-13 02:08:36 -0500
committerDavid Doan <daviddoan@Davids-MacBook-Pro-193.local>2023-12-13 02:08:36 -0500
commit013eb9922e148aac7aa580b5987ae52ebac38b0d (patch)
tree722006745435d9b67676cda419e8be49273bf693
parent64b645799be4c67900a793685d460deeecf632b5 (diff)
parent9f0490eab74aafd867ba2a82d7180f89faedcbf7 (diff)
attempting camera movement
-rw-r--r--.DS_Storebin8196 -> 8196 bytes
-rw-r--r--.gitignore1
-rw-r--r--cmake-build-release/.ninja_depsbin272640 -> 358188 bytes
-rw-r--r--cmake-build-release/.ninja_log64
-rw-r--r--cmake-build-release/CMakeFiles/projects_ray_autogen.dir/ParseCache.txt124
-rw-r--r--cmake-build-release/Testing/Temporary/LastTest.log4
-rwxr-xr-xcmake-build-release/projects_raybin350681 -> 350729 bytes
-rw-r--r--scenefiles-4d/unit_sphere.json2
-rw-r--r--src/illuminate/illuminate.cpp272
-rw-r--r--src/mainwindow.cpp147
-rw-r--r--src/mainwindow.h13
-rw-r--r--src/raytracer/raytracer.cpp4
-rw-r--r--src/settings.h2
13 files changed, 256 insertions, 377 deletions
diff --git a/.DS_Store b/.DS_Store
index 03e9cdb..b746bb5 100644
--- a/.DS_Store
+++ b/.DS_Store
Binary files differ
diff --git a/.gitignore b/.gitignore
index bd664f2..bdc990e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -35,3 +35,4 @@
build/
.vscode/
.DS_Store
+**/.DS_Store
diff --git a/cmake-build-release/.ninja_deps b/cmake-build-release/.ninja_deps
index 1dd70c6..c77f947 100644
--- a/cmake-build-release/.ninja_deps
+++ b/cmake-build-release/.ninja_deps
Binary files differ
diff --git a/cmake-build-release/.ninja_log b/cmake-build-release/.ninja_log
index 0536d40..183942e 100644
--- a/cmake-build-release/.ninja_log
+++ b/cmake-build-release/.ninja_log
@@ -35,3 +35,67 @@
7 34 1702449311248367705 /Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/cmake-build-release/projects_ray_autogen/mocs_compilation.cpp 55fca76aac650d2f
38 1376 1702449312584870357 CMakeFiles/projects_ray.dir/src/accelerate/myqtconcurrent.cpp.o 202e3ecc659447bc
1376 1487 1702449312699120051 projects_ray 45fbfe11691b47a4
+7 422 1702449492387854000 projects_ray_autogen/timestamp 55fca76aac650d2f
+7 422 1702449492387854000 projects_ray_autogen/mocs_compilation.cpp 55fca76aac650d2f
+7 422 1702449492387854000 /Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/cmake-build-release/projects_ray_autogen/timestamp 55fca76aac650d2f
+7 422 1702449492387854000 /Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/cmake-build-release/projects_ray_autogen/mocs_compilation.cpp 55fca76aac650d2f
+423 643 1702449492612892188 CMakeFiles/projects_ray.dir/src/settings.cpp.o af593dd8c38f8a51
+424 766 1702449492735548848 CMakeFiles/projects_ray.dir/src/camera/camera.cpp.o ae395a7ba55f31e0
+424 1159 1702449493127944322 CMakeFiles/projects_ray.dir/src/intersect/normals.cpp.o dc9fbf174942b6a6
+422 1242 1702449493209947634 CMakeFiles/projects_ray.dir/projects_ray_autogen/mocs_compilation.cpp.o 1ad68196f2f117c1
+424 1250 1702449493216958161 CMakeFiles/projects_ray.dir/src/raytracer/raytracescene.cpp.o 4a558d7c0ab76c07
+423 1348 1702449493315022332 CMakeFiles/projects_ray.dir/src/mainwindow.cpp.o 8a94e9f3bb65e6ba
+423 1527 1702449493494801235 CMakeFiles/projects_ray.dir/src/main.cpp.o 94fb23c1a8b2c56c
+766 1547 1702449493516117104 CMakeFiles/projects_ray.dir/src/intersect/intersect.cpp.o d2b1593379e5dcda
+643 1572 1702449493540998673 CMakeFiles/projects_ray.dir/src/utils/sceneparser.cpp.o e6ffba0ae97d5386
+424 1786 1702449493752805712 CMakeFiles/projects_ray.dir/src/raytracer/raytracer.cpp.o 19b4d88ef40a6db1
+1159 1946 1702449493914545993 CMakeFiles/projects_ray.dir/src/illuminate/illuminate.cpp.o 36fb1526130d4f10
+1242 1987 1702449493956540906 CMakeFiles/projects_ray.dir/src/illuminate/shadow.cpp.o 976dc05943374640
+1251 2006 1702449493973524002 CMakeFiles/projects_ray.dir/src/illuminate/reflect.cpp.o 899987bee3f68062
+1348 2092 1702449494060410954 CMakeFiles/projects_ray.dir/src/texture/texture.cpp.o ee619672f0183b37
+1548 2226 1702449494194849367 CMakeFiles/projects_ray.dir/src/utils/raytracerutils.cpp.o 2155c0e78af65352
+1527 2227 1702449494195758020 CMakeFiles/projects_ray.dir/src/accelerate/myqthreads.cpp.o 1275de63f43c05f3
+1572 2267 1702449494236003666 CMakeFiles/projects_ray.dir/src/aliasing/supersample.cpp.o 856523a4b6d122f7
+1946 2293 1702449494263175911 CMakeFiles/projects_ray.dir/src/vec4ops/vec4ops.cpp.o d7fc6a03a78a11b2
+1786 2556 1702449494524724589 CMakeFiles/projects_ray.dir/src/aliasing/filter.cpp.o 9dee6d99978c214
+2007 2777 1702449494744944219 CMakeFiles/projects_ray.dir/src/accelerate/kdtree.cpp.o cef03b69fda1011b
+2227 2872 1702449494841801073 CMakeFiles/projects_ray.dir/src/vec4ops/rotations4d.cpp.o cad2614c6119bd5e
+2092 2899 1702449494868005082 CMakeFiles/projects_ray.dir/src/accelerate/bvh.cpp.o 58a267a27bf597a8
+1988 3376 1702449495343876471 CMakeFiles/projects_ray.dir/src/accelerate/myqtconcurrent.cpp.o 202e3ecc659447bc
+3376 3483 1702449495454463051 projects_ray 45fbfe11691b47a4
+7 35 1702449639360321520 projects_ray_autogen/timestamp 55fca76aac650d2f
+7 35 1702449639360321520 projects_ray_autogen/mocs_compilation.cpp 55fca76aac650d2f
+7 35 1702449639360321520 /Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/cmake-build-release/projects_ray_autogen/timestamp 55fca76aac650d2f
+7 35 1702449639360321520 /Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/cmake-build-release/projects_ray_autogen/mocs_compilation.cpp 55fca76aac650d2f
+39 710 1702449640031620512 CMakeFiles/projects_ray.dir/src/illuminate/illuminate.cpp.o 36fb1526130d4f10
+711 820 1702449640143696445 projects_ray 45fbfe11691b47a4
+7 35 1702449662726439983 projects_ray_autogen/timestamp 55fca76aac650d2f
+7 35 1702449662726439983 projects_ray_autogen/mocs_compilation.cpp 55fca76aac650d2f
+7 35 1702449662726439983 /Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/cmake-build-release/projects_ray_autogen/timestamp 55fca76aac650d2f
+7 35 1702449662726439983 /Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/cmake-build-release/projects_ray_autogen/mocs_compilation.cpp 55fca76aac650d2f
+38 733 1702449663421583266 CMakeFiles/projects_ray.dir/src/illuminate/illuminate.cpp.o 36fb1526130d4f10
+733 841 1702449663531466646 projects_ray 45fbfe11691b47a4
+7 34 1702449740842205717 projects_ray_autogen/timestamp 55fca76aac650d2f
+7 34 1702449740842205717 projects_ray_autogen/mocs_compilation.cpp 55fca76aac650d2f
+7 34 1702449740842205717 /Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/cmake-build-release/projects_ray_autogen/timestamp 55fca76aac650d2f
+7 34 1702449740842205717 /Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/cmake-build-release/projects_ray_autogen/mocs_compilation.cpp 55fca76aac650d2f
+38 721 1702449741525690079 CMakeFiles/projects_ray.dir/src/illuminate/illuminate.cpp.o 36fb1526130d4f10
+721 827 1702449741633075912 projects_ray 45fbfe11691b47a4
+7 35 1702450109364382786 projects_ray_autogen/timestamp 55fca76aac650d2f
+7 35 1702450109364382786 projects_ray_autogen/mocs_compilation.cpp 55fca76aac650d2f
+7 35 1702450109364382786 /Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/cmake-build-release/projects_ray_autogen/timestamp 55fca76aac650d2f
+7 35 1702450109364382786 /Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/cmake-build-release/projects_ray_autogen/mocs_compilation.cpp 55fca76aac650d2f
+39 712 1702450110037255256 CMakeFiles/projects_ray.dir/src/illuminate/illuminate.cpp.o 36fb1526130d4f10
+712 816 1702450110143402439 projects_ray 45fbfe11691b47a4
+7 33 1702450451414108535 projects_ray_autogen/timestamp 55fca76aac650d2f
+7 33 1702450451414108535 projects_ray_autogen/mocs_compilation.cpp 55fca76aac650d2f
+7 33 1702450451414108535 /Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/cmake-build-release/projects_ray_autogen/timestamp 55fca76aac650d2f
+7 33 1702450451414108535 /Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/cmake-build-release/projects_ray_autogen/mocs_compilation.cpp 55fca76aac650d2f
+37 706 1702450452082570638 CMakeFiles/projects_ray.dir/src/illuminate/illuminate.cpp.o 36fb1526130d4f10
+706 820 1702450452198733637 projects_ray 45fbfe11691b47a4
+6 34 1702450469770048434 projects_ray_autogen/timestamp 55fca76aac650d2f
+6 34 1702450469770048434 projects_ray_autogen/mocs_compilation.cpp 55fca76aac650d2f
+6 34 1702450469770048434 /Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/cmake-build-release/projects_ray_autogen/timestamp 55fca76aac650d2f
+6 34 1702450469770048434 /Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/cmake-build-release/projects_ray_autogen/mocs_compilation.cpp 55fca76aac650d2f
+38 725 1702450470457408233 CMakeFiles/projects_ray.dir/src/illuminate/illuminate.cpp.o 36fb1526130d4f10
+725 831 1702450470565593736 projects_ray 45fbfe11691b47a4
diff --git a/cmake-build-release/CMakeFiles/projects_ray_autogen.dir/ParseCache.txt b/cmake-build-release/CMakeFiles/projects_ray_autogen.dir/ParseCache.txt
index 0e68cf3..05a22d1 100644
--- a/cmake-build-release/CMakeFiles/projects_ray_autogen.dir/ParseCache.txt
+++ b/cmake-build-release/CMakeFiles/projects_ray_autogen.dir/ParseCache.txt
@@ -1,10 +1,26 @@
# Generated by CMake. Changes will be overwritten.
-/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/accelerate/myqtconcurrent.cpp
-/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/utils/rgba.h
-/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/accelerate/kdtree.h
-/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/raytracer/raytracer.h
+/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/utils/scenefilereader.cpp
+/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/aliasing/filter.cpp
+/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/vec4ops/rotations4d.cpp
+/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/vec4ops/transform4d.cpp
+/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/intersect/normals.cpp
+/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/texture/texture.cpp
+/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/utils/raytracerutils.cpp
+/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/raytracer/raytracer.cpp
+/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/accelerate/kdtree.cpp
+/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/settings.cpp
+/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/utils/sceneparser.cpp
+/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/illuminate/shadow.cpp
+/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/settings.h
+/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/mainwindow.cpp
+/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/intersect/intersect.cpp
+/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/raytracer/raytracescene.cpp
+/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/illuminate/reflect.cpp
+/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/main.cpp
+/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/illuminate/illuminate.cpp
+/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/mainwindow.h
mmc:Q_OBJECT
- mdp:/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/raytracer/raytracer.h
+ mdp:/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/mainwindow.h
mdp:/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/cmake-build-release/projects_ray_autogen/moc_predefs.h
mdp:/Library/Developer/CommandLineTools/SDKs/MacOSX13.1.sdk/usr/include/Availability.h
mdp:/Library/Developer/CommandLineTools/SDKs/MacOSX13.1.sdk/usr/include/AvailabilityInternal.h
@@ -457,6 +473,7 @@
mdp:/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/camera/camera.h
mdp:/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/raytracer/raytracer.h
mdp:/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/raytracer/raytracescene.h
+ mdp:/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/utils/aspectratiowidget/aspectratiowidget.hpp
mdp:/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/utils/rgba.h
mdp:/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/utils/scenedata.h
mdp:/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/utils/sceneparser.h
@@ -507,6 +524,7 @@
mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtCore.framework/Versions/A/Headers/qiterator.h
mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtCore.framework/Versions/A/Headers/qline.h
mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtCore.framework/Versions/A/Headers/qlist.h
+ mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtCore.framework/Versions/A/Headers/qlocale.h
mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtCore.framework/Versions/A/Headers/qlogging.h
mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtCore.framework/Versions/A/Headers/qmalloc.h
mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtCore.framework/Versions/A/Headers/qmap.h
@@ -527,6 +545,7 @@
mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtCore.framework/Versions/A/Headers/qprocessordetection.h
mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtCore.framework/Versions/A/Headers/qrect.h
mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtCore.framework/Versions/A/Headers/qrefcount.h
+ mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtCore.framework/Versions/A/Headers/qregularexpression.h
mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtCore.framework/Versions/A/Headers/qscopedpointer.h
mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtCore.framework/Versions/A/Headers/qscopeguard.h
mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtCore.framework/Versions/A/Headers/qset.h
@@ -599,21 +618,52 @@
mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtGui.framework/Versions/A/Headers/qtguiexports.h
mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtGui.framework/Versions/A/Headers/qtguiglobal.h
mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtGui.framework/Versions/A/Headers/qtransform.h
+ mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtGui.framework/Versions/A/Headers/qvalidator.h
mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtGui.framework/Versions/A/Headers/qwindowdefs.h
mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtOpenGLWidgets.framework/Versions/A/Headers/QOpenGLWidget
mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtOpenGLWidgets.framework/Versions/A/Headers/qopenglwidget.h
mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtOpenGLWidgets.framework/Versions/A/Headers/qtopenglwidgetsexports.h
mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtOpenGLWidgets.framework/Versions/A/Headers/qtopenglwidgetsglobal.h
+ mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/QBoxLayout
+ mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/QCheckBox
+ mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/QDoubleSpinBox
mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/QLabel
+ mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/QMainWindow
+ mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/QPushButton
+ mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/QSlider
+ mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/QSpinBox
mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/QWidget
+ mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/qabstractbutton.h
+ mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/qabstractslider.h
+ mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/qabstractspinbox.h
+ mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/qboxlayout.h
+ mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/qcheckbox.h
mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/qframe.h
+ mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/qgridlayout.h
mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/qlabel.h
+ mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/qlayout.h
+ mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/qlayoutitem.h
+ mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/qmainwindow.h
+ mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/qpushbutton.h
mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/qsizepolicy.h
+ mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/qslider.h
+ mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/qspinbox.h
+ mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/qtabwidget.h
mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/qtwidgets-config.h
mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/qtwidgetsexports.h
mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/qtwidgetsglobal.h
mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/qwidget.h
-/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/raytracer/raytracescene.h
+/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/camera/camera.cpp
+/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/aliasing/supersample.cpp
+/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/camera/camera.h
+/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/vec4ops/vec4ops.h
+/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/utils/scenefilereader.h
+/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/accelerate/myqthreads.cpp
+/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/vec4ops/vec4ops.cpp
+/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/accelerate/bvh.h
+/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/accelerate/bvh.cpp
+/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/utils/scenedata.h
+/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/utils/sceneparser.h
/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/utils/aspectratiowidget/aspectratiowidget.hpp
mmc:Q_OBJECT
mdp:/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/utils/aspectratiowidget/aspectratiowidget.hpp
@@ -1065,20 +1115,10 @@
mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/qtwidgetsexports.h
mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/qtwidgetsglobal.h
mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/qwidget.h
-/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/utils/sceneparser.h
-/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/utils/scenedata.h
-/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/accelerate/bvh.cpp
-/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/accelerate/bvh.h
-/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/vec4ops/vec4ops.cpp
-/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/accelerate/myqthreads.cpp
-/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/utils/scenefilereader.h
-/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/vec4ops/vec4ops.h
-/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/camera/camera.h
-/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/aliasing/supersample.cpp
-/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/camera/camera.cpp
-/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/mainwindow.h
+/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/raytracer/raytracescene.h
+/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/raytracer/raytracer.h
mmc:Q_OBJECT
- mdp:/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/mainwindow.h
+ mdp:/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/raytracer/raytracer.h
mdp:/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/cmake-build-release/projects_ray_autogen/moc_predefs.h
mdp:/Library/Developer/CommandLineTools/SDKs/MacOSX13.1.sdk/usr/include/Availability.h
mdp:/Library/Developer/CommandLineTools/SDKs/MacOSX13.1.sdk/usr/include/AvailabilityInternal.h
@@ -1531,7 +1571,6 @@
mdp:/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/camera/camera.h
mdp:/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/raytracer/raytracer.h
mdp:/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/raytracer/raytracescene.h
- mdp:/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/utils/aspectratiowidget/aspectratiowidget.hpp
mdp:/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/utils/rgba.h
mdp:/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/utils/scenedata.h
mdp:/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/utils/sceneparser.h
@@ -1582,7 +1621,6 @@
mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtCore.framework/Versions/A/Headers/qiterator.h
mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtCore.framework/Versions/A/Headers/qline.h
mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtCore.framework/Versions/A/Headers/qlist.h
- mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtCore.framework/Versions/A/Headers/qlocale.h
mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtCore.framework/Versions/A/Headers/qlogging.h
mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtCore.framework/Versions/A/Headers/qmalloc.h
mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtCore.framework/Versions/A/Headers/qmap.h
@@ -1603,7 +1641,6 @@
mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtCore.framework/Versions/A/Headers/qprocessordetection.h
mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtCore.framework/Versions/A/Headers/qrect.h
mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtCore.framework/Versions/A/Headers/qrefcount.h
- mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtCore.framework/Versions/A/Headers/qregularexpression.h
mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtCore.framework/Versions/A/Headers/qscopedpointer.h
mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtCore.framework/Versions/A/Headers/qscopeguard.h
mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtCore.framework/Versions/A/Headers/qset.h
@@ -1676,57 +1713,20 @@
mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtGui.framework/Versions/A/Headers/qtguiexports.h
mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtGui.framework/Versions/A/Headers/qtguiglobal.h
mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtGui.framework/Versions/A/Headers/qtransform.h
- mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtGui.framework/Versions/A/Headers/qvalidator.h
mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtGui.framework/Versions/A/Headers/qwindowdefs.h
mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtOpenGLWidgets.framework/Versions/A/Headers/QOpenGLWidget
mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtOpenGLWidgets.framework/Versions/A/Headers/qopenglwidget.h
mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtOpenGLWidgets.framework/Versions/A/Headers/qtopenglwidgetsexports.h
mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtOpenGLWidgets.framework/Versions/A/Headers/qtopenglwidgetsglobal.h
- mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/QBoxLayout
- mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/QCheckBox
- mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/QDoubleSpinBox
mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/QLabel
- mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/QMainWindow
- mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/QPushButton
- mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/QSlider
- mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/QSpinBox
mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/QWidget
- mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/qabstractbutton.h
- mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/qabstractslider.h
- mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/qabstractspinbox.h
- mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/qboxlayout.h
- mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/qcheckbox.h
mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/qframe.h
- mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/qgridlayout.h
mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/qlabel.h
- mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/qlayout.h
- mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/qlayoutitem.h
- mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/qmainwindow.h
- mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/qpushbutton.h
mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/qsizepolicy.h
- mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/qslider.h
- mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/qspinbox.h
- mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/qtabwidget.h
mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/qtwidgets-config.h
mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/qtwidgetsexports.h
mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/qtwidgetsglobal.h
mdp:/Users/sotech117/Qt/6.5.2/macos/lib/QtWidgets.framework/Versions/A/Headers/qwidget.h
-/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/illuminate/illuminate.cpp
-/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/main.cpp
-/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/intersect/intersect.cpp
-/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/illuminate/reflect.cpp
-/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/raytracer/raytracescene.cpp
-/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/mainwindow.cpp
-/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/settings.h
-/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/illuminate/shadow.cpp
-/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/utils/sceneparser.cpp
-/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/settings.cpp
-/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/accelerate/kdtree.cpp
-/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/raytracer/raytracer.cpp
-/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/utils/raytracerutils.cpp
-/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/texture/texture.cpp
-/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/intersect/normals.cpp
-/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/vec4ops/transform4d.cpp
-/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/vec4ops/rotations4d.cpp
-/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/aliasing/filter.cpp
-/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/utils/scenefilereader.cpp
+/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/accelerate/kdtree.h
+/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/utils/rgba.h
+/Users/sotech117/Documents/master/graphics/the-all-americans-in-cs1230/src/accelerate/myqtconcurrent.cpp
diff --git a/cmake-build-release/Testing/Temporary/LastTest.log b/cmake-build-release/Testing/Temporary/LastTest.log
index 6b7e648..a362618 100644
--- a/cmake-build-release/Testing/Temporary/LastTest.log
+++ b/cmake-build-release/Testing/Temporary/LastTest.log
@@ -1,3 +1,3 @@
-Start testing: Dec 13 01:35 EST
+Start testing: Dec 13 01:58 EST
----------------------------------------------------------
-End testing: Dec 13 01:35 EST
+End testing: Dec 13 01:58 EST
diff --git a/cmake-build-release/projects_ray b/cmake-build-release/projects_ray
index bbcd585..6df9ecc 100755
--- a/cmake-build-release/projects_ray
+++ b/cmake-build-release/projects_ray
Binary files differ
diff --git a/scenefiles-4d/unit_sphere.json b/scenefiles-4d/unit_sphere.json
index 5099526..0c5901f 100644
--- a/scenefiles-4d/unit_sphere.json
+++ b/scenefiles-4d/unit_sphere.json
@@ -21,7 +21,7 @@
{
"type": "directional",
"color": [1.0, 1.0, 1.0],
- "direction": [-3.0, -2.0, -1.0, -2.0]
+ "direction": [0.0, -1.0, 0.0, 0.0]
}
]
},
diff --git a/src/illuminate/illuminate.cpp b/src/illuminate/illuminate.cpp
index 39ecccb..641f06d 100644
--- a/src/illuminate/illuminate.cpp
+++ b/src/illuminate/illuminate.cpp
@@ -1,50 +1,7 @@
#include <iostream>
#include "raytracer/raytracer.h"
-glm::vec4 RayTracer::illuminationFromPointLight(
- const SceneLightData &light,
- glm::vec4 intersectionWorld,
- glm::vec4 normalWorld,
- glm::vec4 directionToCamera,
- const RenderShapeData &shape,
- const RayTraceScene &scene
- )
-{
- auto directionFromIntersectionToLight = light.pos - intersectionWorld;
- directionFromIntersectionToLight = glm::normalize(directionFromIntersectionToLight);
-
- // check if this light is blocked by an object
- auto distanceToLight = glm::distance(light.pos, intersectionWorld);
- bool isShadow = RayTracer::isShadowed(
- light.pos,
- distanceToLight,
- glm::vec4(directionFromIntersectionToLight),
- glm::vec4(intersectionWorld),
- scene);
- if (isShadow)
- {
- // if this is a shadow, then no light contribution
- return glm::vec4(0.f);
- }
-
- // calculate attenuation
- float c1 = light.function.x;
- float c2 = light.function.y;
- float c3 = light.function.z;
- float attenuation = std::min(1.f, 1.f / (c1 + distanceToLight * c2 + (distanceToLight * distanceToLight) * c3));
-
- return phong(
- light.color,
- attenuation,
- directionFromIntersectionToLight,
- directionToCamera,
- intersectionWorld,
- normalWorld,
- shape,
- scene);
-}
-
-glm::vec4 RayTracer::illuminationFromSpotLight(
+glm::vec4 RayTracer::illuminationFromDirectionalLight(
const SceneLightData &light,
glm::vec4 intersectionWorld,
glm::vec4 normalWorld,
@@ -53,108 +10,42 @@ glm::vec4 RayTracer::illuminationFromSpotLight(
const RayTraceScene &scene
)
{
- auto distance = glm::distance(light.pos, intersectionWorld);
+ // define direction and distance of directional light
+ auto directionFromIntersectionToLight = - light.dir;
+ directionFromIntersectionToLight = glm::normalize(directionFromIntersectionToLight);
+ float distanceToLight = FINF; // directional light infinitely far away
- // calculate the angle from the shape to the spot light
- auto directionFromIntersectionToLight = glm::normalize(light.pos - intersectionWorld);
+ float kd = scene.getGlobalData().kd;
+ float ks = scene.getGlobalData().ks;
+ auto material = shape.primitive.material;
- // calculate intensity, based on angle. apply falloff if necessary
- auto lightDirection = glm::normalize(light.dir);
- // invert the direction of the intersection to light for dot product to work correctly
- auto cosTheta = glm::dot(-directionFromIntersectionToLight, lightDirection);
- auto theta = glm::acos(cosTheta);
+ glm::vec4 illumination(0, 0, 0, 1.f);
- // determine intensity, based on location on spot cone
- glm::vec4 intensity;
- float inner = light.angle - light.penumbra;
- if (theta <= inner)
- {
- intensity = light.color;
- }
- else if
- (
- theta > inner
- && theta <= light.angle
- )
- {
- // inside the penumbra, need to apply falloff
- float falloff = -2 * std::pow(theta - inner, 3) / std::pow(light.penumbra, 3) +
- 3 * std::pow(theta - inner, 2) / std::pow(light.penumbra, 2);
- intensity = light.color * (1 - falloff);
- }
- else // theta > light.angle
- {
- return glm::vec4(0.f);
+ // calculate diffuse term
+ auto dotDiffuse = glm::dot(normalWorld, directionFromIntersectionToLight);
+ if (dotDiffuse < 0) {
+ return illumination;
}
+ // add the diffuse
+ auto diffuse = (kd * material.cDiffuse);
+ illumination += light.color * dotDiffuse * diffuse;
- // if the light is within the cone, see if it's a shadow
- auto distanceToLight = glm::distance(light.pos, intersectionWorld);
- bool isShadow = RayTracer::isShadowed(
- light.pos,
- distanceToLight,
- glm::vec4(directionFromIntersectionToLight),
- glm::vec4(intersectionWorld),
- scene);
- if (isShadow)
- {
- // if this is a shadow, then no light contribution
- return glm::vec4(0.f);
+ // if the obj has no specular, return
+ if (material.cSpecular == glm::vec4(0.f)) {
+ return illumination;
}
- // calculate attenuation
- float c1 = light.function.x;
- float c2 = light.function.y;
- float c3 = light.function.z;
- float attenuation = std::min(1.f, 1.f / (c1 + distance * c2 + (distance * distance) * c3));
+ // get the light reflection vector
+ auto reflectedDirOverNormal = glm::normalize(glm::reflect(directionFromIntersectionToLight, normalWorld));
- return phong(
- intensity,
- attenuation,
- directionFromIntersectionToLight,
- directionToCamera,
- intersectionWorld,
- normalWorld,
- shape,
- scene);
-}
-
-glm::vec4 RayTracer::illuminationFromDirectionalLight(
- const SceneLightData &light,
- glm::vec4 intersectionWorld,
- glm::vec4 normalWorld,
- glm::vec4 directionToCamera,
- const RenderShapeData &shape,
- const RayTraceScene &scene
-)
-{
- // define direction and distance of directional light
- auto directionFromIntersectionToLight = - light.dir;
- directionFromIntersectionToLight = glm::normalize(directionFromIntersectionToLight);
- float distanceToLight = FINF; // directional light infinitely far away
-
- // check if an object blocks ours
- bool isShadow = RayTracer::isShadowed(
- light.pos,
- distanceToLight,
- directionFromIntersectionToLight,
- glm::vec4(intersectionWorld),
- scene);
- if (isShadow)
- {
- // if this is a shadow, then no light contribution
- return glm::vec4(0.f);
+ // calculate specular term
+ auto dotSpecular = glm::dot(reflectedDirOverNormal, -directionToCamera);
+ if (dotSpecular > 0) {
+ auto toPow = std::pow(dotSpecular, material.shininess);
+ illumination += light.color * toPow * (ks * material.cSpecular);
}
- float attenuation = 1.f; // directional lights don't attenuate
- return phong(
- light.color,
- attenuation,
- directionFromIntersectionToLight,
- directionToCamera,
- intersectionWorld,
- normalWorld,
- shape,
- scene);
+ return illumination;
}
@@ -182,125 +73,24 @@ glm::vec4 RayTracer::illuminatePixel(
for (const SceneLightData &light : scene.getLights()) {
switch (light.type) {
case LightType::LIGHT_POINT:
- illumination +=
- illuminationFromPointLight(light, intersectionWorld, normalWorld, directionToCamera, shape, scene);
continue;
case LightType::LIGHT_DIRECTIONAL:
illumination +=
illuminationFromDirectionalLight(light, intersectionWorld, normalWorld, directionToCamera, shape, scene);
continue;
case LightType::LIGHT_SPOT:
- illumination +=
- illuminationFromSpotLight(light, intersectionWorld, normalWorld, directionToCamera, shape, scene);
continue;
case LightType::LIGHT_AREA:
- illumination +=
- illuminationFromAreaLight(light, intersectionWorld, normalWorld, directionToCamera, shape, scene);
continue;
default:
continue;
}
}
- auto incidentDir = -directionToCamera;
+ // auto incidentDir = -directionToCamera;
// recursive raytracing for the reflection and refraction (see reflect.cpp)
- illumination += refract(intersectionWorld, normalWorld, incidentDir, shape, scene, depth + 1);
- illumination += reflect(intersectionWorld, normalWorld, incidentDir, shape, scene, depth + 1);
+ // illumination += refract(intersectionWorld, normalWorld, incidentDir, shape, scene, depth + 1);
+ // illumination += reflect(intersectionWorld, normalWorld, incidentDir, shape, scene, depth + 1);
return illumination;
-}
-
-// helper function to handle the diffuse and specular terms
-// also handles the texture within that diffuse term
-glm::vec4 RayTracer::phong(
- glm::vec4 lightColor,
- float attenuation,
- glm::vec4 directionFromIntersectionToLight,
- glm::vec4 directionToCamera,
- glm::vec4 intersectionWorld,
- glm::vec4 normalWorld,
- const RenderShapeData &shape,
- const RayTraceScene &scene)
-{
- float kd = scene.getGlobalData().kd;
- float ks = scene.getGlobalData().ks;
- auto material = shape.primitive.material;
-
- glm::vec4 illumination(0.f);
-
- // calculate diffuse term
- auto dotDiffuse = glm::dot(normalWorld, directionFromIntersectionToLight);
- if (dotDiffuse > 0) // ensure not facing away
- {
- auto diffuse = (kd * material.cDiffuse);
- // commenting out texture stuff bc 4d textures??????
-// if (material.textureMap.isUsed)
-// {
-// glm::vec4 pObject = shape.inverseCTM * glm::vec4(intersectionWorld, 1.f);
-// diffuse = interpolateTexture(pObject, shape, diffuse);
-// }
- illumination += (attenuation * lightColor) * dotDiffuse * diffuse;
- }
-
- // add specular term
- auto reflectedDirOverNormal =
- 2 * glm::dot(directionFromIntersectionToLight, normalWorld) * normalWorld -
- directionFromIntersectionToLight;
- auto dotSpecular = glm::dot(reflectedDirOverNormal, directionToCamera);
- auto toPow = std::pow(dotSpecular, material.shininess);
- if (dotSpecular > 0) {
- illumination += (attenuation * lightColor) * toPow * (ks * material.cSpecular);
- }
-
- return illumination;
-}
-
-// EXTRA CREDIT -> AREA LIGHT
-glm::vec4 RayTracer::illuminationFromAreaLight(
- const SceneLightData &light,
- glm::vec4 intersectionWorld,
- glm::vec4 normalWorld,
- glm::vec4 directionToCamera,
- const RenderShapeData &shape,
- const RayTraceScene &scene
-) {
- // select a random point within the light's height and width
- float width = light.width;
- float height = light.height;
- float x = ((float) rand() / (float) RAND_MAX) * width - width / 2.f;
- float y = ((float) rand() / (float) RAND_MAX) * height - height / 2.f;
- glm::vec4 lightPosition = light.pos + glm::vec4(x, y, 0.f, 0.f);
-
- auto directionFromIntersectionToLight = lightPosition - intersectionWorld;
- directionFromIntersectionToLight = glm::normalize(directionFromIntersectionToLight);
-
- // check if this light is blocked by an object
- auto distanceToLight = glm::distance(lightPosition, intersectionWorld);
- bool isShadow = RayTracer::isShadowed(
- lightPosition,
- distanceToLight,
- glm::vec4(directionFromIntersectionToLight),
- glm::vec4(intersectionWorld),
- scene);
- if (isShadow)
- {
- // if this is a shadow, then show a ray to a random point in the light
- return glm::vec4(0.f);
- }
-
- // calculate attenuation
- float c1 = light.function.x;
- float c2 = light.function.y;
- float c3 = light.function.z;
- float attenuation = std::min(1.f, 1.f / (c1 + distanceToLight * c2 + (distanceToLight * distanceToLight) * c3));
-
- return phong(
- light.color,
- attenuation,
- directionFromIntersectionToLight,
- directionToCamera,
- intersectionWorld,
- normalWorld,
- shape,
- scene);
-}
+} \ No newline at end of file
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
index ef15b61..973d5a7 100644
--- a/src/mainwindow.cpp
+++ b/src/mainwindow.cpp
@@ -47,9 +47,13 @@ void MainWindow::initialize() {
w_label->setText("W value:");
w_label->setFont(font);
- QLabel *rotation_label = new QLabel(); // Rotation label
- rotation_label->setText("Time value:");
- rotation_label->setFont(font);
+ QLabel *curr_time_label = new QLabel(); // Current Time label
+ curr_time_label->setText("Curr Time: 0");
+ curr_time_label->setFont(font);
+
+ QLabel *max_time_label = new QLabel(); // Max Time label
+ max_time_label->setText("Max Time:");
+ max_time_label->setFont(font);
// Create file uploader for scene file
@@ -59,7 +63,11 @@ void MainWindow::initialize() {
saveImage = new QPushButton();
saveImage->setText(QStringLiteral("Save image"));
- QGroupBox *xyLayout = new QGroupBox(); // horizonal w slider alignment
+ // Select directory for bulk output
+ bulkRender = new QPushButton();
+ bulkRender->setText(QStringLiteral("Bulk Render"));
+
+ QGroupBox *xyLayout = new QGroupBox(); // horizontal w slider alignment
QHBoxLayout *lxy = new QHBoxLayout();
xySlider = new QSlider(Qt::Orientation::Horizontal); // XY value slider
@@ -79,7 +87,7 @@ void MainWindow::initialize() {
xyLayout->setLayout(lxy);
// XZ Slider
- QGroupBox *xzLayout = new QGroupBox(); // horizonal w slider alignment
+ QGroupBox *xzLayout = new QGroupBox(); // horizontal w slider alignment
QHBoxLayout *lxz = new QHBoxLayout();
xzSlider = new QSlider(Qt::Orientation::Horizontal); // XY value slider
@@ -99,7 +107,7 @@ void MainWindow::initialize() {
xzLayout->setLayout(lxz);
// XW Slider
- QGroupBox *xwLayout = new QGroupBox(); // horizonal w slider alignment
+ QGroupBox *xwLayout = new QGroupBox(); // horizontal w slider alignment
QHBoxLayout *lxw = new QHBoxLayout();
xwSlider = new QSlider(Qt::Orientation::Horizontal); // XY value slider
@@ -119,7 +127,7 @@ void MainWindow::initialize() {
xwLayout->setLayout(lxw);
// YZ Slider
- QGroupBox *yzLayout = new QGroupBox(); // horizonal w slider alignment
+ QGroupBox *yzLayout = new QGroupBox(); // horizontal w slider alignment
QHBoxLayout *lyz = new QHBoxLayout();
yzSlider = new QSlider(Qt::Orientation::Horizontal); // XY value slider
@@ -139,7 +147,7 @@ void MainWindow::initialize() {
yzLayout->setLayout(lyz);
// YW Slider
- QGroupBox *ywLayout = new QGroupBox(); // horizonal w slider alignment
+ QGroupBox *ywLayout = new QGroupBox(); // horizontal w slider alignment
QHBoxLayout *lyw = new QHBoxLayout();
ywSlider = new QSlider(Qt::Orientation::Horizontal); // XY value slider
@@ -159,7 +167,7 @@ void MainWindow::initialize() {
ywLayout->setLayout(lyw);
// ZW Slider
- QGroupBox *zwLayout = new QGroupBox(); // horizonal w slider alignment
+ QGroupBox *zwLayout = new QGroupBox(); // horizontal w slider alignment
QHBoxLayout *lzw = new QHBoxLayout();
zwSlider = new QSlider(Qt::Orientation::Horizontal); // XY value slider
@@ -178,37 +186,37 @@ void MainWindow::initialize() {
lzw->addWidget(zwBox);
zwLayout->setLayout(lzw);
- // Rotation Slider
- QGroupBox *rotationLayout = new QGroupBox(); // horizonal w slider alignment
- QHBoxLayout *lrotation = new QHBoxLayout();
+ // Max Time Slider
+ QGroupBox *maxTimeGroupBox = new QGroupBox(); // horizontal
+ QHBoxLayout *maxTimeLayout = new QHBoxLayout();
- rotationSlider = new QSlider(Qt::Orientation::Horizontal); // XY value slider
- rotationSlider->setTickInterval(1);
- rotationSlider->setMinimum(0);
- rotationSlider->setMaximum(18000);
- rotationSlider->setValue(1);
+ maxTimeSlider = new QSlider(Qt::Orientation::Horizontal);
+ maxTimeSlider->setTickInterval(1);
+ maxTimeSlider->setMinimum(0);
+ maxTimeSlider->setMaximum(18000);
+ maxTimeSlider->setValue(1);
- rotationBox = new QDoubleSpinBox();
- rotationBox->setMinimum(0.0f);
- rotationBox->setMaximum(600.f);
- rotationBox->setSingleStep(1.f);
- rotationBox->setValue(settings.rotation);
+ maxTimeSpinBox = new QSpinBox();
+ maxTimeSpinBox->setMinimum(0);
+ maxTimeSpinBox->setMaximum(600);
+ maxTimeSpinBox->setSingleStep(1);
+ maxTimeSpinBox->setValue(settings.rotation);
- lrotation->addWidget(rotationSlider);
- lrotation->addWidget(rotationBox);
- rotationLayout->setLayout(lrotation);
+ maxTimeLayout->addWidget(maxTimeSlider);
+ maxTimeLayout->addWidget(maxTimeSpinBox);
+ maxTimeGroupBox->setLayout(maxTimeLayout);
- // checkbox
- rotateNegative = new QCheckBox();
- rotateNegative->setText(QStringLiteral("Reverse Rotation"));
- rotateNegative->setChecked(false);
+ // // checkbox
+ // rotateNegative = new QCheckBox();
+ // rotateNegative->setText(QStringLiteral("Reverse Rotation"));
+ // rotateNegative->setChecked(false);
// w Slider
- QGroupBox *wLayout = new QGroupBox(); // horizonal w slider alignment
+ QGroupBox *wLayout = new QGroupBox(); // horizontal w slider alignment
QHBoxLayout *lw = new QHBoxLayout();
wSlider = new QSlider(Qt::Orientation::Horizontal); // XY value slider
- wSlider->setTickInterval(0.01);
+ wSlider->setTickInterval(1);
wSlider->setMinimum(-10000);
wSlider->setMaximum(10000);
wSlider->setValue(0);
@@ -240,11 +248,12 @@ void MainWindow::initialize() {
vLayout->addWidget(zwLayout);
vLayout->addWidget(w_label);
vLayout->addWidget(wLayout);
- vLayout->addWidget(rotation_label);
- vLayout->addWidget(rotationLayout);
-
- vLayout->addWidget(rotateNegative);
+ vLayout->addWidget(curr_time_label);
+ vLayout->addWidget(max_time_label);
+ vLayout->addWidget(maxTimeGroupBox);
+ vLayout->addWidget(bulkRender);
+ // vLayout->addWidget(rotateNegative);
connectUIElements();
@@ -259,13 +268,14 @@ void MainWindow::finish() {
void MainWindow::connectUIElements() {
connectUploadFile();
connectSaveImage();
+ connectBulkRender();
connectxy();
connectxz();
connectxw();
connectyz();
connectyw();
connectzw();
- connectRotationSlider();
+ connectMaxTimeSlider();
connectNegativeRotation();
connect(rayTracer, &RayTracer::xyRotationChanged, this, &MainWindow::updateXySlider);
connect(rayTracer, &RayTracer::xzRotationChanged, this, &MainWindow::updateXzSlider);
@@ -286,6 +296,10 @@ void MainWindow::connectSaveImage() {
connect(saveImage, &QPushButton::clicked, this, &MainWindow::onSaveImage);
}
+void MainWindow::connectBulkRender() {
+ connect(bulkRender, &QPushButton::clicked, this, &MainWindow::onBulkRender);
+}
+
void MainWindow::connectxy() {
connect(xySlider, &QSlider::valueChanged, this, &MainWindow::onValChangexySlider);
connect(xyBox, static_cast<void(QDoubleSpinBox::*)(double)>(&QDoubleSpinBox::valueChanged),
@@ -322,10 +336,10 @@ void MainWindow::connectzw() {
this, &MainWindow::onValChangezwBox);
}
-void MainWindow::connectRotationSlider() {
- connect(rotationSlider, &QSlider::valueChanged, this, &MainWindow::onValChangeRotationSlider);
- connect(rotationBox, static_cast<void(QDoubleSpinBox::*)(double)>(&QDoubleSpinBox::valueChanged),
- this, &MainWindow::onValChangeRotationBox);
+void MainWindow::connectMaxTimeSlider() {
+ connect(maxTimeSlider, &QSlider::valueChanged, this, &MainWindow::onValChangeMaxTimeSlider);
+ connect(maxTimeSpinBox, static_cast<void(QSpinBox::*)(int)>(&QSpinBox::valueChanged),
+ this, &MainWindow::onValChangeMaxTimeBox);
}
void MainWindow::connectNegativeRotation() {
@@ -361,24 +375,31 @@ void MainWindow::onUploadFile() {
}
void MainWindow::onSaveImage() {
- if (settings.sceneFilePath.empty()) {
- std::cout << "No scene file loaded." << std::endl;
- return;
- }
+ // if (settings.sceneFilePath.empty()) {
+ // std::cout << "No scene file loaded." << std::endl;
+ // return;
+ // }
std::string sceneName = settings.sceneFilePath.substr(0, settings.sceneFilePath.find_last_of("."));
sceneName = sceneName.substr(sceneName.find_last_of("/")+1);
QString filePath = QFileDialog::getSaveFileName(this, tr("Save Image"),
QDir::currentPath()
.append(QDir::separator())
- .append("student_outputs")
- .append(QDir::separator())
- .append("lights-camera")
- .append(QDir::separator())
- .append("required")
- .append(QDir::separator())
.append(sceneName), tr("Image Files (*.png)"));
std::cout << "Saving image to: \"" << filePath.toStdString() << "\"." << std::endl;
-// realtime->saveViewportImage(filePath.toStdString());
+ rayTracer->saveViewportImage(filePath.toStdString());
+}
+
+void MainWindow::onBulkRender() {
+ // if (settings.sceneFilePath.empty()) {
+ // std::cout << "No scene file loaded." << std::endl;
+ // return;
+ // }
+ std::string sceneName = settings.sceneFilePath.substr(0, settings.sceneFilePath.find_last_of("."));
+ sceneName = sceneName.substr(sceneName.find_last_of("/")+1);
+ QString folderPath = QFileDialog::getExistingDirectory(this, tr("Select Directory for Bulk Render"),
+ QDir::currentPath());
+ std::cout << "Setting bulk output path to: \"" << folderPath.toStdString() << "\"." << std::endl;
+ settings.bulkOutputFolderPath = folderPath.toStdString();
}
void MainWindow::onValChangexySlider(int newValue) {
@@ -465,18 +486,18 @@ void MainWindow::onValChangezwBox(double newValue) {
// rayTracer->settingsChanged(imageLabel);
}
-void MainWindow::onValChangeRotationSlider(int newValue) {
+void MainWindow::onValChangeMaxTimeSlider(int newValue) {
//wSlider->setValue(newValue);
- rotationBox->setValue(newValue/100.f);
- settings.rotation = rotationBox->value();
- // rayTracer->settingsChanged(imageLabel);
+ maxTimeSpinBox->setValue(newValue/100.f);
+ settings.maxTime = maxTimeSpinBox->value();
+ rayTracer->settingsChanged(imageLabel);
}
-void MainWindow::onValChangeRotationBox(double newValue) {
- rotationSlider->setValue(int(newValue*100.f));
+void MainWindow::onValChangeMaxTimeBox(double newValue) {
+ maxTimeSlider->setValue(int(newValue*100.f));
//wBox->setValue(newValue);
- settings.rotation = rotationBox->value();
- // rayTracer->settingsChanged(imageLabel);
+ settings.rotation = maxTimeSpinBox->value();
+ rayTracer->settingsChanged(imageLabel);
}
void MainWindow::onValChangeWSlider(int newValue) {
@@ -537,11 +558,11 @@ void MainWindow::updateZwSlider(double value) {
}
void MainWindow::updateRotationSlider(float value) {
- rotationSlider->setValue(int(value*100.f));
- rotationBox->setValue(value);
- // rayTracer->settingsChanged(imageLabel);
+ maxTimeSlider->setValue(int(value*100.f));
+ maxTimeSpinBox->setValue(value);
+ rayTracer->settingsChanged(imageLabel);
}
void MainWindow::updateCameraPosition() {
rayTracer->wSliderChanged(imageLabel);
-} \ No newline at end of file
+}
diff --git a/src/mainwindow.h b/src/mainwindow.h
index 34656e2..06f27be 100644
--- a/src/mainwindow.h
+++ b/src/mainwindow.h
@@ -23,13 +23,14 @@ private:
void connectUIElements();
void connectUploadFile();
void connectSaveImage();
+ void connectBulkRender();
void connectxy();
void connectxz();
void connectxw();
void connectyz();
void connectyw();
void connectzw();
- void connectRotationSlider();
+ void connectMaxTimeSlider();
void connectNegativeRotation();
void connectW();
@@ -37,6 +38,7 @@ private:
AspectRatioWidget *aspectRatioWidget;
QPushButton *uploadFile;
QPushButton *saveImage;
+ QPushButton *bulkRender;
QSlider *xySlider;
QDoubleSpinBox *xyBox;
QSlider *xzSlider;
@@ -49,8 +51,8 @@ private:
QDoubleSpinBox *ywBox;
QSlider *zwSlider;
QDoubleSpinBox *zwBox;
- QSlider *rotationSlider;
- QDoubleSpinBox *rotationBox;
+ QSlider *maxTimeSlider;
+ QSpinBox *maxTimeSpinBox;
QCheckBox *rotateNegative;
QSlider *wSlider;
QDoubleSpinBox *wBox;
@@ -59,6 +61,7 @@ private:
private slots:
void onUploadFile();
void onSaveImage();
+ void onBulkRender();
void onValChangexySlider(int newValue);
void onValChangexyBox(double newValue);
void onValChangexzSlider(int newValue);
@@ -71,8 +74,8 @@ private slots:
void onValChangeywBox(double newValue);
void onValChangezwSlider(int newValue);
void onValChangezwBox(double newValue);
- void onValChangeRotationSlider(int newValue);
- void onValChangeRotationBox(double newValue);
+ void onValChangeMaxTimeSlider(int newValue);
+ void onValChangeMaxTimeBox(double newValue);
void onRotateNegative();
void updateXySlider(double newValue);
void updateXzSlider(double newValue);
diff --git a/src/raytracer/raytracer.cpp b/src/raytracer/raytracer.cpp
index 4d1e14a..d6fa14f 100644
--- a/src/raytracer/raytracer.cpp
+++ b/src/raytracer/raytracer.cpp
@@ -69,9 +69,9 @@ void RayTracer::render(RGBA *imageData, const RayTraceScene &scene) {
}
}
- if (settings.bulkOutputFilePath.size() > 0) { // means we are doing bulk rendering
+ if (settings.bulkOutputFolderPath.size() > 0) { // means we are doing bulk rendering
// save the image to the bulk directory
- std::string filePath = settings.bulkOutputFilePath + QDir::separator().toLatin1() + std::to_string(settings.currentTime) + ".png";
+ std::string filePath = settings.bulkOutputFolderPath + QDir::separator().toLatin1() + std::to_string(settings.currentTime) + ".png";
saveViewportImage(filePath);
if (settings.currentTime < settings.maxTime) { // still more to render
// render the next frame
diff --git a/src/settings.h b/src/settings.h
index 0865e44..32c6484 100644
--- a/src/settings.h
+++ b/src/settings.h
@@ -17,7 +17,7 @@ struct Settings {
float w = 0.f;
int currentTime = 0;
int maxTime = 0;
- std::string bulkOutputFilePath;
+ std::string bulkOutputFolderPath;
};