37 #ifndef Riley_future_h 38 #define Riley_future_h 77 std::vector<riley::RenderView>
GetRenderViews(riley::RenderViewList
const& renderViews)
const;
80 riley::UserId userId, riley::RenderTargetId renderTargetId,
81 riley::IntegratorId integratorId, riley::CameraId cameraId);
84 riley::RenderViewId renderViewId, riley::RenderTargetId
const* renderTargetId,
85 riley::IntegratorId
const* integratorId, riley::CameraId
const* cameraId);
90 bool updateRenderView(
91 RenderView* renderView, riley::UserId
const* userId,
92 riley::RenderTargetId
const* renderTargetId, riley::IntegratorId
const* integratorId,
93 riley::CameraId
const* cameraId);
95 bool isValid(riley::RenderViewId
id)
97 return id != riley::RenderViewId::InvalidId() &&
98 m_renderViews.find(
id) != m_renderViews.end();
101 riley::RenderViewId getNextRenderViewId()
103 size_t newId = m_renderViews.size();
105 riley::RenderViewId
id = riley::RenderViewId::InvalidId();
106 if (m_freeRenderViewIds.empty())
108 id =
static_cast<riley::RenderViewId
>(newId);
112 auto it = m_freeRenderViewIds.begin();
114 m_freeRenderViewIds.erase(it);
119 void deleteId(riley::RenderViewId
id)
121 m_renderViews.erase(
id);
122 m_freeRenderViewIds.insert(
id);
125 std::mutex m_renderViewsMutex;
126 std::map<riley::RenderViewId, RenderView> m_renderViews;
127 std::set<riley::RenderViewId> m_freeRenderViewIds;
130 inline bool RenderViewHelper::updateRenderView(
131 RenderView* renderView, riley::UserId
const* userId,
132 riley::RenderTargetId
const* renderTargetId, riley::IntegratorId
const* integratorId,
133 riley::CameraId
const* cameraId)
136 bool isDirty =
false;
140 renderView->userId = *userId;
166 riley::UserId userId, riley::RenderTargetId renderTargetId, riley::IntegratorId integratorId,
167 riley::CameraId cameraId)
169 riley::RenderViewId renderViewId = riley::RenderViewId::InvalidId();
171 std::lock_guard<std::mutex> lock(m_renderViewsMutex);
172 renderViewId = getNextRenderViewId();
176 updateRenderView(&renderView, &userId, &renderTargetId, &integratorId, &cameraId);
179 std::lock_guard<std::mutex> lock(m_renderViewsMutex);
180 m_renderViews[renderViewId] = renderView;
187 riley::RenderViewId renderViewId, riley::RenderTargetId
const* renderTargetId,
188 riley::IntegratorId
const* integratorId, riley::CameraId
const* cameraId)
192 std::lock_guard<std::mutex> lock(m_renderViewsMutex);
193 if (!isValid(renderViewId))
195 return riley::RenderViewResult::k_Error;
197 renderView = m_renderViews[renderViewId];
200 updateRenderView(&renderView,
nullptr, renderTargetId, integratorId, cameraId);
203 std::lock_guard<std::mutex> lock(m_renderViewsMutex);
204 m_renderViews[renderViewId] = renderView;
207 return riley::RenderViewResult::k_Success;
213 std::lock_guard<std::mutex> lock(m_renderViewsMutex);
214 if (!isValid(renderViewId))
216 return riley::RenderViewResult::k_Error;
218 deleteId(renderViewId);
221 return riley::RenderViewResult::k_Success;
225 riley::RenderViewList
const& renderViews)
const 227 std::vector<riley::RenderView> renderViewsVector;
229 for (uint32_t i = 0; i < renderViews.count; i++)
231 auto const it = m_renderViews.find(renderViews.ids[i]);
232 assert(it != m_renderViews.end());
234 riley::RenderView
const renderView =
235 {it->second.
renderTargetId, it->second.integratorId, it->second.cameraId};
236 renderViewsVector.push_back(renderView);
239 return renderViewsVector;
242 #endif // Riley_future_h riley::RenderTargetId renderTargetId
Definition: Riley_future.h:72
riley::CameraId cameraId
Definition: Riley_future.h:74
riley::IntegratorId integratorId
Definition: Riley_future.h:73
Definition: RileyIds.h:205
Definition: RileyIds.h:45
Definition: RileyIds.h:305
riley::RenderViewId createRenderView(riley::UserId userId, riley::RenderTargetId renderTargetId, riley::IntegratorId integratorId, riley::CameraId cameraId)
Definition: Riley_future.h:165
riley::RenderViewResult deleteRenderView(riley::RenderViewId renderViewId)
Definition: Riley_future.h:210
riley::UserId userId
Definition: Riley_future.h:71
#define RILEY_NAMESPACE_ENTER
If RILEY_REQUIRE_VERSION_NAME is undefined, symbols from the version namespace are promoted to the to...
Definition: Riley_version.h:81
CameraId cameraId
Definition: Riley_future.h:59
std::vector< riley::RenderView > GetRenderViews(riley::RenderViewList const &renderViews) const
Definition: Riley_future.h:224
riley::RenderViewResult modifyRenderView(riley::RenderViewId renderViewId, riley::RenderTargetId const *renderTargetId, riley::IntegratorId const *integratorId, riley::CameraId const *cameraId)
Definition: Riley_future.h:186
Definition: Riley_future.h:65
#define RILEY_NAMESPACE_HEADER_EXIT
Definition: Riley_version.h:91
RenderViewResult
Definition: Riley.h:96
IntegratorId integratorId
Definition: Riley_future.h:58
Definition: Riley_future.h:69
Describes a view of the scene to render.
Definition: Riley_future.h:55
RenderTargetId renderTargetId
Definition: Riley_future.h:57