@@ -182,6 +182,71 @@ struct ValueTexture1DArray : public CPUComputeUtil::Resource, public CPPPrelude:
182
182
float m_value;
183
183
};
184
184
185
+ template <int COUNT>
186
+ struct ValueTexture2DArray : public CPUComputeUtil ::Resource, public CPPPrelude::ITexture2DArray
187
+ {
188
+ void set (void * out)
189
+ {
190
+ float * dst = (float *)out;
191
+ for (int i = 0 ; i < COUNT; ++i)
192
+ {
193
+ dst[i] = m_value;
194
+ }
195
+ }
196
+
197
+ virtual void Load (const CPPPrelude::int4& v, void * out) SLANG_OVERRIDE
198
+ {
199
+ set (out);
200
+ }
201
+ virtual void Sample (CPPPrelude::SamplerState samplerState, const CPPPrelude::float3& loc, void * out) SLANG_OVERRIDE
202
+ {
203
+ set (out);
204
+ }
205
+ virtual void SampleLevel (CPPPrelude::SamplerState samplerState, const CPPPrelude::float3& loc, float level, void * out) SLANG_OVERRIDE
206
+ {
207
+ set (out);
208
+ }
209
+
210
+ ValueTexture2DArray (float value) :
211
+ m_value (value)
212
+ {
213
+ m_interface = static_cast <CPPPrelude::ITexture2DArray*>(this );
214
+ }
215
+
216
+ float m_value;
217
+ };
218
+
219
+
220
+ template <int COUNT>
221
+ struct ValueTextureCubeArray : public CPUComputeUtil ::Resource, public CPPPrelude::ITextureCubeArray
222
+ {
223
+ void set (void * out)
224
+ {
225
+ float * dst = (float *)out;
226
+ for (int i = 0 ; i < COUNT; ++i)
227
+ {
228
+ dst[i] = m_value;
229
+ }
230
+ }
231
+
232
+ virtual void Sample (CPPPrelude::SamplerState samplerState, const CPPPrelude::float4& loc, void * out) SLANG_OVERRIDE
233
+ {
234
+ set (out);
235
+ }
236
+ virtual void SampleLevel (CPPPrelude::SamplerState samplerState, const CPPPrelude::float4& loc, float level, void * out) SLANG_OVERRIDE
237
+ {
238
+ set (out);
239
+ }
240
+
241
+ ValueTextureCubeArray (float value) :
242
+ m_value (value)
243
+ {
244
+ m_interface = static_cast <CPPPrelude::ITextureCubeArray*>(this );
245
+ }
246
+
247
+ float m_value;
248
+ };
249
+
185
250
static CPUComputeUtil::Resource* _newValueTexture (SlangResourceShape shape, int elemCount, float value)
186
251
{
187
252
switch (shape)
@@ -243,6 +308,31 @@ static CPUComputeUtil::Resource* _newValueTexture(SlangResourceShape shape, int
243
308
}
244
309
break ;
245
310
}
311
+ case SLANG_TEXTURE_2D_ARRAY:
312
+ {
313
+ switch (elemCount)
314
+ {
315
+ case 1 : return new ValueTexture2DArray<1 >(value);
316
+ case 2 : return new ValueTexture2DArray<2 >(value);
317
+ case 3 : return new ValueTexture2DArray<3 >(value);
318
+ case 4 : return new ValueTexture2DArray<4 >(value);
319
+ default : break ;
320
+ }
321
+ break ;
322
+ }
323
+ case SLANG_TEXTURE_CUBE_ARRAY:
324
+ {
325
+ switch (elemCount)
326
+ {
327
+ case 1 : return new ValueTextureCubeArray<1 >(value);
328
+ case 2 : return new ValueTextureCubeArray<2 >(value);
329
+ case 3 : return new ValueTextureCubeArray<3 >(value);
330
+ case 4 : return new ValueTextureCubeArray<4 >(value);
331
+ default : break ;
332
+ }
333
+ break ;
334
+ }
335
+
246
336
247
337
default : break ;
248
338
}
0 commit comments