@@ -178,7 +178,18 @@ class Eval {
};
switch( channelMode ) {
case R, G, B, A:
- return TSwiz(tget, [switch( channelMode ) { case R: X; case G: Y; case B: Z; default: W; }]);
+ return TSwiz(tget, switch( [count,channelMode] ) {
+ case [1,R]: [X];
+ case [1,G]: [Y];
+ case [1,B]: [Z];
+ case [1,A]: [W];
+ case [2,R]: [X,Y];
+ case [2,G]: [Y,Z];
+ case [2,B]: [Z,W];
+ case [3,R]: [X,Y,Z];
+ case [3,G]: [Y,Z,W];
+ default: throw "Invalid channel value "+channelMode+" for "+count+" channels";
+ });
case Unknown:
var zero = { e : TConst(CFloat(0.)), t : TFloat, p : pos };
if( count == 1 )