You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

123 lines
3.2 KiB

#version 450
#extension GL_NV_shader_texture_footprint : require
layout (location = 0) in vec2 P2;
layout (location = 2) in vec3 P3;
layout (location = 3) in flat int granularity;
layout (location = 4) in float lodClamp;
layout (location = 5) in float lod;
layout (location = 6) in vec2 dx;
layout (location = 8) in vec2 dy;
layout (location = 9) in float bias;
uniform sampler2D sample2D;
uniform sampler3D sample3D;
buffer result2D {
bool ret2D;
uvec2 anchor2D;
uvec2 offset2D;
uvec2 mask2D;
uint lod2D;
uint granularity2D;
};
buffer result3D {
bool ret3D;
uvec3 anchor3D;
uvec3 offset3D;
uvec2 mask3D;
uint lod3D;
uint granularity3D;
};
void main() {
gl_TextureFootprint2DNV fp2D;
gl_TextureFootprint3DNV fp3D;
ret2D = textureFootprintNV(sample2D, P2, granularity, true, fp2D);
anchor2D = fp2D.anchor;
offset2D = fp2D.offset;
mask2D = fp2D.mask;
lod2D = fp2D.lod;
granularity2D = fp2D.granularity;
ret2D = textureFootprintNV(sample2D, P2, granularity, true, fp2D, bias);
anchor2D += fp2D.anchor;
offset2D += fp2D.offset;
mask2D += fp2D.mask;
lod2D += fp2D.lod;
granularity2D += fp2D.granularity;
ret2D = textureFootprintClampNV(sample2D, P2, lodClamp, granularity, true, fp2D);
anchor2D += fp2D.anchor;
offset2D += fp2D.offset;
mask2D += fp2D.mask;
lod2D += fp2D.lod;
granularity2D += fp2D.granularity;
ret2D = textureFootprintClampNV(sample2D, P2, lodClamp, granularity, true, fp2D, bias);
anchor2D += fp2D.anchor;
offset2D += fp2D.offset;
mask2D += fp2D.mask;
lod2D += fp2D.lod;
granularity2D += fp2D.granularity;
ret2D = textureFootprintLodNV(sample2D, P2, lod, granularity, true, fp2D);
anchor2D += fp2D.anchor;
offset2D += fp2D.offset;
mask2D += fp2D.mask;
lod2D += fp2D.lod;
granularity2D += fp2D.granularity;
ret2D = textureFootprintGradNV(sample2D, P2, dx, dy, granularity, true, fp2D);
anchor2D += fp2D.anchor;
offset2D += fp2D.offset;
mask2D += fp2D.mask;
lod2D += fp2D.lod;
granularity2D += fp2D.granularity;
ret2D = textureFootprintGradClampNV(sample2D, P2, dx, dy, lodClamp, granularity, true, fp2D);
anchor2D += fp2D.anchor;
offset2D += fp2D.offset;
mask2D += fp2D.mask;
lod2D += fp2D.lod;
granularity2D += fp2D.granularity;
ret3D = textureFootprintNV(sample3D, P3, granularity, true, fp3D);
anchor3D = fp3D.anchor;
offset3D = fp3D.offset;
mask3D = fp3D.mask;
lod3D = fp3D.lod;
granularity3D = fp3D.granularity;
ret3D = textureFootprintNV(sample3D, P3, granularity, true, fp3D, bias);
anchor3D += fp3D.anchor;
offset3D += fp3D.offset;
mask3D += fp3D.mask;
lod3D += fp3D.lod;
granularity3D += fp3D.granularity;
ret3D = textureFootprintClampNV(sample3D, P3, lodClamp, granularity, true, fp3D);
anchor3D += fp3D.anchor;
offset3D += fp3D.offset;
mask3D += fp3D.mask;
lod3D += fp3D.lod;
granularity3D += fp3D.granularity;
ret3D = textureFootprintClampNV(sample3D, P3, lodClamp, granularity, true, fp3D, bias);
anchor3D += fp3D.anchor;
offset3D += fp3D.offset;
mask3D += fp3D.mask;
lod3D += fp3D.lod;
granularity3D += fp3D.granularity;
ret3D = textureFootprintLodNV(sample3D, P3, lod, granularity, true, fp3D);
anchor3D += fp3D.anchor;
offset3D += fp3D.offset;
mask3D += fp3D.mask;
lod3D += fp3D.lod;
granularity3D += fp3D.granularity;
}