Func
fun <RT : GenType, F : Func<RT>> Func(funcFactory: (GlslGenerator) -> F, body: () -> RT): FunctionDelegate<RT, F>
fun <RT : GenType, F : Func<RT>, P1 : Variable> Func(funcFactory: (GlslGenerator) -> F, p1Factory: (GlslGenerator) -> P1, body: (p1: P1) -> RT): FunctionDelegate1<RT, F, P1>
fun <RT : GenType, F : Func<RT>, P1 : Variable, P2 : Variable> Func(funcFactory: (GlslGenerator) -> F, p1Factory: (GlslGenerator) -> P1, p2Factory: (GlslGenerator) -> P2, body: (p1: P1, p2: P2) -> RT): FunctionDelegate2<RT, F, P1, P2>
fun <RT : GenType, F : Func<RT>, P1 : Variable, P2 : Variable, P3 : Variable> Func(funcFactory: (GlslGenerator) -> F, p1Factory: (GlslGenerator) -> P1, p2Factory: (GlslGenerator) -> P2, p3Factory: (GlslGenerator) -> P3, body: (p1: P1, p2: P2, p3: P3) -> RT): FunctionDelegate3<RT, F, P1, P2, P3>
fun <RT : GenType, F : Func<RT>, P1 : Variable, P2 : Variable, P3 : Variable, P4 : Variable> Func(funcFactory: (GlslGenerator) -> F, p1Factory: (GlslGenerator) -> P1, p2Factory: (GlslGenerator) -> P2, p3Factory: (GlslGenerator) -> P3, p4Factory: (GlslGenerator) -> P4, body: (p1: P1, p2: P2, p3: P3, p4: P4) -> RT): FunctionDelegate4<RT, F, P1, P2, P3, P4>