rough outline
This commit is contained in:
+8
-15
@@ -4,23 +4,16 @@
|
||||
|
||||
int main()
|
||||
{
|
||||
BVH bvh;
|
||||
bvh.addModels(ModelLoader::loadModel("../cube.fbx"), glm::mat4());
|
||||
bvh.generate();
|
||||
Window w(1920, 1080);
|
||||
std::vector<unsigned char> texture(1920 * 1080 * 3);
|
||||
for (int j = 100; j < 200; ++j)
|
||||
{
|
||||
for (int i = 0; i < 1920; ++i)
|
||||
{
|
||||
texture[(j * 1920 + i) * 3] = 0xff;
|
||||
texture[(j * 1920 + i) * 3 + 1] = 0xff;
|
||||
texture[(j * 1920 + i) * 3 + 2] = 0x0;
|
||||
}
|
||||
}
|
||||
Scene scene;
|
||||
Window window;
|
||||
while (true)
|
||||
{
|
||||
w.update(texture);
|
||||
// IMGUI....
|
||||
if (Imgui.Button())
|
||||
{
|
||||
scene.render();
|
||||
}
|
||||
window.update(scene.getImage());
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
+22
-10
@@ -6,17 +6,29 @@ Scene::~Scene() {}
|
||||
|
||||
void Scene::render(int width, int height, int numSamples)
|
||||
{
|
||||
image.clear();
|
||||
accumulator.clear();
|
||||
image.resize(width * height * 3);
|
||||
accumulator.resize(width * height * 3);
|
||||
for (int samp = 0; samp < numSamples; ++samp)
|
||||
{
|
||||
for (int w = 0; w < width; ++w)
|
||||
worker = std::thread(
|
||||
[&]()
|
||||
{
|
||||
for (int h = 0; h < height; ++h)
|
||||
image.clear();
|
||||
accumulator.clear();
|
||||
image.resize(width * height * 3);
|
||||
for (int samp = 0; samp < numSamples; ++samp)
|
||||
{
|
||||
std::function<void()> job = [&]()
|
||||
{
|
||||
std::vector<unsigned char> localAccumulator(width * height * 3);
|
||||
for (int w = 0; w < width; ++w)
|
||||
{
|
||||
for (int h = 0; h < height; ++h)
|
||||
{
|
||||
if (cancel)
|
||||
return;
|
||||
bvh.traceRay();
|
||||
}
|
||||
}
|
||||
// lock image
|
||||
// add result to image
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -3,12 +3,24 @@
|
||||
#include "window/Window.h"
|
||||
#include "util/Camera.h"
|
||||
|
||||
/// <summary>
|
||||
/// Ray1
|
||||
/// Ray2
|
||||
/// Ray3
|
||||
/// Ray4
|
||||
/// Ray5
|
||||
/// GammaResolve
|
||||
/// Ray1
|
||||
/// Ray2
|
||||
/// Ray3
|
||||
/// </summary>
|
||||
class Scene
|
||||
{
|
||||
public:
|
||||
Scene();
|
||||
~Scene();
|
||||
void render(Camera cam, int width, int height, int numSamples);
|
||||
constexpr const std::vector<unsigned char>& getImage() const { return image; }
|
||||
private:
|
||||
// the thing being displayed
|
||||
std::vector<unsigned char> image;
|
||||
|
||||
Reference in New Issue
Block a user