First pass implementing exponentially fading lighting
This commit is contained in:
@@ -1,12 +1,15 @@
|
||||
#version 430 core
|
||||
in vec4 gColor;
|
||||
in vec2 cenPosTrans;
|
||||
in float gRad;
|
||||
in vec2 cenPosT;
|
||||
in vec2 gParams;
|
||||
out vec4 fColor;
|
||||
|
||||
void main()
|
||||
{
|
||||
vec2 pos = gl_FragCoord.xy;
|
||||
float dist = max(0 , 1 - 2 * distance(pos,cenPosTrans) / (gRad));
|
||||
fColor = vec4( gColor.xyz , pow(gColor.z*dist,2) );
|
||||
float dist = min(1 , 2*distance(pos,cenPosT) / (gParams.x));
|
||||
//float c = pow(gParams.y*dist,2);
|
||||
float c = pow(1-dist,2);
|
||||
fColor = vec4( c,c,c ,c );
|
||||
// fColor = vec4( 1,0,0 , 1);
|
||||
// fColor = vec4( 1,0,0 , pow(dist,2) );
|
||||
}
|
||||
|
||||
+23
-14
@@ -1,30 +1,39 @@
|
||||
#version 430 core
|
||||
layout (points) in;
|
||||
layout (triangle_strip, max_vertices = 4) out;
|
||||
in vec4 vColor [];
|
||||
in float vRad [];
|
||||
in vec2 vParams [];
|
||||
out vec2 gParams;
|
||||
out vec2 cenPosT;
|
||||
|
||||
uniform vec2 winSize;
|
||||
out vec4 gColor;
|
||||
out float gRad;
|
||||
out vec2 cenPosTrans;
|
||||
uniform float zoom;
|
||||
|
||||
void main()
|
||||
{
|
||||
vec3 cenPos = gl_in[0].gl_Position.xyz;
|
||||
vec2 cenPosa = cenPos.xy + vec2 (1,1);
|
||||
cenPosTrans = vec2 (cenPosa * winSize * 0.5);
|
||||
gColor = vColor[0];
|
||||
gRad = vRad[0];
|
||||
//cenPos = vec3 (0.5,0,0);
|
||||
gParams = vec2( vParams[0].x * zoom * 2, vParams[0].y);
|
||||
float gRad = gParams.x;
|
||||
|
||||
gl_Position = vec4 (cenPos.x + gRad/winSize.x, cenPos.y + gRad/winSize.y, cenPos.z , 1);
|
||||
cenPosT = vec2 ( (cenPos.x + 1) * 0.5 * winSize.x , (cenPos.y + 1) * 0.5 * winSize.y);
|
||||
|
||||
gl_Position = vec4 (cenPos.x + gRad/winSize.x, cenPos.y + gRad/winSize.y, 0.9 , 1);
|
||||
EmitVertex();
|
||||
gl_Position = vec4 (cenPos.x - gRad/winSize.x, cenPos.y + gRad/winSize.y, cenPos.z , 1);
|
||||
gl_Position = vec4 (cenPos.x - gRad/winSize.x, cenPos.y + gRad/winSize.y, 0.9 , 1);
|
||||
EmitVertex();
|
||||
gl_Position = vec4 (cenPos.x + gRad/winSize.x, cenPos.y - gRad/winSize.y, cenPos.z , 1);
|
||||
gl_Position = vec4 (cenPos.x + gRad/winSize.x, cenPos.y - gRad/winSize.y, 0.9 , 1);
|
||||
EmitVertex();
|
||||
gl_Position = vec4 (cenPos.x - gRad/winSize.x, cenPos.y - gRad/winSize.y, cenPos.z , 1);
|
||||
gl_Position = vec4 (cenPos.x - gRad/winSize.x, cenPos.y - gRad/winSize.y, 0.9 , 1);
|
||||
EmitVertex();
|
||||
|
||||
// gl_Position = vec4 (0.5,0.5,0 , 1);
|
||||
// EmitVertex();
|
||||
// gl_Position = vec4 (0,0.5,0 , 1);
|
||||
// EmitVertex();
|
||||
// gl_Position = vec4 (0.5,0,0 , 1);
|
||||
// EmitVertex();
|
||||
// gl_Position = vec4 (0,0,0 , 1);
|
||||
// EmitVertex();
|
||||
|
||||
EndPrimitive();
|
||||
|
||||
}
|
||||
|
||||
@@ -1,12 +1,8 @@
|
||||
#version 430 core
|
||||
layout (location = 0) in vec3 position;
|
||||
layout (location = 1) in vec4 color;
|
||||
layout (location = 2) in float rad;
|
||||
out vec4 vColor;
|
||||
out float vRad;
|
||||
layout (location = 0) in vec4 position;
|
||||
out vec2 vParams;
|
||||
void main()
|
||||
{
|
||||
gl_Position = vec4(position,1);
|
||||
vColor = color;
|
||||
vRad = rad;
|
||||
gl_Position = vec4(position.xy,0,1);
|
||||
vParams = position.zw;
|
||||
}
|
||||
|
||||
@@ -3,5 +3,5 @@ out vec4 fColor;
|
||||
|
||||
void main()
|
||||
{
|
||||
fColor = vec4 (0.9,0.5,0,1);
|
||||
fColor = vec4 (0.9,0.5,0,0);
|
||||
}
|
||||
|
||||
+17
-5
@@ -1,6 +1,6 @@
|
||||
#version 430 core
|
||||
layout (points) in;
|
||||
layout (triangle_strip, max_vertices = 4) out;
|
||||
layout (triangle_strip, max_vertices = 10) out;
|
||||
|
||||
in vec4 vBackPoss[];
|
||||
uniform vec2 lightPos;
|
||||
@@ -12,13 +12,25 @@ void main()
|
||||
vec2 posc = vBackPoss[0].xy;
|
||||
vec2 posd = vBackPoss[0].zw;
|
||||
|
||||
gl_Position = vec4 (posa, -1 , 1);
|
||||
gl_Position = vec4 (posa, 0 , 1);
|
||||
EmitVertex();
|
||||
gl_Position = vec4 (posb, -1 , 1);
|
||||
gl_Position = vec4 (posa + (200 * (posa - lightPos)), 0 , 1);
|
||||
EmitVertex();
|
||||
gl_Position = vec4 (posc, -1 , 1);
|
||||
gl_Position = vec4 (posb, 0 , 1);
|
||||
EmitVertex();
|
||||
gl_Position = vec4 (posd, -1 , 1);
|
||||
gl_Position = vec4 (posb + (200 * (posb - lightPos)), 0 , 1);
|
||||
EmitVertex();
|
||||
gl_Position = vec4 (posb + (200 * (posb - lightPos)), 0 , 1);
|
||||
EmitVertex();
|
||||
gl_Position = vec4 (posd, 0 , 1);
|
||||
EmitVertex();
|
||||
gl_Position = vec4 (posd, 0 , 1);
|
||||
EmitVertex();
|
||||
gl_Position = vec4 (posd + (200 * (posd - lightPos)), 0 , 1);
|
||||
EmitVertex();
|
||||
gl_Position = vec4 (posc, 0 , 1);
|
||||
EmitVertex();
|
||||
gl_Position = vec4 (posc + (200 * (posc - lightPos)), 0 , 1);
|
||||
EmitVertex();
|
||||
|
||||
EndPrimitive();
|
||||
|
||||
Reference in New Issue
Block a user