render flow a bit more padded
This commit is contained in:
@@ -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")
|
||||
|
||||
|
||||
@@ -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
13
libhart/tracing/ray.hpp
Normal file
@@ -0,0 +1,13 @@
|
||||
#pragma once
|
||||
|
||||
#include <hart_graphics.hpp>
|
||||
|
||||
namespace inferno {
|
||||
|
||||
struct Ray
|
||||
{
|
||||
glm::vec3 Origin;
|
||||
glm::vec3 Direction;
|
||||
};
|
||||
|
||||
}
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user