LoopDawg | e903ab5 | 2016-06-30 14:13:03 -0600 | [diff] [blame] | 1 | float VertexShaderFunctionS(float inF0, float inF1, float inF2, uint inU0, uint inU1) |
LoopDawg | 4b67732 | 2016-05-26 10:10:16 -0600 | [diff] [blame] | 2 | { |
| 3 | all(inF0); |
| 4 | abs(inF0); |
| 5 | acos(inF0); |
| 6 | any(inF0); |
| 7 | asin(inF0); |
LoopDawg | 5891070 | 2016-06-13 09:22:28 -0600 | [diff] [blame] | 8 | asint(inF0); |
| 9 | asuint(inF0); |
| 10 | asfloat(inU0); |
| 11 | // asdouble(inU0, inU1); // TODO: enable when HLSL parser used for intrinsics |
LoopDawg | 4b67732 | 2016-05-26 10:10:16 -0600 | [diff] [blame] | 12 | atan(inF0); |
| 13 | atan2(inF0, inF1); |
| 14 | ceil(inF0); |
| 15 | clamp(inF0, inF1, inF2); |
| 16 | cos(inF0); |
| 17 | cosh(inF0); |
| 18 | countbits(7); |
| 19 | degrees(inF0); |
| 20 | // EvaluateAttributeAtCentroid(inF0); |
| 21 | // EvaluateAttributeAtSample(inF0, 0); |
| 22 | // TODO: EvaluateAttributeSnapped(inF0, int2(1,2)); |
| 23 | exp(inF0); |
| 24 | exp2(inF0); |
| 25 | firstbithigh(7); |
| 26 | firstbitlow(7); |
| 27 | floor(inF0); |
| 28 | // TODO: fma(inD0, inD1, inD2); |
| 29 | fmod(inF0, inF1); |
| 30 | frac(inF0); |
LoopDawg | 4b67732 | 2016-05-26 10:10:16 -0600 | [diff] [blame] | 31 | isinf(inF0); |
| 32 | isnan(inF0); |
| 33 | ldexp(inF0, inF1); |
LoopDawg | 4624a02 | 2016-06-20 13:26:59 -0600 | [diff] [blame] | 34 | lerp(inF0, inF1, inF2); |
LoopDawg | 4b67732 | 2016-05-26 10:10:16 -0600 | [diff] [blame] | 35 | log(inF0); |
LoopDawg | 592860c | 2016-06-09 08:57:35 -0600 | [diff] [blame] | 36 | log10(inF0); |
LoopDawg | 4b67732 | 2016-05-26 10:10:16 -0600 | [diff] [blame] | 37 | log2(inF0); |
| 38 | max(inF0, inF1); |
| 39 | min(inF0, inF1); |
| 40 | // TODO: mul(inF0, inF1); |
| 41 | pow(inF0, inF1); |
| 42 | radians(inF0); |
| 43 | reversebits(2); |
| 44 | round(inF0); |
| 45 | rsqrt(inF0); |
LoopDawg | 592860c | 2016-06-09 08:57:35 -0600 | [diff] [blame] | 46 | saturate(inF0); |
LoopDawg | 4b67732 | 2016-05-26 10:10:16 -0600 | [diff] [blame] | 47 | sign(inF0); |
| 48 | sin(inF0); |
LoopDawg | 592860c | 2016-06-09 08:57:35 -0600 | [diff] [blame] | 49 | sincos(inF0, inF1, inF2); |
LoopDawg | 4b67732 | 2016-05-26 10:10:16 -0600 | [diff] [blame] | 50 | sinh(inF0); |
| 51 | smoothstep(inF0, inF1, inF2); |
| 52 | sqrt(inF0); |
| 53 | step(inF0, inF1); |
| 54 | tan(inF0); |
| 55 | tanh(inF0); |
| 56 | // TODO: sampler intrinsics, when we can declare the types. |
| 57 | trunc(inF0); |
| 58 | |
| 59 | return 0.0; |
| 60 | } |
| 61 | |
LoopDawg | e903ab5 | 2016-06-30 14:13:03 -0600 | [diff] [blame] | 62 | float1 VertexShaderFunction1(float1 inF0, float1 inF1, float1 inF2) |
LoopDawg | 4b67732 | 2016-05-26 10:10:16 -0600 | [diff] [blame] | 63 | { |
| 64 | // TODO: ... add when float1 prototypes are generated |
| 65 | return 0.0; |
| 66 | } |
| 67 | |
LoopDawg | e903ab5 | 2016-06-30 14:13:03 -0600 | [diff] [blame] | 68 | float2 VertexShaderFunction2(float2 inF0, float2 inF1, float2 inF2, uint2 inU0, uint2 inU1) |
LoopDawg | 4b67732 | 2016-05-26 10:10:16 -0600 | [diff] [blame] | 69 | { |
| 70 | all(inF0); |
| 71 | abs(inF0); |
| 72 | acos(inF0); |
| 73 | any(inF0); |
| 74 | asin(inF0); |
LoopDawg | 5891070 | 2016-06-13 09:22:28 -0600 | [diff] [blame] | 75 | asint(inF0); |
| 76 | asuint(inF0); |
| 77 | asfloat(inU0); |
| 78 | // asdouble(inU0, inU1); // TODO: enable when HLSL parser used for intrinsics |
LoopDawg | 4b67732 | 2016-05-26 10:10:16 -0600 | [diff] [blame] | 79 | atan(inF0); |
| 80 | atan2(inF0, inF1); |
| 81 | ceil(inF0); |
| 82 | clamp(inF0, inF1, inF2); |
| 83 | cos(inF0); |
| 84 | cosh(inF0); |
| 85 | countbits(int2(7,3)); |
| 86 | degrees(inF0); |
| 87 | distance(inF0, inF1); |
| 88 | dot(inF0, inF1); |
| 89 | // EvaluateAttributeAtCentroid(inF0); |
| 90 | // EvaluateAttributeAtSample(inF0, 0); |
| 91 | // TODO: EvaluateAttributeSnapped(inF0, int2(1,2)); |
| 92 | exp(inF0); |
| 93 | exp2(inF0); |
| 94 | faceforward(inF0, inF1, inF2); |
| 95 | firstbithigh(7); |
| 96 | firstbitlow(7); |
| 97 | floor(inF0); |
| 98 | // TODO: fma(inD0, inD1, inD2); |
| 99 | fmod(inF0, inF1); |
| 100 | frac(inF0); |
LoopDawg | 4b67732 | 2016-05-26 10:10:16 -0600 | [diff] [blame] | 101 | isinf(inF0); |
| 102 | isnan(inF0); |
| 103 | ldexp(inF0, inF1); |
LoopDawg | 4624a02 | 2016-06-20 13:26:59 -0600 | [diff] [blame] | 104 | lerp(inF0, inF1, inF2); |
LoopDawg | 4b67732 | 2016-05-26 10:10:16 -0600 | [diff] [blame] | 105 | length(inF0); |
| 106 | log(inF0); |
LoopDawg | 592860c | 2016-06-09 08:57:35 -0600 | [diff] [blame] | 107 | log10(inF0); |
LoopDawg | 4b67732 | 2016-05-26 10:10:16 -0600 | [diff] [blame] | 108 | log2(inF0); |
| 109 | max(inF0, inF1); |
| 110 | min(inF0, inF1); |
| 111 | // TODO: mul(inF0, inF1); |
| 112 | normalize(inF0); |
| 113 | pow(inF0, inF1); |
| 114 | radians(inF0); |
| 115 | reflect(inF0, inF1); |
| 116 | refract(inF0, inF1, 2.0); |
| 117 | reversebits(int2(1,2)); |
| 118 | round(inF0); |
| 119 | rsqrt(inF0); |
LoopDawg | 592860c | 2016-06-09 08:57:35 -0600 | [diff] [blame] | 120 | saturate(inF0); |
LoopDawg | 4b67732 | 2016-05-26 10:10:16 -0600 | [diff] [blame] | 121 | sign(inF0); |
| 122 | sin(inF0); |
LoopDawg | 592860c | 2016-06-09 08:57:35 -0600 | [diff] [blame] | 123 | sincos(inF0, inF1, inF2); |
LoopDawg | 4b67732 | 2016-05-26 10:10:16 -0600 | [diff] [blame] | 124 | sinh(inF0); |
| 125 | smoothstep(inF0, inF1, inF2); |
| 126 | sqrt(inF0); |
| 127 | step(inF0, inF1); |
| 128 | tan(inF0); |
| 129 | tanh(inF0); |
| 130 | // TODO: sampler intrinsics, when we can declare the types. |
| 131 | trunc(inF0); |
| 132 | |
| 133 | // TODO: ... add when float1 prototypes are generated |
| 134 | return float2(1,2); |
| 135 | } |
| 136 | |
LoopDawg | e903ab5 | 2016-06-30 14:13:03 -0600 | [diff] [blame] | 137 | float3 VertexShaderFunction3(float3 inF0, float3 inF1, float3 inF2, uint3 inU0, uint3 inU1) |
LoopDawg | 4b67732 | 2016-05-26 10:10:16 -0600 | [diff] [blame] | 138 | { |
| 139 | all(inF0); |
| 140 | abs(inF0); |
| 141 | acos(inF0); |
| 142 | any(inF0); |
| 143 | asin(inF0); |
LoopDawg | 5891070 | 2016-06-13 09:22:28 -0600 | [diff] [blame] | 144 | asint(inF0); |
| 145 | asuint(inF0); |
| 146 | asfloat(inU0); |
| 147 | // asdouble(inU0, inU1); // TODO: enable when HLSL parser used for intrinsics |
LoopDawg | 4b67732 | 2016-05-26 10:10:16 -0600 | [diff] [blame] | 148 | atan(inF0); |
| 149 | atan2(inF0, inF1); |
| 150 | ceil(inF0); |
| 151 | clamp(inF0, inF1, inF2); |
| 152 | cos(inF0); |
| 153 | cosh(inF0); |
| 154 | countbits(int3(7,3,5)); |
| 155 | cross(inF0, inF1); |
| 156 | degrees(inF0); |
| 157 | distance(inF0, inF1); |
| 158 | dot(inF0, inF1); |
| 159 | // EvaluateAttributeAtCentroid(inF0); |
| 160 | // EvaluateAttributeAtSample(inF0, 0); |
| 161 | // TODO: EvaluateAttributeSnapped(inF0, int2(1,2)); |
| 162 | exp(inF0); |
| 163 | exp2(inF0); |
| 164 | faceforward(inF0, inF1, inF2); |
| 165 | firstbithigh(7); |
| 166 | firstbitlow(7); |
| 167 | floor(inF0); |
| 168 | // TODO: fma(inD0, inD1, inD2); |
| 169 | fmod(inF0, inF1); |
| 170 | frac(inF0); |
LoopDawg | 4b67732 | 2016-05-26 10:10:16 -0600 | [diff] [blame] | 171 | isinf(inF0); |
| 172 | isnan(inF0); |
| 173 | ldexp(inF0, inF1); |
LoopDawg | 4624a02 | 2016-06-20 13:26:59 -0600 | [diff] [blame] | 174 | lerp(inF0, inF1, inF2); |
LoopDawg | 4b67732 | 2016-05-26 10:10:16 -0600 | [diff] [blame] | 175 | length(inF0); |
| 176 | log(inF0); |
LoopDawg | 592860c | 2016-06-09 08:57:35 -0600 | [diff] [blame] | 177 | log10(inF0); |
LoopDawg | 4b67732 | 2016-05-26 10:10:16 -0600 | [diff] [blame] | 178 | log2(inF0); |
| 179 | max(inF0, inF1); |
| 180 | min(inF0, inF1); |
| 181 | // TODO: mul(inF0, inF1); |
| 182 | normalize(inF0); |
| 183 | pow(inF0, inF1); |
| 184 | radians(inF0); |
| 185 | reflect(inF0, inF1); |
| 186 | refract(inF0, inF1, 2.0); |
| 187 | reversebits(int3(1,2,3)); |
| 188 | round(inF0); |
| 189 | rsqrt(inF0); |
LoopDawg | 592860c | 2016-06-09 08:57:35 -0600 | [diff] [blame] | 190 | saturate(inF0); |
LoopDawg | 4b67732 | 2016-05-26 10:10:16 -0600 | [diff] [blame] | 191 | sign(inF0); |
| 192 | sin(inF0); |
LoopDawg | 592860c | 2016-06-09 08:57:35 -0600 | [diff] [blame] | 193 | sincos(inF0, inF1, inF2); |
LoopDawg | 4b67732 | 2016-05-26 10:10:16 -0600 | [diff] [blame] | 194 | sinh(inF0); |
| 195 | smoothstep(inF0, inF1, inF2); |
| 196 | sqrt(inF0); |
| 197 | step(inF0, inF1); |
| 198 | tan(inF0); |
| 199 | tanh(inF0); |
| 200 | // TODO: sampler intrinsics, when we can declare the types. |
| 201 | trunc(inF0); |
| 202 | |
| 203 | // TODO: ... add when float1 prototypes are generated |
| 204 | return float3(1,2,3); |
| 205 | } |
| 206 | |
LoopDawg | e903ab5 | 2016-06-30 14:13:03 -0600 | [diff] [blame] | 207 | float4 VertexShaderFunction4(float4 inF0, float4 inF1, float4 inF2, uint4 inU0, uint4 inU1) |
LoopDawg | 4b67732 | 2016-05-26 10:10:16 -0600 | [diff] [blame] | 208 | { |
| 209 | all(inF0); |
| 210 | abs(inF0); |
| 211 | acos(inF0); |
| 212 | any(inF0); |
| 213 | asin(inF0); |
LoopDawg | 5891070 | 2016-06-13 09:22:28 -0600 | [diff] [blame] | 214 | asint(inF0); |
| 215 | asuint(inF0); |
| 216 | asfloat(inU0); |
| 217 | // asdouble(inU0, inU1); // TODO: enable when HLSL parser used for intrinsics |
LoopDawg | 4b67732 | 2016-05-26 10:10:16 -0600 | [diff] [blame] | 218 | atan(inF0); |
| 219 | atan2(inF0, inF1); |
| 220 | ceil(inF0); |
| 221 | clamp(inF0, inF1, inF2); |
| 222 | cos(inF0); |
| 223 | cosh(inF0); |
| 224 | countbits(int4(7,3,5,2)); |
| 225 | degrees(inF0); |
| 226 | distance(inF0, inF1); |
| 227 | dot(inF0, inF1); |
LoopDawg | 592860c | 2016-06-09 08:57:35 -0600 | [diff] [blame] | 228 | dst(inF0, inF1); |
LoopDawg | 4b67732 | 2016-05-26 10:10:16 -0600 | [diff] [blame] | 229 | // EvaluateAttributeAtCentroid(inF0); |
| 230 | // EvaluateAttributeAtSample(inF0, 0); |
| 231 | // TODO: EvaluateAttributeSnapped(inF0, int2(1,2)); |
| 232 | exp(inF0); |
| 233 | exp2(inF0); |
| 234 | faceforward(inF0, inF1, inF2); |
| 235 | firstbithigh(7); |
| 236 | firstbitlow(7); |
| 237 | floor(inF0); |
| 238 | // TODO: fma(inD0, inD1, inD2); |
| 239 | fmod(inF0, inF1); |
| 240 | frac(inF0); |
LoopDawg | 4b67732 | 2016-05-26 10:10:16 -0600 | [diff] [blame] | 241 | isinf(inF0); |
| 242 | isnan(inF0); |
| 243 | ldexp(inF0, inF1); |
LoopDawg | 4624a02 | 2016-06-20 13:26:59 -0600 | [diff] [blame] | 244 | lerp(inF0, inF1, inF2); |
LoopDawg | 4b67732 | 2016-05-26 10:10:16 -0600 | [diff] [blame] | 245 | length(inF0); |
| 246 | log(inF0); |
LoopDawg | 592860c | 2016-06-09 08:57:35 -0600 | [diff] [blame] | 247 | log10(inF0); |
LoopDawg | 4b67732 | 2016-05-26 10:10:16 -0600 | [diff] [blame] | 248 | log2(inF0); |
| 249 | max(inF0, inF1); |
| 250 | min(inF0, inF1); |
| 251 | // TODO: mul(inF0, inF1); |
| 252 | normalize(inF0); |
| 253 | pow(inF0, inF1); |
| 254 | radians(inF0); |
| 255 | reflect(inF0, inF1); |
| 256 | refract(inF0, inF1, 2.0); |
| 257 | reversebits(int4(1,2,3,4)); |
| 258 | round(inF0); |
| 259 | rsqrt(inF0); |
LoopDawg | 592860c | 2016-06-09 08:57:35 -0600 | [diff] [blame] | 260 | saturate(inF0); |
LoopDawg | 4b67732 | 2016-05-26 10:10:16 -0600 | [diff] [blame] | 261 | sign(inF0); |
| 262 | sin(inF0); |
LoopDawg | 592860c | 2016-06-09 08:57:35 -0600 | [diff] [blame] | 263 | sincos(inF0, inF1, inF2); |
LoopDawg | 4b67732 | 2016-05-26 10:10:16 -0600 | [diff] [blame] | 264 | sinh(inF0); |
| 265 | smoothstep(inF0, inF1, inF2); |
| 266 | sqrt(inF0); |
| 267 | step(inF0, inF1); |
| 268 | tan(inF0); |
| 269 | tanh(inF0); |
| 270 | // TODO: sampler intrinsics, when we can declare the types. |
| 271 | trunc(inF0); |
| 272 | |
| 273 | // TODO: ... add when float1 prototypes are generated |
| 274 | return float4(1,2,3,4); |
| 275 | } |
| 276 | |
LoopDawg | 5891070 | 2016-06-13 09:22:28 -0600 | [diff] [blame] | 277 | // TODO: for mats: |
| 278 | // asfloat(inU0); \ |
| 279 | // asint(inF0); \ |
| 280 | // asuint(inF0); \ |
| 281 | |
LoopDawg | 4b67732 | 2016-05-26 10:10:16 -0600 | [diff] [blame] | 282 | // TODO: FXC doesn't accept this with (), but glslang doesn't accept it without. |
| 283 | #define MATFNS() \ |
| 284 | all(inF0); \ |
| 285 | abs(inF0); \ |
| 286 | acos(inF0); \ |
| 287 | any(inF0); \ |
| 288 | asin(inF0); \ |
| 289 | atan(inF0); \ |
| 290 | atan2(inF0, inF1); \ |
| 291 | ceil(inF0); \ |
| 292 | clamp(inF0, inF1, inF2); \ |
| 293 | cos(inF0); \ |
| 294 | cosh(inF0); \ |
| 295 | degrees(inF0); \ |
| 296 | determinant(inF0); \ |
| 297 | exp(inF0); \ |
| 298 | exp2(inF0); \ |
| 299 | firstbithigh(7); \ |
| 300 | firstbitlow(7); \ |
| 301 | floor(inF0); \ |
| 302 | fmod(inF0, inF1); \ |
| 303 | frac(inF0); \ |
LoopDawg | 4b67732 | 2016-05-26 10:10:16 -0600 | [diff] [blame] | 304 | ldexp(inF0, inF1); \ |
LoopDawg | 4624a02 | 2016-06-20 13:26:59 -0600 | [diff] [blame] | 305 | lerp(inF0, inF1, inF2); \ |
LoopDawg | 4b67732 | 2016-05-26 10:10:16 -0600 | [diff] [blame] | 306 | log(inF0); \ |
LoopDawg | 592860c | 2016-06-09 08:57:35 -0600 | [diff] [blame] | 307 | log10(inF0); \ |
LoopDawg | 4b67732 | 2016-05-26 10:10:16 -0600 | [diff] [blame] | 308 | log2(inF0); \ |
| 309 | max(inF0, inF1); \ |
| 310 | min(inF0, inF1); \ |
| 311 | pow(inF0, inF1); \ |
| 312 | radians(inF0); \ |
| 313 | round(inF0); \ |
| 314 | rsqrt(inF0); \ |
LoopDawg | 592860c | 2016-06-09 08:57:35 -0600 | [diff] [blame] | 315 | saturate(inF0); \ |
LoopDawg | 4b67732 | 2016-05-26 10:10:16 -0600 | [diff] [blame] | 316 | sign(inF0); \ |
| 317 | sin(inF0); \ |
LoopDawg | 592860c | 2016-06-09 08:57:35 -0600 | [diff] [blame] | 318 | sincos(inF0, inF1, inF2); \ |
LoopDawg | 4b67732 | 2016-05-26 10:10:16 -0600 | [diff] [blame] | 319 | sinh(inF0); \ |
| 320 | smoothstep(inF0, inF1, inF2); \ |
| 321 | sqrt(inF0); \ |
| 322 | step(inF0, inF1); \ |
| 323 | tan(inF0); \ |
| 324 | tanh(inF0); \ |
| 325 | transpose(inF0); \ |
| 326 | trunc(inF0); |
| 327 | |
| 328 | // TODO: turn on non-square matrix tests when protos are available. |
| 329 | |
LoopDawg | e903ab5 | 2016-06-30 14:13:03 -0600 | [diff] [blame] | 330 | float2x2 VertexShaderFunction2x2(float2x2 inF0, float2x2 inF1, float2x2 inF2) |
LoopDawg | 4b67732 | 2016-05-26 10:10:16 -0600 | [diff] [blame] | 331 | { |
| 332 | // TODO: FXC doesn't accept this with (), but glslang doesn't accept it without. |
LoopDawg | ef764a2 | 2016-06-03 09:17:51 -0600 | [diff] [blame] | 333 | MATFNS(); |
LoopDawg | 4b67732 | 2016-05-26 10:10:16 -0600 | [diff] [blame] | 334 | |
| 335 | // TODO: ... add when float1 prototypes are generated |
| 336 | return float2x2(2,2,2,2); |
| 337 | } |
| 338 | |
LoopDawg | e903ab5 | 2016-06-30 14:13:03 -0600 | [diff] [blame] | 339 | float3x3 VertexShaderFunction3x3(float3x3 inF0, float3x3 inF1, float3x3 inF2) |
LoopDawg | 4b67732 | 2016-05-26 10:10:16 -0600 | [diff] [blame] | 340 | { |
| 341 | // TODO: FXC doesn't accept this with (), but glslang doesn't accept it without. |
LoopDawg | ef764a2 | 2016-06-03 09:17:51 -0600 | [diff] [blame] | 342 | MATFNS(); |
LoopDawg | 4b67732 | 2016-05-26 10:10:16 -0600 | [diff] [blame] | 343 | |
| 344 | // TODO: ... add when float1 prototypes are generated |
| 345 | return float3x3(3,3,3,3,3,3,3,3,3); |
| 346 | } |
| 347 | |
LoopDawg | e903ab5 | 2016-06-30 14:13:03 -0600 | [diff] [blame] | 348 | float4x4 VertexShaderFunction4x4(float4x4 inF0, float4x4 inF1, float4x4 inF2) |
LoopDawg | 4b67732 | 2016-05-26 10:10:16 -0600 | [diff] [blame] | 349 | { |
| 350 | // TODO: FXC doesn't accept this with (), but glslang doesn't accept it without. |
LoopDawg | ef764a2 | 2016-06-03 09:17:51 -0600 | [diff] [blame] | 351 | MATFNS(); |
LoopDawg | 4b67732 | 2016-05-26 10:10:16 -0600 | [diff] [blame] | 352 | |
| 353 | // TODO: ... add when float1 prototypes are generated |
| 354 | return float4x4(4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4); |
| 355 | } |
LoopDawg | 592860c | 2016-06-09 08:57:35 -0600 | [diff] [blame] | 356 | |
| 357 | #define TESTGENMUL(ST, VT, MT) \ |
| 358 | ST r0 = mul(inF0, inF1); \ |
| 359 | VT r1 = mul(inFV0, inF0); \ |
| 360 | VT r2 = mul(inF0, inFV0); \ |
| 361 | ST r3 = mul(inFV0, inFV1); \ |
| 362 | VT r4 = mul(inFM0, inFV0); \ |
| 363 | VT r5 = mul(inFV0, inFM0); \ |
| 364 | MT r6 = mul(inFM0, inF0); \ |
| 365 | MT r7 = mul(inF0, inFM0); \ |
| 366 | MT r8 = mul(inFM0, inFM1); |
| 367 | |
| 368 | |
LoopDawg | e903ab5 | 2016-06-30 14:13:03 -0600 | [diff] [blame] | 369 | void TestGenMul2(float inF0, float inF1, |
| 370 | float2 inFV0, float2 inFV1, |
| 371 | float2x2 inFM0, float2x2 inFM1) |
LoopDawg | 592860c | 2016-06-09 08:57:35 -0600 | [diff] [blame] | 372 | { |
| 373 | TESTGENMUL(float, float2, float2x2); |
| 374 | } |
| 375 | |
LoopDawg | e903ab5 | 2016-06-30 14:13:03 -0600 | [diff] [blame] | 376 | void TestGenMul3(float inF0, float inF1, |
| 377 | float3 inFV0, float3 inFV1, |
| 378 | float3x3 inFM0, float3x3 inFM1) |
LoopDawg | 592860c | 2016-06-09 08:57:35 -0600 | [diff] [blame] | 379 | { |
| 380 | TESTGENMUL(float, float3, float3x3); |
| 381 | } |
| 382 | |
LoopDawg | e903ab5 | 2016-06-30 14:13:03 -0600 | [diff] [blame] | 383 | void TestGenMul4(float inF0, float inF1, |
| 384 | float4 inFV0, float4 inFV1, |
| 385 | float4x4 inFM0, float4x4 inFM1) |
LoopDawg | 592860c | 2016-06-09 08:57:35 -0600 | [diff] [blame] | 386 | { |
| 387 | TESTGENMUL(float, float4, float4x4); |
| 388 | } |
LoopDawg | 4624a02 | 2016-06-20 13:26:59 -0600 | [diff] [blame] | 389 | |
| 390 | // Test some non-square mats |
LoopDawg | e903ab5 | 2016-06-30 14:13:03 -0600 | [diff] [blame] | 391 | void TestGenMulNxM(float inF0, float inF1, |
| 392 | float2 inFV2, float3 inFV3, |
| 393 | float2x3 inFM2x3, float3x2 inFM3x2, |
| 394 | float3x3 inFM3x3, float3x4 inFM3x4, |
| 395 | float2x4 inFM2x4) |
LoopDawg | 4624a02 | 2016-06-20 13:26:59 -0600 | [diff] [blame] | 396 | { |
| 397 | float r00 = mul(inF0, inF1); // S=S*S |
| 398 | float2 r01 = mul(inFV2, inF0); // V=V*S |
| 399 | float3 r02 = mul(inFV3, inF0); // V=V*S |
| 400 | float2 r03 = mul(inF0, inFV2); // V=S*V |
| 401 | float3 r04 = mul(inF0, inFV3); // V=S*V |
| 402 | float r05 = mul(inFV2, inFV2); // S=V*V |
| 403 | float r06 = mul(inFV3, inFV3); // S=V*V |
| 404 | float3 r07 = mul(inFV2, inFM2x3); // V=V*M (return V dim is Mcols) |
| 405 | float2 r08 = mul(inFV3, inFM3x2); // V=V*M (return V dim is Mcols) |
| 406 | float2 r09 = mul(inFM2x3, inFV3); // V=M*V (return V dim is Mrows) |
| 407 | float3 r10 = mul(inFM3x2, inFV2); // V=M*V (return V dim is Mrows) |
| 408 | float2x3 r11 = mul(inFM2x3, inF0); |
| 409 | float3x2 r12 = mul(inFM3x2, inF0); |
| 410 | float2x2 r13 = mul(inFM2x3, inFM3x2); |
| 411 | float2x3 r14 = mul(inFM2x3, inFM3x3); |
| 412 | float2x4 r15 = mul(inFM2x3, inFM3x4); |
| 413 | float3x4 r16 = mul(inFM3x2, inFM2x4); |
| 414 | } |