@@ -54,6 +54,7 @@ float4 main() : SV_Target0
5454
5555Texture2D res1 : register(t6);
5656Texture2D res2[2] : register(t7);
57+ SamplerState samplerArray[2] : register(s8);
5758
5859RWTexture2D<float> res1uav : register(u0);
5960
@@ -77,6 +78,8 @@ float4 main() : SV_Target0
7778 uint ONE = ZERO + 1;
7879 color += (float4)test + float4(0.1f, 0.0f, 0.0f, 0.0f);
7980 float4 uavVal = res1uav[uint2(1, 1)];
81+ color += res2[ONE].Sample(samplerArray[ZERO], float2(0.5f, 0.5f));
82+ color += res2[ONE].Sample(samplerArray[ONE], float2(0.5f, 0.5f));
8083 return color + res1[uint2(0, 0)] + res2[ONE][uint2(0, 0)] + uavVal;
8184}
8285
@@ -85,6 +88,7 @@ float4 main() : SV_Target0
8588 std::string pixel_resArray = R"EOSHADER(
8689
8790Texture2DArray<float> resArray[4] : register(t10, space1);
91+ SamplerState samplerArray[4] : register(s10, space1);
8892
8993cbuffer consts : register(b3)
9094{
@@ -98,14 +102,19 @@ float4 main(float4 pos : SV_Position) : SV_Target0
98102 float arrayVal1 = resArray[1].Load(uint4(0, 0, indices.y, 0));
99103 float arrayVal2 = resArray[test.x].Load(uint4(0, 0, indices.y, 0));
100104 float arrayVal3 = resArray[NonUniformResourceIndex(indices.x)].Load(uint4(0, 0, indices.y, 0));
101- return float4(arrayVal1, arrayVal2, arrayVal3, 1.0f);
105+ float arrayVal4 = resArray[NonUniformResourceIndex(indices.x)].Sample(
106+ samplerArray[NonUniformResourceIndex(indices.x)], float3(0.5f, 0.5f, 0.0f));
107+ arrayVal4 += resArray[NonUniformResourceIndex(indices.x+0)].Sample(
108+ samplerArray[NonUniformResourceIndex(indices.x+1)], float3(0.5f, 0.5f, 0.0f));
109+ return float4(arrayVal1, arrayVal2, arrayVal3, arrayVal4);
102110}
103111
104112)EOSHADER" ;
105113
106114 std::string pixel_bindless = R"EOSHADER(
107115
108116Texture2DArray<float> resArray[] : register(t0);
117+ SamplerState samplerArray[] : register(s0);
109118
110119cbuffer consts : register(b3)
111120{
@@ -119,7 +128,11 @@ float4 main(float4 pos : SV_Position) : SV_Target0
119128 float arrayVal1 = resArray[1].Load(uint4(0, 0, indices.y, 0));
120129 float arrayVal2 = resArray[test.x].Load(uint4(0, 0, indices.y, 0));
121130 float arrayVal3 = resArray[NonUniformResourceIndex(indices.x)].Load(uint4(0, 0, indices.y, 0));
122- return float4(arrayVal1, arrayVal2, arrayVal3, 1.0f);
131+ float arrayVal4 = resArray[NonUniformResourceIndex(indices.x)].Sample(
132+ samplerArray[NonUniformResourceIndex(indices.x)], float3(0.5f, 0.5f, 0.0f));
133+ arrayVal4 += resArray[NonUniformResourceIndex(indices.x+0)].Sample(
134+ samplerArray[NonUniformResourceIndex(indices.x+1)], float3(0.5f, 0.5f, 0.0f));
135+ return float4(arrayVal1, arrayVal2, arrayVal3, arrayVal4);
123136}
124137
125138)EOSHADER" ;
@@ -317,14 +330,19 @@ float4 main(float4 pos : SV_Position) : SV_Target0
317330 tableParam (D3D12_SHADER_VISIBILITY_PIXEL, D3D12_DESCRIPTOR_RANGE_TYPE_CBV, 0 , 4 , 12 , 0 ),
318331 tableParam (D3D12_SHADER_VISIBILITY_PIXEL, D3D12_DESCRIPTOR_RANGE_TYPE_UAV, 0 , 0 , 1 , 20 ),
319332 tableParam (D3D12_SHADER_VISIBILITY_PIXEL, D3D12_DESCRIPTOR_RANGE_TYPE_SRV, 0 , 0 , UINT_MAX, 50 ),
333+ tableParam (D3D12_SHADER_VISIBILITY_PIXEL, D3D12_DESCRIPTOR_RANGE_TYPE_SAMPLER, 0 , 0 ,
334+ UINT_MAX, 50 ),
320335 });
321336 ID3D12RootSignaturePtr sig_resArray = MakeSig ({
322337 cbvParam (D3D12_SHADER_VISIBILITY_PIXEL, 0 , 3 ),
323338 tableParam (D3D12_SHADER_VISIBILITY_PIXEL, D3D12_DESCRIPTOR_RANGE_TYPE_SRV, 1 , 10 , 4 , 30 ),
339+ tableParam (D3D12_SHADER_VISIBILITY_PIXEL, D3D12_DESCRIPTOR_RANGE_TYPE_SAMPLER, 1 , 10 , 4 , 30 ),
324340 });
325341 ID3D12RootSignaturePtr sig_bindless = MakeSig ({
326342 cbvParam (D3D12_SHADER_VISIBILITY_PIXEL, 0 , 3 ),
327343 tableParam (D3D12_SHADER_VISIBILITY_PIXEL, D3D12_DESCRIPTOR_RANGE_TYPE_SRV, 0 , 0 , UINT_MAX, 30 ),
344+ tableParam (D3D12_SHADER_VISIBILITY_PIXEL, D3D12_DESCRIPTOR_RANGE_TYPE_SAMPLER, 0 , 0 ,
345+ UINT_MAX, 30 ),
328346 });
329347 ID3D12RootSignaturePtr sig_resourceAccess = MakeSig ({
330348 tableParam (D3D12_SHADER_VISIBILITY_PIXEL, D3D12_DESCRIPTOR_RANGE_TYPE_SRV, 0 , 0 , 1 , 56 ),
0 commit comments