Move shaders

This commit is contained in:
2025-11-20 22:33:37 +00:00
parent f63b47d6c4
commit ed6ebc930e
6 changed files with 98 additions and 0 deletions
+13
View File
@@ -0,0 +1,13 @@
#version 450 core
in vec4 vCol;
in vec3 vPos;
in vec3 vparams;
layout (location=0) out vec4 fCol;
layout (location=1) out vec4 fPos;
void main()
{
float d = (dot(vec2(vparams.xy),vec2(vparams.xy)));
if ( d > 1 || d < (vparams.z * vparams.z) ) {discard;}
fCol = vCol;
fPos = vec4(vPos,1);
}
+15
View File
@@ -0,0 +1,15 @@
#version 450 core
struct PosColBox { vec4 pos; vec4 col; vec4 box; };
layout (std430, binding = 12) readonly buffer Data { PosColBox data[]; };
layout (std140, binding = 0) uniform TheMat { mat4 theMat; } ;
layout (location = 0) uniform int layoff;
out vec4 vCol;
out vec3 vPos;
out vec3 vparams;
void main() {
vec4 p = data[gl_VertexID].pos;
gl_Position = theMat * p;
vCol = data[gl_VertexID].col;
vparams = data[gl_VertexID].box.xyz;
vPos = p.xyz;
}
+10
View File
@@ -0,0 +1,10 @@
#version 450 core
in vec4 vCol;
in vec3 vPos;
layout (location=0) out vec4 fCol;
layout (location=1) out vec4 fPos;
void main()
{
fCol = vCol;
fPos = vec4(vPos,1);
}
+13
View File
@@ -0,0 +1,13 @@
#version 450 core
struct PosCol { vec4 pos; vec4 col; };
layout (std430, binding = 10) readonly buffer Data { PosCol data[]; };
layout (location = 0) uniform int layoff;
layout (std140, binding = 0) uniform TheMat { mat4 theMat; } ;
out vec4 vCol;
out vec3 vPos;
void main() {
vec4 p = data[gl_VertexID].pos;
gl_Position = theMat * p;
vCol = data[gl_VertexID].col;
vPos = p.xyz;
}
+14
View File
@@ -0,0 +1,14 @@
#version 450 core
layout (location=0) out vec4 fCol;
layout (location=1) out vec4 fPos;
in vec4 gColC;
in vec4 gColE;
in vec3 gPos;
in vec2 gBoundingBox;
void main() {
float d = dot(gBoundingBox,gBoundingBox);
if ( d > 1) { discard; }
fCol = mix (gColE , gColC, d);
fPos = vec4(gPos,1);
}
+33
View File
@@ -0,0 +1,33 @@
#version 450 core
struct PosCol { vec4 posx; vec4 colx; };
layout (std140, binding = 0) uniform TheMat { mat4 theMat; } ;
layout (std430, binding = 13) readonly buffer Data { PosCol data[]; };
layout (location = 0) uniform int n;
out vec4 gColC; // center color
out vec4 gColE; // edge color
out vec2 gBoundingBox;
out vec3 gPos;
const int ks[6] = //
{1,0,2 // 2--3
,2,0,3 // | |
}; // 1--0
//
const vec2 bs[4] =
{ vec2( 1, 1)
, vec2(-1, 1)
, vec2(-1,-1)
, vec2( 1,-1)
} ;
void main()
{
int i0 = n + (3 * ((gl_VertexID-n)/6) );
gColC = data[i0].colx;
gColE = data[i0+1].colx;
int k = ks[(gl_VertexID - n) % 6];
gBoundingBox = bs[k];
gPos = (k > 2.5
? data[i0].posx + data[i0+2].posx - data[i0+1].posx
: data[i0+k].posx
).xyz;
gl_Position = theMat * vec4(gPos,1);
}