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