| |
| |
| groupshared uint gs_ua; |
| groupshared uint gs_ub; |
| groupshared uint gs_uc; |
| groupshared uint2 gs_ua2; |
| groupshared uint2 gs_ub2; |
| groupshared uint2 gs_uc2; |
| groupshared uint3 gs_ua3; |
| groupshared uint3 gs_ub3; |
| groupshared uint3 gs_uc3; |
| groupshared uint4 gs_ua4; |
| groupshared uint4 gs_ub4; |
| groupshared uint4 gs_uc4; |
| |
| float PixelShaderFunctionS(float inF0, float inF1, float inF2, uint inU0, uint inU1) |
| { |
| uint out_u1; |
| |
| bool r000 = all(inF0); |
| float r001 = abs(inF0); |
| float r002 = acos(inF0); |
| bool r003 = any(inF0); |
| float r004 = asin(inF0); |
| int r005 = asint(inF0); |
| uint r006 = asuint(inF0); |
| float r007 = asfloat(inU0); |
| // asdouble(inU0, inU1); // TODO: enable when HLSL parser used for intrinsics |
| float r009 = atan(inF0); |
| float r010 = atan2(inF0, inF1); |
| float r011 = ceil(inF0); |
| float r012 = clamp(inF0, inF1, inF2); |
| clip(inF0); |
| float r014 = cos(inF0); |
| float r015 = cosh(inF0); |
| int r016 = countbits(7); |
| float r017 = ddx(inF0); |
| float r018 = ddx_coarse(inF0); |
| float r019 = ddx_fine(inF0); |
| float r020 = ddy(inF0); |
| float r021 = ddy_coarse(inF0); |
| float r022 = ddy_fine(inF0); |
| float r023 = degrees(inF0); |
| // EvaluateAttributeAtCentroid(inF0); |
| // EvaluateAttributeAtSample(inF0, 0); |
| // TODO: EvaluateAttributeSnapped(inF0, int2(1,2)); |
| float r027 = exp(inF0); |
| float r028 = exp2(inF0); |
| uint r029 = firstbithigh(7); |
| uint r030 = firstbitlow(7); |
| float r031 = floor(inF0); |
| // TODO: fma(inD0, inD1, inD2); |
| float r033 = fmod(inF0, inF1); |
| float r034 = frac(inF0); |
| float r035 = frexp(inF0, inF1); |
| float r036 = fwidth(inF0); |
| bool r037 = isinf(inF0); |
| bool r038 = isnan(inF0); |
| float r039 = ldexp(inF0, inF1); |
| float r039a = lerp(inF0, inF1, inF2); |
| float r040 = log(inF0); |
| float r041 = log10(inF0); |
| float r042 = log2(inF0); |
| float r043 = max(inF0, inF1); |
| float r044 = min(inF0, inF1); |
| float r045 = pow(inF0, inF1); |
| float r046 = radians(inF0); |
| float r047 = rcp(inF0); |
| uint r048 = reversebits(2); |
| float r049 = round(inF0); |
| float r050 = rsqrt(inF0); |
| float r051 = saturate(inF0); |
| float r052 = sign(inF0); |
| float r053 = sin(inF0); |
| sincos(inF0, inF1, inF2); |
| float r055 = sinh(inF0); |
| float r056 = smoothstep(inF0, inF1, inF2); |
| float r057 = sqrt(inF0); |
| float r058 = step(inF0, inF1); |
| float r059 = tan(inF0); |
| float r060 = tanh(inF0); |
| // TODO: sampler intrinsics, when we can declare the types. |
| float r061 = trunc(inF0); |
| |
| return 0.0; |
| } |
| |
| float1 PixelShaderFunction1(float1 inF0, float1 inF1, float1 inF2) |
| { |
| // TODO: ... add when float1 prototypes are generated |
| return 0.0; |
| } |
| |
| float2 PixelShaderFunction2(float2 inF0, float2 inF1, float2 inF2, uint2 inU0, uint2 inU1) |
| { |
| uint2 out_u2; |
| |
| bool r000 = all(inF0); |
| float2 r001 = abs(inF0); |
| float2 r002 = acos(inF0); |
| bool r003 = any(inF0); |
| float2 r004 = asin(inF0); |
| int2 r005 = asint(inF0); |
| uint2 r006 = asuint(inF0); |
| float2 r007 = asfloat(inU0); |
| // asdouble(inU0, inU1); // TODO: enable when HLSL parser used for intrinsics |
| float2 r009 = atan(inF0); |
| float2 r010 = atan2(inF0, inF1); |
| float2 r011 = ceil(inF0); |
| float2 r012 = clamp(inF0, inF1, inF2); |
| clip(inF0); |
| float2 r013 = cos(inF0); |
| float2 r015 = cosh(inF0); |
| int2 r016 = countbits(int2(7,3)); |
| float2 r017 = ddx(inF0); |
| float2 r018 = ddx_coarse(inF0); |
| float2 r019 = ddx_fine(inF0); |
| float2 r020 = ddy(inF0); |
| float2 r021 = ddy_coarse(inF0); |
| float2 r022 = ddy_fine(inF0); |
| float2 r023 = degrees(inF0); |
| // EvaluateAttributeAtCentroid(inF0); |
| // EvaluateAttributeAtSample(inF0, 0); |
| // TODO: EvaluateAttributeSnapped(inF0, int2(1,2)); |
| float r026 = distance(inF0, inF1); |
| float r027 = dot(inF0, inF1); |
| // EvaluateAttributeAtCentroid(inF0); |
| // EvaluateAttributeAtSample(inF0, 0); |
| // TODO: EvaluateAttributeSnapped(inF0, int2(1,2)); |
| float2 r028 = exp(inF0); |
| float2 r029 = exp2(inF0); |
| float2 r030 = faceforward(inF0, inF1, inF2); |
| uint2 r031 = firstbithigh(uint2(7,8)); |
| uint2 r032 = firstbitlow(uint2(7,8)); |
| float2 r033 = floor(inF0); |
| // TODO: fma(inD0, inD1, inD2); |
| float2 r035 = fmod(inF0, inF1); |
| float2 r036 = frac(inF0); |
| float2 r037 = frexp(inF0, inF1); |
| float2 r038 = fwidth(inF0); |
| bool2 r039 = isinf(inF0); |
| bool2 r040 = isnan(inF0); |
| float2 r041 = ldexp(inF0, inF1); |
| float2 r039a = lerp(inF0, inF1, inF2); |
| float r042 = length(inF0); |
| float2 r043 = log(inF0); |
| float2 r044 = log10(inF0); |
| float2 r045 = log2(inF0); |
| float2 r046 = max(inF0, inF1); |
| float2 r047 = min(inF0, inF1); |
| float2 r048 = normalize(inF0); |
| float2 r049 = pow(inF0, inF1); |
| float2 r050 = radians(inF0); |
| float2 r051 = rcp(inF0); |
| float2 r052 = reflect(inF0, inF1); |
| float2 r053 = refract(inF0, inF1, 2.0); |
| uint2 r054 = reversebits(uint2(1,2)); |
| float2 r055 = round(inF0); |
| float2 r056 = rsqrt(inF0); |
| float2 r057 = saturate(inF0); |
| float2 r058 = sign(inF0); |
| float2 r059 = sin(inF0); |
| sincos(inF0, inF1, inF2); |
| float2 r060 = sinh(inF0); |
| float2 r061 = smoothstep(inF0, inF1, inF2); |
| float2 r062 = sqrt(inF0); |
| float2 r063 = step(inF0, inF1); |
| float2 r064 = tan(inF0); |
| float2 r065 = tanh(inF0); |
| // TODO: sampler intrinsics, when we can declare the types. |
| float2 r066 = trunc(inF0); |
| |
| // TODO: ... add when float1 prototypes are generated |
| return float2(1,2); |
| } |
| |
| float3 PixelShaderFunction3(float3 inF0, float3 inF1, float3 inF2, uint3 inU0, uint3 inU1) |
| { |
| uint3 out_u3; |
| |
| bool r000 = all(inF0); |
| float3 r001 = abs(inF0); |
| float3 r002 = acos(inF0); |
| bool r003 = any(inF0); |
| float3 r004 = asin(inF0); |
| int3 r005 = asint(inF0); |
| uint3 r006 = asuint(inF0); |
| float3 r007 = asfloat(inU0); |
| // asdouble(inU0, inU1); // TODO: enable when HLSL parser used for intrinsics |
| float3 r009 = atan(inF0); |
| float3 r010 = atan2(inF0, inF1); |
| float3 r011 = ceil(inF0); |
| float3 r012 = clamp(inF0, inF1, inF2); |
| clip(inF0); |
| float3 r013 = cos(inF0); |
| float3 r014 = cosh(inF0); |
| uint3 r015 = countbits(uint3(7,3,5)); |
| float3 r016 = cross(inF0, inF1); |
| float3 r017 = ddx(inF0); |
| float3 r018 = ddx_coarse(inF0); |
| float3 r019 = ddx_fine(inF0); |
| float3 r020 = ddy(inF0); |
| float3 r021 = ddy_coarse(inF0); |
| float3 r022 = ddy_fine(inF0); |
| float3 r023 = degrees(inF0); |
| float r024 = distance(inF0, inF1); |
| float r025 = dot(inF0, inF1); |
| // EvaluateAttributeAtCentroid(inF0); |
| // EvaluateAttributeAtSample(inF0, 0); |
| // TODO: EvaluateAttributeSnapped(inF0, int2(1,2)); |
| float3 r029 = exp(inF0); |
| float3 r030 = exp2(inF0); |
| float3 r031 = faceforward(inF0, inF1, inF2); |
| uint3 r032 = firstbithigh(uint3(2,3,4)); |
| uint3 r033 = firstbitlow(uint3(2,3,4)); |
| float3 r034 = floor(inF0); |
| // TODO: fma(inD0, inD1, inD2); |
| float3 r036 = fmod(inF0, inF1); |
| float3 r037 = frac(inF0); |
| float3 r038 = frexp(inF0, inF1); |
| float3 r039 = fwidth(inF0); |
| bool3 r040 = isinf(inF0); |
| bool3 r041 = isnan(inF0); |
| float3 r042 = ldexp(inF0, inF1); |
| float3 r039a = lerp(inF0, inF1, inF2); |
| float3 r039b = lerp(inF0, inF1, 0.3); // test vec,vec,scalar lerp |
| float r043 = length(inF0); |
| float3 r044 = log(inF0); |
| float3 r045 = log10(inF0); |
| float3 r046 = log2(inF0); |
| float3 r047 = max(inF0, inF1); |
| float3 r048 = min(inF0, inF1); |
| float3 r049 = normalize(inF0); |
| float3 r050 = pow(inF0, inF1); |
| float3 r051 = radians(inF0); |
| float3 r052 = rcp(inF0); |
| float3 r053 = reflect(inF0, inF1); |
| float3 r054 = refract(inF0, inF1, 2.0); |
| uint3 r055 = reversebits(uint3(1,2,3)); |
| float3 r056 = round(inF0); |
| float3 r057 = rsqrt(inF0); |
| float3 r058 = saturate(inF0); |
| float3 r059 = sign(inF0); |
| float3 r060 = sin(inF0); |
| sincos(inF0, inF1, inF2); |
| float3 r061 = sinh(inF0); |
| float3 r062 = smoothstep(inF0, inF1, inF2); |
| float3 r063 = sqrt(inF0); |
| float3 r064 = step(inF0, inF1); |
| float3 r065 = tan(inF0); |
| float3 r066 = tanh(inF0); |
| // TODO: sampler intrinsics, when we can declare the types. |
| float3 r067 = trunc(inF0); |
| |
| // TODO: ... add when float1 prototypes are generated |
| return float3(1,2,3); |
| } |
| |
| float4 PixelShaderFunction(float4 inF0, float4 inF1, float4 inF2, uint4 inU0, uint4 inU1) |
| { |
| uint4 out_u4; |
| |
| bool r000 = all(inF0); |
| float4 r001 = abs(inF0); |
| float4 r002 = acos(inF0); |
| bool r003 = any(inF0); |
| float4 r004 = asin(inF0); |
| int4 r005 = asint(inF0); |
| uint4 r006 = asuint(inF0); |
| float4 r007 = asfloat(inU0); |
| // asdouble(inU0, inU1); // TODO: enable when HLSL parser used for intrinsics |
| float4 r009 = atan(inF0); |
| float4 r010 = atan2(inF0, inF1); |
| float4 r011 = ceil(inF0); |
| float4 r012 = clamp(inF0, inF1, inF2); |
| clip(inF0); |
| float4 r013 = cos(inF0); |
| float4 r014 = cosh(inF0); |
| uint4 r015 = countbits(uint4(7,3,5,2)); |
| float4 r016 = ddx(inF0); |
| float4 r017 = ddx_coarse(inF0); |
| float4 r018 = ddx_fine(inF0); |
| float4 r019 = ddy(inF0); |
| float4 r020 = ddy_coarse(inF0); |
| float4 r021 = ddy_fine(inF0); |
| float4 r022 = degrees(inF0); |
| float r023 = distance(inF0, inF1); |
| float r024 = dot(inF0, inF1); |
| float4 r025 = dst(inF0, inF1); |
| // EvaluateAttributeAtCentroid(inF0); |
| // EvaluateAttributeAtSample(inF0, 0); |
| // TODO: EvaluateAttributeSnapped(inF0, int2(1,2)); |
| float4 r029 = exp(inF0); |
| float4 r030 = exp2(inF0); |
| float4 r031 = faceforward(inF0, inF1, inF2); |
| uint4 r032 = firstbithigh(uint4(7,8,9,10)); |
| uint4 r033 = firstbitlow(uint4(7,8,9,10)); |
| float4 r034 = floor(inF0); |
| // TODO: fma(inD0, inD1, inD2); |
| float4 r036 = fmod(inF0, inF1); |
| float4 r037 = frac(inF0); |
| float4 r038 = frexp(inF0, inF1); |
| float4 r039 = fwidth(inF0); |
| bool4 r040 = isinf(inF0); |
| bool4 r041 = isnan(inF0); |
| float4 r042 = ldexp(inF0, inF1); |
| float4 r039a = lerp(inF0, inF1, inF2); |
| float r043 = length(inF0); |
| float4 r044 = log(inF0); |
| float4 r045 = log10(inF0); |
| float4 r046 = log2(inF0); |
| float4 r047 = max(inF0, inF1); |
| float4 r048 = min(inF0, inF1); |
| float4 r049 = normalize(inF0); |
| float4 r050 = pow(inF0, inF1); |
| float4 r051 = radians(inF0); |
| float4 r052 = rcp(inF0); |
| float4 r053 = reflect(inF0, inF1); |
| float4 r054 = refract(inF0, inF1, 2.0); |
| uint4 r055 = reversebits(uint4(1,2,3,4)); |
| float4 r056 = round(inF0); |
| float4 r057 = rsqrt(inF0); |
| float4 r058 = saturate(inF0); |
| float4 r059 = sign(inF0); |
| float4 r060 = sin(inF0); |
| sincos(inF0, inF1, inF2); |
| float4 r061 = sinh(inF0); |
| float4 r062 = smoothstep(inF0, inF1, inF2); |
| float4 r063 = sqrt(inF0); |
| float4 r064 = step(inF0, inF1); |
| float4 r065 = tan(inF0); |
| float4 r066 = tanh(inF0); |
| // TODO: sampler intrinsics, when we can declare the types. |
| float4 r067 = trunc(inF0); |
| |
| // TODO: ... add when float1 prototypes are generated |
| return float4(1,2,3,4); |
| } |
| |
| // TODO: for mats: |
| // asfloat(inU0); \ |
| // asint(inF0); \ |
| // asuint(inF0); \ |
| |
| // TODO: FXC doesn't accept this with (), but glslang doesn't accept it without. |
| #define MATFNS(MT) \ |
| bool r000 = all(inF0); \ |
| MT r001 = abs(inF0); \ |
| acos(inF0); \ |
| bool r003 = any(inF0); \ |
| MT r004 = asin(inF0); \ |
| MT r005 = atan(inF0); \ |
| MT r006 = atan2(inF0, inF1); \ |
| MT r007 = ceil(inF0); \ |
| clip(inF0); \ |
| MT r008 = clamp(inF0, inF1, inF2); \ |
| MT r009 = cos(inF0); \ |
| MT r010 = cosh(inF0); \ |
| MT r011 = ddx(inF0); \ |
| MT r012 = ddx_coarse(inF0); \ |
| MT r013 = ddx_fine(inF0); \ |
| MT r014 = ddy(inF0); \ |
| MT r015 = ddy_coarse(inF0); \ |
| MT r016 = ddy_fine(inF0); \ |
| MT r017 = degrees(inF0); \ |
| float r018 = determinant(inF0); \ |
| MT r019 = exp(inF0); \ |
| MT R020 = exp2(inF0); \ |
| MT r021 = floor(inF0); \ |
| MT r022 = fmod(inF0, inF1); \ |
| MT r023 = frac(inF0); \ |
| MT r024 = frexp(inF0, inF1); \ |
| MT r025 = fwidth(inF0); \ |
| MT r026 = ldexp(inF0, inF1); \ |
| MT r026a = lerp(inF0, inF1, inF2); \ |
| MT r027 = log(inF0); \ |
| MT r028 = log10(inF0); \ |
| MT r029 = log2(inF0); \ |
| MT r030 = max(inF0, inF1); \ |
| MT r031 = min(inF0, inF1); \ |
| MT r032 = pow(inF0, inF1); \ |
| MT r033 = radians(inF0); \ |
| MT r034 = round(inF0); \ |
| MT r035 = rsqrt(inF0); \ |
| MT r036 = saturate(inF0); \ |
| MT r037 = sign(inF0); \ |
| MT r038 = sin(inF0); \ |
| sincos(inF0, inF1, inF2); \ |
| MT r039 = sinh(inF0); \ |
| MT r049 = smoothstep(inF0, inF1, inF2); \ |
| MT r041 = sqrt(inF0); \ |
| MT r042 = step(inF0, inF1); \ |
| MT r043 = tan(inF0); \ |
| MT r044 = tanh(inF0); \ |
| transpose(inF0); \ |
| MT r046 = trunc(inF0); |
| |
| // TODO: turn on non-square matrix tests when protos are available. |
| |
| float2x2 PixelShaderFunction2x2(float2x2 inF0, float2x2 inF1, float2x2 inF2) |
| { |
| // TODO: FXC doesn't accept this with (), but glslang doesn't accept it without. |
| MATFNS(float2x2); |
| |
| // TODO: ... add when float1 prototypes are generated |
| return float2x2(2,2,2,2); |
| } |
| |
| float3x3 PixelShaderFunction3x3(float3x3 inF0, float3x3 inF1, float3x3 inF2) |
| { |
| // TODO: FXC doesn't accept this with (), but glslang doesn't accept it without. |
| MATFNS(float3x3); |
| |
| // TODO: ... add when float1 prototypes are generated |
| return float3x3(3,3,3,3,3,3,3,3,3); |
| } |
| |
| float4x4 PixelShaderFunction4x4(float4x4 inF0, float4x4 inF1, float4x4 inF2) |
| { |
| // TODO: FXC doesn't accept this with (), but glslang doesn't accept it without. |
| MATFNS(float4x4); |
| |
| // TODO: ... add when float1 prototypes are generated |
| return float4x4(4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4); |
| } |
| |
| #define TESTGENMUL(ST, VT, MT) \ |
| ST r0 = mul(inF0, inF1); \ |
| VT r1 = mul(inFV0, inF0); \ |
| VT r2 = mul(inF0, inFV0); \ |
| ST r3 = mul(inFV0, inFV1); \ |
| VT r4 = mul(inFM0, inFV0); \ |
| VT r5 = mul(inFV0, inFM0); \ |
| MT r6 = mul(inFM0, inF0); \ |
| MT r7 = mul(inF0, inFM0); \ |
| MT r8 = mul(inFM0, inFM1); |
| |
| |
| void TestGenMul2(float inF0, float inF1, |
| float2 inFV0, float2 inFV1, |
| float2x2 inFM0, float2x2 inFM1) |
| { |
| TESTGENMUL(float, float2, float2x2); |
| } |
| |
| void TestGenMul3(float inF0, float inF1, |
| float3 inFV0, float3 inFV1, |
| float3x3 inFM0, float3x3 inFM1) |
| { |
| TESTGENMUL(float, float3, float3x3); |
| } |
| |
| void TestGenMul4(float inF0, float inF1, |
| float4 inFV0, float4 inFV1, |
| float4x4 inFM0, float4x4 inFM1) |
| { |
| TESTGENMUL(float, float4, float4x4); |
| } |
| |
| // Test some non-square mats |
| void TestGenMulNxM(float inF0, float inF1, |
| float2 inFV2, float3 inFV3, |
| float2x3 inFM2x3, float3x2 inFM3x2, |
| float3x3 inFM3x3, float3x4 inFM3x4, |
| float2x4 inFM2x4) |
| { |
| float r00 = mul(inF0, inF1); // S=S*S |
| float2 r01 = mul(inFV2, inF0); // V=V*S |
| float3 r02 = mul(inFV3, inF0); // V=V*S |
| float2 r03 = mul(inF0, inFV2); // V=S*V |
| float3 r04 = mul(inF0, inFV3); // V=S*V |
| float r05 = mul(inFV2, inFV2); // S=V*V |
| float r06 = mul(inFV3, inFV3); // S=V*V |
| float3 r07 = mul(inFV2, inFM2x3); // V=V*M (return V dim is Mcols) |
| float2 r08 = mul(inFV3, inFM3x2); // V=V*M (return V dim is Mcols) |
| float2 r09 = mul(inFM2x3, inFV3); // V=M*V (return V dim is Mrows) |
| float3 r10 = mul(inFM3x2, inFV2); // V=M*V (return V dim is Mrows) |
| float2x3 r11 = mul(inFM2x3, inF0); |
| float3x2 r12 = mul(inFM3x2, inF0); |
| float2x2 r13 = mul(inFM2x3, inFM3x2); |
| float2x3 r14 = mul(inFM2x3, inFM3x3); |
| float2x4 r15 = mul(inFM2x3, inFM3x4); |
| float3x4 r16 = mul(inFM3x2, inFM2x4); |
| } |
| |
| struct PS_OUTPUT { float4 color : SV_Target0; }; |
| |
| PS_OUTPUT main() |
| { |
| PS_OUTPUT ps_output; |
| ps_output.color = 1.0; |
| return ps_output; |
| }; |