aboutsummaryrefslogtreecommitdiff
path: root/src/main.cpp
blob: 29828d8be4fd620bcb7335d3d5ceb20bed61d3a1 (plain)
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
#include <QCoreApplication>
#include <QCommandLineParser>
#include <QImage>
#include <QtCore>
#include <QApplication>
#include <QScreen>
#include <iostream>
#include <QSettings>
#include <QSurfaceFormat>

#include <iostream>
#include "utils/sceneparser.h"
#include "raytracer/raytracer.h"
#include "raytracer/raytracescene.h"

#include "mainwindow.h"

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);

    QSurfaceFormat fmt;
    fmt.setVersion(4, 1);
    fmt.setProfile(QSurfaceFormat::CoreProfile);
    QSurfaceFormat::setDefaultFormat(fmt);

    MainWindow w;
    w.initialize();
    w.resize(800, 600);
    w.show();
    int return_val = a.exec();
    w.finish();
    return return_val;
}