summaryrefslogtreecommitdiffstats
path: root/source/slang/glsl.meta.slang
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2025-01-17 14:37:27 -0800
committerGitHub <noreply@github.com>2025-01-17 14:37:27 -0800
commitfc77070fdc9bfa599e8d66b21743778de3011e53 (patch)
treea9a0983bd704b0e760ae94d5330a74bc72f1154f /source/slang/glsl.meta.slang
parent3ff257816fc8f376d9bee76378a690757f8b5377 (diff)
Refactor _Texture to constrain on texel types. (#6115)
* Refactor _Texture to constrain on texel types. * Fix tests. * Fix. * Disable glsl texture test because rhi can't run it correctly.
Diffstat (limited to 'source/slang/glsl.meta.slang')
-rw-r--r--source/slang/glsl.meta.slang513
1 files changed, 258 insertions, 255 deletions
diff --git a/source/slang/glsl.meta.slang b/source/slang/glsl.meta.slang
index ba26b5d84..1b44c7825 100644
--- a/source/slang/glsl.meta.slang
+++ b/source/slang/glsl.meta.slang
@@ -1354,6 +1354,9 @@ public vector<bool,N> not(vector<bool,N> x)
return !x;
}
+__intrinsic_op(vectorReshape)
+vector<T,N> __vectorReshape2<T, let N : int, U>(U vin);
+
//
// Section 8.9.1. Texture Query Functions
//
@@ -1472,7 +1475,7 @@ public typealias sampler2DMSArray = Sampler2DMSArray<float4>;
public typealias isampler2DMSArray = Sampler2DMSArray<int4>;
public typealias usampler2DMSArray = Sampler2DMSArray<uint4>;
-__generic<T=float4, let sampleCount:int=0, let format:int=0>
+__generic<T:ITexelElement=float4, let sampleCount:int=0, let format:int=0>
public typealias Sampler2DRect = _Texture<T, __Shape2D, 0, 0, sampleCount, 0, 0, 1, format>;
public typealias sampler2DRect = Sampler2DRect<float4>;
public typealias isampler2DRect = Sampler2DRect<int4>;
@@ -1491,7 +1494,7 @@ public typealias sampler2DRectShadow = _Texture<
format
>;
-__generic<T, let format:int=0>
+__generic<T:ITexelElement, let format:int=0>
public typealias SamplerBuffer = _Texture<
T,
__ShapeBuffer,
@@ -1512,10 +1515,10 @@ public typealias usamplerBuffer = SamplerBuffer<uint4>;
// textureSize
// -------------------
-__generic<T:__BuiltinArithmeticType, let N:int>
+__generic<T:ITexelElement>
[ForceInline]
[require(glsl_hlsl_spirv, texture_size)]
-public int textureSize(Sampler1D<vector<T,N>> sampler, int lod)
+public int textureSize(Sampler1D<T> sampler, int lod)
{
int result;
int numberOfLevels;
@@ -1523,10 +1526,10 @@ public int textureSize(Sampler1D<vector<T,N>> sampler, int lod)
return result;
}
-__generic<T:__BuiltinArithmeticType, let N:int>
+__generic<T:ITexelElement>
[ForceInline]
[require(glsl_hlsl_spirv, texture_size)]
-public ivec2 textureSize(Sampler2D<vector<T,N>> sampler, int lod)
+public ivec2 textureSize(Sampler2D<T> sampler, int lod)
{
vector<int,2> result;
int numberOfLevels;
@@ -1534,10 +1537,10 @@ public ivec2 textureSize(Sampler2D<vector<T,N>> sampler, int lod)
return result;
}
-__generic<T:__BuiltinArithmeticType, let N:int>
+__generic<T:ITexelElement>
[ForceInline]
[require(glsl_hlsl_spirv, texture_size)]
-public ivec3 textureSize(Sampler3D<vector<T,N>> sampler, int lod)
+public ivec3 textureSize(Sampler3D<T> sampler, int lod)
{
vector<int,3> result;
int numberOfLevels;
@@ -1545,10 +1548,10 @@ public ivec3 textureSize(Sampler3D<vector<T,N>> sampler, int lod)
return result;
}
-__generic<T:__BuiltinArithmeticType, let N:int>
+__generic<T:ITexelElement>
[ForceInline]
[require(glsl_hlsl_spirv, texture_size)]
-public ivec2 textureSize(SamplerCube<vector<T,N>> sampler, int lod)
+public ivec2 textureSize(SamplerCube<T> sampler, int lod)
{
vector<int,2> result;
int numberOfLevels;
@@ -1587,9 +1590,9 @@ public ivec2 textureSize(samplerCubeShadow sampler, int lod)
}
[require(glsl_hlsl_spirv, texture_size)]
-__generic<T:__BuiltinArithmeticType, let N:int>
+__generic<T:ITexelElement>
[ForceInline]
-public ivec3 textureSize(SamplerCubeArray<vector<T,N>> sampler, int lod)
+public ivec3 textureSize(SamplerCubeArray<T> sampler, int lod)
{
vector<int,3> result;
int numberOfLevels;
@@ -1608,9 +1611,9 @@ public ivec3 textureSize(samplerCubeArrayShadow sampler, int lod)
}
[require(glsl_hlsl_spirv, texture_size)]
-__generic<T:__BuiltinArithmeticType, let N:int>
+__generic<T:ITexelElement>
[ForceInline]
-public ivec2 textureSize(Sampler2DRect<vector<T,N>> sampler)
+public ivec2 textureSize(Sampler2DRect<T> sampler)
{
vector<int,2> result;
int numberOfLevels;
@@ -1629,9 +1632,9 @@ public ivec2 textureSize(sampler2DRectShadow sampler)
}
[require(glsl_hlsl_spirv, texture_size)]
-__generic<T:__BuiltinArithmeticType, let N:int>
+__generic<T:ITexelElement>
[ForceInline]
-public ivec2 textureSize(Sampler1DArray<vector<T,N>> sampler, int lod)
+public ivec2 textureSize(Sampler1DArray<T> sampler, int lod)
{
vector<int,2> result;
int numberOfLevels;
@@ -1650,9 +1653,9 @@ public ivec2 textureSize(sampler1DArrayShadow sampler, int lod)
}
[require(glsl_hlsl_spirv, texture_size)]
-__generic<T:__BuiltinArithmeticType, let N:int>
+__generic<T:ITexelElement>
[ForceInline]
-public ivec3 textureSize(Sampler2DArray<vector<T,N>> sampler, int lod)
+public ivec3 textureSize(Sampler2DArray<T> sampler, int lod)
{
vector<int,3> result;
int numberOfLevels;
@@ -1671,9 +1674,9 @@ public ivec3 textureSize(sampler2DArrayShadow sampler, int lod)
}
[require(glsl_hlsl_spirv, texture_size)]
-__generic<T:__BuiltinArithmeticType, let N:int, let format:int>
+__generic<T:ITexelElement, let format:int>
[ForceInline]
-public int textureSize(SamplerBuffer<vector<T,N>,format> sampler)
+public int textureSize(SamplerBuffer<T,format> sampler)
{
uint result;
sampler.GetDimensions(result);
@@ -1681,9 +1684,9 @@ public int textureSize(SamplerBuffer<vector<T,N>,format> sampler)
}
[require(glsl_hlsl_spirv, texture_size)]
-__generic<T:__BuiltinArithmeticType, let N:int, let sampleCount:int>
+__generic<T:ITexelElement, let sampleCount:int>
[ForceInline]
-public ivec2 textureSize(Sampler2DMS<vector<T,N>,sampleCount> sampler)
+public ivec2 textureSize(Sampler2DMS<T,sampleCount> sampler)
{
vector<int,2> result;
int sampleCount;
@@ -1693,9 +1696,9 @@ public ivec2 textureSize(Sampler2DMS<vector<T,N>,sampleCount> sampler)
}
[require(glsl_hlsl_spirv, texture_size)]
-__generic<T:__BuiltinArithmeticType, let N:int, let sampleCount:int>
+__generic<T:ITexelElement, let sampleCount:int>
[ForceInline]
-public ivec3 textureSize(Sampler2DMSArray<vector<T,N>,sampleCount> sampler)
+public ivec3 textureSize(Sampler2DMSArray<T,sampleCount> sampler)
{
vector<int,3> result;
int sampleCount;
@@ -1708,7 +1711,7 @@ public ivec3 textureSize(Sampler2DMSArray<vector<T,N>,sampleCount> sampler)
// textureQueryLod
// -------------------
-__generic<T, let isArray:int, let sampleCount:int, let isShadow:int, let format:int>
+__generic<T:ITexelElement, let isArray:int, let sampleCount:int, let isShadow:int, let format:int>
[ForceInline]
[require(glsl_hlsl_metal_spirv, texture_querylod)]
public vec2 textureQueryLod(_Texture<
@@ -1741,7 +1744,7 @@ public vec2 textureQueryLod(_Texture<
}
}
-__generic<T, Shape: __ITextureShape, let isArray:int, let sampleCount:int, let isShadow:int, let format:int>
+__generic<T:ITexelElement, Shape: __ITextureShape, let isArray:int, let sampleCount:int, let isShadow:int, let format:int>
[ForceInline]
[require(glsl_hlsl_metal_spirv, texture_querylod)]
public vec2 textureQueryLod(_Texture<
@@ -1778,10 +1781,10 @@ public vec2 textureQueryLod(_Texture<
// textureQueryLevels
// -------------------
-__generic<T:__BuiltinArithmeticType, let N:int>
+__generic<T:ITexelElement>
[ForceInline]
[require(cpp_glsl_hlsl_metal_spirv, texture_querylevels)]
-public int textureQueryLevels(Sampler1D<vector<T,N>> sampler)
+public int textureQueryLevels(Sampler1D<T> sampler)
{
int width;
int numberOfLevels;
@@ -1789,10 +1792,10 @@ public int textureQueryLevels(Sampler1D<vector<T,N>> sampler)
return numberOfLevels;
}
-__generic<T:__BuiltinArithmeticType, let N:int>
+__generic<T:ITexelElement>
[ForceInline]
[require(cpp_glsl_hlsl_metal_spirv, texture_querylevels)]
-public int textureQueryLevels(Sampler2D<vector<T,N>> sampler)
+public int textureQueryLevels(Sampler2D<T> sampler)
{
vector<int,2> dim;
int numberOfLevels;
@@ -1800,10 +1803,10 @@ public int textureQueryLevels(Sampler2D<vector<T,N>> sampler)
return numberOfLevels;
}
-__generic<T:__BuiltinArithmeticType, let N:int>
+__generic<T:ITexelElement>
[ForceInline]
[require(cpp_glsl_hlsl_metal_spirv, texture_querylevels)]
-public int textureQueryLevels(Sampler3D<vector<T,N>> sampler)
+public int textureQueryLevels(Sampler3D<T> sampler)
{
vector<int,3> dim;
int numberOfLevels;
@@ -1811,10 +1814,10 @@ public int textureQueryLevels(Sampler3D<vector<T,N>> sampler)
return numberOfLevels;
}
-__generic<T:__BuiltinArithmeticType, let N:int>
+__generic<T:ITexelElement>
[ForceInline]
[require(cpp_glsl_hlsl_metal_spirv, texture_querylevels)]
-public int textureQueryLevels(SamplerCube<vector<T,N>> sampler)
+public int textureQueryLevels(SamplerCube<T> sampler)
{
vector<int,2> dim;
int numberOfLevels;
@@ -1822,10 +1825,10 @@ public int textureQueryLevels(SamplerCube<vector<T,N>> sampler)
return numberOfLevels;
}
-__generic<T:__BuiltinArithmeticType, let N:int>
+__generic<T:ITexelElement>
[ForceInline]
[require(cpp_glsl_hlsl_metal_spirv, texture_querylevels)]
-public int textureQueryLevels(Sampler1DArray<vector<T,N>> sampler)
+public int textureQueryLevels(Sampler1DArray<T> sampler)
{
vector<int,2> dim;
int numberOfLevels;
@@ -1833,10 +1836,10 @@ public int textureQueryLevels(Sampler1DArray<vector<T,N>> sampler)
return numberOfLevels;
}
-__generic<T:__BuiltinArithmeticType, let N:int>
+__generic<T:ITexelElement>
[ForceInline]
[require(cpp_glsl_hlsl_metal_spirv, texture_querylevels)]
-public int textureQueryLevels(Sampler2DArray<vector<T,N>> sampler)
+public int textureQueryLevels(Sampler2DArray<T> sampler)
{
vector<int,3> dim;
int numberOfLevels;
@@ -1844,10 +1847,10 @@ public int textureQueryLevels(Sampler2DArray<vector<T,N>> sampler)
return numberOfLevels;
}
-__generic<T:__BuiltinArithmeticType, let N:int>
+__generic<T:ITexelElement>
[ForceInline]
[require(cpp_glsl_hlsl_metal_spirv, texture_querylevels)]
-public int textureQueryLevels(SamplerCubeArray<vector<T,N>> sampler)
+public int textureQueryLevels(SamplerCubeArray<T> sampler)
{
vector<int,3> dim;
int numberOfLevels;
@@ -1919,7 +1922,7 @@ public int textureQueryLevels(samplerCubeArrayShadow sampler)
// textureSamples
// -------------------
-__generic<T, let sampleCount:int>
+__generic<T:ITexelElement, let sampleCount:int>
[ForceInline]
[require(glsl_hlsl_spirv, image_samples)]
public int textureSamples(Sampler2DMS<T,sampleCount> sampler)
@@ -1931,7 +1934,7 @@ public int textureSamples(Sampler2DMS<T,sampleCount> sampler)
return sampleCount;
}
-__generic<T, let sampleCount:int>
+__generic<T:ITexelElement, let sampleCount:int>
[ForceInline]
[require(glsl_hlsl_spirv, image_samples)]
public int textureSamples(Sampler2DMSArray<T,sampleCount> sampler)
@@ -1951,27 +1954,27 @@ public int textureSamples(Sampler2DMSArray<T,sampleCount> sampler)
// texture
// -------------------
-__generic<T:__BuiltinArithmeticType, let N:int>
+__generic<T:ITexelElement>
[ForceInline]
[require(cpp_cuda_glsl_hlsl_spirv, texture_sm_4_0_fragment)]
-public vector<T,4> texture(Sampler1D<vector<T,N>> sampler, float p)
+public vector<T.Element,4> texture(Sampler1D<T> sampler, float p)
{
- return __vectorReshape<4>(sampler.Sample(p));
+ return __vectorReshape2<T.Element, 4>(sampler.Sample(p));
}
-__generic<T:__BuiltinArithmeticType, let N:int>
+__generic<T:ITexelElement>
[ForceInline]
[require(cpp_glsl_hlsl_spirv, texture_sm_4_0_fragment)]
-public vector<T,4> texture(Sampler1D<vector<T,N>> sampler, float p, constexpr float bias)
+public vector<T.Element,4> texture(Sampler1D<T> sampler, float p, constexpr float bias)
{
- return __vectorReshape<4>(sampler.SampleBias(p, bias));
+ return __vectorReshape2<T.Element, 4>(sampler.SampleBias(p, bias));
}
-__generic<T:__BuiltinArithmeticType, let N:int, Shape: __ITextureShape, let isArray:int, let sampleCount:int, let format:int>
+__generic<T:ITexelElement, Shape: __ITextureShape, let isArray:int, let sampleCount:int, let format:int>
[ForceInline]
[require(cpp_glsl_hlsl_spirv, texture_sm_4_0_fragment)]
-public vector<T,4> texture(_Texture<
- vector<T,N>,
+public vector<T.Element,4> texture(_Texture<
+ T,
Shape,
isArray,
0, // isMS
@@ -1982,14 +1985,14 @@ public vector<T,4> texture(_Texture<
format
> sampler, vector<float,Shape.dimensions+isArray> p)
{
- return __vectorReshape<4>(sampler.Sample(p));
+ return __vectorReshape2<T.Element, 4>(sampler.Sample(p));
}
-__generic<T:__BuiltinArithmeticType, let N:int, Shape: __ITextureShape, let isArray:int, let sampleCount:int, let format:int>
+__generic<T:ITexelElement, Shape: __ITextureShape, let isArray:int, let sampleCount:int, let format:int>
[ForceInline]
[require(cpp_glsl_hlsl_spirv, texture_sm_4_0_fragment)]
-public vector<T,4> texture(_Texture<
- vector<T,N>,
+public vector<T.Element,4> texture(_Texture<
+ T,
Shape,
isArray,
0, // isMS
@@ -2000,7 +2003,7 @@ public vector<T,4> texture(_Texture<
format
> sampler, vector<float,Shape.dimensions+isArray> p, constexpr float bias)
{
- return __vectorReshape<4>(sampler.SampleBias(p, bias));
+ return __vectorReshape2<T.Element,4>(sampler.SampleBias(p, bias));
}
[ForceInline]
@@ -2137,170 +2140,170 @@ public float texture(samplerCubeArrayShadow sampler, vec4 p, float compare)
// textureProj
// -------------------
-__generic<T:__BuiltinArithmeticType, let N:int>
+__generic<T:ITexelElement>
[ForceInline]
[require(glsl_hlsl_spirv, texture_sm_4_0_fragment)]
-public vector<T,4> textureProj(Sampler1D<vector<T,N>> sampler, vec2 p)
+public vector<T.Element,4> textureProj(Sampler1D<T> sampler, vec2 p)
{
__requireComputeDerivative();
__target_switch
{
case glsl: __intrinsic_asm "textureProj";
case spirv: return spirv_asm {
- result:$$vector<T,4> = OpImageSampleProjImplicitLod $sampler $p
+ result:$$vector<T.Element,4> = OpImageSampleProjImplicitLod $sampler $p
};
default:
return texture(sampler, p.x / p.y);
}
}
-__generic<T:__BuiltinArithmeticType, let N:int>
+__generic<T:ITexelElement>
[ForceInline]
[require(glsl_hlsl_spirv, texture_sm_4_0_fragment)]
-public vector<T,4> textureProj(Sampler1D<vector<T,N>> sampler, vec2 p, float bias)
+public vector<T.Element,4> textureProj(Sampler1D<T> sampler, vec2 p, float bias)
{
__requireComputeDerivative();
__target_switch
{
case glsl: __intrinsic_asm "textureProj";
case spirv: return spirv_asm {
- result:$$vector<T,4> = OpImageSampleProjImplicitLod $sampler $p Bias $bias
+ result:$$vector<T.Element,4> = OpImageSampleProjImplicitLod $sampler $p Bias $bias
};
default:
return texture(sampler, p.x / p.y, bias);
}
}
-__generic<T:__BuiltinArithmeticType, let N:int>
+__generic<T:ITexelElement>
[ForceInline]
[require(glsl_hlsl_spirv, texture_sm_4_0_fragment)]
-public vector<T,4> textureProj(Sampler1D<vector<T,N>> sampler, vec4 p)
+public vector<T.Element,4> textureProj(Sampler1D<T> sampler, vec4 p)
{
__requireComputeDerivative();
__target_switch
{
case glsl: __intrinsic_asm "textureProj";
case spirv: return spirv_asm {
- result:$$vector<T,4> = OpImageSampleProjImplicitLod $sampler $p
+ result:$$vector<T.Element,4> = OpImageSampleProjImplicitLod $sampler $p
};
default:
return texture(sampler, p.x / p.w);
}
}
-__generic<T:__BuiltinArithmeticType, let N:int>
+__generic<T:ITexelElement>
[ForceInline]
[require(glsl_hlsl_spirv, texture_sm_4_0_fragment)]
-public vector<T,4> textureProj(Sampler1D<vector<T,N>> sampler, vec4 p, float bias)
+public vector<T.Element,4> textureProj(Sampler1D<T> sampler, vec4 p, float bias)
{
__requireComputeDerivative();
__target_switch
{
case glsl: __intrinsic_asm "textureProj";
case spirv: return spirv_asm {
- result:$$vector<T,4> = OpImageSampleProjImplicitLod $sampler $p Bias $bias
+ result:$$vector<T.Element,4> = OpImageSampleProjImplicitLod $sampler $p Bias $bias
};
default:
return texture(sampler, p.x / p.w, bias);
}
}
-__generic<T:__BuiltinArithmeticType, let N:int>
+__generic<T:ITexelElement>
[ForceInline]
[require(glsl_hlsl_spirv, texture_sm_4_0_fragment)]
-public vector<T,4> textureProj(Sampler2D<vector<T,N>> sampler, vec3 p)
+public vector<T.Element,4> textureProj(Sampler2D<T> sampler, vec3 p)
{
__requireComputeDerivative();
__target_switch
{
case glsl: __intrinsic_asm "textureProj";
case spirv: return spirv_asm {
- result:$$vector<T,4> = OpImageSampleProjImplicitLod $sampler $p
+ result:$$vector<T.Element,4> = OpImageSampleProjImplicitLod $sampler $p
};
default:
return texture(sampler, p.xy / p.z);
}
}
-__generic<T:__BuiltinArithmeticType, let N:int>
+__generic<T:ITexelElement>
[ForceInline]
[require(glsl_hlsl_spirv, texture_sm_4_0_fragment)]
-public vector<T,4> textureProj(Sampler2D<vector<T,N>> sampler, vec3 p, float bias)
+public vector<T.Element,4> textureProj(Sampler2D<T> sampler, vec3 p, float bias)
{
__requireComputeDerivative();
__target_switch
{
case glsl: __intrinsic_asm "textureProj";
case spirv: return spirv_asm {
- result:$$vector<T,4> = OpImageSampleProjImplicitLod $sampler $p Bias $bias
+ result:$$vector<T.Element,4> = OpImageSampleProjImplicitLod $sampler $p Bias $bias
};
default:
return texture(sampler, p.xy / p.z, bias);
}
}
-__generic<T:__BuiltinArithmeticType, let N:int>
+__generic<T:ITexelElement>
[ForceInline]
[require(glsl_hlsl_spirv, texture_sm_4_0_fragment)]
-public vector<T,4> textureProj(Sampler2D<vector<T,N>> sampler, vec4 p)
+public vector<T.Element,4> textureProj(Sampler2D<T> sampler, vec4 p)
{
__requireComputeDerivative();
__target_switch
{
case glsl: __intrinsic_asm "textureProj";
case spirv: return spirv_asm {
- result:$$vector<T,4> = OpImageSampleProjImplicitLod $sampler $p
+ result:$$vector<T.Element,4> = OpImageSampleProjImplicitLod $sampler $p
};
default:
return texture(sampler, p.xy / p.w);
}
}
-__generic<T:__BuiltinArithmeticType, let N:int>
+__generic<T:ITexelElement>
[ForceInline]
[require(glsl_hlsl_spirv, texture_sm_4_0_fragment)]
-public vector<T,4> textureProj(Sampler2D<vector<T,N>> sampler, vec4 p, float bias)
+public vector<T.Element,4> textureProj(Sampler2D<T> sampler, vec4 p, float bias)
{
__requireComputeDerivative();
__target_switch
{
case glsl: __intrinsic_asm "textureProj";
case spirv: return spirv_asm {
- result:$$vector<T,4> = OpImageSampleProjImplicitLod $sampler $p Bias $bias
+ result:$$vector<T.Element,4> = OpImageSampleProjImplicitLod $sampler $p Bias $bias
};
default:
return texture(sampler, p.xy / p.w, bias);
}
}
-__generic<T:__BuiltinArithmeticType, let N:int>
+__generic<T:ITexelElement>
[ForceInline]
[require(glsl_hlsl_spirv, texture_sm_4_0_fragment)]
-public vector<T,4> textureProj(Sampler3D<vector<T,N>> sampler, vec4 p)
+public vector<T.Element,4> textureProj(Sampler3D<T> sampler, vec4 p)
{
__requireComputeDerivative();
__target_switch
{
case glsl: __intrinsic_asm "textureProj";
case spirv: return spirv_asm {
- result:$$vector<T,4> = OpImageSampleProjImplicitLod $sampler $p
+ result:$$vector<T.Element,4> = OpImageSampleProjImplicitLod $sampler $p
};
default:
return texture(sampler, p.xyz / p.w);
}
}
-__generic<T:__BuiltinArithmeticType, let N:int>
+__generic<T:ITexelElement>
[ForceInline]
[require(glsl_hlsl_spirv, texture_sm_4_0_fragment)]
-public vector<T,4> textureProj(Sampler3D<vector<T,N>> sampler, vec4 p, float bias)
+public vector<T.Element,4> textureProj(Sampler3D<T> sampler, vec4 p, float bias)
{
__requireComputeDerivative();
__target_switch
{
case glsl: __intrinsic_asm "textureProj";
case spirv: return spirv_asm {
- result:$$vector<T,4> = OpImageSampleProjImplicitLod $sampler $p Bias $bias
+ result:$$vector<T.Element,4> = OpImageSampleProjImplicitLod $sampler $p Bias $bias
};
default:
return texture(sampler, p.xyz / p.w, bias);
@@ -2395,19 +2398,19 @@ public float textureProj(sampler2DShadow sampler, vec4 p, float bias)
// textureLod
// -------------------
-__generic<T:__BuiltinArithmeticType, let N:int>
+__generic<T:ITexelElement>
[ForceInline]
[require(cpp_cuda_glsl_hlsl_spirv, texture_sm_4_0_fragment)]
-public vector<T,4> textureLod(Sampler1D<vector<T,N>> sampler, float p, float lod)
+public vector<T.Element,4> textureLod(Sampler1D<T> sampler, float p, float lod)
{
- return __vectorReshape<4>(sampler.SampleLevel(p, lod));
+ return __vectorReshape2<T.Element,4>(sampler.SampleLevel(p, lod));
}
-__generic<T:__BuiltinArithmeticType, let N:int, Shape: __ITextureShape, let isArray:int, let sampleCount:int, let format:int>
+__generic<T:ITexelElement, Shape: __ITextureShape, let isArray:int, let sampleCount:int, let format:int>
[ForceInline]
[require(cpp_cuda_glsl_hlsl_spirv, texture_sm_4_0_fragment)]
-public vector<T,4> textureLod(_Texture<
- vector<T,N>,
+public vector<T.Element,4> textureLod(_Texture<
+ T,
Shape,
isArray,
0, // isMS
@@ -2418,7 +2421,7 @@ public vector<T,4> textureLod(_Texture<
format
> sampler, vector<float,Shape.dimensions+isArray> p, float lod)
{
- return __vectorReshape<4>(sampler.SampleLevel(p, lod));
+ return __vectorReshape2<T.Element,4>(sampler.SampleLevel(p, lod));
}
[ForceInline]
@@ -2501,28 +2504,28 @@ public float textureLod(sampler1DArrayShadow sampler, vec3 p, float lod)
// textureOffset
// -------------------
-__generic<T:__BuiltinArithmeticType, let N:int>
+__generic<T:ITexelElement>
[ForceInline]
[require(cpp_glsl_hlsl_spirv, texture_sm_4_0_fragment)]
-public vector<T,4> textureOffset(Sampler1D<vector<T,N>> sampler, float p, constexpr int offset, float bias = 0.0)
+public vector<T.Element,4> textureOffset(Sampler1D<T> sampler, float p, constexpr int offset, float bias = 0.0)
{
- return __vectorReshape<4>(sampler.SampleBias(p, bias, offset));
+ return __vectorReshape2<T.Element,4>(sampler.SampleBias(p, bias, offset));
}
-__generic<T:__BuiltinArithmeticType, let N:int>
+__generic<T:ITexelElement>
[ForceInline]
[require(cpp_glsl_hlsl_spirv, texture_sm_4_0_fragment)]
-public vector<T,4> textureOffset(Sampler2D<vector<T,N>> sampler, vec2 p, constexpr ivec2 offset, float bias = 0.0)
+public vector<T.Element,4> textureOffset(Sampler2D<T> sampler, vec2 p, constexpr ivec2 offset, float bias = 0.0)
{
- return __vectorReshape<4>(sampler.SampleBias(p, bias, offset));
+ return __vectorReshape2<T.Element,4>(sampler.SampleBias(p, bias, offset));
}
-__generic<T:__BuiltinArithmeticType, let N:int>
+__generic<T:ITexelElement>
[ForceInline]
[require(cpp_glsl_hlsl_spirv, texture_sm_4_0_fragment)]
-public vector<T,4> textureOffset(Sampler3D<vector<T,N>> sampler, vec3 p, constexpr ivec3 offset, float bias = 0.0)
+public vector<T.Element,4> textureOffset(Sampler3D<T> sampler, vec3 p, constexpr ivec3 offset, float bias = 0.0)
{
- return __vectorReshape<4>(sampler.SampleBias(p, bias, offset));
+ return __vectorReshape2<T.Element,4>(sampler.SampleBias(p, bias, offset));
}
[ForceInline]
@@ -2591,20 +2594,20 @@ public float textureOffset(sampler1DShadow sampler, vec3 p, constexpr int offset
}
}
-__generic<T:__BuiltinArithmeticType, let N:int>
+__generic<T:ITexelElement>
[ForceInline]
[require(cpp_glsl_hlsl_spirv, texture_sm_4_0_fragment)]
-public vector<T,4> textureOffset(Sampler1DArray<vector<T,N>> sampler, vec2 p, constexpr int offset, float bias = 0.0)
+public vector<T.Element,4> textureOffset(Sampler1DArray<T> sampler, vec2 p, constexpr int offset, float bias = 0.0)
{
- return __vectorReshape<4>(sampler.SampleBias(p, bias, offset));
+ return __vectorReshape2<T.Element,4>(sampler.SampleBias(p, bias, offset));
}
-__generic<T:__BuiltinArithmeticType, let N:int>
+__generic<T:ITexelElement>
[ForceInline]
[require(cpp_glsl_hlsl_spirv, texture_sm_4_0_fragment)]
-public vector<T,4> textureOffset(Sampler2DArray<vector<T,N>> sampler, vec3 p, constexpr ivec2 offset, float bias = 0.0)
+public vector<T.Element,4> textureOffset(Sampler2DArray<T> sampler, vec3 p, constexpr ivec2 offset, float bias = 0.0)
{
- return __vectorReshape<4>(sampler.SampleBias(p, bias, offset));
+ return __vectorReshape2<T.Element,4>(sampler.SampleBias(p, bias, offset));
}
[ForceInline]
@@ -2662,19 +2665,19 @@ public float textureOffset(sampler2DArrayShadow sampler, vec4 p, constexpr ivec2
// texelFetch
// -------------------
-__generic<T:__BuiltinArithmeticType, let N:int>
+__generic<T:ITexelElement>
[ForceInline]
[require(cpp_glsl_hlsl_spirv, texture_sm_4_1_samplerless)]
-public vector<T,4> texelFetch(Sampler1D<vector<T,N>> sampler, int p, int lod)
+public vector<T.Element,4> texelFetch(Sampler1D<T> sampler, int p, int lod)
{
- return __vectorReshape<4>(sampler.Load(int2(p, lod)));
+ return __vectorReshape2<T.Element,4>(sampler.Load(int2(p, lod)));
}
-__generic<T:__BuiltinArithmeticType, let N:int, Shape:__ITextureShape, let isArray:int, let sampleCount:int, let format:int>
+__generic<T:ITexelElement, Shape:__ITextureShape, let isArray:int, let sampleCount:int, let format:int>
[ForceInline]
[require(cpp_glsl_hlsl_spirv, texture_sm_4_1_samplerless)]
-public vector<T,4> texelFetch(_Texture<
- vector<T,N>,
+public vector<T.Element,4> texelFetch(_Texture<
+ T,
Shape,
isArray,
0, // isMS
@@ -2685,30 +2688,30 @@ public vector<T,4> texelFetch(_Texture<
format
> sampler, vector<int,Shape.dimensions+isArray> p, int lod)
{
- return __vectorReshape<4>(sampler.Load(__makeVector(p,lod)));
+ return __vectorReshape2<T.Element,4>(sampler.Load(__makeVector(p,lod)));
}
-__generic<T:__BuiltinArithmeticType, let N:int>
+__generic<T:ITexelElement>
[ForceInline]
[require(cpp_glsl_hlsl_spirv, texture_sm_4_1_samplerless)]
-public vector<T,4> texelFetch(Sampler2DRect<vector<T,N>> sampler, ivec2 p)
+public vector<T.Element,4> texelFetch(Sampler2DRect<T> sampler, ivec2 p)
{
- return __vectorReshape<4>(sampler.Load(int3(p.xy,0)));
+ return __vectorReshape2<T.Element,4>(sampler.Load(int3(p.xy,0)));
}
-__generic<T:__BuiltinArithmeticType, let N:int, let format:int>
+__generic<T:ITexelElement, let format:int>
[ForceInline]
[require(glsl_hlsl_spirv, texture_sm_4_1_samplerless)]
-public vector<T,4> texelFetch(SamplerBuffer<vector<T,N>,format> sampler, int p)
+public vector<T.Element,4> texelFetch(SamplerBuffer<T,format> sampler, int p)
{
- return __vectorReshape<4>(sampler.Load(p));
+ return __vectorReshape2<T.Element,4>(sampler.Load(p));
}
-__generic<T:__BuiltinArithmeticType, let N:int, let isArray:int, let sampleCount:int, let format:int>
+__generic<T:ITexelElement, let isArray:int, let sampleCount:int, let format:int>
[ForceInline]
[require(cpp_glsl_hlsl_spirv, texture_sm_4_1_samplerless)]
-public vector<T,4> texelFetch(_Texture<
- vector<T,N>,
+public vector<T.Element,4> texelFetch(_Texture<
+ T,
__Shape2D,
isArray,
1, // isMS
@@ -2724,7 +2727,7 @@ public vector<T,4> texelFetch(_Texture<
case glsl: __intrinsic_asm "texelFetch";
default:
// TODO: Need to apply lod
- return __vectorReshape<4>(sampler.Load(__makeVector(p, 0)));
+ return __vectorReshape2<T.Element,4>(sampler.Load(__makeVector(p, 0)));
}
}
@@ -2732,19 +2735,19 @@ public vector<T,4> texelFetch(_Texture<
// texelFetchOffset
// -------------------
-__generic<T:__BuiltinArithmeticType, let N:int>
+__generic<T:ITexelElement>
[ForceInline]
[require(cpp_glsl_hlsl_spirv, texture_sm_4_1_samplerless)]
-public vector<T,4> texelFetchOffset(Sampler1D<vector<T,N>> sampler, int p, int lod, constexpr int offset)
+public vector<T.Element,4> texelFetchOffset(Sampler1D<T> sampler, int p, int lod, constexpr int offset)
{
- return __vectorReshape<4>(sampler.Load(int2(p, lod), offset));
+ return __vectorReshape2<T.Element,4>(sampler.Load(int2(p, lod), offset));
}
-__generic<T:__BuiltinArithmeticType, let N:int, Shape:__ITextureShape, let isArray:int, let sampleCount:int, let format:int>
+__generic<T:ITexelElement, Shape:__ITextureShape, let isArray:int, let sampleCount:int, let format:int>
[ForceInline]
[require(cpp_glsl_hlsl_spirv, texture_sm_4_1_samplerless)]
-public vector<T,4> texelFetchOffset(_Texture<
- vector<T,N>,
+public vector<T.Element,4> texelFetchOffset(_Texture<
+ T,
Shape,
isArray,
0, // isMS
@@ -2755,59 +2758,59 @@ public vector<T,4> texelFetchOffset(_Texture<
format
> sampler, vector<int,Shape.dimensions+isArray> p, int lod, constexpr vector<int,Shape.planeDimensions> offset)
{
- return __vectorReshape<4>(sampler.Load(__makeVector(p,lod), offset));
+ return __vectorReshape2<T.Element,4>(sampler.Load(__makeVector(p,lod), offset));
}
-__generic<T:__BuiltinArithmeticType, let N:int>
+__generic<T:ITexelElement>
[ForceInline]
[require(cpp_glsl_hlsl_spirv, texture_sm_4_1_samplerless)]
-public vector<T,4> texelFetchOffset(Sampler2DRect<vector<T,N>> sampler, ivec2 p, constexpr ivec2 offset)
+public vector<T.Element,4> texelFetchOffset(Sampler2DRect<T> sampler, ivec2 p, constexpr ivec2 offset)
{
- return __vectorReshape<4>(sampler.Load(__makeVector(p, 0), offset));
+ return __vectorReshape2<T.Element,4>(sampler.Load(__makeVector(p, 0), offset));
}
// -------------------
// textureProjOffset
// -------------------
-__generic<T:__BuiltinArithmeticType, let N:int>
+__generic<T:ITexelElement>
[ForceInline]
[require(cpp_glsl_hlsl_spirv, texture_sm_4_0_fragment)]
-public vector<T,4> textureProjOffset(Sampler1D<vector<T,N>> sampler, vec2 p, constexpr int offset)
+public vector<T.Element,4> textureProjOffset(Sampler1D<T> sampler, vec2 p, constexpr int offset)
{
__requireComputeDerivative();
__target_switch
{
case glsl: __intrinsic_asm "textureProjOffset";
case spirv: return spirv_asm {
- result:$$vector<T,4> = OpImageSampleProjImplicitLod $sampler $p ConstOffset $offset
+ result:$$vector<T.Element,4> = OpImageSampleProjImplicitLod $sampler $p ConstOffset $offset
};
default:
return textureOffset(sampler, p.x / p.y, offset);
}
}
-__generic<T:__BuiltinArithmeticType, let N:int>
+__generic<T:ITexelElement>
[ForceInline]
[require(cpp_glsl_hlsl_spirv, texture_sm_4_0_fragment)]
-public vector<T,4> textureProjOffset(Sampler1D<vector<T,N>> sampler, vec2 p, constexpr int offset, float bias)
+public vector<T.Element,4> textureProjOffset(Sampler1D<T> sampler, vec2 p, constexpr int offset, float bias)
{
__requireComputeDerivative();
__target_switch
{
case glsl: __intrinsic_asm "textureProjOffset";
case spirv: return spirv_asm {
- result:$$vector<T,4> = OpImageSampleProjImplicitLod $sampler $p Bias|ConstOffset $bias $offset
+ result:$$vector<T.Element,4> = OpImageSampleProjImplicitLod $sampler $p Bias|ConstOffset $bias $offset
};
default:
return textureOffset(sampler, p.x / p.y, offset, bias);
}
}
-__generic<T:__BuiltinArithmeticType, let N:int>
+__generic<T:ITexelElement>
[ForceInline]
[require(cpp_glsl_hlsl_spirv, texture_sm_4_0_fragment)]
-public vector<T,4> textureProjOffset(Sampler1D<vector<T,N>> sampler, vec4 p, constexpr int offset)
+public vector<T.Element,4> textureProjOffset(Sampler1D<T> sampler, vec4 p, constexpr int offset)
{
__requireComputeDerivative();
__target_switch
@@ -2817,7 +2820,7 @@ public vector<T,4> textureProjOffset(Sampler1D<vector<T,N>> sampler, vec4 p, con
{
vec4 xw__ = p.xwww;
return spirv_asm {
- result:$$vector<T,4> = OpImageSampleProjImplicitLod $sampler $xw__ ConstOffset $offset
+ result:$$vector<T.Element,4> = OpImageSampleProjImplicitLod $sampler $xw__ ConstOffset $offset
};
}
default:
@@ -2825,10 +2828,10 @@ public vector<T,4> textureProjOffset(Sampler1D<vector<T,N>> sampler, vec4 p, con
}
}
-__generic<T:__BuiltinArithmeticType, let N:int>
+__generic<T:ITexelElement>
[ForceInline]
[require(cpp_glsl_hlsl_spirv, texture_sm_4_0_fragment)]
-public vector<T,4> textureProjOffset(Sampler1D<vector<T,N>> sampler, vec4 p, constexpr int offset, float bias)
+public vector<T.Element,4> textureProjOffset(Sampler1D<T> sampler, vec4 p, constexpr int offset, float bias)
{
__requireComputeDerivative();
__target_switch
@@ -2838,7 +2841,7 @@ public vector<T,4> textureProjOffset(Sampler1D<vector<T,N>> sampler, vec4 p, con
{
vec4 xw__ = p.xwww;
return spirv_asm {
- result:$$vector<T,4> = OpImageSampleProjImplicitLod $sampler $xw__ Bias|ConstOffset $bias $offset
+ result:$$vector<T.Element,4> = OpImageSampleProjImplicitLod $sampler $xw__ Bias|ConstOffset $bias $offset
};
}
default:
@@ -2846,44 +2849,44 @@ public vector<T,4> textureProjOffset(Sampler1D<vector<T,N>> sampler, vec4 p, con
}
}
-__generic<T:__BuiltinArithmeticType, let N:int>
+__generic<T:ITexelElement>
[ForceInline]
[require(cpp_glsl_hlsl_spirv, texture_sm_4_0_fragment)]
-public vector<T,4> textureProjOffset(Sampler2D<vector<T,N>> sampler, vec3 p, constexpr ivec2 offset)
+public vector<T.Element,4> textureProjOffset(Sampler2D<T> sampler, vec3 p, constexpr ivec2 offset)
{
__requireComputeDerivative();
__target_switch
{
case glsl: __intrinsic_asm "textureProjOffset";
case spirv: return spirv_asm {
- result:$$vector<T,4> = OpImageSampleProjImplicitLod $sampler $p ConstOffset $offset
+ result:$$vector<T.Element,4> = OpImageSampleProjImplicitLod $sampler $p ConstOffset $offset
};
default:
return textureOffset(sampler, p.xy / p.z, offset);
}
}
-__generic<T:__BuiltinArithmeticType, let N:int>
+__generic<T:ITexelElement>
[ForceInline]
[require(cpp_glsl_hlsl_spirv, texture_sm_4_0_fragment)]
-public vector<T,4> textureProjOffset(Sampler2D<vector<T,N>> sampler, vec3 p, constexpr ivec2 offset, float bias)
+public vector<T.Element,4> textureProjOffset(Sampler2D<T> sampler, vec3 p, constexpr ivec2 offset, float bias)
{
__requireComputeDerivative();
__target_switch
{
case glsl: __intrinsic_asm "textureProjOffset";
case spirv: return spirv_asm {
- result:$$vector<T,4> = OpImageSampleProjImplicitLod $sampler $p Bias|ConstOffset $bias $offset
+ result:$$vector<T.Element,4> = OpImageSampleProjImplicitLod $sampler $p Bias|ConstOffset $bias $offset
};
default:
return textureOffset(sampler, p.xy / p.z, offset, bias);
}
}
-__generic<T:__BuiltinArithmeticType, let N:int>
+__generic<T:ITexelElement>
[ForceInline]
[require(cpp_glsl_hlsl_spirv, texture_sm_4_0_fragment)]
-public vector<T,4> textureProjOffset(Sampler2D<vector<T,N>> sampler, vec4 p, constexpr ivec2 offset)
+public vector<T.Element,4> textureProjOffset(Sampler2D<T> sampler, vec4 p, constexpr ivec2 offset)
{
__requireComputeDerivative();
__target_switch
@@ -2893,7 +2896,7 @@ public vector<T,4> textureProjOffset(Sampler2D<vector<T,N>> sampler, vec4 p, con
{
vec4 xyw__ = p.xyww;
return spirv_asm {
- result:$$vector<T,4> = OpImageSampleProjImplicitLod $sampler $xyw__ ConstOffset $offset
+ result:$$vector<T.Element,4> = OpImageSampleProjImplicitLod $sampler $xyw__ ConstOffset $offset
};
}
default:
@@ -2901,10 +2904,10 @@ public vector<T,4> textureProjOffset(Sampler2D<vector<T,N>> sampler, vec4 p, con
}
}
-__generic<T:__BuiltinArithmeticType, let N:int>
+__generic<T:ITexelElement>
[ForceInline]
[require(cpp_glsl_hlsl_spirv, texture_sm_4_0_fragment)]
-public vector<T,4> textureProjOffset(Sampler2D<vector<T,N>> sampler, vec4 p, constexpr ivec2 offset, float bias)
+public vector<T.Element,4> textureProjOffset(Sampler2D<T> sampler, vec4 p, constexpr ivec2 offset, float bias)
{
__requireComputeDerivative();
__target_switch
@@ -2914,7 +2917,7 @@ public vector<T,4> textureProjOffset(Sampler2D<vector<T,N>> sampler, vec4 p, con
{
vec4 xyw_ = p.xyww;
return spirv_asm {
- result:$$vector<T,4> = OpImageSampleProjImplicitLod $sampler $xyw_ Bias|ConstOffset $bias $offset
+ result:$$vector<T.Element,4> = OpImageSampleProjImplicitLod $sampler $xyw_ Bias|ConstOffset $bias $offset
};
}
default:
@@ -2922,34 +2925,34 @@ public vector<T,4> textureProjOffset(Sampler2D<vector<T,N>> sampler, vec4 p, con
}
}
-__generic<T:__BuiltinArithmeticType, let N:int>
+__generic<T:ITexelElement>
[ForceInline]
[require(cpp_glsl_hlsl_spirv, texture_sm_4_0_fragment)]
-public vector<T,4> textureProjOffset(Sampler3D<vector<T,N>> sampler, vec4 p, constexpr ivec3 offset)
+public vector<T.Element,4> textureProjOffset(Sampler3D<T> sampler, vec4 p, constexpr ivec3 offset)
{
__requireComputeDerivative();
__target_switch
{
case glsl: __intrinsic_asm "textureProjOffset";
case spirv: return spirv_asm {
- result:$$vector<T,4> = OpImageSampleProjImplicitLod $sampler $p ConstOffset $offset
+ result:$$vector<T.Element,4> = OpImageSampleProjImplicitLod $sampler $p ConstOffset $offset
};
default:
return textureOffset(sampler, p.xyz / p.w, offset);
}
}
-__generic<T:__BuiltinArithmeticType, let N:int>
+__generic<T:ITexelElement>
[ForceInline]
[require(cpp_glsl_hlsl_spirv, texture_sm_4_0_fragment)]
-public vector<T,4> textureProjOffset(Sampler3D<vector<T,N>> sampler, vec4 p, constexpr ivec3 offset, float bias)
+public vector<T.Element,4> textureProjOffset(Sampler3D<T> sampler, vec4 p, constexpr ivec3 offset, float bias)
{
__requireComputeDerivative();
__target_switch
{
case glsl: __intrinsic_asm "textureProjOffset";
case spirv: return spirv_asm {
- result:$$vector<T,4> = OpImageSampleProjImplicitLod $sampler $p Bias|ConstOffset $bias $offset
+ result:$$vector<T.Element,4> = OpImageSampleProjImplicitLod $sampler $p Bias|ConstOffset $bias $offset
};
default:
return textureOffset(sampler, p.xyz / p.w, offset, bias);
@@ -3044,19 +3047,19 @@ public float textureProjOffset(sampler2DShadow sampler, vec4 p, constexpr ivec2
// textureLodOffset
// -------------------
-__generic<T:__BuiltinArithmeticType, let N:int>
+__generic<T:ITexelElement>
[ForceInline]
[require(cpp_glsl_hlsl_spirv, texture_sm_4_0)]
-public vector<T,4> textureLodOffset(Sampler1D<vector<T,N>> sampler, float p, float lod, constexpr int offset)
+public vector<T.Element,4> textureLodOffset(Sampler1D<T> sampler, float p, float lod, constexpr int offset)
{
- return __vectorReshape<4>(sampler.SampleLevel(p, lod, offset));
+ return __vectorReshape2<T.Element,4>(sampler.SampleLevel(p, lod, offset));
}
-__generic<T:__BuiltinArithmeticType, let N:int, Shape:__ITextureShape, let isArray:int, let sampleCount:int, let format:int>
+__generic<T:ITexelElement, Shape:__ITextureShape, let isArray:int, let sampleCount:int, let format:int>
[ForceInline]
[require(cpp_glsl_hlsl_spirv, texture_sm_4_0)]
-public vector<T,4> textureLodOffset(_Texture<
- vector<T,N>,
+public vector<T.Element,4> textureLodOffset(_Texture<
+ T,
Shape,
isArray,
0, // isMS
@@ -3067,7 +3070,7 @@ public vector<T,4> textureLodOffset(_Texture<
format
> sampler, vector<float,Shape.dimensions+isArray> p, float lod, constexpr vector<int,Shape.planeDimensions> offset)
{
- return __vectorReshape<4>(sampler.SampleLevel(p, lod, offset));
+ return __vectorReshape2<T.Element,4>(sampler.SampleLevel(p, lod, offset));
}
[ForceInline]
@@ -3134,26 +3137,26 @@ public float textureLodOffset(sampler1DArrayShadow sampler, vec3 p, float lod, c
// textureProjLod
// -------------------
-__generic<T:__BuiltinArithmeticType, let N:int>
+__generic<T:ITexelElement>
[ForceInline]
[require(cpp_cuda_glsl_hlsl_spirv, texture_sm_4_0_fragment)]
-public vector<T,4> textureProjLod(Sampler1D<vector<T,N>> sampler, vec2 p, float lod)
+public vector<T.Element,4> textureProjLod(Sampler1D<T> sampler, vec2 p, float lod)
{
__target_switch
{
case glsl: __intrinsic_asm "textureProjLod";
case spirv: return spirv_asm {
- result:$$vector<T,4> = OpImageSampleProjExplicitLod $sampler $p Lod $lod
+ result:$$vector<T.Element,4> = OpImageSampleProjExplicitLod $sampler $p Lod $lod
};
default:
return textureLod(sampler, p.x / p.y, lod);
}
}
-__generic<T:__BuiltinArithmeticType, let N:int>
+__generic<T:ITexelElement>
[ForceInline]
[require(cpp_cuda_glsl_hlsl_spirv, texture_sm_4_0_fragment)]
-public vector<T,4> textureProjLod(Sampler1D<vector<T,N>> sampler, vec4 p, float lod)
+public vector<T.Element,4> textureProjLod(Sampler1D<T> sampler, vec4 p, float lod)
{
__target_switch
{
@@ -3162,7 +3165,7 @@ public vector<T,4> textureProjLod(Sampler1D<vector<T,N>> sampler, vec4 p, float
{
vec4 xw__ = p.xwww;
return spirv_asm {
- result:$$vector<T,4> = OpImageSampleProjExplicitLod $sampler $xw__ Lod $lod
+ result:$$vector<T.Element,4> = OpImageSampleProjExplicitLod $sampler $xw__ Lod $lod
};
}
default:
@@ -3170,26 +3173,26 @@ public vector<T,4> textureProjLod(Sampler1D<vector<T,N>> sampler, vec4 p, float
}
}
-__generic<T:__BuiltinArithmeticType, let N:int>
+__generic<T:ITexelElement>
[ForceInline]
[require(cpp_cuda_glsl_hlsl_spirv, texture_sm_4_0_fragment)]
-public vector<T,4> textureProjLod(Sampler2D<vector<T,N>> sampler, vec3 p, float lod)
+public vector<T.Element,4> textureProjLod(Sampler2D<T> sampler, vec3 p, float lod)
{
__target_switch
{
case glsl: __intrinsic_asm "textureProjLod";
case spirv: return spirv_asm {
- result:$$vector<T,4> = OpImageSampleProjExplicitLod $sampler $p Lod $lod
+ result:$$vector<T.Element,4> = OpImageSampleProjExplicitLod $sampler $p Lod $lod
};
default:
return textureLod(sampler, p.xy / p.z, lod);
}
}
-__generic<T:__BuiltinArithmeticType, let N:int>
+__generic<T:ITexelElement>
[ForceInline]
[require(cpp_cuda_glsl_hlsl_spirv, texture_sm_4_0_fragment)]
-public vector<T,4> textureProjLod(Sampler2D<vector<T,N>> sampler, vec4 p, float lod)
+public vector<T.Element,4> textureProjLod(Sampler2D<T> sampler, vec4 p, float lod)
{
__target_switch
{
@@ -3198,7 +3201,7 @@ public vector<T,4> textureProjLod(Sampler2D<vector<T,N>> sampler, vec4 p, float
{
vec4 xyw_ = p.xyww;
return spirv_asm {
- result:$$vector<T,4> = OpImageSampleProjExplicitLod $sampler $xyw_ Lod $lod
+ result:$$vector<T.Element,4> = OpImageSampleProjExplicitLod $sampler $xyw_ Lod $lod
};
}
default:
@@ -3206,16 +3209,16 @@ public vector<T,4> textureProjLod(Sampler2D<vector<T,N>> sampler, vec4 p, float
}
}
-__generic<T:__BuiltinArithmeticType, let N:int>
+__generic<T:ITexelElement>
[ForceInline]
[require(cpp_cuda_glsl_hlsl_spirv, texture_sm_4_0_fragment)]
-public vector<T,4> textureProjLod(Sampler3D<vector<T,N>> sampler, vec4 p, float lod)
+public vector<T.Element,4> textureProjLod(Sampler3D<T> sampler, vec4 p, float lod)
{
__target_switch
{
case glsl: __intrinsic_asm "textureProjLod";
case spirv: return spirv_asm {
- result:$$vector<T,4> = OpImageSampleProjExplicitLod $sampler $p Lod $lod
+ result:$$vector<T.Element,4> = OpImageSampleProjExplicitLod $sampler $p Lod $lod
};
default:
return textureLod(sampler, p.xyz / p.w, lod);
@@ -3266,26 +3269,26 @@ public float textureProjLod(sampler2DShadow sampler, vec4 p, float lod)
// textureProjLodOffset
// -------------------
-__generic<T:__BuiltinArithmeticType, let N:int>
+__generic<T:ITexelElement>
[ForceInline]
[require(glsl_hlsl_spirv, texture_sm_4_0_fragment)]
-public vector<T,4> textureProjLodOffset(Sampler1D<vector<T,N>> sampler, vec2 p, float lod, constexpr int offset)
+public vector<T.Element,4> textureProjLodOffset(Sampler1D<T> sampler, vec2 p, float lod, constexpr int offset)
{
__target_switch
{
case glsl: __intrinsic_asm "textureProjLodOffset";
case spirv: return spirv_asm {
- result:$$vector<T,4> = OpImageSampleProjExplicitLod $sampler $p Lod|ConstOffset $lod $offset
+ result:$$vector<T.Element,4> = OpImageSampleProjExplicitLod $sampler $p Lod|ConstOffset $lod $offset
};
default:
return textureLodOffset(sampler, p.x / p.y, lod, offset);
}
}
-__generic<T:__BuiltinArithmeticType, let N:int>
+__generic<T:ITexelElement>
[ForceInline]
[require(glsl_hlsl_spirv, texture_sm_4_0_fragment)]
-public vector<T,4> textureProjLodOffset(Sampler1D<vector<T,N>> sampler, vec4 p, float lod, constexpr int offset)
+public vector<T.Element,4> textureProjLodOffset(Sampler1D<T> sampler, vec4 p, float lod, constexpr int offset)
{
__target_switch
{
@@ -3294,7 +3297,7 @@ public vector<T,4> textureProjLodOffset(Sampler1D<vector<T,N>> sampler, vec4 p,
{
vec4 xw__ = p.xwww;
return spirv_asm {
- result:$$vector<T,4> = OpImageSampleProjExplicitLod $sampler $xw__ Lod|ConstOffset $lod $offset
+ result:$$vector<T.Element,4> = OpImageSampleProjExplicitLod $sampler $xw__ Lod|ConstOffset $lod $offset
};
}
default:
@@ -3302,26 +3305,26 @@ public vector<T,4> textureProjLodOffset(Sampler1D<vector<T,N>> sampler, vec4 p,
}
}
-__generic<T:__BuiltinArithmeticType, let N:int>
+__generic<T:ITexelElement>
[ForceInline]
[require(glsl_hlsl_spirv, texture_sm_4_0_fragment)]
-public vector<T,4> textureProjLodOffset(Sampler2D<vector<T,N>> sampler, vec3 p, float lod, constexpr ivec2 offset)
+public vector<T.Element,4> textureProjLodOffset(Sampler2D<T> sampler, vec3 p, float lod, constexpr ivec2 offset)
{
__target_switch
{
case glsl: __intrinsic_asm "textureProjLodOffset";
case spirv: return spirv_asm {
- result:$$vector<T,4> = OpImageSampleProjExplicitLod $sampler $p Lod|ConstOffset $lod $offset
+ result:$$vector<T.Element,4> = OpImageSampleProjExplicitLod $sampler $p Lod|ConstOffset $lod $offset
};
default:
return textureLodOffset(sampler, p.xy / p.z, lod, offset);
}
}
-__generic<T:__BuiltinArithmeticType, let N:int>
+__generic<T:ITexelElement>
[ForceInline]
[require(glsl_hlsl_spirv, texture_sm_4_0_fragment)]
-public vector<T,4> textureProjLodOffset(Sampler2D<vector<T,N>> sampler, vec4 p, float lod, constexpr ivec2 offset)
+public vector<T.Element,4> textureProjLodOffset(Sampler2D<T> sampler, vec4 p, float lod, constexpr ivec2 offset)
{
__target_switch
{
@@ -3330,7 +3333,7 @@ public vector<T,4> textureProjLodOffset(Sampler2D<vector<T,N>> sampler, vec4 p,
{
vec4 xyw_ = p.xyww;
return spirv_asm {
- result:$$vector<T,4> = OpImageSampleProjExplicitLod $sampler $xyw_ Lod|ConstOffset $lod $offset
+ result:$$vector<T.Element,4> = OpImageSampleProjExplicitLod $sampler $xyw_ Lod|ConstOffset $lod $offset
};
}
default:
@@ -3338,16 +3341,16 @@ public vector<T,4> textureProjLodOffset(Sampler2D<vector<T,N>> sampler, vec4 p,
}
}
-__generic<T:__BuiltinArithmeticType, let N:int>
+__generic<T:ITexelElement>
[ForceInline]
[require(glsl_hlsl_spirv, texture_sm_4_0_fragment)]
-public vector<T,4> textureProjLodOffset(Sampler3D<vector<T,N>> sampler, vec4 p, float lod, constexpr ivec3 offset)
+public vector<T.Element,4> textureProjLodOffset(Sampler3D<T> sampler, vec4 p, float lod, constexpr ivec3 offset)
{
__target_switch
{
case glsl: __intrinsic_asm "textureProjLodOffset";
case spirv: return spirv_asm {
- result:$$vector<T,4> = OpImageSampleProjExplicitLod $sampler $p Lod|ConstOffset $lod $offset
+ result:$$vector<T.Element,4> = OpImageSampleProjExplicitLod $sampler $p Lod|ConstOffset $lod $offset
};
default:
return textureLodOffset(sampler, p.xyz / p.w, lod, offset);
@@ -3399,19 +3402,19 @@ public float textureProjLodOffset(sampler2DShadow sampler, vec4 p, float lod, co
// -------------------
-__generic<T:__BuiltinArithmeticType, let N:int>
+__generic<T:ITexelElement>
[ForceInline]
[require(cpp_glsl_hlsl_spirv, texture_sm_4_1)]
-public vector<T,4> textureGrad(Sampler1D<vector<T,N>> sampler, float p, float dPdx, float dPdy)
+public vector<T.Element,4> textureGrad(Sampler1D<T> sampler, float p, float dPdx, float dPdy)
{
- return __vectorReshape<4>(sampler.SampleGrad(p, dPdx, dPdy));
+ return __vectorReshape2<T.Element,4>(sampler.SampleGrad(p, dPdx, dPdy));
}
-__generic<T:__BuiltinArithmeticType, let N:int, Shape:__ITextureShape, let isArray:int, let sampleCount:int, let format:int>
+__generic<T:ITexelElement, Shape:__ITextureShape, let isArray:int, let sampleCount:int, let format:int>
[ForceInline]
[require(cpp_glsl_hlsl_spirv, texture_sm_4_1)]
-public vector<T,4> textureGrad(_Texture<
- vector<T,N>,
+public vector<T.Element,4> textureGrad(_Texture<
+ T,
Shape,
isArray,
0, // isMS
@@ -3422,7 +3425,7 @@ public vector<T,4> textureGrad(_Texture<
format
> sampler, vector<float,Shape.dimensions+isArray> p, vector<float,Shape.dimensions> dPdx, vector<float,Shape.dimensions> dPdy)
{
- return __vectorReshape<4>(sampler.SampleGrad(p, dPdx, dPdy));
+ return __vectorReshape2<T.Element,4>(sampler.SampleGrad(p, dPdx, dPdy));
}
[ForceInline]
@@ -3514,19 +3517,19 @@ public float textureGrad(sampler2DArrayShadow sampler, vec4 p, vec2 dPdx, vec2 d
// textureGradOffset
// -------------------
-__generic<T:__BuiltinArithmeticType, let N:int>
+__generic<T:ITexelElement>
[ForceInline]
[require(cpp_glsl_hlsl_spirv, texture_sm_4_1)]
-public vector<T,4> textureGradOffset(Sampler1D<vector<T,N>> sampler, float p, float dPdx, float dPdy, constexpr int offset)
+public vector<T.Element,4> textureGradOffset(Sampler1D<T> sampler, float p, float dPdx, float dPdy, constexpr int offset)
{
- return __vectorReshape<4>(sampler.SampleGrad(p, dPdx, dPdy, offset));
+ return __vectorReshape2<T.Element,4>(sampler.SampleGrad(p, dPdx, dPdy, offset));
}
-__generic<T:__BuiltinArithmeticType, let N:int, Shape:__ITextureShape, let isArray:int, let sampleCount:int, let format:int>
+__generic<T:ITexelElement, Shape:__ITextureShape, let isArray:int, let sampleCount:int, let format:int>
[require(cpp_glsl_hlsl_spirv, texture_sm_4_1)]
[ForceInline]
-public vector<T,4> textureGradOffset(_Texture<
- vector<T,N>,
+public vector<T.Element,4> textureGradOffset(_Texture<
+ T,
Shape,
isArray,
0, // isMS
@@ -3537,7 +3540,7 @@ public vector<T,4> textureGradOffset(_Texture<
format
> sampler, vector<float,Shape.dimensions+isArray> p, vector<float,Shape.dimensions> dPdx, vector<float,Shape.dimensions> dPdy, constexpr vector<int,Shape.dimensions> offset)
{
- return __vectorReshape<4>(sampler.SampleGrad(p, dPdx, dPdy, offset));
+ return __vectorReshape2<T.Element,4>(sampler.SampleGrad(p, dPdx, dPdy, offset));
}
[ForceInline]
@@ -3612,26 +3615,26 @@ public float textureGradOffset(sampler2DArrayShadow sampler, vec4 p, vec2 dPdx,
// textureProjGrad
// -------------------
-__generic<T:__BuiltinArithmeticType, let N:int>
+__generic<T:ITexelElement>
[ForceInline]
[require(cpp_glsl_hlsl_spirv, texture_sm_4_1)]
-public vector<T,4> textureProjGrad(Sampler1D<vector<T,N>> sampler, vec2 p, float dPdx, float dPdy)
+public vector<T.Element,4> textureProjGrad(Sampler1D<T> sampler, vec2 p, float dPdx, float dPdy)
{
__target_switch
{
case glsl: __intrinsic_asm "textureProjGrad";
case spirv: return spirv_asm {
- result:$$vector<T,4> = OpImageSampleProjExplicitLod $sampler $p Grad $dPdx $dPdy
+ result:$$vector<T.Element,4> = OpImageSampleProjExplicitLod $sampler $p Grad $dPdx $dPdy
};
default:
return textureGrad(sampler, p.x / p.y, dPdx, dPdy);
}
}
-__generic<T:__BuiltinArithmeticType, let N:int>
+__generic<T:ITexelElement>
[ForceInline]
[require(cpp_glsl_hlsl_spirv, texture_sm_4_1)]
-public vector<T,4> textureProjGrad(Sampler1D<vector<T,N>> sampler, vec4 p, float dPdx, float dPdy)
+public vector<T.Element,4> textureProjGrad(Sampler1D<T> sampler, vec4 p, float dPdx, float dPdy)
{
__target_switch
{
@@ -3640,7 +3643,7 @@ public vector<T,4> textureProjGrad(Sampler1D<vector<T,N>> sampler, vec4 p, float
{
vec4 xw__ = p.xwww;
return spirv_asm {
- result:$$vector<T,4> = OpImageSampleProjExplicitLod $sampler $xw__ Grad $dPdx $dPdy
+ result:$$vector<T.Element,4> = OpImageSampleProjExplicitLod $sampler $xw__ Grad $dPdx $dPdy
};
}
default:
@@ -3648,26 +3651,26 @@ public vector<T,4> textureProjGrad(Sampler1D<vector<T,N>> sampler, vec4 p, float
}
}
-__generic<T:__BuiltinArithmeticType, let N:int>
+__generic<T:ITexelElement>
[ForceInline]
[require(cpp_glsl_hlsl_spirv, texture_sm_4_1)]
-public vector<T,4> textureProjGrad(Sampler2D<vector<T,N>> sampler, vec3 p, vec2 dPdx, vec2 dPdy)
+public vector<T.Element,4> textureProjGrad(Sampler2D<T> sampler, vec3 p, vec2 dPdx, vec2 dPdy)
{
__target_switch
{
case glsl: __intrinsic_asm "textureProjGrad";
case spirv: return spirv_asm {
- result:$$vector<T,4> = OpImageSampleProjExplicitLod $sampler $p Grad $dPdx $dPdy
+ result:$$vector<T.Element,4> = OpImageSampleProjExplicitLod $sampler $p Grad $dPdx $dPdy
};
default:
return textureGrad(sampler, p.xy / p.z, dPdx, dPdy);
}
}
-__generic<T:__BuiltinArithmeticType, let N:int>
+__generic<T:ITexelElement>
[ForceInline]
[require(cpp_glsl_hlsl_spirv, texture_sm_4_1)]
-public vector<T,4> textureProjGrad(Sampler2D<vector<T,N>> sampler, vec4 p, vec2 dPdx, vec2 dPdy)
+public vector<T.Element,4> textureProjGrad(Sampler2D<T> sampler, vec4 p, vec2 dPdx, vec2 dPdy)
{
__target_switch
{
@@ -3676,7 +3679,7 @@ public vector<T,4> textureProjGrad(Sampler2D<vector<T,N>> sampler, vec4 p, vec2
{
vec4 xyw_ = p.xyww;
return spirv_asm {
- result:$$vector<T,4> = OpImageSampleProjExplicitLod $sampler $xyw_ Grad $dPdx $dPdy
+ result:$$vector<T.Element,4> = OpImageSampleProjExplicitLod $sampler $xyw_ Grad $dPdx $dPdy
};
}
default:
@@ -3684,16 +3687,16 @@ public vector<T,4> textureProjGrad(Sampler2D<vector<T,N>> sampler, vec4 p, vec2
}
}
-__generic<T:__BuiltinArithmeticType, let N:int>
+__generic<T:ITexelElement>
[ForceInline]
[require(cpp_glsl_hlsl_spirv, texture_sm_4_1)]
-public vector<T,4> textureProjGrad(Sampler3D<vector<T,N>> sampler, vec4 p, vec3 dPdx, vec3 dPdy)
+public vector<T.Element,4> textureProjGrad(Sampler3D<T> sampler, vec4 p, vec3 dPdx, vec3 dPdy)
{
__target_switch
{
case glsl: __intrinsic_asm "textureProjGrad";
case spirv: return spirv_asm {
- result:$$vector<T,4> = OpImageSampleProjExplicitLod $sampler $p Grad $dPdx $dPdy
+ result:$$vector<T.Element,4> = OpImageSampleProjExplicitLod $sampler $p Grad $dPdx $dPdy
};
default:
return textureGrad(sampler, p.xyz / p.w, dPdx, dPdy);
@@ -3744,26 +3747,26 @@ public float textureProjGrad(sampler2DShadow sampler, vec4 p, vec2 dPdx, vec2 dP
// textureProjGradOffset
// -------------------
-__generic<T:__BuiltinArithmeticType, let N:int>
+__generic<T:ITexelElement>
[ForceInline]
[require(cpp_glsl_hlsl_spirv, texture_sm_4_1)]
-public vector<T,4> textureProjGradOffset(Sampler1D<vector<T,N>> sampler, vec2 p, float dPdx, float dPdy, constexpr int offset)
+public vector<T.Element,4> textureProjGradOffset(Sampler1D<T> sampler, vec2 p, float dPdx, float dPdy, constexpr int offset)
{
__target_switch
{
case glsl: __intrinsic_asm "textureProjGradOffset";
case spirv: return spirv_asm {
- result:$$vector<T,4> = OpImageSampleProjExplicitLod $sampler $p Grad|ConstOffset $dPdx $dPdy $offset
+ result:$$vector<T.Element,4> = OpImageSampleProjExplicitLod $sampler $p Grad|ConstOffset $dPdx $dPdy $offset
};
default:
return textureGradOffset(sampler, p.x / p.y, dPdx, dPdy, offset);
}
}
-__generic<T:__BuiltinArithmeticType, let N:int>
+__generic<T:ITexelElement>
[ForceInline]
[require(cpp_glsl_hlsl_spirv, texture_sm_4_1)]
-public vector<T,4> textureProjGradOffset(Sampler1D<vector<T,N>> sampler, vec4 p, float dPdx, float dPdy, constexpr int offset)
+public vector<T.Element,4> textureProjGradOffset(Sampler1D<T> sampler, vec4 p, float dPdx, float dPdy, constexpr int offset)
{
__target_switch
{
@@ -3772,7 +3775,7 @@ public vector<T,4> textureProjGradOffset(Sampler1D<vector<T,N>> sampler, vec4 p,
{
vec4 xw__ = p.xwww;
return spirv_asm {
- result:$$vector<T,4> = OpImageSampleProjExplicitLod $sampler $xw__ Grad|ConstOffset $dPdx $dPdy $offset
+ result:$$vector<T.Element,4> = OpImageSampleProjExplicitLod $sampler $xw__ Grad|ConstOffset $dPdx $dPdy $offset
};
}
default:
@@ -3780,26 +3783,26 @@ public vector<T,4> textureProjGradOffset(Sampler1D<vector<T,N>> sampler, vec4 p,
}
}
-__generic<T:__BuiltinArithmeticType, let N:int>
+__generic<T:ITexelElement>
[ForceInline]
[require(cpp_glsl_hlsl_spirv, texture_sm_4_1)]
-public vector<T,4> textureProjGradOffset(Sampler2D<vector<T,N>> sampler, vec3 p, vec2 dPdx, vec2 dPdy, constexpr ivec2 offset)
+public vector<T.Element,4> textureProjGradOffset(Sampler2D<T> sampler, vec3 p, vec2 dPdx, vec2 dPdy, constexpr ivec2 offset)
{
__target_switch
{
case glsl: __intrinsic_asm "textureProjGradOffset";
case spirv: return spirv_asm {
- result:$$vector<T,4> = OpImageSampleProjExplicitLod $sampler $p Grad|ConstOffset $dPdx $dPdy $offset
+ result:$$vector<T.Element,4> = OpImageSampleProjExplicitLod $sampler $p Grad|ConstOffset $dPdx $dPdy $offset
};
default:
return textureGradOffset(sampler, p.xy / p.z, dPdx, dPdy, offset);
}
}
-__generic<T:__BuiltinArithmeticType, let N:int>
+__generic<T:ITexelElement>
[ForceInline]
[require(cpp_glsl_hlsl_spirv, texture_sm_4_1)]
-public vector<T,4> textureProjGradOffset(Sampler2D<vector<T,N>> sampler, vec4 p, vec2 dPdx, vec2 dPdy, constexpr ivec2 offset)
+public vector<T.Element,4> textureProjGradOffset(Sampler2D<T> sampler, vec4 p, vec2 dPdx, vec2 dPdy, constexpr ivec2 offset)
{
__target_switch
{
@@ -3808,7 +3811,7 @@ public vector<T,4> textureProjGradOffset(Sampler2D<vector<T,N>> sampler, vec4 p,
{
vec4 xyw_ = p.xyww;
return spirv_asm {
- result:$$vector<T,4> = OpImageSampleProjExplicitLod $sampler $xyw_ Grad|ConstOffset $dPdx $dPdy $offset
+ result:$$vector<T.Element,4> = OpImageSampleProjExplicitLod $sampler $xyw_ Grad|ConstOffset $dPdx $dPdy $offset
};
}
default:
@@ -3816,16 +3819,16 @@ public vector<T,4> textureProjGradOffset(Sampler2D<vector<T,N>> sampler, vec4 p,
}
}
-__generic<T:__BuiltinArithmeticType, let N:int>
+__generic<T:ITexelElement>
[ForceInline]
[require(cpp_glsl_hlsl_spirv, texture_sm_4_1)]
-public vector<T,4> textureProjGradOffset(Sampler3D<vector<T,N>> sampler, vec4 p, vec3 dPdx, vec3 dPdy, constexpr ivec3 offset)
+public vector<T.Element,4> textureProjGradOffset(Sampler3D<T> sampler, vec4 p, vec3 dPdx, vec3 dPdy, constexpr ivec3 offset)
{
__target_switch
{
case glsl: __intrinsic_asm "textureProjGradOffset";
case spirv: return spirv_asm {
- result:$$vector<T,4> = OpImageSampleProjExplicitLod $sampler $p Grad|ConstOffset $dPdx $dPdy $offset
+ result:$$vector<T.Element,4> = OpImageSampleProjExplicitLod $sampler $p Grad|ConstOffset $dPdx $dPdy $offset
};
default:
return textureGradOffset(sampler, p.xyz / p.w, dPdx, dPdy, offset);
@@ -3880,11 +3883,11 @@ public float textureProjGradOffset(sampler2DShadow sampler, vec4 p, vec2 dPdx, v
// textureGather
// -------------------
-__generic<T:__BuiltinArithmeticType, let N:int, Shape:__ITextureShape, let isArray:int, let sampleCount:int, let format:int>
+__generic<T:ITexelElement, Shape:__ITextureShape, let isArray:int, let sampleCount:int, let format:int>
[ForceInline]
[require(glsl_hlsl_spirv, texture_gather)]
-public vector<T,4> textureGather(_Texture<
- vector<T,N>,
+public vector<T.Element,4> textureGather(_Texture<
+ T,
Shape,
isArray,
0, // isMS
@@ -3926,11 +3929,11 @@ public vec4 textureGather(_Texture<
// textureGatherOffset
// -------------------
-__generic<T:__BuiltinArithmeticType, let N:int, let isArray:int, let sampleCount:int, let format:int>
+__generic<T:ITexelElement, let isArray:int, let sampleCount:int, let format:int>
[ForceInline]
[require(glsl_hlsl_spirv, texture_gather)]
-public vector<T,4> textureGatherOffset(_Texture<
- vector<T,N>,
+public vector<T.Element,4> textureGatherOffset(_Texture<
+ T,
__Shape2D,
isArray,
0, // isMS
@@ -3972,11 +3975,11 @@ public vec4 textureGatherOffset(_Texture<
// textureGatherOffsets
// -------------------
-__generic<T:__BuiltinArithmeticType, let N:int, let isArray:int, let sampleCount:int, let format:int>
+__generic<T:ITexelElement, let isArray:int, let sampleCount:int, let format:int>
[ForceInline]
[require(glsl_hlsl_spirv, texture_gather)]
-public vector<T,4> textureGatherOffsets(_Texture<
- vector<T,N>,
+public vector<T.Element,4> textureGatherOffsets(_Texture<
+ T,
__Shape2D,
isArray,
0, // isMS