yum-mirror/glslang

git clone https://git.yummers.dev/yum-mirror/glslang

Wint3rNightAdd integer sampler overloads of the texture footprint functions852c34d3

main
2.9 KiB55 linesraw
1#version 450
2
3#extension GL_NV_shader_texture_footprint : require
4
5layout (location = 0) in vec2 P2;
6layout (location = 2) in vec3 P3;
7layout (location = 3) in flat int granularity;
8layout (location = 4) in float lodClamp;
9layout (location = 5) in float lod;
10layout (location = 6) in vec2 dx;
11layout (location = 8) in vec2 dy;
12layout (location = 9) in float bias;
13
14layout (binding = 0) uniform isampler2D isample2D;
15layout (binding = 1) uniform usampler2D usample2D;
16layout (binding = 2) uniform isampler3D isample3D;
17layout (binding = 3) uniform usampler3D usample3D;
18
19layout (location = 0) out uint hits;
20layout (location = 1) out uint lods;
21
22void main()
23{
24    gl_TextureFootprint2DNV fp2D;
25    gl_TextureFootprint3DNV fp3D;
26
27    hits = 0u;
28    hits += uint(textureFootprintNV(isample2D, P2, granularity, true, fp2D));
29    hits += uint(textureFootprintNV(usample2D, P2, granularity, true, fp2D));
30    hits += uint(textureFootprintNV(isample2D, P2, granularity, true, fp2D, bias));
31    hits += uint(textureFootprintNV(usample2D, P2, granularity, true, fp2D, bias));
32    hits += uint(textureFootprintClampNV(isample2D, P2, lodClamp, granularity, true, fp2D));
33    hits += uint(textureFootprintClampNV(usample2D, P2, lodClamp, granularity, true, fp2D));
34    hits += uint(textureFootprintClampNV(isample2D, P2, lodClamp, granularity, true, fp2D, bias));
35    hits += uint(textureFootprintClampNV(usample2D, P2, lodClamp, granularity, true, fp2D, bias));
36    hits += uint(textureFootprintLodNV(isample2D, P2, lod, granularity, true, fp2D));
37    hits += uint(textureFootprintLodNV(usample2D, P2, lod, granularity, true, fp2D));
38    hits += uint(textureFootprintGradNV(isample2D, P2, dx, dy, granularity, true, fp2D));
39    hits += uint(textureFootprintGradNV(usample2D, P2, dx, dy, granularity, true, fp2D));
40    hits += uint(textureFootprintGradClampNV(isample2D, P2, dx, dy, lodClamp, granularity, true, fp2D));
41    hits += uint(textureFootprintGradClampNV(usample2D, P2, dx, dy, lodClamp, granularity, true, fp2D));
42
43    hits += uint(textureFootprintNV(isample3D, P3, granularity, true, fp3D));
44    hits += uint(textureFootprintNV(usample3D, P3, granularity, true, fp3D));
45    hits += uint(textureFootprintNV(isample3D, P3, granularity, true, fp3D, bias));
46    hits += uint(textureFootprintNV(usample3D, P3, granularity, true, fp3D, bias));
47    hits += uint(textureFootprintClampNV(isample3D, P3, lodClamp, granularity, true, fp3D));
48    hits += uint(textureFootprintClampNV(usample3D, P3, lodClamp, granularity, true, fp3D));
49    hits += uint(textureFootprintClampNV(isample3D, P3, lodClamp, granularity, true, fp3D, bias));
50    hits += uint(textureFootprintClampNV(usample3D, P3, lodClamp, granularity, true, fp3D, bias));
51    hits += uint(textureFootprintLodNV(isample3D, P3, lod, granularity, true, fp3D));
52    hits += uint(textureFootprintLodNV(usample3D, P3, lod, granularity, true, fp3D));
53
54    lods = fp2D.lod + fp3D.lod;
55}