lib_cb_matrix_array.hlsl 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. // RUN: %dxc -T lib_6_5 %s | %D3DReflect %s | FileCheck %s
  2. cbuffer SomeBuffer : register(b0)
  3. {
  4. float4 Color;
  5. float4 VectorArray[3];
  6. float FloatArray[16];
  7. float4x4 MatrixArray[2];
  8. };
  9. RWTexture2D<float4> g_Output;
  10. [shader("raygeneration")]
  11. void RayGenShader()
  12. {
  13. uint2 LaunchIndex = DispatchRaysIndex().xy;
  14. uint2 LaunchDim = DispatchRaysDimensions().xy;
  15. float4x4 m0 = MatrixArray[0];
  16. float4x4 m1 = MatrixArray[1];
  17. g_Output[LaunchIndex] = Color * m0[0][0] * m1[0][0] * VectorArray[1] * FloatArray[2];
  18. }
  19. // CHECK: ID3D12LibraryReflection:
  20. // CHECK: FunctionCount: 1
  21. // CHECK-NEXT: ID3D12FunctionReflection:
  22. // CHECK-NEXT: D3D12_FUNCTION_DESC: Name: \01?RayGenShader@@YAXXZ
  23. // CHECK-NEXT: Shader Version: RayGeneration 6.5
  24. // CHECK: ConstantBuffers: 1
  25. // CHECK-NEXT: BoundResources: 2
  26. // CHECK-NEXT: FunctionParameterCount: 0
  27. // CHECK-NEXT: HasReturn: FALSE
  28. // CHECK-NEXT: Constant Buffers:
  29. // CHECK-NEXT: ID3D12ShaderReflectionConstantBuffer:
  30. // CHECK-NEXT: D3D12_SHADER_BUFFER_DESC: Name: SomeBuffer
  31. // CHECK-NEXT: Type: D3D_CT_CBUFFER
  32. // CHECK-NEXT: Size: 448
  33. // CHECK-NEXT: uFlags: 0
  34. // CHECK-NEXT: Num Variables: 4
  35. // CHECK-NEXT: {
  36. // CHECK-NEXT: ID3D12ShaderReflectionVariable:
  37. // CHECK-NEXT: D3D12_SHADER_VARIABLE_DESC: Name: Color
  38. // CHECK-NEXT: Size: 16
  39. // CHECK-NEXT: StartOffset: 0
  40. // CHECK-NEXT: uFlags: 0x2
  41. // CHECK-NEXT: DefaultValue: <nullptr>
  42. // CHECK-NEXT: ID3D12ShaderReflectionType:
  43. // CHECK-NEXT: D3D12_SHADER_TYPE_DESC: Name: float4
  44. // CHECK-NEXT: Class: D3D_SVC_VECTOR
  45. // CHECK-NEXT: Type: D3D_SVT_FLOAT
  46. // CHECK-NEXT: Elements: 0
  47. // CHECK-NEXT: Rows: 1
  48. // CHECK-NEXT: Columns: 4
  49. // CHECK-NEXT: Members: 0
  50. // CHECK-NEXT: Offset: 0
  51. // CHECK-NEXT: CBuffer: SomeBuffer
  52. // CHECK-NEXT: ID3D12ShaderReflectionVariable:
  53. // CHECK-NEXT: D3D12_SHADER_VARIABLE_DESC: Name: VectorArray
  54. // CHECK-NEXT: Size: 48
  55. // CHECK-NEXT: StartOffset: 16
  56. // CHECK-NEXT: uFlags: 0x2
  57. // CHECK-NEXT: DefaultValue: <nullptr>
  58. // CHECK-NEXT: ID3D12ShaderReflectionType:
  59. // CHECK-NEXT: D3D12_SHADER_TYPE_DESC: Name: float4
  60. // CHECK-NEXT: Class: D3D_SVC_VECTOR
  61. // CHECK-NEXT: Type: D3D_SVT_FLOAT
  62. // CHECK-NEXT: Elements: 3
  63. // CHECK-NEXT: Rows: 1
  64. // CHECK-NEXT: Columns: 4
  65. // CHECK-NEXT: Members: 0
  66. // CHECK-NEXT: Offset: 0
  67. // CHECK-NEXT: CBuffer: SomeBuffer
  68. // CHECK-NEXT: ID3D12ShaderReflectionVariable:
  69. // CHECK-NEXT: D3D12_SHADER_VARIABLE_DESC: Name: FloatArray
  70. // CHECK-NEXT: Size: 244
  71. // CHECK-NEXT: StartOffset: 64
  72. // CHECK-NEXT: uFlags: 0x2
  73. // CHECK-NEXT: DefaultValue: <nullptr>
  74. // CHECK-NEXT: ID3D12ShaderReflectionType:
  75. // CHECK-NEXT: D3D12_SHADER_TYPE_DESC: Name: float
  76. // CHECK-NEXT: Class: D3D_SVC_SCALAR
  77. // CHECK-NEXT: Type: D3D_SVT_FLOAT
  78. // CHECK-NEXT: Elements: 16
  79. // CHECK-NEXT: Rows: 1
  80. // CHECK-NEXT: Columns: 1
  81. // CHECK-NEXT: Members: 0
  82. // CHECK-NEXT: Offset: 0
  83. // CHECK-NEXT: CBuffer: SomeBuffer
  84. // CHECK-NEXT: ID3D12ShaderReflectionVariable:
  85. // CHECK-NEXT: D3D12_SHADER_VARIABLE_DESC: Name: MatrixArray
  86. // CHECK-NEXT: Size: 128
  87. // CHECK-NEXT: StartOffset: 320
  88. // CHECK-NEXT: uFlags: 0x2
  89. // CHECK-NEXT: DefaultValue: <nullptr>
  90. // CHECK-NEXT: ID3D12ShaderReflectionType:
  91. // CHECK-NEXT: D3D12_SHADER_TYPE_DESC: Name: float4x4
  92. // CHECK-NEXT: Class: D3D_SVC_MATRIX_COLUMNS
  93. // CHECK-NEXT: Type: D3D_SVT_FLOAT
  94. // CHECK-NEXT: Elements: 2
  95. // CHECK-NEXT: Rows: 4
  96. // CHECK-NEXT: Columns: 4
  97. // CHECK-NEXT: Members: 0
  98. // CHECK-NEXT: Offset: 0
  99. // CHECK-NEXT: CBuffer: SomeBuffer