Blender V4.3
light_tasks_delegate.cc
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2011-2022 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
6#include "engine.hh"
7
9
10LightTasksDelegate::LightTasksDelegate(pxr::HdRenderIndex *parent_index,
11 pxr::SdfPath const &delegate_id)
12 : pxr::HdSceneDelegate(parent_index, delegate_id)
13{
14 simple_task_id_ = GetDelegateID().AppendElementString("simpleTask");
15 GetRenderIndex().InsertTask<pxr::HdxSimpleLightTask>(this, simple_task_id_);
16 skydome_task_id_ = GetDelegateID().AppendElementString("skydomeTask");
17 GetRenderIndex().InsertTask<pxr::HdxSkydomeTask>(this, skydome_task_id_);
18
19 CLOG_INFO(LOG_HYDRA_RENDER, 1, "%s", simple_task_id_.GetText());
20 CLOG_INFO(LOG_HYDRA_RENDER, 1, "%s", skydome_task_id_.GetText());
21}
22
23pxr::VtValue LightTasksDelegate::Get(pxr::SdfPath const &id, pxr::TfToken const &key)
24{
25 CLOG_INFO(LOG_HYDRA_RENDER, 3, "%s, %s", id.GetText(), key.GetText());
26
27 if (key == pxr::HdTokens->params) {
28 if (id == simple_task_id_) {
29 return pxr::VtValue(simple_task_params_);
30 }
31 else if (id == skydome_task_id_) {
32 return pxr::VtValue(skydome_task_params_);
33 }
34 }
35 return pxr::VtValue();
36}
37
38pxr::HdTaskSharedPtr LightTasksDelegate::simple_task()
39{
40 return GetRenderIndex().GetTask(simple_task_id_);
41}
42
44{
45 /* Note that this task is intended to be the first "Render Task",
46 * so that the AOV's are properly cleared, however it
47 * does not spawn a HdRenderPass. */
48 return GetRenderIndex().GetTask(skydome_task_id_);
49}
50
51void LightTasksDelegate::set_camera(pxr::SdfPath const &camera_id)
52{
53 if (simple_task_params_.cameraPath == camera_id) {
54 return;
55 }
56 simple_task_params_.cameraPath = camera_id;
57 GetRenderIndex().GetChangeTracker().MarkTaskDirty(simple_task_id_,
58 pxr::HdChangeTracker::DirtyParams);
59 skydome_task_params_.camera = camera_id;
60 GetRenderIndex().GetChangeTracker().MarkTaskDirty(skydome_task_id_,
61 pxr::HdChangeTracker::DirtyParams);
62}
63
64void LightTasksDelegate::set_viewport(pxr::GfVec4d const &viewport)
65{
66 if (skydome_task_params_.viewport == viewport) {
67 return;
68 }
69 skydome_task_params_.viewport = viewport;
70 GetRenderIndex().GetChangeTracker().MarkTaskDirty(skydome_task_id_,
71 pxr::HdChangeTracker::DirtyParams);
72}
73
74} // namespace blender::render::hydra
#define CLOG_INFO(clg_ref, level,...)
Definition CLG_log.h:179
LightTasksDelegate(pxr::HdRenderIndex *parentIndex, pxr::SdfPath const &delegate_id)
void set_viewport(pxr::GfVec4d const &viewport)
void set_camera(pxr::SdfPath const &camera_id)
pxr::VtValue Get(pxr::SdfPath const &id, pxr::TfToken const &key) override
uiWidgetBaseParameters params[MAX_WIDGET_BASE_BATCH]
struct CLG_LogRef * LOG_HYDRA_RENDER