add textures
This commit is contained in:
@@ -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;
|
||||||
|
|||||||
@@ -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));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user