Skip to content

Commit d0edd2b

Browse files
This is why its so important to properly namespace mangle all the GLSL global variables, preprocessor defines and function names @Crisspl
1 parent bec4ca8 commit d0edd2b

File tree

3 files changed

+22
-12
lines changed

3 files changed

+22
-12
lines changed
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,20 @@
11
#ifndef _COMMON_H_INCLUDED_
22
#define _COMMON_H_INCLUDED_
33

4+
5+
#define PAGE_SZ_LOG2 7
6+
#define PAGE_PADDING 8
7+
8+
#define _NBL_VT_PAGE_TABLE_BINDING 0
9+
#define _NBL_VT_FLOAT_VIEWS_BINDING 1
10+
11+
412
#define USED_ATTRIBUTES 3
513
#define MAX_TRIANGLES_IN_BATCH 1024
614

15+
716
#define SHADING_WG_SIZE_X 16
817
#define SHADING_WG_SIZE_Y 16
918

19+
1020
#endif

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

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@ uint nbl_glsl_unpackMaxMipInVT(in uvec2 texData)
3232
}
3333
vec3 nbl_glsl_unpackVirtualUV(in uvec2 texData)
3434
{
35-
// assert that PAGE_SZ_LOG2<8 , or change the line to uvec3(texData.yy<<uvec2(PAGE_SZ_LOG2,PAGE_SZ_LOG2-8u),texData.y>>16u)
36-
uvec3 unnormCoords = uvec3(texData.y << PAGE_SZ_LOG2, texData.yy >> uvec2(8u - PAGE_SZ_LOG2, 16u))& uvec3(uvec2(0xffu) << PAGE_SZ_LOG2, 0xffu);
35+
// assert that _NBL_VT_IMPL_PAGE_SZ_LOG2<8 , or change the line to uvec3(texData.yy<<uvec2(_NBL_VT_IMPL_PAGE_SZ_LOG2,_NBL_VT_IMPL_PAGE_SZ_LOG2-8u),texData.y>>16u)
36+
uvec3 unnormCoords = uvec3(texData.y<<_NBL_VT_IMPL_PAGE_SZ_LOG2, texData.yy >> uvec2(8u-_NBL_VT_IMPL_PAGE_SZ_LOG2, 16u))& uvec3(uvec2(0xffu)<<_NBL_VT_IMPL_PAGE_SZ_LOG2, 0xffu);
3737
return vec3(unnormCoords);
3838
}
3939
vec2 nbl_glsl_unpackSize(in uvec2 texData)
@@ -70,12 +70,12 @@ vec3 nbl_glsl_vTexture_helper(in uint formatID, in vec3 virtualUV, in int clippe
7070

7171
vec2 tileCoordinate = uintBitsToFloat(floatBitsToUint(virtualUV.xy)+thisLevelTableSize);
7272
tileCoordinate = fract(tileCoordinate); // optimize this fract at some point
73-
tileCoordinate = uintBitsToFloat(floatBitsToUint(tileCoordinate)+uint((PAGE_SZ_LOG2-levelInTail)<<23));
73+
tileCoordinate = uintBitsToFloat(floatBitsToUint(tileCoordinate)+uint((_NBL_VT_IMPL_PAGE_SZ_LOG2-levelInTail)<<23));
7474
tileCoordinate += packingOffsets[levelInTail];
7575
tileCoordinate *= phys_pg_tex_sz_rcp;
7676

7777
vec3 physicalUV = nbl_glsl_unpackPageID(levelInTail!=0 ? pageID.y:pageID.x);
78-
physicalUV.xy *= vec2(PAGE_SZ+2*TILE_PADDING)*phys_pg_tex_sz_rcp;
78+
physicalUV.xy *= vec2(_NBL_VT_IMPL_PAGE_SZ+2*_NBL_VT_IMPL_TILE_PADDING)*phys_pg_tex_sz_rcp;
7979

8080
// add the in-tile coordinate
8181
physicalUV.xy += tileCoordinate;
@@ -90,7 +90,7 @@ vec4 nbl_glsl_vTextureGrad_impl(in uint formatID, in vec3 virtualUV, in mat2 dOr
9090
{
9191
// returns what would have been `textureGrad(originalTexture,gOriginalUV[0],gOriginalUV[1])
9292
// https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/chap15.html#textures-normalized-operations
93-
const float kMaxAnisotropy = float(2u*TILE_PADDING);
93+
const float kMaxAnisotropy = float(2u*_NBL_VT_IMPL_TILE_PADDING);
9494
// you can use an approx `log2` if you know one
9595
#ifdef _NBL_APPROXIMATE_TEXEL_FOOTPRINT_FROM_DERIVATIVE_CACL_
9696
// bounded by sqrt(2)
@@ -123,8 +123,8 @@ vec4 nbl_glsl_vTextureGrad_impl(in uint formatID, in vec3 virtualUV, in mat2 dOr
123123
// if minification is being performaed then get tail position
124124
int levelInTail = LoD_high-clippedLoD;
125125
// have to do trilinear only if doing minification AND larger than 1x1 footprint
126-
bool haveToDoTrilinear = levelInTail<int(PAGE_SZ_LOG2) && positiveLoD;
127-
levelInTail = haveToDoTrilinear ? levelInTail:(positiveLoD ? int(PAGE_SZ_LOG2):0);
126+
bool haveToDoTrilinear = levelInTail<int(_NBL_VT_IMPL_PAGE_SZ_LOG2) && positiveLoD;
127+
levelInTail = haveToDoTrilinear ? levelInTail:(positiveLoD ? int(_NBL_VT_IMPL_PAGE_SZ_LOG2):0);
128128

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

src/nbl/asset/utils/CGLSLVirtualTexturingBuiltinIncludeLoader.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -53,11 +53,11 @@ class CGLSLVirtualTexturingBuiltinIncludeLoader : public IGLSLEmbeddedIncludeLoa
5353
#ifndef _NBL_BUILTIN_GLSL_VIRTUAL_TEXTURING_FUNCTIONS_INCLUDED_
5454
#define _NBL_BUILTIN_GLSL_VIRTUAL_TEXTURING_FUNCTIONS_INCLUDED_
5555
)";
56-
s += "\n\n#define PAGE_SZ " + std::to_string(1u<<pg_sz_log2) + "u" +
57-
"\n#define PAGE_SZ_LOG2 " + args[ix_pg_sz_log2] + "u" +
58-
"\n#define TILE_PADDING " + args[ix_tile_padding] + "u" +
59-
"\n#define PADDED_TILE_SIZE uint(PAGE_SZ+2*TILE_PADDING)" +
60-
"\n\nconst vec2 packingOffsets[] = vec2[PAGE_SZ_LOG2+1]( vec2(" + std::to_string(tile_padding) + ")," + tilePackingOffsetsStr() + ");";
56+
s += "\n\n#define _NBL_VT_IMPL_PAGE_SZ " + std::to_string(1u<<pg_sz_log2) + "u" +
57+
"\n#define _NBL_VT_IMPL_PAGE_SZ_LOG2 " + args[ix_pg_sz_log2] + "u" +
58+
"\n#define _NBL_VT_IMPL_TILE_PADDING " + args[ix_tile_padding] + "u" +
59+
"\n#define _NBL_VT_IMPL_PADDED_TILE_SIZE uint(_NBL_VT_IMPL_PAGE_SZ+2*_NBL_VT_IMPL_TILE_PADDING)" +
60+
"\n\nconst vec2 packingOffsets[] = vec2[_NBL_VT_IMPL_PAGE_SZ_LOG2+1]( vec2(" + std::to_string(tile_padding) + ")," + tilePackingOffsetsStr() + ");";
6161
s += R"(
6262
#include "nbl/builtin/glsl/virtual_texturing/impl_functions.glsl"
6363

0 commit comments

Comments
 (0)