I’d like to have the option to choose from callable programs with different sets of parameters. However, declaring them with a statement like rtBuffer<rtCallableProgramId<float(const float3)> > doesn’t give me this option. Instead, I’ve tried the following:
float3 color = light.color;
if (light.textured)
color *= ((rtCallableProgramId<float3(const float3, const float3)>)light.function)(ray.direction, -ray.direction);
else
color *= ((rtCallableProgramId<float(const float3)>)light.function)(ray.direction);
Unfortunately, this only works for one of the callable programs and returns garbage for the other.
If I comment out the if statement and leave only one of the conditional statements, they both work individually. So is there a way I can include options for both method signatures?