yum-mirror/slang
Making it easier to work with shaders
git clone https://git.yummers.dev/yum-mirror/slang
fc77070fd
master
1#version 450 core 2#extension GL_EXT_texture_shadow_lod : enable 3 4//TEST:SIMPLE(filecheck=CHECK_GLSL): -allow-glsl -stage compute -entry computeMain -target glsl -DCOMPUTE -ignore-capabilities 5//TEST:SIMPLE(filecheck=CHECK_GLSL): -allow-glsl -stage fragment -entry computeMain -target glsl -ignore-capabilities 6//RWStructuredBuffer<float> outputBuffer; 7//layout(location = 0) out vec4 o_color; 8 9buffer MyBlockName 10{ 11 int result; 12} outputBuffer; 13 14uniform sampler1DShadow uniform_sampler1DShadow; 15uniform sampler2DShadow uniform_sampler2DShadow; 16uniform samplerCubeShadow uniform_samplerCubeShadow; 17 18uniform sampler1DArrayShadow uniform_sampler1DArrayShadow; 19uniform sampler2DArrayShadow uniform_sampler2DArrayShadow; 20uniform sampler2DRectShadow uniform_sampler2DRectShadow; 21uniform samplerCubeArrayShadow uniform_samplerCubeArrayShadow; 22 23uniform sampler1D uniform_sampler1D; 24uniform sampler2D uniform_sampler2D; 25uniform sampler2DRect uniform_sampler2DRect; 26uniform sampler3D uniform_sampler3D; 27uniform samplerCube uniform_samplerCube; 28uniform sampler1DArray uniform_sampler1DArray; 29uniform sampler2DArray uniform_sampler2DArray; 30uniform samplerCubeArray uniform_samplerCubeArray; 31uniform samplerBuffer uniform_samplerBuffer; 32 33uniform isampler1D uniform_isampler1D; 34uniform isampler2D uniform_isampler2D; 35uniform isampler2DRect uniform_isampler2DRect; 36uniform isampler3D uniform_isampler3D; 37uniform isamplerCube uniform_isamplerCube; 38uniform isampler1DArray uniform_isampler1DArray; 39uniform isampler2DArray uniform_isampler2DArray; 40uniform isamplerCubeArray uniform_isamplerCubeArray; 41uniform isamplerBuffer uniform_isamplerBuffer; 42 43uniform usampler1D uniform_usampler1D; 44uniform usampler2D uniform_usampler2D; 45uniform usampler2DRect uniform_usampler2DRect; 46uniform usampler3D uniform_usampler3D; 47uniform usamplerCube uniform_usamplerCube; 48uniform usampler1DArray uniform_usampler1DArray; 49uniform usampler2DArray uniform_usampler2DArray; 50uniform usamplerCubeArray uniform_usamplerCubeArray; 51uniform usamplerBuffer uniform_usamplerBuffer; 52 53__generic<T : ITexelElement> 54bool textureFuncs( Sampler1D<T> gsampler1D 55 , Sampler2D<T> gsampler2D 56 , Sampler2DRect<T> gsampler2DRect 57 , Sampler3D<T> gsampler3D 58 , SamplerCube<T> gsamplerCube 59 , Sampler1DArray<T> gsampler1DArray 60 , Sampler2DArray<T> gsampler2DArray 61 , SamplerCubeArray<T> gsamplerCubeArray 62 , SamplerBuffer<T> gsamplerBuffer 63) 64{ 65 typealias gvec4 = vector<T.Element,4>; 66 67 constexpr ivec2 ivec2_0 = ivec2(0); 68 69 return true 70 // 8.9.1. Texture Query Functions 71 && int(0) == textureSize(gsampler1D, int(0)) 72 && ivec2(0) == textureSize(gsampler2D, int(0)) 73 && ivec3(0) == textureSize(gsampler3D, int(0)) 74 && ivec2(0) == textureSize(gsamplerCube, int(0)) 75 && int(0) == textureSize(uniform_sampler1DShadow, int(0)) 76 && ivec2(0) == textureSize(uniform_sampler2DShadow, int(0)) 77 && ivec2(0) == textureSize(uniform_samplerCubeShadow, int(0)) 78 && ivec3(0) == textureSize(gsamplerCubeArray, int(0)) 79 && ivec3(0) == textureSize(uniform_samplerCubeArrayShadow, int(0)) 80 && ivec2(0) == textureSize(gsampler2DRect) 81 && ivec2(0) == textureSize(uniform_sampler2DRectShadow) 82 && ivec2(0) == textureSize(gsampler1DArray, int(0)) 83 && ivec2(0) == textureSize(uniform_sampler1DArrayShadow, int(0)) 84 && ivec3(0) == textureSize(gsampler2DArray, int(0)) 85 && ivec3(0) == textureSize(uniform_sampler2DArrayShadow, int(0)) 86 && int(0) == textureSize(gsamplerBuffer) 87 && vec2(0) == textureQueryLod(gsampler1D, float(0)) 88 && vec2(0) == textureQueryLod(gsampler2D, vec2(0)) 89 && vec2(0) == textureQueryLod(gsampler3D, vec3(0)) 90 && vec2(0) == textureQueryLod(gsamplerCube, vec3(0)) 91 && vec2(0) == textureQueryLod(gsampler1DArray, float(0)) 92 && vec2(0) == textureQueryLod(gsampler2DArray, vec2(0)) 93 && vec2(0) == textureQueryLod(gsamplerCubeArray, vec3(0)) 94 && vec2(0) == textureQueryLod(uniform_sampler1DShadow, float(0)) 95 && vec2(0) == textureQueryLod(uniform_sampler2DShadow, vec2(0)) 96 && vec2(0) == textureQueryLod(uniform_samplerCubeShadow, vec3(0)) 97 && vec2(0) == textureQueryLod(uniform_sampler1DArrayShadow, float(0)) 98 && vec2(0) == textureQueryLod(uniform_sampler2DArrayShadow, vec2(0)) 99 && vec2(0) == textureQueryLod(uniform_samplerCubeArrayShadow, vec3(0)) 100 && int(0) == textureQueryLevels(gsampler1D) 101 && int(0) == textureQueryLevels(gsampler2D) 102 && int(0) == textureQueryLevels(gsampler3D) 103 && int(0) == textureQueryLevels(gsamplerCube) 104 && int(0) == textureQueryLevels(gsampler1DArray) 105 && int(0) == textureQueryLevels(gsampler2DArray) 106 && int(0) == textureQueryLevels(gsamplerCubeArray) 107 && int(0) == textureQueryLevels(uniform_sampler1DShadow) 108 && int(0) == textureQueryLevels(uniform_sampler2DShadow) 109 && int(0) == textureQueryLevels(uniform_samplerCubeShadow) 110 && int(0) == textureQueryLevels(uniform_sampler1DArrayShadow) 111 && int(0) == textureQueryLevels(uniform_sampler2DArrayShadow) 112 && int(0) == textureQueryLevels(uniform_samplerCubeArrayShadow) 113 // 8.9.2. Texel Lookup Functions 114 && gvec4(T.Element(0)) == texture(gsampler1D, float(0)) 115 && gvec4(T.Element(0)) == texture(gsampler1D, float(0), float(0)) 116 && gvec4(T.Element(0)) == texture(gsampler2D, vec2(0)) 117 && gvec4(T.Element(0)) == texture(gsampler2D, vec2(0), float(0)) 118 && gvec4(T.Element(0)) == texture(gsampler3D, vec3(0)) 119 && gvec4(T.Element(0)) == texture(gsampler3D, vec3(0), float(0)) 120 && gvec4(T.Element(0)) == texture(gsamplerCube, vec3(0) ) 121 && gvec4(T.Element(0)) == texture(gsamplerCube, vec3(0), float(0)) 122 && float(0) == texture(uniform_sampler1DShadow, vec3(0)) 123 && float(0) == texture(uniform_sampler1DShadow, vec3(0), float(0)) 124 && float(0) == texture(uniform_sampler2DShadow, vec3(0)) 125 && float(0) == texture(uniform_sampler2DShadow, vec3(0), float(0)) 126 && float(0) == texture(uniform_samplerCubeShadow, vec4(0)) 127 && float(0) == texture(uniform_samplerCubeShadow, vec4(0), float(0)) 128 && gvec4(T.Element(0)) == texture(gsampler2DArray, vec3(0)) 129 && gvec4(T.Element(0)) == texture(gsampler2DArray, vec3(0), float(0)) 130 && gvec4(T.Element(0)) == texture(gsamplerCubeArray, vec4(0) ) 131 && gvec4(T.Element(0)) == texture(gsamplerCubeArray, vec4(0), float(0)) 132 && gvec4(T.Element(0)) == texture(gsampler1DArray, vec2(0)) 133 && gvec4(T.Element(0)) == texture(gsampler1DArray, vec2(0), float(0)) 134 && float(0) == texture(uniform_sampler1DArrayShadow, vec3(0)) 135 && float(0) == texture(uniform_sampler1DArrayShadow, vec3(0), float(0)) 136 && float(0) == texture(uniform_sampler2DArrayShadow, vec4(0)) 137 && gvec4(T.Element(0)) == texture(gsampler2DRect, vec2(0)) 138 && float(0) == texture(uniform_sampler2DRectShadow, vec3(0)) 139 && float(0) == texture(uniform_samplerCubeArrayShadow, vec4(0), float(0)) 140 && gvec4(T.Element(0)) == textureProj(gsampler1D, vec2(0)) 141 && gvec4(T.Element(0)) == textureProj(gsampler1D, vec2(0), float(0)) 142 && gvec4(T.Element(0)) == textureProj(gsampler1D, vec4(0)) 143 && gvec4(T.Element(0)) == textureProj(gsampler1D, vec4(0), float(0)) 144 && gvec4(T.Element(0)) == textureProj(gsampler2D, vec3(0)) 145 && gvec4(T.Element(0)) == textureProj(gsampler2D, vec3(0), float(0)) 146 && gvec4(T.Element(0)) == textureProj(gsampler2D, vec4(0)) 147 && gvec4(T.Element(0)) == textureProj(gsampler2D, vec4(0), float(0)) 148 && gvec4(T.Element(0)) == textureProj(gsampler3D, vec4(0)) 149 && gvec4(T.Element(0)) == textureProj(gsampler3D, vec4(0), float(0)) 150 && float(0) == textureProj(uniform_sampler1DShadow, vec4(0)) 151 && float(0) == textureProj(uniform_sampler1DShadow, vec4(0), float(0)) 152 && float(0) == textureProj(uniform_sampler2DShadow, vec4(0)) 153 && float(0) == textureProj(uniform_sampler2DShadow, vec4(0), float(0)) 154 && gvec4(T.Element(0)) == textureProj(gsampler2DRect, vec3(0)) 155 && gvec4(T.Element(0)) == textureProj(gsampler2DRect, vec4(0)) 156 && float(0) == textureProj(uniform_sampler2DRectShadow, vec4(0)) 157 && gvec4(T.Element(0)) == textureLod(gsampler1D, float(0), float(0)) 158 && gvec4(T.Element(0)) == textureLod(gsampler2D, vec2(0), float(0)) 159 && gvec4(T.Element(0)) == textureLod(gsampler3D, vec3(0), float(0)) 160 && gvec4(T.Element(0)) == textureLod(gsamplerCube, vec3(0), float(0)) 161 && float(0) == textureLod(uniform_sampler2DShadow, vec3(0), float(0)) 162 && float(0) == textureLod(uniform_sampler1DShadow, vec3(0), float(0)) 163 && gvec4(T.Element(0)) == textureLod(gsampler1DArray, vec2(0), float(0)) 164 && float(0) == textureLod(uniform_sampler1DArrayShadow, vec3(0), float(0)) 165 && gvec4(T.Element(0)) == textureLod(gsampler2DArray, vec3(0), float(0)) 166 && gvec4(T.Element(0)) == textureLod(gsamplerCubeArray, vec4(0), float(0)) 167 && gvec4(T.Element(0)) == textureOffset(gsampler1D, float(0), __LINE__) 168 && gvec4(T.Element(0)) == textureOffset(gsampler1D, float(0), __LINE__, float(0)) 169 && gvec4(T.Element(0)) == textureOffset(gsampler2D, vec2(0), { __LINE__ }) 170 && gvec4(T.Element(0)) == textureOffset(gsampler2D, vec2(0), { __LINE__ }, float(0)) 171 && gvec4(T.Element(0)) == textureOffset(gsampler3D, vec3(0), { __LINE__ }) 172 && gvec4(T.Element(0)) == textureOffset(gsampler3D, vec3(0), { __LINE__ }, float(0)) 173 && float(0) == textureOffset(uniform_sampler2DShadow, vec3(0), { __LINE__ }) 174 && float(0) == textureOffset(uniform_sampler2DShadow, vec3(0), { __LINE__ }, float(0)) 175 && gvec4(T.Element(0)) == textureOffset(gsampler2DRect, vec2(0), { __LINE__ }) 176 && float(0) == textureOffset(uniform_sampler2DRectShadow, vec3(0), { __LINE__ }) 177 && float(0) == textureOffset(uniform_sampler1DShadow, vec3(0), __LINE__) 178 && float(0) == textureOffset(uniform_sampler1DShadow, vec3(0), __LINE__, float(0)) 179 && gvec4(T.Element(0)) == textureOffset(gsampler1DArray, vec2(0), __LINE__) 180 && gvec4(T.Element(0)) == textureOffset(gsampler1DArray, vec2(0), __LINE__, float(0)) 181 && gvec4(T.Element(0)) == textureOffset(gsampler2DArray, vec3(0), { __LINE__ }) 182 && gvec4(T.Element(0)) == textureOffset(gsampler2DArray, vec3(0), { __LINE__ }, float(0)) 183 && float(0) == textureOffset(uniform_sampler1DArrayShadow, vec3(0), __LINE__) 184 && float(0) == textureOffset(uniform_sampler1DArrayShadow, vec3(0), __LINE__, float(0)) 185 && float(0) == textureOffset(uniform_sampler2DArrayShadow, vec4(0), { __LINE__ }) 186 && gvec4(T.Element(0)) == texelFetch(gsampler1D, int(0), int(0)) 187 && gvec4(T.Element(0)) == texelFetch(gsampler2D, ivec2(0), int(0)) 188 && gvec4(T.Element(0)) == texelFetch(gsampler3D, ivec3(0), int(0)) 189 && gvec4(T.Element(0)) == texelFetch(gsampler2DRect, ivec2(0)) 190 && gvec4(T.Element(0)) == texelFetch(gsampler1DArray, ivec2(0), int(0)) 191 && gvec4(T.Element(0)) == texelFetch(gsampler2DArray, ivec3(0), int(0)) 192 && gvec4(T.Element(0)) == texelFetch(gsamplerBuffer, int(0)) 193 && gvec4(T.Element(0)) == texelFetchOffset(gsampler1D, int(0), int(0), __LINE__) 194 && gvec4(T.Element(0)) == texelFetchOffset(gsampler2D, ivec2(0), int(0), { __LINE__ }) 195 && gvec4(T.Element(0)) == texelFetchOffset(gsampler3D, ivec3(0), int(0), { __LINE__ }) 196 && gvec4(T.Element(0)) == texelFetchOffset(gsampler2DRect, ivec2(0), { __LINE__ }) 197 && gvec4(T.Element(0)) == texelFetchOffset(gsampler1DArray, ivec2(0), int(0), __LINE__) 198 && gvec4(T.Element(0)) == texelFetchOffset(gsampler2DArray, ivec3(0), int(0), { __LINE__ }) 199 && gvec4(T.Element(0)) == textureProjOffset(gsampler1D, vec2(0), __LINE__) 200 && gvec4(T.Element(0)) == textureProjOffset(gsampler1D, vec2(0), __LINE__, float(0)) 201 && gvec4(T.Element(0)) == textureProjOffset(gsampler1D, vec4(0), __LINE__) 202 && gvec4(T.Element(0)) == textureProjOffset(gsampler1D, vec4(0), __LINE__,float(0)) 203 && gvec4(T.Element(0)) == textureProjOffset(gsampler2D, vec3(0), { __LINE__ }) 204 && gvec4(T.Element(0)) == textureProjOffset(gsampler2D, vec3(0), { __LINE__ }, float(0)) 205 && gvec4(T.Element(0)) == textureProjOffset(gsampler2D, vec4(0), { __LINE__ }) 206 && gvec4(T.Element(0)) == textureProjOffset(gsampler2D, vec4(0), { __LINE__ }, float(0)) 207 && gvec4(T.Element(0)) == textureProjOffset(gsampler3D, vec4(0), { __LINE__ }) 208 && gvec4(T.Element(0)) == textureProjOffset(gsampler3D, vec4(0), { __LINE__ }, float(0)) 209 && gvec4(T.Element(0)) == textureProjOffset(gsampler2DRect, vec3(0), { __LINE__ }) 210 && gvec4(T.Element(0)) == textureProjOffset(gsampler2DRect, vec4(0), { __LINE__ }) 211 && float(0) == textureProjOffset(uniform_sampler2DRectShadow, vec4(0), { __LINE__ }) 212 && float(0) == textureProjOffset(uniform_sampler1DShadow, vec4(0), __LINE__) 213 && float(0) == textureProjOffset(uniform_sampler1DShadow, vec4(0), __LINE__, float(0)) 214 && float(0) == textureProjOffset(uniform_sampler2DShadow, vec4(0), { __LINE__ }) 215 && float(0) == textureProjOffset(uniform_sampler2DShadow, vec4(0), { __LINE__ }, float(0)) 216 && gvec4(T.Element(0)) == textureLodOffset(gsampler1D, float(0), float(0), __LINE__) 217 && gvec4(T.Element(0)) == textureLodOffset(gsampler2D, vec2(0), float(0), { __LINE__ }) 218 && gvec4(T.Element(0)) == textureLodOffset(gsampler3D, vec3(0), float(0), { __LINE__ }) 219 && float(0) == textureLodOffset(uniform_sampler1DShadow, vec3(0), float(0), __LINE__) 220 && float(1) == textureLodOffset(uniform_sampler2DShadow, vec3(0), float(0), { __LINE__ }) 221 && gvec4(T.Element(0)) == textureLodOffset(gsampler1DArray, vec2(0), float(0), __LINE__) 222 && gvec4(T.Element(0)) == textureLodOffset(gsampler2DArray, vec3(0), float(0), { __LINE__ }) 223 && float(0) == textureLodOffset(uniform_sampler1DArrayShadow, vec3(0), float(0), __LINE__) 224 && gvec4(T.Element(0)) == textureProjLod(gsampler1D, vec2(0), float(0)) 225 && gvec4(T.Element(0)) == textureProjLod(gsampler1D, vec4(0), float(0)) 226 && gvec4(T.Element(0)) == textureProjLod(gsampler2D, vec3(0), float(0)) 227 && gvec4(T.Element(0)) == textureProjLod(gsampler2D, vec4(0), float(0)) 228 && gvec4(T.Element(0)) == textureProjLod(gsampler3D, vec4(0), float(0)) 229 && float(0) == textureProjLod(uniform_sampler1DShadow, vec4(0), float(0)) 230 && float(0) == textureProjLod(uniform_sampler2DShadow, vec4(0), float(0)) 231 && gvec4(T.Element(0)) == textureProjLodOffset(gsampler1D, vec2(0), float(0), __LINE__) 232 && gvec4(T.Element(0)) == textureProjLodOffset(gsampler1D, vec4(0), float(0), __LINE__) 233 && gvec4(T.Element(0)) == textureProjLodOffset(gsampler2D, vec3(0), float(0), { __LINE__ }) 234 && gvec4(T.Element(0)) == textureProjLodOffset(gsampler2D, vec4(0), float(0), { __LINE__ }) 235 && gvec4(T.Element(0)) == textureProjLodOffset(gsampler3D, vec4(0), float(0), { __LINE__ }) 236 && float(0) == textureProjLodOffset(uniform_sampler1DShadow, vec4(0), float(0), __LINE__) 237 && float(0) == textureProjLodOffset(uniform_sampler2DShadow, vec4(0), float(0), { __LINE__ }) 238 && gvec4(T.Element(0)) == textureGrad(gsampler1D, float(0), float(0), float(0)) 239 && gvec4(T.Element(0)) == textureGrad(gsampler2D, vec2(0), vec2(0), vec2(0)) 240 && gvec4(T.Element(0)) == textureGrad(gsampler3D, vec3(0), vec3(0), vec3(0)) 241 && gvec4(T.Element(0)) == textureGrad(gsamplerCube, vec3(0), vec3(0), vec3(0)) 242 && gvec4(T.Element(0)) == textureGrad(gsampler2DRect, vec2(0), vec2(0), vec2(0)) 243 && float(0) == textureGrad(uniform_sampler2DRectShadow, vec3(0), vec2(0), vec2(0)) 244 && float(0) == textureGrad(uniform_sampler1DShadow, vec3(0), float(0), float(0)) 245 && gvec4(T.Element(0)) == textureGrad(gsampler1DArray, vec2(0), float(0), float(0)) 246 && gvec4(T.Element(0)) == textureGrad(gsampler2DArray, vec3(0), vec2(0), vec2(0)) 247 && float(0) == textureGrad(uniform_sampler1DArrayShadow, vec3(0), float(0), float(0)) 248 && float(0) == textureGrad(uniform_sampler2DShadow, vec3(0), vec2(0), vec2(0)) 249 && float(0) == textureGrad(uniform_samplerCubeShadow, vec4(0), vec3(0), vec3(0)) 250 && float(0) == textureGrad(uniform_sampler2DArrayShadow, vec4(0), vec2(0), vec2(0)) 251 && gvec4(T.Element(0)) == textureGrad(gsamplerCubeArray, vec4(0), vec3(0), vec3(0)) 252 && gvec4(T.Element(0)) == textureGradOffset(gsampler1D, float(0), float(0), float(0), __LINE__) 253 && gvec4(T.Element(0)) == textureGradOffset(gsampler2D, vec2(0), vec2(0), vec2(0), { __LINE__ }) 254 && gvec4(T.Element(0)) == textureGradOffset(gsampler3D, vec3(0), vec3(0), vec3(0), { __LINE__ }) 255 && gvec4(T.Element(0)) == textureGradOffset(gsampler2DRect, vec2(0), vec2(0), vec2(0), { __LINE__ }) 256 && float(0) == textureGradOffset(uniform_sampler2DRectShadow, vec3(0), vec2(0), vec2(0), { __LINE__ }) 257 && float(0) == textureGradOffset(uniform_sampler1DShadow, vec3(0), float(0), float(0), __LINE__) 258 && float(0) == textureGradOffset(uniform_sampler2DShadow, vec3(0), vec2(0), vec2(0), { __LINE__ }) 259 && gvec4(T.Element(0)) == textureGradOffset(gsampler2DArray, vec3(0), vec2(0), vec2(0), { __LINE__ }) 260 && gvec4(T.Element(0)) == textureGradOffset(gsampler1DArray, vec2(0), float(0), float(0), __LINE__) 261 && float(0) == textureGradOffset(uniform_sampler1DArrayShadow, vec3(0), float(0), float(0), __LINE__) 262 && float(0) == textureGradOffset(uniform_sampler2DArrayShadow, vec4(0), vec2(0), vec2(0), { __LINE__ }) 263 && gvec4(T.Element(0)) == textureProjGrad(gsampler1D, vec2(0), float(0), float(0)) 264 && gvec4(T.Element(0)) == textureProjGrad(gsampler1D, vec4(0), float(0), float(0)) 265 && gvec4(T.Element(0)) == textureProjGrad(gsampler2D, vec3(0), vec2(0), vec2(0)) 266 && gvec4(T.Element(0)) == textureProjGrad(gsampler2D, vec4(0), vec2(0), vec2(0)) 267 && gvec4(T.Element(0)) == textureProjGrad(gsampler3D, vec4(0), vec3(0), vec3(0)) 268 && gvec4(T.Element(0)) == textureProjGrad(gsampler2DRect, vec3(0), vec2(0), vec2(0)) 269 && gvec4(T.Element(0)) == textureProjGrad(gsampler2DRect, vec4(0), vec2(0), vec2(0)) 270 && float(0) == textureProjGrad(uniform_sampler2DRectShadow, vec4(0), vec2(0), vec2(0)) 271 && float(0) == textureProjGrad(uniform_sampler1DShadow, vec4(0), float(0), float(0)) 272 && float(0) == textureProjGrad(uniform_sampler2DShadow, vec4(0), vec2(0), vec2(0)) 273 && gvec4(T.Element(0)) == textureProjGradOffset(gsampler1D, vec2(0), float(0), float(0), __LINE__) 274 && gvec4(T.Element(0)) == textureProjGradOffset(gsampler1D, vec4(0), float(0), float(0), __LINE__) 275 && gvec4(T.Element(0)) == textureProjGradOffset(gsampler2D, vec3(0), vec2(0), vec2(0), { __LINE__ }) 276 && gvec4(T.Element(0)) == textureProjGradOffset(gsampler2D, vec4(0), vec2(0), vec2(0), { __LINE__ }) 277 && gvec4(T.Element(0)) == textureProjGradOffset(gsampler3D, vec4(0), vec3(0), vec3(0), { __LINE__ }) 278 && gvec4(T.Element(0)) == textureProjGradOffset(gsampler2DRect, vec3(0), vec2(0), vec2(0), { __LINE__ }) 279 && gvec4(T.Element(0)) == textureProjGradOffset(gsampler2DRect, vec4(0), vec2(0), vec2(0), { __LINE__ }) 280 && float(0) == textureProjGradOffset(uniform_sampler2DRectShadow, vec4(0), vec2(0), vec2(0), { __LINE__ }) 281 && float(0) == textureProjGradOffset(uniform_sampler1DShadow, vec4(0), float(0), float(0), __LINE__) 282 && float(0) == textureProjGradOffset(uniform_sampler2DShadow, vec4(0), vec2(0), vec2(0), { __LINE__ }) 283 284 // 8.9.4. Texture Gather Functions 285 && gvec4(T.Element(0)) == textureGather(gsampler2D, vec2(0)) 286 && gvec4(T.Element(0)) == textureGather(gsampler2D, vec2(0), int(0)) 287 && gvec4(T.Element(0)) == textureGather(gsampler2DArray, vec3(0)) 288 && gvec4(T.Element(0)) == textureGather(gsampler2DArray, vec3(0), int(0)) 289 && gvec4(T.Element(0)) == textureGather(gsamplerCube, vec3(0)) 290 && gvec4(T.Element(0)) == textureGather(gsamplerCube, vec3(0), int(0)) 291 && gvec4(T.Element(0)) == textureGather(gsamplerCubeArray, vec4(0)) 292 && gvec4(T.Element(0)) == textureGather(gsamplerCubeArray, vec4(0), int(0)) 293 && gvec4(T.Element(0)) == textureGather(gsampler2DRect, vec2(0)) 294 && gvec4(T.Element(0)) == textureGather(gsampler2DRect, vec2(0), int(0)) 295 && vec4(0) == textureGather(uniform_sampler2DShadow, vec2(0), float(0)) 296 && vec4(0) == textureGather(uniform_sampler2DArrayShadow, vec3(0), float(0)) 297 && vec4(0) == textureGather(uniform_samplerCubeShadow, vec3(0), float(0)) 298 && vec4(0) == textureGather(uniform_samplerCubeArrayShadow, vec4(0), float(0)) 299 && vec4(0) == textureGather(uniform_sampler2DRectShadow, vec2(0), float(0)) 300 && gvec4(T.Element(0)) == textureGatherOffset(gsampler2D, vec2(0), { __LINE__ }) 301 && gvec4(T.Element(0)) == textureGatherOffset(gsampler2D, vec2(0), { __LINE__ }, int(0)) 302 && gvec4(T.Element(0)) == textureGatherOffset(gsampler2DArray, vec3(0), { __LINE__ }) 303 && gvec4(T.Element(0)) == textureGatherOffset(gsampler2DArray, vec3(0), { __LINE__ }, int(0)) 304 && vec4(0) == textureGatherOffset(uniform_sampler2DShadow, vec2(0), float(0), { __LINE__ }) 305 && vec4(0) == textureGatherOffset(uniform_sampler2DArrayShadow, vec3(0), float(0), { __LINE__ }) 306 && gvec4(T.Element(0)) == textureGatherOffset(gsampler2DRect, vec2(0), { __LINE__ }) 307 && gvec4(T.Element(0)) == textureGatherOffset(gsampler2DRect, vec2(0), { __LINE__ }, int(0)) 308 && vec4(0) == textureGatherOffset(uniform_sampler2DRectShadow, vec2(0), float(0), { __LINE__ }) 309 && gvec4(T.Element(0)) == textureGatherOffsets(gsampler2D, vec2(0), { __LINE__ }) 310 && gvec4(T.Element(0)) == textureGatherOffsets(gsampler2D, vec2(0), { __LINE__ }, int(0)) 311 && gvec4(T.Element(0)) == textureGatherOffsets(gsampler2DArray, vec3(0), { __LINE__ }) 312 && gvec4(T.Element(0)) == textureGatherOffsets(gsampler2DArray, vec3(0), { __LINE__ }, int(0)) 313 && vec4(0) == textureGatherOffsets(uniform_sampler2DShadow, vec2(0), float(0), { __LINE__ }) 314 && vec4(0) == textureGatherOffsets(uniform_sampler2DArrayShadow, vec3(0), float(0), { __LINE__ }) 315 && gvec4(T.Element(0)) == textureGatherOffsets(gsampler2DRect, vec2(0), { __LINE__ }) 316 && gvec4(T.Element(0)) == textureGatherOffsets(gsampler2DRect, vec2(0), { __LINE__ }, int(0)) 317 && vec4(0) == textureGatherOffsets(uniform_sampler2DRectShadow, vec2(0), float(0), { __LINE__ }) 318 319 // 8.9.5. Compatibility Profile Texture Functions 320 && vec4(0) == texture1D(uniform_sampler1D, float(0)) 321 && vec4(0) == texture1D(uniform_sampler1D, float(0), float(0)) 322 && vec4(0) == texture1DProj(uniform_sampler1D, vec2(0)) 323 && vec4(0) == texture1DProj(uniform_sampler1D, vec2(0), float(0)) 324 && vec4(0) == texture1DProj(uniform_sampler1D, vec4(0)) 325 && vec4(0) == texture1DProj(uniform_sampler1D, vec4(0), float(0)) 326 && vec4(0) == texture1DLod(uniform_sampler1D, float(0), float(0)) 327 && vec4(0) == texture1DProjLod(uniform_sampler1D, vec2(0), float(0)) 328 && vec4(0) == texture1DProjLod(uniform_sampler1D, vec4(0), float(0)) 329 && vec4(0) == texture2D(uniform_sampler2D, vec2(0)) 330 && vec4(0) == texture2D(uniform_sampler2D, vec2(0), float(0)) 331 && vec4(0) == texture2DProj(uniform_sampler2D, vec3(0)) 332 && vec4(0) == texture2DProj(uniform_sampler2D, vec3(0), float(0)) 333 && vec4(0) == texture2DProj(uniform_sampler2D, vec4(0)) 334 && vec4(0) == texture2DProj(uniform_sampler2D, vec4(0), float(0)) 335 && vec4(0) == texture2DLod(uniform_sampler2D, vec2(0), float(0)) 336 && vec4(0) == texture2DProjLod(uniform_sampler2D, vec3(0), float(0)) 337 && vec4(0) == texture2DProjLod(uniform_sampler2D, vec4(0), float(0)) 338 && vec4(0) == texture3D(uniform_sampler3D, vec3(0)) 339 && vec4(0) == texture3D(uniform_sampler3D, vec3(0), float(0)) 340 && vec4(0) == texture3DProj(uniform_sampler3D, vec4(0)) 341 && vec4(0) == texture3DProj(uniform_sampler3D, vec4(0), float(0)) 342 && vec4(0) == texture3DLod(uniform_sampler3D, vec3(0), float(0)) 343 && vec4(0) == texture3DProjLod(uniform_sampler3D, vec4(0), float(0)) 344 && vec4(0) == textureCube(uniform_samplerCube, vec3(0)) 345 && vec4(0) == textureCube(uniform_samplerCube, vec3(0), float(0)) 346 && vec4(0) == textureCubeLod(uniform_samplerCube, vec3(0), float(0)) 347 && vec4(0) == shadow1D(uniform_sampler1DShadow, vec3(0)) 348 && vec4(0) == shadow1D(uniform_sampler1DShadow, vec3(0), float(0)) 349 && vec4(0) == shadow2D(uniform_sampler2DShadow, vec3(0)) 350 && vec4(0) == shadow2D(uniform_sampler2DShadow, vec3(0), float(0)) 351 && vec4(0) == shadow1DProj(uniform_sampler1DShadow, vec4(0)) 352 && vec4(0) == shadow1DProj(uniform_sampler1DShadow, vec4(0), float(0)) 353 && vec4(0) == shadow2DProj(uniform_sampler2DShadow, vec4(0)) 354 && vec4(0) == shadow2DProj(uniform_sampler2DShadow, vec4(0), float(0)) 355 && vec4(0) == shadow1DLod(uniform_sampler1DShadow, vec3(0), float(0)) 356 && vec4(0) == shadow2DLod(uniform_sampler2DShadow, vec3(0), float(0)) 357 && vec4(0) == shadow1DProjLod(uniform_sampler1DShadow, vec4(0), float(0)) 358 && vec4(0) == shadow2DProjLod(uniform_sampler2DShadow, vec4(0), float(0)) 359 ; 360} 361 362__generic<T : ITexelElement> 363bool itextureFuncs(Sampler1D<T> gsampler1D 364 , Sampler2D<T> gsampler2D 365 , Sampler2DRect<T> gsampler2DRect 366 , Sampler3D<T> gsampler3D 367 , SamplerCube<T> gsamplerCube 368 , Sampler1DArray<T> gsampler1DArray 369 , Sampler2DArray<T> gsampler2DArray 370 , SamplerCubeArray<T> gsamplerCubeArray 371 , SamplerBuffer<T> gsamplerBuffer 372) 373{ 374 typealias gvec4 = vector<T.Element, 4>; 375 376 constexpr ivec2 ivec2_0 = ivec2(0); 377 378 return true 379 // 8.9.1. Texture Query Functions 380 && int(0) == textureSize(gsampler1D, int(0)) 381 && ivec2(0) == textureSize(gsampler2D, int(0)) 382 && ivec3(0) == textureSize(gsampler3D, int(0)) 383 && ivec2(0) == textureSize(gsamplerCube, int(0)) 384 && int(0) == textureSize(uniform_sampler1DShadow, int(0)) 385 && ivec2(0) == textureSize(uniform_sampler2DShadow, int(0)) 386 && ivec2(0) == textureSize(uniform_samplerCubeShadow, int(0)) 387 && ivec3(0) == textureSize(gsamplerCubeArray, int(0)) 388 && ivec3(0) == textureSize(uniform_samplerCubeArrayShadow, int(0)) 389 && ivec2(0) == textureSize(gsampler2DRect) 390 && ivec2(0) == textureSize(uniform_sampler2DRectShadow) 391 && ivec2(0) == textureSize(gsampler1DArray, int(0)) 392 && ivec2(0) == textureSize(uniform_sampler1DArrayShadow, int(0)) 393 && ivec3(0) == textureSize(gsampler2DArray, int(0)) 394 && ivec3(0) == textureSize(uniform_sampler2DArrayShadow, int(0)) 395 && int(0) == textureSize(gsamplerBuffer) 396 397 && gvec4(T.Element(0)) == texelFetch(gsampler1D, int(0), int(0)) 398 && gvec4(T.Element(0)) == texelFetch(gsampler2D, ivec2(0), int(0)) 399 && gvec4(T.Element(0)) == texelFetch(gsampler3D, ivec3(0), int(0)) 400 && gvec4(T.Element(0)) == texelFetch(gsampler2DRect, ivec2(0)) 401 && gvec4(T.Element(0)) == texelFetch(gsampler1DArray, ivec2(0), int(0)) 402 && gvec4(T.Element(0)) == texelFetch(gsampler2DArray, ivec3(0), int(0)) 403 && gvec4(T.Element(0)) == texelFetch(gsamplerBuffer, int(0)) 404 405 && gvec4(T.Element(0)) == texelFetchOffset(gsampler1D, int(0), int(0), __LINE__) 406 && gvec4(T.Element(0)) == texelFetchOffset(gsampler2D, ivec2(0), int(0), { __LINE__ }) 407 && gvec4(T.Element(0)) == texelFetchOffset(gsampler3D, ivec3(0), int(0), { __LINE__ }) 408 && gvec4(T.Element(0)) == texelFetchOffset(gsampler2DRect, ivec2(0), { __LINE__ }) 409 && gvec4(T.Element(0)) == texelFetchOffset(gsampler1DArray, ivec2(0), int(0), __LINE__) 410 && gvec4(T.Element(0)) == texelFetchOffset(gsampler2DArray, ivec3(0), int(0), { __LINE__ }) 411 // 8.9.4. Texture Gather Functions 412 && gvec4(T.Element(0)) == textureGather(gsampler2D, vec2(0)) 413 && gvec4(T.Element(0)) == textureGather(gsampler2D, vec2(0), int(0)) 414 && gvec4(T.Element(0)) == textureGather(gsampler2DArray, vec3(0)) 415 && gvec4(T.Element(0)) == textureGather(gsampler2DArray, vec3(0), int(0)) 416 && gvec4(T.Element(0)) == textureGather(gsamplerCube, vec3(0)) 417 && gvec4(T.Element(0)) == textureGather(gsamplerCube, vec3(0), int(0)) 418 && gvec4(T.Element(0)) == textureGather(gsamplerCubeArray, vec4(0)) 419 && gvec4(T.Element(0)) == textureGather(gsamplerCubeArray, vec4(0), int(0)) 420 && gvec4(T.Element(0)) == textureGather(gsampler2DRect, vec2(0)) 421 && gvec4(T.Element(0)) == textureGather(gsampler2DRect, vec2(0), int(0)) 422 && vec4(0) == textureGather(uniform_sampler2DShadow, vec2(0), float(0)) 423 && vec4(0) == textureGather(uniform_sampler2DArrayShadow, vec3(0), float(0)) 424 && vec4(0) == textureGather(uniform_samplerCubeShadow, vec3(0), float(0)) 425 && vec4(0) == textureGather(uniform_samplerCubeArrayShadow, vec4(0), float(0)) 426 && vec4(0) == textureGather(uniform_sampler2DRectShadow, vec2(0), float(0)) 427 && gvec4(T.Element(0)) == textureGatherOffset(gsampler2D, vec2(0), { __LINE__ }) 428 && gvec4(T.Element(0)) == textureGatherOffset(gsampler2D, vec2(0), { __LINE__ }, int(0)) 429 && gvec4(T.Element(0)) == textureGatherOffset(gsampler2DArray, vec3(0), { __LINE__ }) 430 && gvec4(T.Element(0)) == textureGatherOffset(gsampler2DArray, vec3(0), { __LINE__ }, int(0)) 431 && vec4(0) == textureGatherOffset(uniform_sampler2DShadow, vec2(0), float(0), { __LINE__ }) 432 && vec4(0) == textureGatherOffset(uniform_sampler2DArrayShadow, vec3(0), float(0), { __LINE__ }) 433 && gvec4(T.Element(0)) == textureGatherOffset(gsampler2DRect, vec2(0), { __LINE__ }) 434 && gvec4(T.Element(0)) == textureGatherOffset(gsampler2DRect, vec2(0), { __LINE__ }, int(0)) 435 && vec4(0) == textureGatherOffset(uniform_sampler2DRectShadow, vec2(0), float(0), { __LINE__ }) 436 && gvec4(T.Element(0)) == textureGatherOffsets(gsampler2D, vec2(0), { __LINE__ }) 437 && gvec4(T.Element(0)) == textureGatherOffsets(gsampler2D, vec2(0), { __LINE__ }, int(0)) 438 && gvec4(T.Element(0)) == textureGatherOffsets(gsampler2DArray, vec3(0), { __LINE__ }) 439 && gvec4(T.Element(0)) == textureGatherOffsets(gsampler2DArray, vec3(0), { __LINE__ }, int(0)) 440 && vec4(0) == textureGatherOffsets(uniform_sampler2DShadow, vec2(0), float(0), { __LINE__ }) 441 && vec4(0) == textureGatherOffsets(uniform_sampler2DArrayShadow, vec3(0), float(0), { __LINE__ }) 442 && gvec4(T.Element(0)) == textureGatherOffsets(gsampler2DRect, vec2(0), { __LINE__ }) 443 && gvec4(T.Element(0)) == textureGatherOffsets(gsampler2DRect, vec2(0), { __LINE__ }, int(0)) 444 && vec4(0) == textureGatherOffsets(uniform_sampler2DRectShadow, vec2(0), float(0), { __LINE__ }) 445 ; 446} 447 448#ifdef COMPUTE 449[numthreads(2, 2, 1)] 450#endif 451void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID) 452{ 453 // CHECK_GLSL: void main( 454 // CHECK_SPV: OpEntryPoint 455 // CHECK_SPV_DIRECT: OpEntryPoint 456 // CHECK_HLSL: void computeMain( 457 // CHECK_CUDA: void computeMain( 458 // CHECK_CPP: void _computeMain( 459 460 outputBuffer.result = true 461 && textureFuncs( 462 uniform_sampler1D 463 , uniform_sampler2D 464 , uniform_sampler2DRect 465 , uniform_sampler3D 466 , uniform_samplerCube 467 , uniform_sampler1DArray 468 , uniform_sampler2DArray 469 , uniform_samplerCubeArray 470 , uniform_samplerBuffer 471 ) 472 && itextureFuncs( 473 uniform_isampler1D 474 , uniform_isampler2D 475 , uniform_isampler2DRect 476 , uniform_isampler3D 477 , uniform_isamplerCube 478 , uniform_isampler1DArray 479 , uniform_isampler2DArray 480 , uniform_isamplerCubeArray 481 , uniform_isamplerBuffer 482 ) 483 && itextureFuncs( 484 uniform_usampler1D 485 , uniform_usampler2D 486 , uniform_usampler2DRect 487 , uniform_usampler3D 488 , uniform_usamplerCube 489 , uniform_usampler1DArray 490 , uniform_usampler2DArray 491 , uniform_usamplerCubeArray 492 , uniform_usamplerBuffer 493 ); 494 495 //outputBuffer[0] = float(r); 496 //o_color[0] = float(r); 497} 498