use single tri
This commit is contained in:
@@ -1,6 +1,9 @@
|
|||||||
#version 460 core
|
#version 460 core
|
||||||
//Use quad shuffling to compute fragment mip
|
//Use quad shuffling to compute fragment mip
|
||||||
//#extension GL_KHR_shader_subgroup_quad: enable
|
//#extension GL_KHR_shader_subgroup_quad: enable
|
||||||
|
#ifdef USE_SINGLE_TRI
|
||||||
|
#define USE_NV_BARRY
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef USE_NV_BARRY
|
#ifdef USE_NV_BARRY
|
||||||
#extension GL_NV_fragment_shader_barycentric: require
|
#extension GL_NV_fragment_shader_barycentric: require
|
||||||
@@ -115,8 +118,13 @@ void main() {
|
|||||||
//Tile is the tile we are in
|
//Tile is the tile we are in
|
||||||
vec2 tile;
|
vec2 tile;
|
||||||
#ifdef USE_NV_BARRY
|
#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);
|
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
|
||||||
|
#endif
|
||||||
|
|
||||||
vec2 uv2 = modf(uv, tile)*(1.0/(vec2(3.0,2.0)*256.0));
|
vec2 uv2 = modf(uv, tile)*(1.0/(vec2(3.0,2.0)*256.0));
|
||||||
vec4 colour;
|
vec4 colour;
|
||||||
|
|||||||
@@ -7,6 +7,10 @@
|
|||||||
#define POSITION_SCRATCH_BINDING 5
|
#define POSITION_SCRATCH_BINDING 5
|
||||||
#define LIGHTING_SAMPLER_BINDING 1
|
#define LIGHTING_SAMPLER_BINDING 1
|
||||||
|
|
||||||
|
#ifdef USE_SINGLE_TRI
|
||||||
|
#define USE_NV_BARRY
|
||||||
|
#endif
|
||||||
|
|
||||||
#import <voxy:lod/quad_format.glsl>
|
#import <voxy:lod/quad_format.glsl>
|
||||||
#import <voxy:lod/block_model.glsl>
|
#import <voxy:lod/block_model.glsl>
|
||||||
#import <voxy:lod/gl46/bindings.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);
|
vec4 faceSize = getFaceSize(faceData);
|
||||||
|
#ifdef USE_SINGLE_TRI
|
||||||
|
faceSize *= 2;
|
||||||
|
#endif
|
||||||
vec3 quadStart = extractPos(rawQuad);
|
vec3 quadStart = extractPos(rawQuad);
|
||||||
float depthOffset = extractFaceIndentation(faceData);
|
float depthOffset = extractFaceIndentation(faceData);
|
||||||
quadStart += swizzelDataAxis(face>>1, vec3(faceSize.xz, mix(depthOffset, 1-depthOffset, float(face&1u))));
|
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.lodScale = lodScale;
|
||||||
quad.axis = face>>1;
|
quad.axis = face>>1;
|
||||||
quad.basePoint = (quadStart*lodScale)+vec3(baseSection<<5);
|
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;
|
quad.uvCorner = faceSize.xz;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user