Compositor: Make it work for debug passes other than float

This commit is contained in:
Sergey Sharybin 2015-07-24 17:15:55 +02:00
parent d2fac7df32
commit 68a9d80739
Notes: blender-bot 2023-02-14 08:50:59 +01:00
Referenced by issue #45549, Crash when adding a metaball
3 changed files with 23 additions and 3 deletions

View File

@ -391,8 +391,26 @@ RenderLayersUVOperation::RenderLayersUVOperation() : RenderLayersBaseProg(SCE_PA
/* ******** Debug Render Layers Cycles Operation ******** */
#ifdef WITH_CYCLES_DEBUG
RenderLayersCyclesDebugOperation::RenderLayersCyclesDebugOperation(int pass)
: RenderLayersBaseProg(pass, 1)
{
this->addOutputSocket(COM_DT_VALUE);
}
void RenderLayersCyclesDebugOperation::setScene(Scene *scene)
{
RenderLayersBaseProg::setScene(scene);
switch (m_scene->r.debug_pass_type) {
case RENDER_PASS_DEBUG_BVH_TRAVERSAL_STEPS:
case RENDER_PASS_DEBUG_BVH_TRAVERSED_INSTANCES:
case RENDER_PASS_DEBUG_RAY_BOUNCES:
this->m_elementsize = 1;
default:
fprintf(stderr, "Unknown element size for debug pass");
abort();
}
}
#endif

View File

@ -41,7 +41,7 @@ extern "C" {
* @todo: rename to operation.
*/
class RenderLayersBaseProg : public NodeOperation {
private:
protected:
/**
* Reference to the scene object.
*/
@ -74,7 +74,6 @@ private:
*/
const RenderData *m_rd;
protected:
/**
* Constructor
*/
@ -213,9 +212,12 @@ public:
RenderLayersUVOperation();
};
#ifdef WITH_CYCLES_DEBUG
class RenderLayersCyclesDebugOperation : public RenderLayersBaseProg {
public:
RenderLayersCyclesDebugOperation(int pass);
void setScene(Scene *scene);
};
#endif
#endif

View File

@ -74,7 +74,7 @@ static bNodeSocketTemplate cmp_node_rlayers_out[] = {
{ SOCK_RGBA, 0, N_("Subsurface Indirect"), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f},
{ SOCK_RGBA, 0, N_("Subsurface Color"), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f},
#ifdef WITH_CYCLES_DEBUG
{ SOCK_FLOAT, 0, N_("Debug"), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f},
{ SOCK_RGBA, 0, N_("Debug"), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f},
#endif
{ -1, 0, "" }
};