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?