 void EXPR RTCIntersectFuncN(const int* ID valid_in, void* ID geomUserPtr_in, const RTCIntersectContext* ID context_in, RTCRayN* ID ray_in, size_t ID N_in, size_t ID item_in)
 {
 =>
-void RTCIntersectFuncN(const uniform RTCIntersectFunctionNArguments* const uniform args)
+void RTCIntersectFuncN(const uniform RTCIntersectFunctionNArguments* const uniform args) // FIXME: may also be RTCOccludedFunctionNArguments
 {
   const int* uniform valid_in = args->valid;
   void* uniform geomUserPtr_in = args->geomUserPtr;

void EXPR intersectionFilter(void* ID geomUserPtr_in, RTCRay& ID ray_in)
{
=>
void intersectionFilter(const uniform RTCFilterFunctionNArguments* uniform const args)
{
  uniform int* uniform valid = args->valid;
  void* uniform geomUserPtr_in = args->geomUserPtr;
  COMMENT RTCIntersectContext* uniform context = args->context;
  COMMENT RTCRay* uniform ray_in = (varying RTCRay* uniform) args->ray;
  RTCHit* uniform potentialHit = (RTCHit* uniform) args->potentialHit;
  uniform unsigned int N = args->N;
  assert(N == 1);
  if (!valid[0]) return; // function may get called with zero mask
@@{
ray_in.
=>

void EXPR RTCIntersectFunc8(const void* ID valid_in, void* ID geomUserPtr_in, RTCRay8& ID ray_in, size_t ID item_in)
{
=>
void RTCIntersectFunc8(const uniform RTCIntersectFunctionNArguments* const uniform args) // FIXME: may also be RTCOccludedFunctionNArguments
{
  const void* valid_in = args->valid;
  void* geomUserPtr_in = args->geomUserPtr;
