forked from blender/blender
Support more AOVs #78
@ -2,6 +2,7 @@
|
||||
* Copyright 2011-2022 Blender Foundation */
|
||||
|
||||
#include "light_tasks_delegate.h"
|
||||
#include "engine.h"
|
||||
|
||||
namespace blender::render::hydra {
|
||||
|
||||
@ -13,10 +14,15 @@ LightTasksDelegate::LightTasksDelegate(pxr::HdRenderIndex *parent_index,
|
||||
GetRenderIndex().InsertTask<pxr::HdxSimpleLightTask>(this, simple_task_id_);
|
||||
skydome_task_id_ = GetDelegateID().AppendElementString("skydomeTask");
|
||||
GetRenderIndex().InsertTask<pxr::HdxSkydomeTask>(this, skydome_task_id_);
|
||||
|
||||
CLOG_INFO(LOG_RENDER_HYDRA, 1, "%s", simple_task_id_.GetText());
|
||||
CLOG_INFO(LOG_RENDER_HYDRA, 1, "%s", skydome_task_id_.GetText());
|
||||
}
|
||||
|
||||
pxr::VtValue LightTasksDelegate::Get(pxr::SdfPath const &id, pxr::TfToken const &key)
|
||||
{
|
||||
CLOG_INFO(LOG_RENDER_HYDRA, 3, "%s, %s", id.GetText(), key.GetText());
|
||||
|
||||
if (key == pxr::HdTokens->params) {
|
||||
if (id == simple_task_id_) {
|
||||
return pxr::VtValue(simple_task_params_);
|
||||
|
@ -10,6 +10,7 @@
|
||||
#include "MEM_guardedalloc.h"
|
||||
|
||||
#include "render_task_delegate.h"
|
||||
#include "engine.h"
|
||||
|
||||
namespace blender::render::hydra {
|
||||
|
||||
@ -22,10 +23,14 @@ RenderTaskDelegate::RenderTaskDelegate(pxr::HdRenderIndex *parent_index,
|
||||
|
||||
render_task_params_.enableLighting = true;
|
||||
render_task_params_.alphaThreshold = 0.1f;
|
||||
|
||||
CLOG_INFO(LOG_RENDER_HYDRA, 1, "%s", render_task_id_.GetText());
|
||||
}
|
||||
|
||||
pxr::VtValue RenderTaskDelegate::Get(pxr::SdfPath const & /*id*/, pxr::TfToken const &key)
|
||||
pxr::VtValue RenderTaskDelegate::Get(pxr::SdfPath const & id, pxr::TfToken const &key)
|
||||
{
|
||||
CLOG_INFO(LOG_RENDER_HYDRA, 3, "%s, %s", id.GetText(), key.GetText());
|
||||
|
||||
if (key == pxr::HdTokens->params) {
|
||||
return pxr::VtValue(render_task_params_);
|
||||
}
|
||||
@ -36,13 +41,17 @@ pxr::VtValue RenderTaskDelegate::Get(pxr::SdfPath const & /*id*/, pxr::TfToken c
|
||||
return pxr::VtValue();
|
||||
}
|
||||
|
||||
pxr::TfTokenVector RenderTaskDelegate::GetTaskRenderTags(pxr::SdfPath const & /*id*/)
|
||||
pxr::TfTokenVector RenderTaskDelegate::GetTaskRenderTags(pxr::SdfPath const & id)
|
||||
{
|
||||
CLOG_INFO(LOG_RENDER_HYDRA, 3, "%s", id.GetText());
|
||||
|
||||
return {pxr::HdRenderTagTokens->geometry};
|
||||
}
|
||||
|
||||
pxr::HdRenderBufferDescriptor RenderTaskDelegate::GetRenderBufferDescriptor(pxr::SdfPath const &id)
|
||||
{
|
||||
CLOG_INFO(LOG_RENDER_HYDRA, 3, "%s", id.GetText());
|
||||
|
||||
return buffer_descriptors_[id];
|
||||
}
|
||||
|
||||
@ -109,6 +118,8 @@ void RenderTaskDelegate::add_aov(pxr::TfToken const &aov_key)
|
||||
binding.aovSettings = aov_desc.aovSettings;
|
||||
render_task_params_.aovBindings.push_back(binding);
|
||||
render_index.GetChangeTracker().MarkTaskDirty(render_task_id_, pxr::HdChangeTracker::DirtyParams);
|
||||
|
||||
CLOG_INFO(LOG_RENDER_HYDRA, 1, "%s", aov_key.GetText());
|
||||
}
|
||||
|
||||
void RenderTaskDelegate::read_aov(pxr::TfToken const &aov_key, void *data)
|
||||
@ -152,14 +163,14 @@ GPURenderTaskDelegate::GPURenderTaskDelegate(pxr::HdRenderIndex *parent_index,
|
||||
{
|
||||
aov_task_id_ = GetDelegateID().AppendElementString("aovTask");
|
||||
GetRenderIndex().InsertTask<pxr::HdxVisualizeAovTask>(this, aov_task_id_);
|
||||
GetRenderIndex().GetChangeTracker().MarkTaskDirty(aov_task_id_,
|
||||
pxr::HdChangeTracker::DirtyCollection);
|
||||
GetRenderIndex().GetChangeTracker().MarkTaskDirty(aov_task_id_,
|
||||
pxr::HdChangeTracker::DirtyRenderTags);
|
||||
|
||||
CLOG_INFO(LOG_RENDER_HYDRA, 1, "%s", aov_task_id_.GetText());
|
||||
}
|
||||
|
||||
pxr::VtValue GPURenderTaskDelegate::Get(pxr::SdfPath const &id, pxr::TfToken const &key)
|
||||
{
|
||||
CLOG_INFO(LOG_RENDER_HYDRA, 3, "%s, %s", id.GetText(), key.GetText());
|
||||
|
||||
if (id == render_task_id_) {
|
||||
return RenderTaskDelegate::Get(id, key);
|
||||
}
|
||||
@ -224,6 +235,8 @@ void GPURenderTaskDelegate::add_aov(pxr::TfToken const &aov_key)
|
||||
format,
|
||||
GPU_TEXTURE_USAGE_GENERAL,
|
||||
nullptr);
|
||||
|
||||
CLOG_INFO(LOG_RENDER_HYDRA, 1, "%s", aov_key.GetText());
|
||||
}
|
||||
|
||||
void GPURenderTaskDelegate::read_aov(pxr::TfToken const &aov_key, void *data)
|
||||
@ -282,7 +295,7 @@ void GPURenderTaskDelegate::bind()
|
||||
GPU_framebuffer_clear_color_depth(framebuffer_, clear_color, 1.0f);
|
||||
|
||||
/* Important: we have to create and bind at least one Vertex Array Object (VAO) before render
|
||||
execution: More info at https://open.gl/drawing */
|
||||
* execution: More info at https://open.gl/drawing */
|
||||
if (VAO_ == 0) {
|
||||
glGenVertexArrays(1, &VAO_);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user