git-svn-id: svn://db.shs.com.ru/libs@51 a8b55f48-bf90-11e4-a774-851b48703e85

This commit is contained in:
2015-11-30 14:45:48 +00:00
parent 8f3506b4a0
commit fc0b593329
15 changed files with 294 additions and 284 deletions

View File

@@ -1,8 +1,8 @@
#version 150
uniform sampler2D t0;
uniform float factor = 1.;
uniform float factor = 1., threshold = 0.8;
void main(void) {
qgl_FragData[0].rgb = max(texelFetch(t0, ivec2(gl_FragCoord.xy), 0).rgb - vec3(0.8), vec3(0.)) * factor;
qgl_FragData[0].rgb = max(texelFetch(t0, ivec2(gl_FragCoord.xy), 0).rgb - vec3(threshold), vec3(0.)) * factor;
}

View File

@@ -2,12 +2,34 @@
uniform sampler2D t0;
uniform int radius = 2;
uniform vec2 dt;
void main(void) {
ivec2 tc = ivec2(gl_FragCoord.xy);
vec2 tc = qgl_FragTexture.xy;
float r = float(radius);
int o = radius, o2 = radius * 2;
vec3 scol = (texelFetch(t0, tc, 0).rgb * 3. +
vec3 scol = (texture(t0, tc).rgb * 3. +
texture(t0, tc + dt * vec2( o, 0 )).rgb * 2. +
texture(t0, tc + dt * vec2( 0, o )).rgb * 2. +
texture(t0, tc + dt * vec2( -o, 0 )).rgb * 2. +
texture(t0, tc + dt * vec2( 0, -o)).rgb * 2. +
texture(t0, tc + dt * vec2( o, o )).rgb * 1.5 +
texture(t0, tc + dt * vec2( o, -o)).rgb * 1.5 +
texture(t0, tc + dt * vec2( -o, -o )).rgb * 1.5 +
texture(t0, tc + dt * vec2( -o, o )).rgb * 1.5 +
texture(t0, tc + dt * vec2( o2, 0 )).rgb +
texture(t0, tc + dt * vec2( 0, o2)).rgb +
texture(t0, tc + dt * vec2(-o2, 0 )).rgb +
texture(t0, tc + dt * vec2( 0, -o2)).rgb +
texture(t0, tc + dt * vec2( o2, o )).rgb +
texture(t0, tc + dt * vec2( o2, -o)).rgb +
texture(t0, tc + dt * vec2(-o2, -o )).rgb +
texture(t0, tc + dt * vec2(-o2, o )).rgb +
texture(t0, tc + dt * vec2( o, o2)).rgb +
texture(t0, tc + dt * vec2( o, -o2)).rgb +
texture(t0, tc + dt * vec2( -o, -o2)).rgb +
texture(t0, tc + dt * vec2( -o, o2)).rgb) / 29.;
/*vec3 scol = (texelFetch(t0, tc, 0).rgb * 3. +
texelFetch(t0, tc + ivec2( o, 0 ), 0).rgb * 2. +
texelFetch(t0, tc + ivec2( 0, o ), 0).rgb * 2. +
texelFetch(t0, tc + ivec2( -o, 0 ), 0).rgb * 2. +
@@ -27,7 +49,7 @@ void main(void) {
texelFetch(t0, tc + ivec2( o, o2), 0).rgb +
texelFetch(t0, tc + ivec2( o, -o2), 0).rgb +
texelFetch(t0, tc + ivec2( -o, -o2), 0).rgb +
texelFetch(t0, tc + ivec2( -o, o2), 0).rgb) / 29.;
texelFetch(t0, tc + ivec2( -o, o2), 0).rgb) / 29.;*/
qgl_FragData[0].rgb = scol;
//qgl_FragData[0].rgb = vec3(r/10.);
}

View File

@@ -49,7 +49,7 @@ void main(void) {
qgl_FragData[1] = vec4(n.xyz / 2. + vec3(0.5), specularity);
qgl_FragData[2] = vec4(spec.rgb, hei);
qgl_FragData[3] = vec4(self.rgb, pos.w);
qgl_FragData[4] = vec4(speed,0);
qgl_FragData[4] = vec4(speed.xy, 0, 0);
//gl_FragData[0] = vec4(et.xyz, pos.w);
//gl_FragDepth = gl_FragCoord.z - clamp(hei / pos.z / pos.z / (abs(n.z) + 1), -0.01, 0.01);

View File

@@ -72,11 +72,11 @@ void main(void) {
//li = vec3(0.);
si = vec3(0.);
float posz = z_near * z_far / (texture2D(td, tc).r * (z_far - z_near) - z_far);
float posz = z_near * z_far / (texelFetch(td, tc, 0).r * (z_far - z_near) - z_far);
pos = vec4(sp, 0., 1) * mat_proji;
pos.xy *= v3.w;
pos.z = posz;
pos.xyz += n * height;
//pos.xyz += n * height;
//pos.xyz = v3.xyz;
//pos = v3;
//pos = vec4(sp, 0, 1.) * mat_proji;
@@ -88,12 +88,12 @@ void main(void) {
sh_pow = 1. / max((1. - v1.w), 0.0001);
sh_mul = max(1. - v1.w, 0.0001);
for (int i = 0; i < 16; ++i)
for (int i = 0; i < 1; ++i)
calcLight(i, n, v, v2);
qgl_FragData[0].rgb = li * dc + si * v2.rgb + v3.rgb + texture(t_pp, tc).rgb;
//qgl_FragData[0].rgb = vec3(abs(lpos.xyz - pos.xyz)/10);
//qgl_FragData[0].rgb = si.rgb;
//qgl_FragData[0].rgb = vec3(ldist/1000);
//qgl_FragData[0].rgb = vec3(length(v4.xyz)/10);
//qgl_FragData[0].a = 0.;
}

View File

@@ -16,12 +16,14 @@ vec3 Uncharted2Tonemap(vec3 x) {
}
void main(void) {
qgl_FragData[0].rgb = texelFetch(t0, ivec2(gl_FragCoord.xy), 0).rgb;
return;
vec3 inColor = texelFetch(t0, ivec2(gl_FragCoord.xy), 0).rgb;
inColor *= exposure;
float ExposureBias = 1;
vec3 curr = Uncharted2Tonemap(ExposureBias*inColor);
vec3 whiteScale = 1 / Uncharted2Tonemap(vec3(tW));
vec3 color = curr * whiteScale;
vec3 retColor = pow(color, vec3(1 / 2.2));
vec3 retColor = pow(color, vec3(1 / 1.2));
qgl_FragData[0].rgb = retColor;
}