45 lines
1.0 KiB
GLSL
45 lines
1.0 KiB
GLSL
#version 100
|
|
precision highp float;
|
|
|
|
attribute vec4 a_position;
|
|
|
|
uniform mat4 u_mvpMtx;
|
|
uniform sampler2D u_texture;
|
|
uniform float u_size;
|
|
|
|
varying vec4 v_col;
|
|
|
|
//const float bright = 0.1;
|
|
//const float size = 21.5;
|
|
|
|
const float ndofstart = 1.0;
|
|
const float ndofdist = 2.0;
|
|
const float fdofstart = 1.0;
|
|
const float fdofdist = 3.0;
|
|
|
|
void main()
|
|
{
|
|
float depth = abs(a_position.x*3.0);
|
|
float fDepth = 1.5;
|
|
float a = depth-fDepth; //focal plane
|
|
float b = (a-fdofstart)/fdofdist; //far DoF
|
|
float c = (-a-ndofstart)/ndofdist; //near Dof
|
|
float size = (a>0.0)?b:c;
|
|
size = clamp(size,0.0,1.0) *20.0+1.0;
|
|
//float size = length(a_position.xy-0.5)*20.0+1.0;
|
|
//float size = abs(a_position.x-u_size*0.01-0.4)*64.5+5.0;
|
|
//float size=7.0;
|
|
//size = u_size;//*0.5+3.0;
|
|
|
|
//4/PI
|
|
float bright = 1.273239/(size*size);
|
|
|
|
bright = clamp(bright,0.007,1.0);
|
|
gl_Position = vec4(a_position.xyz*2.0-1.0,1.0);
|
|
v_col = texture2D(u_texture,a_position.xy)*bright;
|
|
if(length(v_col)<0.01)
|
|
gl_Position.z=-999.9;
|
|
gl_PointSize = size;
|
|
//gl_PointSize = a_position.x*34.5+5.0;
|
|
}
|