Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
RixSCDetail GetProperty(
        ProjectionProperty property,
        void const** result) const override
    {
        switch (property)
        {
            case k_DicingHint:
                *result = &dicingHint;
                return k_RixSCUniform;
                break;
            case k_DeepMetric:
                *result = &deepMetric;
                return k_RixSCUniform;
                break;
            case k_FieldOfView:
                *result = &fovHint;
                return k_RixSCUniform;
                break;
            default:
                return k_RixSCInvalidDetail;
        }
    }

RixIntegratorFactory

The integrator plugins are now using a Factory, similarly to RixProjection. 

In general, it should be sufficient adding something like this to the existing integrator plugins:

Code Block
class MyIntegratorFactory : public RixIntegratorFactory
{
public:
    virtual RixSCParamInfo const* GetParamTable() override;

    virtual void Synchronize(RixContext&, RixSCSyncMsg, RixParameterList const*) override
    {}

    virtual int Init(RixContext& ctx, RtUString const) override
    {
        return 0;
    };
    virtual void Finalize(RixContext&) override{};

    virtual RixIntegrator* CreateIntegrator(RixContext& rixCtx, RtUString const handle,
                                            RixParameterList const* pList) override;
    virtual void DestroyIntegrator(RixIntegrator const* integrator) override;
};


RixIntegrator* MyIntegratorFactory::CreateIntegrator(RixContext& rixCtx, RtUString const handle,
                                                      RixParameterList const* pList)
{
    PIXAR_ARGUSED(handle);
    PIXAR_ARGUSED(pList);
    return new MyIntegrator(this, rixCtx);
}

void MyIntegratorFactory::DestroyIntegrator(RixIntegrator const* integrator)
{
    delete static_cast<MyIntegrator const*>(integrator);
}

And replace the existing RIX_INTEGRATORCREATE and RIX_INTEGRATORDELETE by the following:

Code Block
RIX_INTEGRATORFACTORYCREATE
{
    PIXAR_ARGUSED(hint);
    return new MyIntegratorFactory();
}

RIX_INTEGRATORFACTORYDESTROY
{
    delete ((MyIntegratorFactory*)factory);
}