John Kessenich | 66011cb | 2018-03-06 16:12:04 -0700 | [diff] [blame] | 1 | struct Types
|
| 2 | {
|
| 3 | uint4 u;
|
| 4 | int4 i;
|
| 5 | float4 f;
|
| 6 | double4 d;
|
| 7 | };
|
| 8 |
|
| 9 | RWStructuredBuffer<Types> data;
|
| 10 |
|
| 11 | [numthreads(32, 16, 1)]
|
| 12 | void CSMain(uint3 dti : SV_DispatchThreadID)
|
| 13 | {
|
| 14 | data[dti.x].u = QuadReadLaneAt(data[dti.x].u, 0);
|
| 15 | data[dti.x].u.x = QuadReadLaneAt(data[dti.x].u.x, 0);
|
| 16 | data[dti.x].u.xy = QuadReadLaneAt(data[dti.x].u.xy, 0);
|
| 17 | data[dti.x].u.xyz = QuadReadLaneAt(data[dti.x].u.xyz, 0);
|
| 18 |
|
| 19 | data[dti.x].i = QuadReadLaneAt(data[dti.x].i, 0);
|
| 20 | data[dti.x].i.x = QuadReadLaneAt(data[dti.x].i.x, 0);
|
| 21 | data[dti.x].i.xy = QuadReadLaneAt(data[dti.x].i.xy, 0);
|
| 22 | data[dti.x].i.xyz = QuadReadLaneAt(data[dti.x].i.xyz, 0);
|
| 23 |
|
| 24 | data[dti.x].f = QuadReadLaneAt(data[dti.x].f, 0);
|
| 25 | data[dti.x].f.x = QuadReadLaneAt(data[dti.x].f.x, 0);
|
| 26 | data[dti.x].f.xy = QuadReadLaneAt(data[dti.x].f.xy, 0);
|
| 27 | data[dti.x].f.xyz = QuadReadLaneAt(data[dti.x].f.xyz, 0);
|
| 28 |
|
| 29 | data[dti.x].d = QuadReadLaneAt(data[dti.x].d, 0);
|
| 30 | data[dti.x].d.x = QuadReadLaneAt(data[dti.x].d.x, 0);
|
| 31 | data[dti.x].d.xy = QuadReadLaneAt(data[dti.x].d.xy, 0);
|
| 32 | data[dti.x].d.xyz = QuadReadLaneAt(data[dti.x].d.xyz, 0);
|
| 33 |
|
| 34 | data[dti.x].u = QuadReadLaneAt(data[dti.x].u, 1);
|
| 35 | data[dti.x].u.x = QuadReadLaneAt(data[dti.x].u.x, 1);
|
| 36 | data[dti.x].u.xy = QuadReadLaneAt(data[dti.x].u.xy, 1);
|
| 37 | data[dti.x].u.xyz = QuadReadLaneAt(data[dti.x].u.xyz, 1);
|
| 38 |
|
| 39 | data[dti.x].i = QuadReadLaneAt(data[dti.x].i, 1);
|
| 40 | data[dti.x].i.x = QuadReadLaneAt(data[dti.x].i.x, 1);
|
| 41 | data[dti.x].i.xy = QuadReadLaneAt(data[dti.x].i.xy, 1);
|
| 42 | data[dti.x].i.xyz = QuadReadLaneAt(data[dti.x].i.xyz, 1);
|
| 43 |
|
| 44 | data[dti.x].f = QuadReadLaneAt(data[dti.x].f, 1);
|
| 45 | data[dti.x].f.x = QuadReadLaneAt(data[dti.x].f.x, 1);
|
| 46 | data[dti.x].f.xy = QuadReadLaneAt(data[dti.x].f.xy, 1);
|
| 47 | data[dti.x].f.xyz = QuadReadLaneAt(data[dti.x].f.xyz, 1);
|
| 48 |
|
| 49 | data[dti.x].d = QuadReadLaneAt(data[dti.x].d, 1);
|
| 50 | data[dti.x].d.x = QuadReadLaneAt(data[dti.x].d.x, 1);
|
| 51 | data[dti.x].d.xy = QuadReadLaneAt(data[dti.x].d.xy, 1);
|
| 52 | data[dti.x].d.xyz = QuadReadLaneAt(data[dti.x].d.xyz, 1);
|
| 53 |
|
| 54 | data[dti.x].u = QuadReadLaneAt(data[dti.x].u, 2);
|
| 55 | data[dti.x].u.x = QuadReadLaneAt(data[dti.x].u.x, 2);
|
| 56 | data[dti.x].u.xy = QuadReadLaneAt(data[dti.x].u.xy, 2);
|
| 57 | data[dti.x].u.xyz = QuadReadLaneAt(data[dti.x].u.xyz, 2);
|
| 58 |
|
| 59 | data[dti.x].i = QuadReadLaneAt(data[dti.x].i, 2);
|
| 60 | data[dti.x].i.x = QuadReadLaneAt(data[dti.x].i.x, 2);
|
| 61 | data[dti.x].i.xy = QuadReadLaneAt(data[dti.x].i.xy, 2);
|
| 62 | data[dti.x].i.xyz = QuadReadLaneAt(data[dti.x].i.xyz, 2);
|
| 63 |
|
| 64 | data[dti.x].f = QuadReadLaneAt(data[dti.x].f, 2);
|
| 65 | data[dti.x].f.x = QuadReadLaneAt(data[dti.x].f.x, 2);
|
| 66 | data[dti.x].f.xy = QuadReadLaneAt(data[dti.x].f.xy, 2);
|
| 67 | data[dti.x].f.xyz = QuadReadLaneAt(data[dti.x].f.xyz, 2);
|
| 68 |
|
| 69 | data[dti.x].d = QuadReadLaneAt(data[dti.x].d, 2);
|
| 70 | data[dti.x].d.x = QuadReadLaneAt(data[dti.x].d.x, 2);
|
| 71 | data[dti.x].d.xy = QuadReadLaneAt(data[dti.x].d.xy, 2);
|
| 72 | data[dti.x].d.xyz = QuadReadLaneAt(data[dti.x].d.xyz, 2);
|
| 73 |
|
| 74 | data[dti.x].u = QuadReadLaneAt(data[dti.x].u, 3);
|
| 75 | data[dti.x].u.x = QuadReadLaneAt(data[dti.x].u.x, 3);
|
| 76 | data[dti.x].u.xy = QuadReadLaneAt(data[dti.x].u.xy, 3);
|
| 77 | data[dti.x].u.xyz = QuadReadLaneAt(data[dti.x].u.xyz, 3);
|
| 78 |
|
| 79 | data[dti.x].i = QuadReadLaneAt(data[dti.x].i, 3);
|
| 80 | data[dti.x].i.x = QuadReadLaneAt(data[dti.x].i.x, 3);
|
| 81 | data[dti.x].i.xy = QuadReadLaneAt(data[dti.x].i.xy, 3);
|
| 82 | data[dti.x].i.xyz = QuadReadLaneAt(data[dti.x].i.xyz, 3);
|
| 83 |
|
| 84 | data[dti.x].f = QuadReadLaneAt(data[dti.x].f, 3);
|
| 85 | data[dti.x].f.x = QuadReadLaneAt(data[dti.x].f.x, 3);
|
| 86 | data[dti.x].f.xy = QuadReadLaneAt(data[dti.x].f.xy, 3);
|
| 87 | data[dti.x].f.xyz = QuadReadLaneAt(data[dti.x].f.xyz, 3);
|
| 88 |
|
| 89 | data[dti.x].d = QuadReadLaneAt(data[dti.x].d, 3);
|
| 90 | data[dti.x].d.x = QuadReadLaneAt(data[dti.x].d.x, 3);
|
| 91 | data[dti.x].d.xy = QuadReadLaneAt(data[dti.x].d.xy, 3);
|
| 92 | data[dti.x].d.xyz = QuadReadLaneAt(data[dti.x].d.xyz, 3);
|
| 93 |
|
| 94 | data[dti.x].u = QuadReadAcrossX(data[dti.x].u);
|
| 95 | data[dti.x].u.x = QuadReadAcrossX(data[dti.x].u.x);
|
| 96 | data[dti.x].u.xy = QuadReadAcrossX(data[dti.x].u.xy);
|
| 97 | data[dti.x].u.xyz = QuadReadAcrossX(data[dti.x].u.xyz);
|
| 98 |
|
| 99 | data[dti.x].i = QuadReadAcrossX(data[dti.x].i);
|
| 100 | data[dti.x].i.x = QuadReadAcrossX(data[dti.x].i.x);
|
| 101 | data[dti.x].i.xy = QuadReadAcrossX(data[dti.x].i.xy);
|
| 102 | data[dti.x].i.xyz = QuadReadAcrossX(data[dti.x].i.xyz);
|
| 103 |
|
| 104 | data[dti.x].f = QuadReadAcrossX(data[dti.x].f);
|
| 105 | data[dti.x].f.x = QuadReadAcrossX(data[dti.x].f.x);
|
| 106 | data[dti.x].f.xy = QuadReadAcrossX(data[dti.x].f.xy);
|
| 107 | data[dti.x].f.xyz = QuadReadAcrossX(data[dti.x].f.xyz);
|
| 108 |
|
| 109 | data[dti.x].d = QuadReadAcrossX(data[dti.x].d);
|
| 110 | data[dti.x].d.x = QuadReadAcrossX(data[dti.x].d.x);
|
| 111 | data[dti.x].d.xy = QuadReadAcrossX(data[dti.x].d.xy);
|
| 112 | data[dti.x].d.xyz = QuadReadAcrossX(data[dti.x].d.xyz);
|
| 113 |
|
| 114 | data[dti.x].u = QuadReadAcrossY(data[dti.x].u);
|
| 115 | data[dti.x].u.x = QuadReadAcrossY(data[dti.x].u.x);
|
| 116 | data[dti.x].u.xy = QuadReadAcrossY(data[dti.x].u.xy);
|
| 117 | data[dti.x].u.xyz = QuadReadAcrossY(data[dti.x].u.xyz);
|
| 118 |
|
| 119 | data[dti.x].i = QuadReadAcrossY(data[dti.x].i);
|
| 120 | data[dti.x].i.x = QuadReadAcrossY(data[dti.x].i.x);
|
| 121 | data[dti.x].i.xy = QuadReadAcrossY(data[dti.x].i.xy);
|
| 122 | data[dti.x].i.xyz = QuadReadAcrossY(data[dti.x].i.xyz);
|
| 123 |
|
| 124 | data[dti.x].f = QuadReadAcrossY(data[dti.x].f);
|
| 125 | data[dti.x].f.x = QuadReadAcrossY(data[dti.x].f.x);
|
| 126 | data[dti.x].f.xy = QuadReadAcrossY(data[dti.x].f.xy);
|
| 127 | data[dti.x].f.xyz = QuadReadAcrossY(data[dti.x].f.xyz);
|
| 128 |
|
| 129 | data[dti.x].d = QuadReadAcrossY(data[dti.x].d);
|
| 130 | data[dti.x].d.x = QuadReadAcrossY(data[dti.x].d.x);
|
| 131 | data[dti.x].d.xy = QuadReadAcrossY(data[dti.x].d.xy);
|
| 132 | data[dti.x].d.xyz = QuadReadAcrossY(data[dti.x].d.xyz);
|
| 133 |
|
| 134 | data[dti.x].u = QuadReadAcrossDiagonal(data[dti.x].u);
|
| 135 | data[dti.x].u.x = QuadReadAcrossDiagonal(data[dti.x].u.x);
|
| 136 | data[dti.x].u.xy = QuadReadAcrossDiagonal(data[dti.x].u.xy);
|
| 137 | data[dti.x].u.xyz = QuadReadAcrossDiagonal(data[dti.x].u.xyz);
|
| 138 |
|
| 139 | data[dti.x].i = QuadReadAcrossDiagonal(data[dti.x].i);
|
| 140 | data[dti.x].i.x = QuadReadAcrossDiagonal(data[dti.x].i.x);
|
| 141 | data[dti.x].i.xy = QuadReadAcrossDiagonal(data[dti.x].i.xy);
|
| 142 | data[dti.x].i.xyz = QuadReadAcrossDiagonal(data[dti.x].i.xyz);
|
| 143 |
|
| 144 | data[dti.x].f = QuadReadAcrossDiagonal(data[dti.x].f);
|
| 145 | data[dti.x].f.x = QuadReadAcrossDiagonal(data[dti.x].f.x);
|
| 146 | data[dti.x].f.xy = QuadReadAcrossDiagonal(data[dti.x].f.xy);
|
| 147 | data[dti.x].f.xyz = QuadReadAcrossDiagonal(data[dti.x].f.xyz);
|
| 148 |
|
| 149 | data[dti.x].d = QuadReadAcrossDiagonal(data[dti.x].d);
|
| 150 | data[dti.x].d.x = QuadReadAcrossDiagonal(data[dti.x].d.x);
|
| 151 | data[dti.x].d.xy = QuadReadAcrossDiagonal(data[dti.x].d.xy);
|
| 152 | data[dti.x].d.xyz = QuadReadAcrossDiagonal(data[dti.x].d.xyz);
|
| 153 | }
|