#include #define precision 8 #define approximate_interpolation #ifdef approximate_interpolation # ifdef precision # if precision == 16 # define texto(v) __float2half(v) # define texfrom(v) __half2float(v) # define textype half # define interpolate(v0, v1, pos) (v0 + pos*(v1-v0)) # define textocheck(var,msg,val) var=texto(val); # else # define precision_mult ((1<1)) { printf("Received out-of-range value (%f) in %s texture fetch\n", val, msg); } \ var=texto(val); # endif # else # define texto(v) (v) # define texfrom(v) (v) # define textype float # define interpolate(v0, v1, pos) (v0 + pos*(v1-v0)) # define textocheck(var,msg,val) var=texto(val); # endif #else # ifdef precision # if precision == 16 # define texto(v) __half2float(__float2half(v)) # define textocheck(var,msg,val) var=texto(val); # else # define precision_mult ((1<1)) { printf("Received out-of-range value (%f) in %s texture fetch\n", val, msg); } \ var=texto(val); # endif # else # define texto(v) (v) # define textocheck(var,msg,val) var=texto(val); # endif # define texfrom(v) (v) # define textype float # define interpolate(v0, v1, pos) (v0 + pos*(v1-v0)) #endif