hlsl.array.flatten.frag 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. // uniform Texture1D g_tex3[3][2]; // TODO: legal in HLSL, but we don't handle it yet.
  2. uniform Texture1D g_tex[3];
  3. uniform Texture1D g_tex_explicit[3] : register(t1);
  4. SamplerState g_samp[3];
  5. SamplerState g_samp_explicit[3] : register(s5);
  6. uniform float3x3 g_mats[4];
  7. uniform float3x3 g_mats_explicit[4] : register(b10);
  8. uniform float g_floats[4];
  9. // uniform float g_floats[4] = { 10, 11, 12, 13 }; // TODO: ... add when initializer lists can be flattened.
  10. float4 TestFn1()
  11. {
  12. return g_tex[1].Sample(g_samp[1], 0.2);
  13. }
  14. float4 TestFn2(Texture1D l_tex[3], SamplerState l_samp[3])
  15. {
  16. return l_tex[2].Sample(l_samp[2], 0.2);
  17. }
  18. static int not_flattened_a[5] = { 1, 2, 3, 4, 5 };
  19. struct PS_OUTPUT { float4 color : SV_Target0; };
  20. void main(out PS_OUTPUT ps_output)
  21. {
  22. // test flattening for local assignment initialization
  23. SamplerState local_sampler_array[3] = g_samp;
  24. Texture1D local_texture_array[3] = g_tex;
  25. float local_float_array[4] = g_floats;
  26. ps_output.color = TestFn1() + TestFn2(g_tex, g_samp);
  27. }