aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/intersect/normals.cpp12
-rw-r--r--src/main.cpp76
-rw-r--r--src/raytracer/raytracer.cpp102
3 files changed, 12 insertions, 178 deletions
diff --git a/src/intersect/normals.cpp b/src/intersect/normals.cpp
index a5ffdbe..50d4af5 100644
--- a/src/intersect/normals.cpp
+++ b/src/intersect/normals.cpp
@@ -74,6 +74,15 @@ glm::vec3 getCubeNormal(
return glm::vec3(0.f);
}
+glm::vec4 getSphereNormal(
+ glm::vec4 intersectPointObject)
+{
+ return {2.f * intersectPointObject.x,
+ 2.f * intersectPointObject.y,
+ 2.f * intersectPointObject.z,
+ 2.f * intersectPointObject.w};
+}
+
glm::vec3 RayTracer::getNormal(
glm::vec4 intersectPointObject,
const RenderShapeData& shape,
@@ -83,7 +92,8 @@ glm::vec3 RayTracer::getNormal(
{
case PrimitiveType::PRIMITIVE_SPHERE:
// gradient in object space for sphere is 2x, 2y, 2z
- return 2.f * intersectPointObject;
+ // return 2.f * intersectPointObject;
+ return getSphereNormal(intersectPointObject);
case PrimitiveType::PRIMITIVE_CONE:
return getConeNormal(intersectPointObject);
case PrimitiveType::PRIMITIVE_CYLINDER:
diff --git a/src/main.cpp b/src/main.cpp
index 29828d8..36b21ff 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -17,85 +17,11 @@
int main(int argc, char *argv[])
{
- // QCoreApplication a(argc, argv);
-
- // QCommandLineParser parser;
- // parser.addHelpOption();
- // parser.addPositionalArgument("config", "Path of the config file.");
- // parser.process(a);
-
- // auto positionalArgs = parser.positionalArguments();
- // if (positionalArgs.size() != 1) {
- // std::cerr << "Not enough arguments. Please provide a path to a config file (.ini) as a command-line argument." << std::endl;
- // a.exit(1);
- // return 1;
- // }
-
- // QSettings settings( positionalArgs[0], QSettings::IniFormat );
- // QString iScenePath = settings.value("IO/scene").toString();
- // QString oImagePath = settings.value("IO/output").toString();
-
- // RenderData metaData;
- // bool success = SceneParser::parse(iScenePath.toStdString(), metaData);
-
- // if (!success) {
- // std::cerr << "Error loading scene: \"" << iScenePath.toStdString() << "\"" << std::endl;
- // a.exit(1);
- // return 1;
- // }
-
- // // Raytracing-relevant code starts here
-
- // int width = settings.value("Canvas/width").toInt();
- // int height = settings.value("Canvas/height").toInt();
-
- // // Extracting data pointer from Qt's image API
- // QImage image = QImage(width, height, QImage::Format_RGBX8888);
- // image.fill(Qt::black);
- // RGBA *data = reinterpret_cast<RGBA *>(image.bits());
-
- // // Setting up the raytracer
- // Config rtConfig{};
- // rtConfig.enableShadow = settings.value("Feature/shadows").toBool();
- // rtConfig.enableReflection = settings.value("Feature/reflect").toBool();
- // rtConfig.enableRefraction = settings.value("Feature/refract").toBool();
- // rtConfig.enableTextureMap = settings.value("Feature/texture").toBool();
- // rtConfig.enableTextureFilter = settings.value("Feature/texture-filter").toBool();
- // rtConfig.enableParallelism = settings.value("Feature/parallel").toBool();
- // rtConfig.enableSuperSample = settings.value("Feature/super-sample").toBool();
- // rtConfig.enableAntiAliasing = settings.value("Feature/post-process").toBool();
- // rtConfig.enableAcceleration = settings.value("Feature/acceleration").toBool();
- // rtConfig.enableDepthOfField = settings.value("Feature/depthoffield").toBool();
- // rtConfig.maxRecursiveDepth = settings.value("Settings/maximum-recursive-depth").toInt();
- // rtConfig.onlyRenderNormals = settings.value("Settings/only-render-normals").toBool();
-
- // RayTracer raytracer{ rtConfig };
-
- // RayTraceScene rtScene{ width, height, metaData };
-
- // // Note that we're passing `data` as a pointer (to its first element)
- // // Recall from Lab 1 that you can access its elements like this: `data[i]`
- // raytracer.render(data, rtScene);
-
- // // Saving the image
- // success = image.save(oImagePath);
- // if (!success) {
- // success = image.save(oImagePath, "PNG");
- // }
- // if (success) {
- // std::cout << "Saved rendered image to \"" << oImagePath.toStdString() << "\"" << std::endl;
- // } else {
- // std::cerr << "Error: failed to save image to \"" << oImagePath.toStdString() << "\"" << std::endl;
- // }
-
- // a.exit();
- // return 0;
-
QApplication a(argc, argv);
QCoreApplication::setApplicationName("The All Americans 4D Raytracer");
QCoreApplication::setOrganizationName("CS 1230/2230");
- // QCoreApplication::setApplicationVersion(QT_VERSION_STR);
+ QCoreApplication::setApplicationVersion(QT_VERSION_STR);
QSurfaceFormat fmt;
fmt.setVersion(4, 1);
diff --git a/src/raytracer/raytracer.cpp b/src/raytracer/raytracer.cpp
index 435af74..be31b8a 100644
--- a/src/raytracer/raytracer.cpp
+++ b/src/raytracer/raytracer.cpp
@@ -8,10 +8,6 @@
#include <QKeyEvent>
#include <QTimerEvent>
-//struct Ray {
-// glm::vec3 p;
-// glm::vec3 d;
-//};
// RayTracer::RayTracer(const Config &config) : m_config(config) {}
RayTracer::RayTracer(QWidget *parent) : QWidget(parent) {
@@ -25,8 +21,6 @@ RayTracer::RayTracer(QWidget *parent) : QWidget(parent) {
m_keyMap[Qt::Key_5] = false;
m_keyMap[Qt::Key_6] = false;
- // m_timer = startTimer(1000/60);
- // m_elapsedTimer.start();
}
void RayTracer::render(RGBA *imageData, const RayTraceScene &scene) {
@@ -185,9 +179,6 @@ void RayTracer::sceneChanged(QLabel* imageLabel) {
image.fill(Qt::black);
RGBA *data = reinterpret_cast<RGBA *>(image.bits());
-
-
- // RayTracer raytracer{ rtConfig };
RayTraceScene rtScene{ width, height, m_metaData };
this->render(data, rtScene);
@@ -273,102 +264,9 @@ void RayTracer::keyPressEvent(QKeyEvent *event) {
}
emit zwRotationChanged(settings.zw);
}
-
-
- // std::cout << "key done" << std::endl;
-
- // int width = 576;
- // int height = 432;
-
- // QImage image = QImage(width, height, QImage::Format_RGBX8888);
- // image.fill(Qt::black);
- // RGBA *data = reinterpret_cast<RGBA *>(image.bits());
-
- // RayTraceScene rtScene{ width, height, m_metaData };
- // this->render(data, rtScene);
-
- // std::cout << "done rendering" << std::endl;
-
- // QImage flippedImage = image.mirrored(false, false);
- // flippedImage = flippedImage.scaled(2*width, 2*height, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
- // m_imageLabel->setPixmap(QPixmap::fromImage(flippedImage));
}
void RayTracer::keyReleaseEvent(QKeyEvent *event) {
m_keyMap[Qt::Key(event->key())] = false;
}
-// void RayTracer::timerEvent(QTimerEvent *event) {
-// int elapsedms = m_elapsedTimer.elapsed();
-// float deltaTime = elapsedms * 0.001f;
-// m_elapsedTimer.restart();
-
-// if (m_keyMap[Qt::Key_1]) {
-// if (settings.negative) {
-// settings.xy -= settings.rotation;
-// } else {
-// settings.xy += settings.rotation;
-// }
-// emit xyRotationChanged(settings.xy);
-// }
-
-// if (m_keyMap[Qt::Key_2]) {
-// if (settings.negative) {
-// settings.xz -= settings.rotation;
-// } else {
-// settings.xz += settings.rotation;
-// }
-// emit xzRotationChanged(settings.xz);
-// }
-
-// if (m_keyMap[Qt::Key_3]) {
-// if (settings.negative) {
-// settings.xw -= settings.rotation;
-// } else {
-// settings.xw += settings.rotation;
-// }
-// emit xwRotationChanged(settings.xw);
-// }
-
-// if (m_keyMap[Qt::Key_4]) {
-// if (settings.negative) {
-// settings.yz -= settings.rotation;
-// } else {
-// settings.yz += settings.rotation;
-// }
-// emit yzRotationChanged(settings.yz);
-// }
-
-// if (m_keyMap[Qt::Key_5]) {
-// if (settings.negative) {
-// settings.yw -= settings.rotation;
-// } else {
-// settings.yw += settings.rotation;
-// }
-// emit ywRotationChanged(settings.yw);
-// }
-
-// if (m_keyMap[Qt::Key_6]) {
-// if (settings.negative) {
-// settings.zw -= settings.rotation;
-// } else {
-// settings.zw += settings.rotation;
-// }
-// emit zwRotationChanged(settings.zw);
-// }
-
-// int width = 576;
-// int height = 432;
-
-// QImage image = QImage(width, height, QImage::Format_RGBX8888);
-// image.fill(Qt::black);
-// RGBA *data = reinterpret_cast<RGBA *>(image.bits());
-
-// RayTraceScene rtScene{ width, height, m_metaData };
-// this->render(data, rtScene);
-
-// QImage flippedImage = image.mirrored(false, false);
-// flippedImage = flippedImage.scaled(2*width, 2*height, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
-// m_imageLabel->setPixmap(QPixmap::fromImage(flippedImage));
-// }
-