add textures

This commit is contained in:
mcrcortex
2025-07-15 12:10:33 +10:00
parent 2023ac6ad2
commit 45e2ea897f
2 changed files with 23 additions and 4 deletions

View File

@@ -1,10 +1,13 @@
#version 460 core #version 460 core
#extension GL_NV_fragment_shader_barycentric : require
layout(binding = 0) uniform sampler2D blockModelAtlas; layout(binding = 0) uniform sampler2D blockModelAtlas;
layout(binding = 2) uniform sampler2D depthTex; layout(binding = 2) uniform sampler2D depthTex;
layout(location=1) perprimitiveNV in PerPrimData { layout(location=1) perprimitiveNV in PerPrimData {
uvec4 data; uvec4 data;
vec4 uvData;
} primIn; } primIn;
layout(location = 0) out vec4 outColour; layout(location = 0) out vec4 outColour;
@@ -45,9 +48,22 @@ vec2 getBaseUV() {
return modelUV + (vec2(face>>1, face&1u) * (1.0/(vec2(3.0, 2.0)*256.0))); return modelUV + (vec2(face>>1, face&1u) * (1.0/(vec2(3.0, 2.0)*256.0)));
} }
bool isTri0() {
return (gl_PrimitiveID&(1<<31))==0;
}
void main() { void main() {
vec2 uv = vec2(0); bool tri0 = isTri0();
//1,2,0
//1,3,2
//vec2((corner>>1)&1u, corner&1u)
//vec2(0,gl_BaryCoordNV.x)+vec2(gl_BaryCoordNV.y,0)+vec2(0,0);
//vec2(0,gl_BaryCoordNV.x)+vec2(gl_BaryCoordNV.y,gl_BaryCoordNV.y)+vec2(gl_BaryCoordNV.z,0);
vec2 uv = fma(mix(gl_BaryCoordNV.zx+gl_BaryCoordNV.y, gl_BaryCoordNV.yx, bvec2(tri0)), primIn.uvData.zw, primIn.uvData.xy);
//Need to interpolate
//Tile is the tile we are in //Tile is the tile we are in
vec2 tile; vec2 tile;

View File

@@ -29,6 +29,7 @@ layout(std430) taskNV in Task {
layout(location=1) perprimitiveNV out PerPrimData { layout(location=1) perprimitiveNV out PerPrimData {
uvec4 data; uvec4 data;
vec4 uvData;
} primOut[]; } primOut[];
@@ -172,7 +173,7 @@ void setup(Quad quad) {
} }
vec2 getUvCorner(uint corner) { vec2 getUvCorner(uint corner) {
return faceSize.xz + axisFaceSize*vec2((corner>>1)&1u, corner&1u);; return faceSize.xz + axisFaceSize*vec2((corner>>1)&1u, corner&1u);
} }
uvec4 createQuadData(Quad quad) { uvec4 createQuadData(Quad quad) {
@@ -293,7 +294,8 @@ void main() {
gl_MeshVerticesNV[vertId++].gl_Position = p0; gl_MeshVerticesNV[vertId++].gl_Position = p0;
primOut[triId].data = data; primOut[triId].data = data;
gl_MeshPrimitivesNV[triId++].gl_PrimitiveID = int(qid); primOut[triId].uvData = vec4(faceSize.xz, axisFaceSize);
gl_MeshPrimitivesNV[triId++].gl_PrimitiveID = int(qid|(0u<<31));
} }
{ {
@@ -304,7 +306,8 @@ void main() {
gl_MeshVerticesNV[vertId++].gl_Position = p3; gl_MeshVerticesNV[vertId++].gl_Position = p3;
primOut[triId].data = data; primOut[triId].data = data;
gl_MeshPrimitivesNV[triId++].gl_PrimitiveID = int(qid); primOut[triId].uvData = vec4(faceSize.xz, axisFaceSize);
gl_MeshPrimitivesNV[triId++].gl_PrimitiveID = int(qid|(1u<<31));
} }