blob: 35bd035aadf920f716068ecf468e33ab657d5108 [file] [log] [blame]
Rex Xu225e0fc2016-11-17 17:47:59 +08001#version 450 core
2
3#extension GL_ARB_sparse_texture2: enable
4#extension GL_AMD_texture_gather_bias_lod: enable
5
6uniform sampler2D s2D;
7uniform sampler2DArray s2DArray;
8uniform samplerCube sCube;
9uniform samplerCubeArray sCubeArray;
10
11in vec2 c2;
12in vec3 c3;
13in vec4 c4;
14
15in float lod;
16in float bias;
17
18out vec4 fragColor;
19
20void main()
21{
22 vec4 texel = vec4(0.0);
23 vec4 result = vec4(0.0);
24
25 const ivec2 offsets[4] = { ivec2(0, 0), ivec2(0, 1), ivec2(1, 0), ivec2(1, 1) };
26
27 texel += textureGather(s2D, c2, 0, bias);
28 texel += textureGather(s2DArray, c3, 1, bias);
29 texel += textureGather(sCube, c3, 2, bias);
30 texel += textureGather(sCubeArray, c4, 3, bias);
31
32 texel += textureGatherOffset(s2D, c2, offsets[0], 0, bias);
33 texel += textureGatherOffset(s2DArray, c3, offsets[1], 1, bias);
34
35 texel += textureGatherOffsets(s2D, c2, offsets, 0, bias);
36 texel += textureGatherOffsets(s2DArray, c3, offsets, 1, bias);
37
38 sparseTextureGatherARB(s2D, c2, result, 0, bias);
39 texel += result;
40 sparseTextureGatherARB(s2DArray, c3, result, 1, bias);
41 texel += result;
42 sparseTextureGatherARB(sCube, c3, result, 2, bias);
43 texel += result;
44 sparseTextureGatherARB(sCubeArray, c4, result, 2, bias);
45 texel += result;
46
47 sparseTextureGatherOffsetARB(s2D, c2, offsets[0], result, 0, bias);
48 texel += result;
49 sparseTextureGatherOffsetARB(s2DArray, c3, offsets[1], result, 1, bias);
50 texel += result;
51
52 sparseTextureGatherOffsetsARB(s2D, c2, offsets, result, 0, bias);
53 texel += result;
54 sparseTextureGatherOffsetsARB(s2DArray, c3, offsets, result, 1, bias);
55 texel += result;
56
57 texel += textureGatherLodAMD(s2D, c2, lod);
58 texel += textureGatherLodAMD(s2DArray, c3, lod, 1);
59 texel += textureGatherLodAMD(sCube, c3, lod, 2);
60 texel += textureGatherLodAMD(sCubeArray, c4, lod, 3);
61
62 texel += textureGatherLodOffsetAMD(s2D, c2, lod, offsets[0]);
63 texel += textureGatherLodOffsetAMD(s2DArray, c3, lod, offsets[1], 1);
64
65 texel += textureGatherLodOffsetsAMD(s2D, c2, lod, offsets);
66 texel += textureGatherLodOffsetsAMD(s2DArray, c3, lod, offsets, 1);
67
68 sparseTextureGatherLodAMD(s2D, c2, lod, result);
69 texel += result;
70 sparseTextureGatherLodAMD(s2DArray, c3, lod, result, 1);
71 texel += result;
72 sparseTextureGatherLodAMD(sCube, c3, lod, result, 2);
73 texel += result;
74 sparseTextureGatherLodAMD(sCubeArray, c4, lod, result, 2);
75 texel += result;
76
77 sparseTextureGatherLodOffsetAMD(s2D, c2, lod, offsets[0], result);
78 texel += result;
79 sparseTextureGatherLodOffsetAMD(s2DArray, c3, lod, offsets[1], result, 1);
80 texel += result;
81
82 sparseTextureGatherLodOffsetsAMD(s2D, c2, lod, offsets, result);
83 texel += result;
84 sparseTextureGatherLodOffsetsAMD(s2DArray, c3, lod, offsets, result, 1);
85 texel += result;
86
87 fragColor = texel;
88}