0003-Add-support-for-SPV_NV_shader_image_footprint
This commit is contained in:
parent
beae2251b7
commit
3a1379667d
13 changed files with 1189 additions and 5 deletions
123
Test/spv.shaderImageFootprint.frag
Normal file
123
Test/spv.shaderImageFootprint.frag
Normal file
|
|
@ -0,0 +1,123 @@
|
|||
#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;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue