3 #extension GL_NV_shader_texture_footprint : require
6 layout (location = 0) in vec2 P2;
7 layout (location = 2) in vec3 P3;
8 layout (location = 3) in flat int granularity;
9 layout (location = 4) in float lodClamp;
10 layout (location = 5) in float lod;
11 layout (location = 6) in vec2 dx;
12 layout (location = 8) in vec2 dy;
13 layout (location = 9) in float bias;
15 uniform sampler2D sample2D;
16 uniform sampler3D sample3D;
37 gl_TextureFootprint2DNV fp2D;
38 gl_TextureFootprint3DNV fp3D;
40 ret2D = textureFootprintNV(sample2D, P2, granularity, true, fp2D);
41 anchor2D = fp2D.anchor;
42 offset2D = fp2D.offset;
45 granularity2D = fp2D.granularity;
47 ret2D = textureFootprintNV(sample2D, P2, granularity, true, fp2D, bias);
48 anchor2D += fp2D.anchor;
49 offset2D += fp2D.offset;
52 granularity2D += fp2D.granularity;
54 ret2D = textureFootprintClampNV(sample2D, P2, lodClamp, granularity, true, fp2D);
55 anchor2D += fp2D.anchor;
56 offset2D += fp2D.offset;
59 granularity2D += fp2D.granularity;
61 ret2D = textureFootprintClampNV(sample2D, P2, lodClamp, granularity, true, fp2D, bias);
62 anchor2D += fp2D.anchor;
63 offset2D += fp2D.offset;
66 granularity2D += fp2D.granularity;
68 ret2D = textureFootprintLodNV(sample2D, P2, lod, granularity, true, fp2D);
69 anchor2D += fp2D.anchor;
70 offset2D += fp2D.offset;
73 granularity2D += fp2D.granularity;
75 ret2D = textureFootprintGradNV(sample2D, P2, dx, dy, granularity, true, fp2D);
76 anchor2D += fp2D.anchor;
77 offset2D += fp2D.offset;
80 granularity2D += fp2D.granularity;
82 ret2D = textureFootprintGradClampNV(sample2D, P2, dx, dy, lodClamp, granularity, true, fp2D);
83 anchor2D += fp2D.anchor;
84 offset2D += fp2D.offset;
87 granularity2D += fp2D.granularity;
89 ret3D = textureFootprintNV(sample3D, P3, granularity, true, fp3D);
90 anchor3D = fp3D.anchor;
91 offset3D = fp3D.offset;
94 granularity3D = fp3D.granularity;
96 ret3D = textureFootprintNV(sample3D, P3, granularity, true, fp3D, bias);
97 anchor3D += fp3D.anchor;
98 offset3D += fp3D.offset;
101 granularity3D += fp3D.granularity;
103 ret3D = textureFootprintClampNV(sample3D, P3, lodClamp, granularity, true, fp3D);
104 anchor3D += fp3D.anchor;
105 offset3D += fp3D.offset;
108 granularity3D += fp3D.granularity;
110 ret3D = textureFootprintClampNV(sample3D, P3, lodClamp, granularity, true, fp3D, bias);
111 anchor3D += fp3D.anchor;
112 offset3D += fp3D.offset;
115 granularity3D += fp3D.granularity;
117 ret3D = textureFootprintLodNV(sample3D, P3, lod, granularity, true, fp3D);
118 anchor3D += fp3D.anchor;
119 offset3D += fp3D.offset;
122 granularity3D += fp3D.granularity;