1#ifndef SLANG_PRELUDE_CPP_TYPES_H
2#define SLANG_PRELUDE_CPP_TYPES_H
4#ifdef SLANG_PRELUDE_NAMESPACE
9#ifndef SLANG_FORCE_INLINE
10#define SLANG_FORCE_INLINE inline
44 const T&
Load(
size_t index)
const
51 *outNumStructs = uint32_t(count);
52 *outStride = uint32_t(
sizeof(T));
67 T&
Load(
size_t index)
const
74 *outNumStructs = uint32_t(count);
75 *outStride = uint32_t(
sizeof(T));
91 const T&
Load(
size_t index)
const
110 const T&
Load(
size_t index)
const
124 void GetDimensions(uint32_t* outDim)
const { *outDim = uint32_t(sizeInBytes); }
125 uint32_t
Load(
size_t index)
const
128 return data[index >> 2];
133 const size_t dataIdx = index >> 2;
134 return uint2{data[dataIdx], data[dataIdx + 1]};
139 const size_t dataIdx = index >> 2;
140 return uint3{data[dataIdx], data[dataIdx + 1], data[dataIdx + 2]};
145 const size_t dataIdx = index >> 2;
146 return uint4{data[dataIdx], data[dataIdx + 1], data[dataIdx + 2], data[dataIdx + 3]};
152 return *(
const T*)(((
const char*)data) + index);
164 void GetDimensions(uint32_t* outDim)
const { *outDim = uint32_t(sizeInBytes); }
166 uint32_t
Load(
size_t index)
const
169 return data[index >> 2];
174 const size_t dataIdx = index >> 2;
175 return uint2{data[dataIdx], data[dataIdx + 1]};
180 const size_t dataIdx = index >> 2;
181 return uint3{data[dataIdx], data[dataIdx + 1], data[dataIdx + 2]};
186 const size_t dataIdx = index >> 2;
187 return uint4{data[dataIdx], data[dataIdx + 1], data[dataIdx + 2], data[dataIdx + 3]};
193 return *(
const T*)(((
const char*)data) + index);
196 void Store(
size_t index, uint32_t v)
const
199 data[index >> 2] = v;
204 const size_t dataIdx = index >> 2;
205 data[dataIdx + 0] = v.x;
206 data[dataIdx + 1] = v.y;
211 const size_t dataIdx = index >> 2;
212 data[dataIdx + 0] = v.x;
213 data[dataIdx + 1] = v.y;
214 data[dataIdx + 2] = v.z;
219 const size_t dataIdx = index >> 2;
220 data[dataIdx + 0] = v.x;
221 data[dataIdx + 1] = v.y;
222 data[dataIdx + 2] = v.z;
223 data[dataIdx + 3] = v.w;
226 void Store(
size_t index, T
const& value)
const
229 *(T*)(((
char*)data) + index) = value;
237struct ISamplerComparisonState;
249#ifndef SLANG_RESOURCE_SHAPE
250#define SLANG_RESOURCE_SHAPE
293 width = height = depth = 0;
295 arrayElementCount = 0;
305 outDims[count++] = width;
310 outDims[count++] = width;
311 outDims[count++] = height;
316 outDims[count++] = width;
317 outDims[count++] = height;
318 outDims[count++] = depth;
323 outDims[count++] = width;
324 outDims[count++] = height;
325 outDims[count++] = 6;
332 outDims[count++] = arrayElementCount;
344 outDims[count++] = width;
350 outDims[count++] = width;
351 outDims[count++] = height;
356 outDims[count++] = width;
357 outDims[count++] = height;
358 outDims[count++] = depth;
367 const int dimCount = getMIPDims(dims);
368 for (
int count = 1;
true; count++)
371 for (
int i = 0; i < dimCount; ++i)
398 virtual void Load(
const int32_t* v,
void* outData,
size_t dataSize) = 0;
403 size_t dataSize) = 0;
409 size_t dataSize) = 0;
415 void GetDimensions(uint32_t* outWidth) { *outWidth = texture->GetDimensions().width; }
416 void GetDimensions(uint32_t mipLevel, uint32_t* outWidth, uint32_t* outNumberOfLevels)
418 auto dims = texture->GetDimensions(mipLevel);
419 *outWidth = dims.width;
420 *outNumberOfLevels = dims.numberOfLevels;
423 void GetDimensions(
float* outWidth) { *outWidth = texture->GetDimensions().width; }
424 void GetDimensions(uint32_t mipLevel,
float* outWidth,
float* outNumberOfLevels)
426 auto dims = texture->GetDimensions(mipLevel);
427 *outWidth = dims.width;
428 *outNumberOfLevels = dims.numberOfLevels;
434 texture->Load(&loc.x, &out,
sizeof(out));
440 texture->Sample(samplerState, &loc, &out,
sizeof(out));
446 texture->SampleLevel(samplerState, &loc, level, &out,
sizeof(out));
458 const auto dims = texture->GetDimensions();
459 *outWidth = dims.width;
460 *outHeight = dims.height;
466 uint32_t* outNumberOfLevels)
468 const auto dims = texture->GetDimensions(mipLevel);
469 *outWidth = dims.width;
470 *outHeight = dims.height;
471 *outNumberOfLevels = dims.numberOfLevels;
475 const auto dims = texture->GetDimensions();
476 *outWidth = dims.width;
477 *outHeight = dims.height;
483 float* outNumberOfLevels)
485 const auto dims = texture->GetDimensions(mipLevel);
486 *outWidth = dims.width;
487 *outHeight = dims.height;
488 *outNumberOfLevels = dims.numberOfLevels;
494 texture->Load(&loc.x, &out,
sizeof(out));
500 texture->Sample(samplerState, &loc.x, &out,
sizeof(out));
506 texture->SampleLevel(samplerState, &loc.x, level, &out,
sizeof(out));
516 void GetDimensions(uint32_t* outWidth, uint32_t* outHeight, uint32_t* outDepth)
518 const auto dims = texture->GetDimensions();
519 *outWidth = dims.width;
520 *outHeight = dims.height;
521 *outDepth = dims.depth;
528 uint32_t* outNumberOfLevels)
530 const auto dims = texture->GetDimensions(mipLevel);
531 *outWidth = dims.width;
532 *outHeight = dims.height;
533 *outDepth = dims.depth;
534 *outNumberOfLevels = dims.numberOfLevels;
538 const auto dims = texture->GetDimensions();
539 *outWidth = dims.width;
540 *outHeight = dims.height;
541 *outDepth = dims.depth;
548 float* outNumberOfLevels)
550 const auto dims = texture->GetDimensions(mipLevel);
551 *outWidth = dims.width;
552 *outHeight = dims.height;
553 *outDepth = dims.depth;
554 *outNumberOfLevels = dims.numberOfLevels;
560 texture->Load(&loc.x, &out,
sizeof(out));
566 texture->Sample(samplerState, &loc.x, &out,
sizeof(out));
572 texture->SampleLevel(samplerState, &loc.x, level, &out,
sizeof(out));
584 const auto dims = texture->GetDimensions();
585 *outWidth = dims.width;
586 *outHeight = dims.height;
592 uint32_t* outNumberOfLevels)
594 const auto dims = texture->GetDimensions(mipLevel);
595 *outWidth = dims.width;
596 *outHeight = dims.height;
597 *outNumberOfLevels = dims.numberOfLevels;
601 const auto dims = texture->GetDimensions();
602 *outWidth = dims.width;
603 *outHeight = dims.height;
609 float* outNumberOfLevels)
611 const auto dims = texture->GetDimensions(mipLevel);
612 *outWidth = dims.width;
613 *outHeight = dims.height;
614 *outNumberOfLevels = dims.numberOfLevels;
620 texture->Sample(samplerState, &loc.x, &out,
sizeof(out));
626 texture->SampleLevel(samplerState, &loc.x, level, &out,
sizeof(out));
638 auto dims = texture->GetDimensions();
639 *outWidth = dims.width;
640 *outElements = dims.arrayElementCount;
645 uint32_t* outElements,
646 uint32_t* outNumberOfLevels)
648 auto dims = texture->GetDimensions(mipLevel);
649 *outWidth = dims.width;
650 *outNumberOfLevels = dims.numberOfLevels;
651 *outElements = dims.arrayElementCount;
655 auto dims = texture->GetDimensions();
656 *outWidth = dims.width;
657 *outElements = dims.arrayElementCount;
663 float* outNumberOfLevels)
665 auto dims = texture->GetDimensions(mipLevel);
666 *outWidth = dims.width;
667 *outNumberOfLevels = dims.numberOfLevels;
668 *outElements = dims.arrayElementCount;
674 texture->Load(&loc.x, &out,
sizeof(out));
680 texture->Sample(samplerState, &loc.x, &out,
sizeof(out));
686 texture->SampleLevel(samplerState, &loc.x, level, &out,
sizeof(out));
696 void GetDimensions(uint32_t* outWidth, uint32_t* outHeight, uint32_t* outElements)
698 auto dims = texture->GetDimensions();
699 *outWidth = dims.width;
700 *outHeight = dims.height;
701 *outElements = dims.arrayElementCount;
707 uint32_t* outElements,
708 uint32_t* outNumberOfLevels)
710 auto dims = texture->GetDimensions(mipLevel);
711 *outWidth = dims.width;
712 *outHeight = dims.height;
713 *outElements = dims.arrayElementCount;
714 *outNumberOfLevels = dims.numberOfLevels;
717 void GetDimensions(uint32_t* outWidth,
float* outHeight,
float* outElements)
719 auto dims = texture->GetDimensions();
720 *outWidth = dims.width;
721 *outHeight = dims.height;
722 *outElements = dims.arrayElementCount;
729 float* outNumberOfLevels)
731 auto dims = texture->GetDimensions(mipLevel);
732 *outWidth = dims.width;
733 *outHeight = dims.height;
734 *outElements = dims.arrayElementCount;
735 *outNumberOfLevels = dims.numberOfLevels;
741 texture->Load(&loc.x, &out,
sizeof(out));
747 texture->Sample(samplerState, &loc.x, &out,
sizeof(out));
753 texture->SampleLevel(samplerState, &loc.x, level, &out,
sizeof(out));
763 void GetDimensions(uint32_t* outWidth, uint32_t* outHeight, uint32_t* outElements)
765 auto dims = texture->GetDimensions();
766 *outWidth = dims.width;
767 *outHeight = dims.height;
768 *outElements = dims.arrayElementCount;
774 uint32_t* outElements,
775 uint32_t* outNumberOfLevels)
777 auto dims = texture->GetDimensions(mipLevel);
778 *outWidth = dims.width;
779 *outHeight = dims.height;
780 *outElements = dims.arrayElementCount;
781 *outNumberOfLevels = dims.numberOfLevels;
784 void GetDimensions(uint32_t* outWidth,
float* outHeight,
float* outElements)
786 auto dims = texture->GetDimensions();
787 *outWidth = dims.width;
788 *outHeight = dims.height;
789 *outElements = dims.arrayElementCount;
796 float* outNumberOfLevels)
798 auto dims = texture->GetDimensions(mipLevel);
799 *outWidth = dims.width;
800 *outHeight = dims.height;
801 *outElements = dims.arrayElementCount;
802 *outNumberOfLevels = dims.numberOfLevels;
808 texture->Sample(samplerState, &loc.x, &out,
sizeof(out));
814 texture->SampleLevel(samplerState, &loc.x, level, &out,
sizeof(out));
826 virtual void*
refAt(
const uint32_t* loc) = 0;
832 void GetDimensions(uint32_t* outWidth) { *outWidth = texture->GetDimensions().width; }
833 void GetDimensions(uint32_t mipLevel, uint32_t* outWidth, uint32_t* outNumberOfLevels)
835 auto dims = texture->GetDimensions(mipLevel);
836 *outWidth = dims.width;
837 *outNumberOfLevels = dims.numberOfLevels;
840 void GetDimensions(
float* outWidth) { *outWidth = texture->GetDimensions().width; }
841 void GetDimensions(uint32_t mipLevel,
float* outWidth,
float* outNumberOfLevels)
843 auto dims = texture->GetDimensions(mipLevel);
844 *outWidth = dims.width;
845 *outNumberOfLevels = dims.numberOfLevels;
851 texture->Load(&loc, &out,
sizeof(out));
854 T&
operator[](uint32_t loc) {
return *(T*)texture->refAt(&loc); }
863 const auto dims = texture->GetDimensions();
864 *outWidth = dims.width;
865 *outHeight = dims.height;
871 uint32_t* outNumberOfLevels)
873 const auto dims = texture->GetDimensions(mipLevel);
874 *outWidth = dims.width;
875 *outHeight = dims.height;
876 *outNumberOfLevels = dims.numberOfLevels;
880 const auto dims = texture->GetDimensions();
881 *outWidth = dims.width;
882 *outHeight = dims.height;
888 float* outNumberOfLevels)
890 const auto dims = texture->GetDimensions(mipLevel);
891 *outWidth = dims.width;
892 *outHeight = dims.height;
893 *outNumberOfLevels = dims.numberOfLevels;
899 texture->Load(&loc.x, &out,
sizeof(out));
909 void GetDimensions(uint32_t* outWidth, uint32_t* outHeight, uint32_t* outDepth)
911 const auto dims = texture->GetDimensions();
912 *outWidth = dims.width;
913 *outHeight = dims.height;
914 *outDepth = dims.depth;
921 uint32_t* outNumberOfLevels)
923 const auto dims = texture->GetDimensions(mipLevel);
924 *outWidth = dims.width;
925 *outHeight = dims.height;
926 *outDepth = dims.depth;
927 *outNumberOfLevels = dims.numberOfLevels;
931 const auto dims = texture->GetDimensions();
932 *outWidth = dims.width;
933 *outHeight = dims.height;
934 *outDepth = dims.depth;
941 float* outNumberOfLevels)
943 const auto dims = texture->GetDimensions(mipLevel);
944 *outWidth = dims.width;
945 *outHeight = dims.height;
946 *outDepth = dims.depth;
947 *outNumberOfLevels = dims.numberOfLevels;
953 texture->Load(&loc.x, &out,
sizeof(out));
966 auto dims = texture->GetDimensions();
967 *outWidth = dims.width;
968 *outElements = dims.arrayElementCount;
973 uint32_t* outElements,
974 uint32_t* outNumberOfLevels)
976 const auto dims = texture->GetDimensions(mipLevel);
977 *outWidth = dims.width;
978 *outElements = dims.arrayElementCount;
979 *outNumberOfLevels = dims.numberOfLevels;
983 auto dims = texture->GetDimensions();
984 *outWidth = dims.width;
985 *outElements = dims.arrayElementCount;
991 float* outNumberOfLevels)
993 const auto dims = texture->GetDimensions(mipLevel);
994 *outWidth = dims.width;
995 *outElements = dims.arrayElementCount;
996 *outNumberOfLevels = dims.numberOfLevels;
1002 texture->Load(&loc.x, &out,
sizeof(out));
1013 void GetDimensions(uint32_t* outWidth, uint32_t* outHeight, uint32_t* outElements)
1015 auto dims = texture->GetDimensions();
1016 *outWidth = dims.width;
1017 *outHeight = dims.height;
1018 *outElements = dims.arrayElementCount;
1023 uint32_t* outHeight,
1024 uint32_t* outElements,
1025 uint32_t* outNumberOfLevels)
1027 const auto dims = texture->GetDimensions(mipLevel);
1028 *outWidth = dims.width;
1029 *outHeight = dims.height;
1030 *outElements = dims.arrayElementCount;
1031 *outNumberOfLevels = dims.numberOfLevels;
1035 auto dims = texture->GetDimensions();
1036 *outWidth = dims.width;
1037 *outHeight = dims.height;
1038 *outElements = dims.arrayElementCount;
1045 float* outNumberOfLevels)
1047 const auto dims = texture->GetDimensions(mipLevel);
1048 *outWidth = dims.width;
1049 *outHeight = dims.height;
1050 *outElements = dims.arrayElementCount;
1051 *outNumberOfLevels = dims.numberOfLevels;
1057 texture->Load(&loc.x, &out,
sizeof(out));
1087 const float* location,
1088 const float* clamp =
nullptr) = 0;
1092 const float* location,
1094 const float* clamp =
nullptr) = 0;
1098 const float* location,
1101 const float* clamp =
nullptr) = 0;
1106 const float* location,
1115 const auto dims = texture->GetDimensions();
1116 *outWidth = dims.width;
1117 *outHeight = dims.height;
1122 uint32_t* outHeight,
1123 uint32_t* outNumberOfLevels)
1125 const auto dims = texture->GetDimensions(mipLevel);
1126 *outWidth = dims.width;
1127 *outHeight = dims.height;
1128 *outNumberOfLevels = dims.numberOfLevels;
1132 const auto dims = texture->GetDimensions();
1133 *outWidth = dims.width;
1134 *outHeight = dims.height;
1140 float* outNumberOfLevels)
1142 const auto dims = texture->GetDimensions(mipLevel);
1143 *outWidth = dims.width;
1144 *outHeight = dims.height;
1145 *outNumberOfLevels = dims.numberOfLevels;
1148 template<
typename S>
1151 texture->WriteSamplerFeedback(tex.
texture, samp, &location.x, &clamp);
1154 template<
typename S>
1162 texture->WriteSamplerFeedbackBias(tex.
texture, samp, &location.x, bias, &clamp);
1165 template<
typename S>
1174 texture->WriteSamplerFeedbackGrad(tex.
texture, samp, &location.x, &ddx.x, &ddy.x, &clamp);
1179 template<
typename S>
1182 texture->WriteSamplerFeedbackLevel(tex.
texture, samp, &location.x, lod);
1186 template<
typename S>
1189 texture->WriteSamplerFeedback(tex.
texture, samp, &location.x);
1192 template<
typename S>
1195 texture->WriteSamplerFeedbackBias(tex.
texture, samp, &location.x, bias);
1198 template<
typename S>
1206 texture->WriteSamplerFeedbackGrad(tex.
texture, samp, &location.x, &ddx.x, &ddy.x);
1215 void GetDimensions(uint32_t* outWidth, uint32_t* outHeight, uint32_t* outElements)
1217 auto dims = texture->GetDimensions();
1218 *outWidth = dims.width;
1219 *outHeight = dims.height;
1220 *outElements = dims.arrayElementCount;
1225 uint32_t* outHeight,
1226 uint32_t* outElements,
1227 uint32_t* outNumberOfLevels)
1229 const auto dims = texture->GetDimensions(mipLevel);
1230 *outWidth = dims.width;
1231 *outHeight = dims.height;
1232 *outElements = dims.arrayElementCount;
1233 *outNumberOfLevels = dims.numberOfLevels;
1237 auto dims = texture->GetDimensions();
1238 *outWidth = dims.width;
1239 *outHeight = dims.height;
1240 *outElements = dims.arrayElementCount;
1247 float* outNumberOfLevels)
1249 const auto dims = texture->GetDimensions(mipLevel);
1250 *outWidth = dims.width;
1251 *outHeight = dims.height;
1252 *outElements = dims.arrayElementCount;
1253 *outNumberOfLevels = dims.numberOfLevels;
1256 template<
typename S>
1263 texture->WriteSamplerFeedback(texArray.
texture, samp, &location.x, &clamp);
1266 template<
typename S>
1274 texture->WriteSamplerFeedbackBias(texArray.
texture, samp, &location.x, bias, &clamp);
1277 template<
typename S>
1287 ->WriteSamplerFeedbackGrad(texArray.
texture, samp, &location.x, &ddx.x, &ddy.x, &clamp);
1291 template<
typename S>
1298 texture->WriteSamplerFeedbackLevel(texArray.
texture, samp, &location.x, lod);
1303 template<
typename S>
1306 texture->WriteSamplerFeedback(texArray.
texture, samp, &location.x);
1309 template<
typename S>
1316 texture->WriteSamplerFeedbackBias(texArray.
texture, samp, &location.x, bias);
1319 template<
typename S>
1327 texture->WriteSamplerFeedbackGrad(texArray.
texture, samp, &location.x, &ddx.x, &ddy.x);
1353 void* uniformEntryPointParams,
1354 void* uniformState);
1357 void* uniformEntryPointParams,
1358 void* uniformState);
1360#ifdef SLANG_PRELUDE_NAMESPACE
#define SLANG_FORCE_INLINE
Definition slang-cpp-prelude.h:286
#define SLANG_BOUND_CHECK_BYTE_ADDRESS(index, elemSize, sizeInBytes)
Definition slang-cpp-types-core.h:46
#define SLANG_BOUND_CHECK(index, count)
Definition slang-cpp-types-core.h:41
Vector< uint32_t, 3 > uint3
Definition slang-cpp-types.h:24
Vector< int32_t, 4 > int4
Definition slang-cpp-types.h:21
Vector< uint32_t, 4 > uint4
Definition slang-cpp-types.h:25
void(* ComputeThreadFunc)(ComputeThreadVaryingInput *varyingInput, void *uniformEntryPointParams, void *uniformState)
Definition slang-cpp-types.h:1351
size_t NonUniformResourceIndex
Definition slang-cpp-types.h:29
Vector< int32_t, 3 > int3
Definition slang-cpp-types.h:20
Vector< uint32_t, 2 > uint2
Definition slang-cpp-types.h:23
void(* ComputeFunc)(ComputeVaryingInput *varyingInput, void *uniformEntryPointParams, void *uniformState)
Definition slang-cpp-types.h:1355
Vector< float, 4 > float4
Definition slang-cpp-types.h:17
Vector< float, 3 > float3
Definition slang-cpp-types.h:16
Vector< int32_t, 2 > int2
Definition slang-cpp-types.h:19
Vector< float, 2 > float2
Definition slang-cpp-types.h:15
@ SLANG_TEXTURE_SUBPASS_MULTISAMPLE
Definition slang-cpp-types.h:283
@ SLANG_RESOURCE_BASE_SHAPE_MASK
Definition slang-cpp-types.h:254
@ SLANG_ACCELERATION_STRUCTURE
Definition slang-cpp-types.h:267
@ SLANG_TEXTURE_CUBE_ARRAY
Definition slang-cpp-types.h:278
@ SLANG_TEXTURE_2D
Definition slang-cpp-types.h:259
@ SLANG_TEXTURE_BUFFER
Definition slang-cpp-types.h:262
@ SLANG_TEXTURE_FEEDBACK_FLAG
Definition slang-cpp-types.h:272
@ SLANG_TEXTURE_2D_MULTISAMPLE
Definition slang-cpp-types.h:280
@ SLANG_RESOURCE_UNKNOWN
Definition slang-cpp-types.h:266
@ SLANG_STRUCTURED_BUFFER
Definition slang-cpp-types.h:264
@ SLANG_RESOURCE_EXT_SHAPE_MASK
Definition slang-cpp-types.h:270
@ SLANG_TEXTURE_1D_ARRAY
Definition slang-cpp-types.h:276
@ SLANG_TEXTURE_1D
Definition slang-cpp-types.h:258
@ SLANG_RESOURCE_NONE
Definition slang-cpp-types.h:256
@ SLANG_TEXTURE_2D_MULTISAMPLE_ARRAY
Definition slang-cpp-types.h:281
@ SLANG_TEXTURE_MULTISAMPLE_FLAG
Definition slang-cpp-types.h:274
@ SLANG_TEXTURE_ARRAY_FLAG
Definition slang-cpp-types.h:273
@ SLANG_BYTE_ADDRESS_BUFFER
Definition slang-cpp-types.h:265
@ SLANG_TEXTURE_2D_ARRAY
Definition slang-cpp-types.h:277
@ SLANG_TEXTURE_SUBPASS
Definition slang-cpp-types.h:268
@ SLANG_TEXTURE_CUBE
Definition slang-cpp-types.h:261
@ SLANG_TEXTURE_3D
Definition slang-cpp-types.h:260
#define SLANG_PRELUDE_NAMESPACE
Definition slang-torch-prelude.h:52
SlangResourceShape
Definition slang.h:2044
Definition slang-cpp-types.h:104
const T & Load(size_t index) const
Definition slang-cpp-types.h:110
T * data
Definition slang-cpp-types.h:117
void GetDimensions(uint32_t *outCount)
Definition slang-cpp-types.h:115
SLANG_FORCE_INLINE const T & operator[](size_t index) const
Definition slang-cpp-types.h:105
size_t count
Definition slang-cpp-types.h:118
Definition slang-cpp-types.h:123
uint4 Load4(size_t index) const
Definition slang-cpp-types.h:142
T Load(size_t index) const
Definition slang-cpp-types.h:149
uint2 Load2(size_t index) const
Definition slang-cpp-types.h:130
uint32_t Load(size_t index) const
Definition slang-cpp-types.h:125
void GetDimensions(uint32_t *outDim) const
Definition slang-cpp-types.h:124
uint3 Load3(size_t index) const
Definition slang-cpp-types.h:136
const uint32_t * data
Definition slang-cpp-types.h:155
size_t sizeInBytes
Definition slang-cpp-types.h:156
Definition slang-cpp-types.h:1214
void GetDimensions(uint32_t mipLevel, uint32_t *outWidth, uint32_t *outHeight, uint32_t *outElements, uint32_t *outNumberOfLevels)
Definition slang-cpp-types.h:1222
void WriteSamplerFeedback(Texture2DArray< S > texArray, SamplerState samp, float3 location, float clamp)
Definition slang-cpp-types.h:1257
void WriteSamplerFeedbackGrad(Texture2DArray< S > texArray, SamplerState samp, float3 location, float3 ddx, float3 ddy)
Definition slang-cpp-types.h:1320
void WriteSamplerFeedbackBias(Texture2DArray< S > texArray, SamplerState samp, float3 location, float bias)
Definition slang-cpp-types.h:1310
IFeedbackTexture * texture
Definition slang-cpp-types.h:1330
void GetDimensions(float *outWidth, float *outHeight, float *outElements)
Definition slang-cpp-types.h:1235
void GetDimensions(uint32_t mipLevel, float *outWidth, float *outHeight, float *outElements, float *outNumberOfLevels)
Definition slang-cpp-types.h:1242
void GetDimensions(uint32_t *outWidth, uint32_t *outHeight, uint32_t *outElements)
Definition slang-cpp-types.h:1215
void WriteSamplerFeedback(Texture2DArray< S > texArray, SamplerState samp, float3 location)
Definition slang-cpp-types.h:1304
void WriteSamplerFeedbackGrad(Texture2DArray< S > texArray, SamplerState samp, float3 location, float3 ddx, float3 ddy, float clamp)
Definition slang-cpp-types.h:1278
void WriteSamplerFeedbackLevel(Texture2DArray< S > texArray, SamplerState samp, float3 location, float lod)
Definition slang-cpp-types.h:1292
void WriteSamplerFeedbackBias(Texture2DArray< S > texArray, SamplerState samp, float3 location, float bias, float clamp)
Definition slang-cpp-types.h:1267
Definition slang-cpp-types.h:1112
void GetDimensions(uint32_t mipLevel, float *outWidth, float *outHeight, float *outNumberOfLevels)
Definition slang-cpp-types.h:1136
void GetDimensions(uint32_t mipLevel, uint32_t *outWidth, uint32_t *outHeight, uint32_t *outNumberOfLevels)
Definition slang-cpp-types.h:1119
void GetDimensions(uint32_t *outWidth, uint32_t *outHeight)
Definition slang-cpp-types.h:1113
void GetDimensions(float *outWidth, float *outHeight)
Definition slang-cpp-types.h:1130
void WriteSamplerFeedbackGrad(Texture2D< S > tex, SamplerState samp, float2 location, float2 ddx, float2 ddy)
Definition slang-cpp-types.h:1199
IFeedbackTexture * texture
Definition slang-cpp-types.h:1209
void WriteSamplerFeedbackGrad(Texture2D< S > tex, SamplerState samp, float2 location, float2 ddx, float2 ddy, float clamp)
Definition slang-cpp-types.h:1166
void WriteSamplerFeedback(Texture2D< S > tex, SamplerState samp, float2 location, float clamp)
Definition slang-cpp-types.h:1149
void WriteSamplerFeedback(Texture2D< S > tex, SamplerState samp, float2 location)
Definition slang-cpp-types.h:1187
void WriteSamplerFeedbackLevel(Texture2D< S > tex, SamplerState samp, float2 location, float lod)
Definition slang-cpp-types.h:1180
void WriteSamplerFeedbackBias(Texture2D< S > tex, SamplerState samp, float2 location, float bias)
Definition slang-cpp-types.h:1193
void WriteSamplerFeedbackBias(Texture2D< S > tex, SamplerState samp, float2 location, float bias, float clamp)
Definition slang-cpp-types.h:1155
Definition slang-cpp-types.h:1068
Definition slang-cpp-types.h:1078
virtual void WriteSamplerFeedbackBias(ITexture *tex, SamplerState samp, const float *location, float bias, const float *clamp=nullptr)=0
virtual void WriteSamplerFeedbackGrad(ITexture *tex, SamplerState samp, const float *location, const float *ddx, const float *ddy, const float *clamp=nullptr)=0
virtual void WriteSamplerFeedback(ITexture *tex, SamplerState samp, const float *location, const float *clamp=nullptr)=0
virtual void WriteSamplerFeedbackLevel(ITexture *tex, SamplerState samp, const float *location, float lod)=0
virtual TextureDimensions GetDimensions(int mipLevel=-1)=0
Definition slang-cpp-types.h:824
virtual void * refAt(const uint32_t *loc)=0
Get the reference to the element at loc.
Definition slang-cpp-types.h:396
virtual void Load(const int32_t *v, void *outData, size_t dataSize)=0
virtual void SampleLevel(SamplerState samplerState, const float *loc, float level, void *outData, size_t dataSize)=0
virtual TextureDimensions GetDimensions(int mipLevel=-1)=0
virtual void Sample(SamplerState samplerState, const float *loc, void *outData, size_t dataSize)=0
Definition slang-cpp-types.h:85
size_t count
Definition slang-cpp-types.h:99
const T & Load(size_t index) const
Definition slang-cpp-types.h:91
SLANG_FORCE_INLINE T & operator[](size_t index) const
Definition slang-cpp-types.h:86
T * data
Definition slang-cpp-types.h:98
void GetDimensions(uint32_t *outCount)
Definition slang-cpp-types.h:96
Definition slang-cpp-types.h:163
void GetDimensions(uint32_t *outDim) const
Definition slang-cpp-types.h:164
uint32_t Load(size_t index) const
Definition slang-cpp-types.h:166
void Store4(size_t index, uint4 v) const
Definition slang-cpp-types.h:216
uint2 Load2(size_t index) const
Definition slang-cpp-types.h:171
void Store2(size_t index, uint2 v) const
Definition slang-cpp-types.h:201
uint4 Load4(size_t index) const
Definition slang-cpp-types.h:183
size_t sizeInBytes
Definition slang-cpp-types.h:233
void Store(size_t index, T const &value) const
Definition slang-cpp-types.h:226
uint3 Load3(size_t index) const
Definition slang-cpp-types.h:177
T Load(size_t index) const
Definition slang-cpp-types.h:190
void Store3(size_t index, uint3 v) const
Definition slang-cpp-types.h:208
uint32_t * data
Definition slang-cpp-types.h:232
void Store(size_t index, uint32_t v) const
Definition slang-cpp-types.h:196
Definition slang-cpp-types.h:38
T * data
Definition slang-cpp-types.h:55
const T & Load(size_t index) const
Definition slang-cpp-types.h:44
SLANG_FORCE_INLINE T & operator[](size_t index) const
Definition slang-cpp-types.h:39
size_t count
Definition slang-cpp-types.h:56
void GetDimensions(uint32_t *outNumStructs, uint32_t *outStride)
Definition slang-cpp-types.h:49
Definition slang-cpp-types.h:963
void GetDimensions(uint32_t mipLevel, float *outWidth, float *outElements, float *outNumberOfLevels)
Definition slang-cpp-types.h:987
IRWTexture * texture
Definition slang-cpp-types.h:1007
T & operator[](uint2 loc)
Definition slang-cpp-types.h:1005
void GetDimensions(uint32_t *outWidth, uint32_t *outElements)
Definition slang-cpp-types.h:964
void GetDimensions(float *outWidth, float *outElements)
Definition slang-cpp-types.h:981
void GetDimensions(uint32_t mipLevel, uint32_t *outWidth, uint32_t *outElements, uint32_t *outNumberOfLevels)
Definition slang-cpp-types.h:970
T Load(int2 loc) const
Definition slang-cpp-types.h:999
Definition slang-cpp-types.h:831
void GetDimensions(uint32_t *outWidth)
Definition slang-cpp-types.h:832
void GetDimensions(uint32_t mipLevel, float *outWidth, float *outNumberOfLevels)
Definition slang-cpp-types.h:841
T & operator[](uint32_t loc)
Definition slang-cpp-types.h:854
T Load(int32_t loc) const
Definition slang-cpp-types.h:848
void GetDimensions(float *outWidth)
Definition slang-cpp-types.h:840
IRWTexture * texture
Definition slang-cpp-types.h:855
void GetDimensions(uint32_t mipLevel, uint32_t *outWidth, uint32_t *outNumberOfLevels)
Definition slang-cpp-types.h:833
Definition slang-cpp-types.h:1012
void GetDimensions(float *outWidth, float *outHeight, float *outElements)
Definition slang-cpp-types.h:1033
T Load(const int3 &loc) const
Definition slang-cpp-types.h:1054
void GetDimensions(uint32_t mipLevel, uint32_t *outWidth, uint32_t *outHeight, uint32_t *outElements, uint32_t *outNumberOfLevels)
Definition slang-cpp-types.h:1020
void GetDimensions(uint32_t *outWidth, uint32_t *outHeight, uint32_t *outElements)
Definition slang-cpp-types.h:1013
void GetDimensions(uint32_t mipLevel, float *outWidth, float *outHeight, float *outElements, float *outNumberOfLevels)
Definition slang-cpp-types.h:1040
IRWTexture * texture
Definition slang-cpp-types.h:1062
T & operator[](const uint3 &loc)
Definition slang-cpp-types.h:1060
Definition slang-cpp-types.h:860
void GetDimensions(uint32_t mipLevel, uint32_t *outWidth, uint32_t *outHeight, uint32_t *outNumberOfLevels)
Definition slang-cpp-types.h:867
T & operator[](const uint2 &loc)
Definition slang-cpp-types.h:902
void GetDimensions(uint32_t mipLevel, float *outWidth, float *outHeight, float *outNumberOfLevels)
Definition slang-cpp-types.h:884
void GetDimensions(uint32_t *outWidth, uint32_t *outHeight)
Definition slang-cpp-types.h:861
IRWTexture * texture
Definition slang-cpp-types.h:903
T Load(const int2 &loc) const
Definition slang-cpp-types.h:896
void GetDimensions(float *outWidth, float *outHeight)
Definition slang-cpp-types.h:878
Definition slang-cpp-types.h:908
T Load(const int3 &loc) const
Definition slang-cpp-types.h:950
IRWTexture * texture
Definition slang-cpp-types.h:957
void GetDimensions(uint32_t mipLevel, float *outWidth, float *outHeight, float *outDepth, float *outNumberOfLevels)
Definition slang-cpp-types.h:936
T & operator[](const uint3 &loc)
Definition slang-cpp-types.h:956
void GetDimensions(float *outWidth, float *outHeight, float *outDepth)
Definition slang-cpp-types.h:929
void GetDimensions(uint32_t mipLevel, uint32_t *outWidth, uint32_t *outHeight, uint32_t *outDepth, uint32_t *outNumberOfLevels)
Definition slang-cpp-types.h:916
void GetDimensions(uint32_t *outWidth, uint32_t *outHeight, uint32_t *outDepth)
Definition slang-cpp-types.h:909
Definition slang-cpp-types.h:1071
Definition slang-cpp-types.h:1074
Definition slang-cpp-types.h:245
ISamplerComparisonState * state
Definition slang-cpp-types.h:246
Definition slang-cpp-types.h:240
ISamplerState * state
Definition slang-cpp-types.h:241
Definition slang-cpp-types.h:61
size_t count
Definition slang-cpp-types.h:79
SLANG_FORCE_INLINE T & operator[](size_t index) const
Definition slang-cpp-types.h:62
void GetDimensions(uint32_t *outNumStructs, uint32_t *outStride)
Definition slang-cpp-types.h:72
T * data
Definition slang-cpp-types.h:78
T & Load(size_t index) const
Definition slang-cpp-types.h:67
Definition slang-cpp-types.h:635
void GetDimensions(uint32_t *outWidth, uint32_t *outElements)
Definition slang-cpp-types.h:636
void GetDimensions(float *outWidth, float *outElements)
Definition slang-cpp-types.h:653
ITexture * texture
Definition slang-cpp-types.h:690
T SampleLevel(SamplerState samplerState, const float2 &loc, float level) const
Definition slang-cpp-types.h:683
void GetDimensions(uint32_t mipLevel, uint32_t *outWidth, uint32_t *outElements, uint32_t *outNumberOfLevels)
Definition slang-cpp-types.h:642
T Sample(SamplerState samplerState, const float2 &loc) const
Definition slang-cpp-types.h:677
void GetDimensions(uint32_t mipLevel, float *outWidth, float *outElements, float *outNumberOfLevels)
Definition slang-cpp-types.h:659
T Load(const int3 &loc) const
Definition slang-cpp-types.h:671
Definition slang-cpp-types.h:414
T SampleLevel(SamplerState samplerState, float loc, float level) const
Definition slang-cpp-types.h:443
T Sample(SamplerState samplerState, float loc) const
Definition slang-cpp-types.h:437
T Load(const int2 &loc) const
Definition slang-cpp-types.h:431
void GetDimensions(uint32_t mipLevel, uint32_t *outWidth, uint32_t *outNumberOfLevels)
Definition slang-cpp-types.h:416
void GetDimensions(uint32_t *outWidth)
Definition slang-cpp-types.h:415
ITexture * texture
Definition slang-cpp-types.h:450
void GetDimensions(uint32_t mipLevel, float *outWidth, float *outNumberOfLevels)
Definition slang-cpp-types.h:424
void GetDimensions(float *outWidth)
Definition slang-cpp-types.h:423
Definition slang-cpp-types.h:695
void GetDimensions(uint32_t mipLevel, uint32_t *outWidth, uint32_t *outHeight, uint32_t *outElements, uint32_t *outNumberOfLevels)
Definition slang-cpp-types.h:703
T Sample(SamplerState samplerState, const float3 &loc) const
Definition slang-cpp-types.h:744
void GetDimensions(uint32_t *outWidth, float *outHeight, float *outElements)
Definition slang-cpp-types.h:717
void GetDimensions(uint32_t *outWidth, uint32_t *outHeight, uint32_t *outElements)
Definition slang-cpp-types.h:696
T SampleLevel(SamplerState samplerState, const float3 &loc, float level) const
Definition slang-cpp-types.h:750
T Load(const int4 &loc) const
Definition slang-cpp-types.h:738
ITexture * texture
Definition slang-cpp-types.h:757
void GetDimensions(uint32_t mipLevel, float *outWidth, float *outHeight, float *outElements, float *outNumberOfLevels)
Definition slang-cpp-types.h:724
Definition slang-cpp-types.h:455
T SampleLevel(SamplerState samplerState, const float2 &loc, float level) const
Definition slang-cpp-types.h:503
T Sample(SamplerState samplerState, const float2 &loc) const
Definition slang-cpp-types.h:497
void GetDimensions(uint32_t *outWidth, uint32_t *outHeight)
Definition slang-cpp-types.h:456
T Load(const int3 &loc) const
Definition slang-cpp-types.h:491
void GetDimensions(uint32_t mipLevel, uint32_t *outWidth, uint32_t *outHeight, uint32_t *outNumberOfLevels)
Definition slang-cpp-types.h:462
void GetDimensions(uint32_t mipLevel, float *outWidth, float *outHeight, float *outNumberOfLevels)
Definition slang-cpp-types.h:479
void GetDimensions(float *outWidth, float *outHeight)
Definition slang-cpp-types.h:473
ITexture * texture
Definition slang-cpp-types.h:510
Definition slang-cpp-types.h:515
void GetDimensions(float *outWidth, float *outHeight, float *outDepth)
Definition slang-cpp-types.h:536
ITexture * texture
Definition slang-cpp-types.h:576
T Sample(SamplerState samplerState, const float3 &loc) const
Definition slang-cpp-types.h:563
void GetDimensions(uint32_t mipLevel, uint32_t *outWidth, uint32_t *outHeight, uint32_t *outDepth, uint32_t *outNumberOfLevels)
Definition slang-cpp-types.h:523
T SampleLevel(SamplerState samplerState, const float3 &loc, float level) const
Definition slang-cpp-types.h:569
void GetDimensions(uint32_t *outWidth, uint32_t *outHeight, uint32_t *outDepth)
Definition slang-cpp-types.h:516
void GetDimensions(uint32_t mipLevel, float *outWidth, float *outHeight, float *outDepth, float *outNumberOfLevels)
Definition slang-cpp-types.h:543
T Load(const int4 &loc) const
Definition slang-cpp-types.h:557
Definition slang-cpp-types.h:762
ITexture * texture
Definition slang-cpp-types.h:818
void GetDimensions(uint32_t *outWidth, float *outHeight, float *outElements)
Definition slang-cpp-types.h:784
void GetDimensions(uint32_t *outWidth, uint32_t *outHeight, uint32_t *outElements)
Definition slang-cpp-types.h:763
T Sample(SamplerState samplerState, const float4 &loc) const
Definition slang-cpp-types.h:805
T SampleLevel(SamplerState samplerState, const float4 &loc, float level) const
Definition slang-cpp-types.h:811
void GetDimensions(uint32_t mipLevel, uint32_t *outWidth, uint32_t *outHeight, uint32_t *outElements, uint32_t *outNumberOfLevels)
Definition slang-cpp-types.h:770
void GetDimensions(uint32_t mipLevel, float *outWidth, float *outHeight, float *outElements, float *outNumberOfLevels)
Definition slang-cpp-types.h:791
Definition slang-cpp-types.h:581
ITexture * texture
Definition slang-cpp-types.h:630
T SampleLevel(SamplerState samplerState, const float3 &loc, float level) const
Definition slang-cpp-types.h:623
T Sample(SamplerState samplerState, const float3 &loc) const
Definition slang-cpp-types.h:617
void GetDimensions(uint32_t *outWidth, uint32_t *outHeight)
Definition slang-cpp-types.h:582
void GetDimensions(float *outWidth, float *outHeight)
Definition slang-cpp-types.h:599
void GetDimensions(uint32_t mipLevel, float *outWidth, float *outHeight, float *outNumberOfLevels)
Definition slang-cpp-types.h:605
void GetDimensions(uint32_t mipLevel, uint32_t *outWidth, uint32_t *outHeight, uint32_t *outNumberOfLevels)
Definition slang-cpp-types.h:588
Definition slang-cpp-types.h:289
int getDimSizes(uint32_t outDims[4]) const
Definition slang-cpp-types.h:297
uint32_t numberOfLevels
Definition slang-cpp-types.h:388
void reset()
Definition slang-cpp-types.h:290
int calcMaxMIPLevels() const
Definition slang-cpp-types.h:364
uint32_t shape
Definition slang-cpp-types.h:386
uint32_t depth
Definition slang-cpp-types.h:387
int getMIPDims(int outDims[3]) const
Definition slang-cpp-types.h:336
uint32_t arrayElementCount
For array types, 0 otherwise
Definition slang-cpp-types.h:389
Definition slang-cpp-types-core.h:103