...
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);
} |