nenuzhno-engine_iter1/assets/base/shaders/bokeh.vs

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;
}