render flow a bit more padded

This commit is contained in:
Ben Kyd
2022-11-22 23:24:52 +00:00
parent d03942703f
commit b671f5ae09
8 changed files with 62 additions and 16 deletions

View File

@@ -9,6 +9,7 @@ target_include_directories(inferno PRIVATE "libhart/thirdparty")
target_include_directories(inferno PRIVATE "src/")
target_include_directories(inferno PRIVATE "src/thirdparty")
# Hardware Acceleration Modules (HART)
add_subdirectory("hart/inferno-hart-cpu")
add_subdirectory("hart/inferno-hart-opencl")

View File

@@ -2,9 +2,12 @@
#include <string>
#include <hart_graphics.hpp>
namespace inferno {
class Shader;
class HitInfo;
class Material {
public:
@@ -15,6 +18,8 @@ public:
void setGlShader(Shader* shader);
Shader* getGlShader();
glm::vec3 sample(HitInfo* hit);
private:
std::string mName;
Shader* mGlShader;

13
libhart/tracing/ray.hpp Normal file
View File

@@ -0,0 +1,13 @@
#pragma once
#include <hart_graphics.hpp>
namespace inferno {
struct Ray
{
glm::vec3 Origin;
glm::vec3 Direction;
};
}

View File

@@ -18,3 +18,28 @@ HARTModuleDirectory* HHM::getModuleDirectory()
return &mDirectory;
}
void HHM::newScene(Scene* scene)
{
// extract mesh's
}
void HHM::notifySceneUpdate()
{
// same again
}
void HHM::startTrace(RaySource* sourceScatter)
{
}
void HHM::rayReturn(HitInfo* hit)
{
}
void HHM::bounce(Ray* newRay)
{
}

View File

@@ -9,7 +9,7 @@ namespace inferno {
class Scene;
class Ray;
class RaySouce;
class RaySource;
class HitInfo;
class HARTModule;
@@ -22,14 +22,10 @@ public:
HARTModuleDirectory* getModuleDirectory();
// needs to syncronusly stop the module's execution and
// prepare for setting up a new HART layer
void notifyModuleChange(HARTModule* newModule);
void newScene(Scene* scene);
void notifySceneUpdate();
void startTrace(RaySouce* sourceScatter);
void startTrace(RaySource* sourceScatter);
void rayReturn(HitInfo* hit);
void bounce(Ray* newRay);
@@ -37,9 +33,6 @@ public:
private:
HARTModuleDirectory mDirectory;
private:
HARTModule* activeModule;
};
}

View File

@@ -34,10 +34,10 @@ Inferno::Inferno()
mWin = &Window::GetInstance();
mWin->init("Inferno v" INFERNO_VERSION, 1280, 720);
mRasterRenderer = new RasterizeRenderer();
mRayRenderer = new RayRenderer();
mScene = new Scene();
mHeadHartModule = new HHM();
mRasterRenderer = new RasterizeRenderer();
mRayRenderer = new RayRenderer(mHeadHartModule);
mScene = new Scene();
}
Inferno::~Inferno()

View File

@@ -3,9 +3,12 @@
#include <scene/camera.hpp>
#include <scene/scene.hpp>
#include "hart_module.hpp"
using namespace inferno;
RayRenderer::RayRenderer()
RayRenderer::RayRenderer(HHM* accelIface)
: mIface(accelIface)
{
mTarget = new glm::fvec4[mRenderTargetSize.x * mRenderTargetSize.y];
@@ -52,7 +55,8 @@ GLuint RayRenderer::getRenderedTexture()
void RayRenderer::prepare()
{
assert(mCurrentScene == NULL);
mIface->newScene(mCurrentScene);
}
void RayRenderer::draw()

View File

@@ -4,13 +4,15 @@
namespace inferno {
class HHM;
class Scene;
class Colour;
class RayRenderer
{
public:
RayRenderer();
RayRenderer(HHM* accelIface);
~RayRenderer();
void setScene(Scene* scene);
@@ -28,7 +30,10 @@ private:
glm::fvec4* mTarget;
glm::ivec2 mRenderTargetSize = {300, 300};
Scene* mCurrentScene;
Scene* mCurrentScene = nullptr;
private:
HHM* mIface;
};
}