Skip to content

Commit abc313a

Browse files
VT simplification 2
1 parent 9ce4b8e commit abc313a

File tree

1 file changed

+8
-20
lines changed

1 file changed

+8
-20
lines changed

include/nbl/builtin/glsl/virtual_texturing/impl_functions.glsl

Lines changed: 8 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -117,31 +117,19 @@ vec4 nbl_glsl_vTextureGrad_impl(in uint formatID, in vec3 virtualUV, in mat2 dOr
117117
int LoD_high = int(LoD);
118118

119119
bool haveToDoTrilinear = false; // have to do trilinear only if doing minification AND larger than 1x1 footprint
120-
int levelInTail = 0;
120+
int levelInTail = originalMaxFullMip!=0u ? 0:1;
121121
int clippedLoD = 0;
122122
if (LoD>0.f) // are we performing minification
123123
{
124-
const bool bbbb = LoD_high>=originalMaxFullMip;
124+
const bool inMipTail = LoD_high>=originalMaxFullMip;
125125
// clip to max representable in VT, originalMaxFullMip is always -1 in case of no miplevel taking at least 1 full page
126-
clippedLoD = bbbb ? (int(max(originalMaxFullMip,1u))-1):LoD_high;
127-
128-
if (bbbb)
129-
{
130-
// if minification is being performaed then get tail position
131-
levelInTail = LoD_high-clippedLoD;
132-
// have to do trilinear only if doing minification AND larger than 1x1 footprint
133-
haveToDoTrilinear = LoD_high-clippedLoD<int(_NBL_VT_IMPL_PAGE_SZ_LOG2);
134-
levelInTail = haveToDoTrilinear ? levelInTail:int(_NBL_VT_IMPL_PAGE_SZ_LOG2);
135-
levelInTail += originalMaxFullMip!=0u ? 0:1;
136-
}
137-
else
138-
{
139-
levelInTail += originalMaxFullMip!=0u ? 0:1;
140-
haveToDoTrilinear = true;
141-
}
126+
const int actualMaxFullMip = int(originalMaxFullMip)-1;
127+
clippedLoD = inMipTail ? max(actualMaxFullMip,0):LoD_high;
128+
129+
haveToDoTrilinear = LoD_high<originalMaxFullMip+_NBL_VT_IMPL_PAGE_SZ_LOG2;
130+
if (inMipTail)
131+
levelInTail = min(LoD_high-actualMaxFullMip,int(_NBL_VT_IMPL_PAGE_SZ_LOG2));
142132
}
143-
else
144-
levelInTail = originalMaxFullMip!=0u ? 0:1;
145133

146134
// get the higher resolution mip-map level
147135
vec3 hiPhysCoord = nbl_glsl_vTexture_helper(formatID,virtualUV,clippedLoD,levelInTail);

0 commit comments

Comments
 (0)