use single tri

This commit is contained in:
mcrcortex
2025-11-05 16:32:24 +10:00
parent 8426006435
commit 1c1d812bbf
3 changed files with 20 additions and 2 deletions

View File

@@ -1,6 +1,9 @@
#version 460 core
//Use quad shuffling to compute fragment mip
//#extension GL_KHR_shader_subgroup_quad: enable
#ifdef USE_SINGLE_TRI
#define USE_NV_BARRY
#endif
#ifdef USE_NV_BARRY
#extension GL_NV_fragment_shader_barycentric: require
@@ -115,8 +118,13 @@ void main() {
//Tile is the tile we are in
vec2 tile;
#ifdef USE_NV_BARRY
#ifdef USE_SINGLE_TRI
if (gl_BaryCoordNV.x>=0.5||gl_BaryCoordNV.y>=0.5) discard;
vec2 uv = gl_BaryCoordNV.yx*(vec2((interData.x>>8)&0xFu, (interData.x>>12)&0xFu)+1)*2;
#else
vec2 uv = mix(gl_BaryCoordNV.yx, 1-gl_BaryCoordNV.xz, gl_PrimitiveID&1)*(vec2((interData.x>>8)&0xFu, (interData.x>>12)&0xFu)+1);
#endif
#endif
vec2 uv2 = modf(uv, tile)*(1.0/(vec2(3.0,2.0)*256.0));
vec4 colour;

View File

@@ -7,6 +7,10 @@
#define POSITION_SCRATCH_BINDING 5
#define LIGHTING_SAMPLER_BINDING 1
#ifdef USE_SINGLE_TRI
#define USE_NV_BARRY
#endif
#import <voxy:lod/quad_format.glsl>
#import <voxy:lod/block_model.glsl>
#import <voxy:lod/gl46/bindings.glsl>

View File

@@ -162,7 +162,9 @@ void setupQuad(out QuadData quad, const in Quad rawQuad, uvec2 sPos, bool genera
}
vec4 faceSize = getFaceSize(faceData);
#ifdef USE_SINGLE_TRI
faceSize *= 2;
#endif
vec3 quadStart = extractPos(rawQuad);
float depthOffset = extractFaceIndentation(faceData);
quadStart += swizzelDataAxis(face>>1, vec3(faceSize.xz, mix(depthOffset, 1-depthOffset, float(face&1u))));
@@ -170,7 +172,11 @@ void setupQuad(out QuadData quad, const in Quad rawQuad, uvec2 sPos, bool genera
quad.lodScale = lodScale;
quad.axis = face>>1;
quad.basePoint = (quadStart*lodScale)+vec3(baseSection<<5);
quad.quadSizeAddin = (faceSize.yw + quadSize - 1);
#ifdef USE_SINGLE_TRI
quad.quadSizeAddin = (faceSize.yw + (quadSize - 1)*2);
#else
quad.quadSizeAddin = faceSize.yw + quadSize - 1;
#endif
quad.uvCorner = faceSize.xz;
}