use single tri
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user