664df22d12
In the past, SPIRV-Cross threw an error in this case because it couldn't work out which swizzle from the auxiliary buffer needs to be passed. Now, we pass the swizzle around with the texture object, like a combined image-sampler and its associated sampler.
91 lines
3.5 KiB
GLSL
91 lines
3.5 KiB
GLSL
#version 450
|
|
|
|
layout(binding = 0) uniform sampler1D tex1d;
|
|
layout(binding = 1) uniform texture2D tex2d;
|
|
layout(binding = 2) uniform sampler3D tex3d;
|
|
layout(binding = 3) uniform textureCube texCube;
|
|
layout(binding = 4) uniform sampler2DArray tex2dArray;
|
|
layout(binding = 5) uniform samplerCubeArray texCubeArray;
|
|
layout(binding = 6) uniform samplerBuffer texBuffer;
|
|
|
|
layout(binding = 7) uniform sampler2DShadow depth2d;
|
|
layout(binding = 8) uniform samplerCubeShadow depthCube;
|
|
layout(binding = 9) uniform texture2DArray depth2dArray;
|
|
layout(binding = 10) uniform samplerCubeArrayShadow depthCubeArray;
|
|
|
|
layout(binding = 11) uniform sampler defaultSampler;
|
|
layout(binding = 12) uniform samplerShadow shadowSampler;
|
|
|
|
layout(location = 0) out vec4 fragColor;
|
|
|
|
vec4 do_samples(sampler1D t1, texture2D t2, sampler3D t3, textureCube tc, sampler2DArray t2a, samplerCubeArray tca, samplerBuffer tb, sampler2DShadow d2, samplerCubeShadow dc, texture2DArray d2a, samplerCubeArrayShadow dca)
|
|
{
|
|
// OpImageSampleImplicitLod
|
|
vec4 c = texture(t1, 0.0);
|
|
c = texture(sampler2D(t2, defaultSampler), vec2(0.0, 0.0));
|
|
c = texture(t3, vec3(0.0, 0.0, 0.0));
|
|
c = texture(samplerCube(tc, defaultSampler), vec3(0.0, 0.0, 0.0));
|
|
c = texture(t2a, vec3(0.0, 0.0, 0.0));
|
|
c = texture(tca, vec4(0.0, 0.0, 0.0, 0.0));
|
|
|
|
// OpImageSampleDrefImplicitLod
|
|
c.r = texture(d2, vec3(0.0, 0.0, 1.0));
|
|
c.r = texture(dc, vec4(0.0, 0.0, 0.0, 1.0));
|
|
c.r = texture(sampler2DArrayShadow(d2a, shadowSampler), vec4(0.0, 0.0, 0.0, 1.0));
|
|
c.r = texture(dca, vec4(0.0, 0.0, 0.0, 0.0), 1.0);
|
|
|
|
// OpImageSampleProjImplicitLod
|
|
c = textureProj(t1, vec2(0.0, 1.0));
|
|
c = textureProj(sampler2D(t2, defaultSampler), vec3(0.0, 0.0, 1.0));
|
|
c = textureProj(t3, vec4(0.0, 0.0, 0.0, 1.0));
|
|
|
|
// OpImageSampleProjDrefImplicitLod
|
|
c.r = textureProj(d2, vec4(0.0, 0.0, 1.0, 1.0));
|
|
|
|
// OpImageSampleExplicitLod
|
|
c = textureLod(t1, 0.0, 0.0);
|
|
c = textureLod(sampler2D(t2, defaultSampler), vec2(0.0, 0.0), 0.0);
|
|
c = textureLod(t3, vec3(0.0, 0.0, 0.0), 0.0);
|
|
c = textureLod(samplerCube(tc, defaultSampler), vec3(0.0, 0.0, 0.0), 0.0);
|
|
c = textureLod(t2a, vec3(0.0, 0.0, 0.0), 0.0);
|
|
c = textureLod(tca, vec4(0.0, 0.0, 0.0, 0.0), 0.0);
|
|
|
|
// OpImageSampleDrefExplicitLod
|
|
c.r = textureLod(d2, vec3(0.0, 0.0, 1.0), 0.0);
|
|
|
|
// OpImageSampleProjExplicitLod
|
|
c = textureProjLod(t1, vec2(0.0, 1.0), 0.0);
|
|
c = textureProjLod(sampler2D(t2, defaultSampler), vec3(0.0, 0.0, 1.0), 0.0);
|
|
c = textureProjLod(t3, vec4(0.0, 0.0, 0.0, 1.0), 0.0);
|
|
|
|
// OpImageSampleProjDrefExplicitLod
|
|
c.r = textureProjLod(d2, vec4(0.0, 0.0, 1.0, 1.0), 0.0);
|
|
|
|
// OpImageFetch
|
|
c = texelFetch(t1, 0, 0);
|
|
c = texelFetch(sampler2D(t2, defaultSampler), ivec2(0, 0), 0);
|
|
c = texelFetch(t3, ivec3(0, 0, 0), 0);
|
|
c = texelFetch(t2a, ivec3(0, 0, 0), 0);
|
|
|
|
// Show that this transformation doesn't apply to Buffer images.
|
|
c = texelFetch(tb, 0);
|
|
|
|
// OpImageGather
|
|
c = textureGather(sampler2D(t2, defaultSampler), vec2(0.0, 0.0), 0);
|
|
c = textureGather(samplerCube(tc, defaultSampler), vec3(0.0, 0.0, 0.0), 1);
|
|
c = textureGather(t2a, vec3(0.0, 0.0, 0.0), 2);
|
|
c = textureGather(tca, vec4(0.0, 0.0, 0.0, 0.0), 3);
|
|
|
|
// OpImageDrefGather
|
|
c = textureGather(d2, vec2(0.0, 0.0), 1.0);
|
|
c = textureGather(dc, vec3(0.0, 0.0, 0.0), 1.0);
|
|
c = textureGather(sampler2DArrayShadow(d2a, shadowSampler), vec3(0.0, 0.0, 0.0), 1.0);
|
|
c = textureGather(dca, vec4(0.0, 0.0, 0.0, 0.0), 1.0);
|
|
return c;
|
|
}
|
|
|
|
void main()
|
|
{
|
|
fragColor = do_samples(tex1d, tex2d, tex3d, texCube, tex2dArray, texCubeArray, texBuffer, depth2d, depthCube, depth2dArray, depthCubeArray);
|
|
}
|