
GPU Computing 163
float result = (float )input . ivalue ;
for ( int i=0; i< 4; ++i )
{
result += input . avalue. fvalue [ i ];
}
result += (float )input . avalue . i2value .x;
result += (float )input . avalue . i2value .y;
for ( int j=0; j< 2; ++j )
{
B mybvalue = sbuffer[j ][0];
result += (float ) mybvalue . i v a l u e ;
for ( int k=0; k< 4; ++k)
{
r e su l t += mybvalue . avalu e . fv al ue [ k ] ;
}
result += (float ) mybvalue . a va lu e . i 2 v al u e . x ;
result += (float ) mybvalue . a va lu e . i 2 v al u e . y ;
}
result += mytexture[ int2(0 ,0)].x;
output [ 0] = resu lt ;
}
LISTING 4.17: An example of nested structs for which constant buffers have
one