Volume rendering compatible with abuffer and framebuffer renderers

This commit is contained in:
Emil Axelsson
2016-03-21 16:40:24 +01:00
parent c87eb5dd26
commit ebe10a29b5
46 changed files with 2432 additions and 260 deletions

View File

@@ -244,7 +244,7 @@ void SceneGraphNode::evaluate(const Camera* camera, const psc& parentPosition) {
// child->evaluate(camera, psc());
}
void SceneGraphNode::render(const RenderData& data) {
void SceneGraphNode::render(const RenderData& data, RendererTasks& tasks) {
const psc thisPosition = worldPosition();
RenderData newData = {data.camera, thisPosition, data.doPerformanceMeasurement};
@@ -255,14 +255,14 @@ void SceneGraphNode::render(const RenderData& data) {
glFinish();
auto start = std::chrono::high_resolution_clock::now();
_renderable->render(newData);
_renderable->render(newData, tasks);
glFinish();
auto end = std::chrono::high_resolution_clock::now();
_performanceRecord.renderTime = (end - start).count();
}
else
_renderable->render(newData);
_renderable->render(newData, tasks);
}
// evaluate all the children, tail-recursive function(?)
@@ -271,18 +271,6 @@ void SceneGraphNode::render(const RenderData& data) {
// child->render(newData);
}
std::vector<std::pair<Volume*, RenderData>> SceneGraphNode::volumesToRender(const RenderData& data) const {
const psc thisPosition = worldPosition();
RenderData newData = {data.camera, thisPosition, data.doPerformanceMeasurement};
std::vector<std::pair<Volume*, RenderData>> toRender;
if (_renderableVisible && _renderable->isVisible() && _renderable->isReady() && _renderable->isEnabled()) {
std::vector<Volume*> volumes = _renderable->volumesToRender(newData);
for (Volume* v : volumes) {
toRender.push_back(std::make_pair(v, newData));
}
}
return toRender;
}
// not used anymore @AA
//void SceneGraphNode::addNode(SceneGraphNode* child)