git-svn-id: svn://db.shs.com.ru/libs@689 a8b55f48-bf90-11e4-a774-851b48703e85
This commit is contained in:
@@ -23,7 +23,7 @@ uniform vec4 fog_color = vec4(0.5, 0.5, 0.5, 1);
|
|||||||
uniform float fog_decay = 10, fog_density = 0;
|
uniform float fog_decay = 10, fog_density = 0;
|
||||||
|
|
||||||
const vec3 luma = vec3(0.299, 0.587, 0.114);
|
const vec3 luma = vec3(0.299, 0.587, 0.114);
|
||||||
const float _pe = 2.4e-7;
|
const float _pe = 2.4e-7, _min_rough = 1.e-8;
|
||||||
|
|
||||||
vec4 pos, lpos, shp;
|
vec4 pos, lpos, shp;
|
||||||
vec3 li, si, ldir, halfV, bn, bn2, lwdir;
|
vec3 li, si, ldir, halfV, bn, bn2, lwdir;
|
||||||
@@ -37,13 +37,13 @@ void calcLight(in int index, in vec3 n, in vec3 v) {
|
|||||||
ldir = normalize(ldir);
|
ldir = normalize(ldir);
|
||||||
//ldir = vec3(0,0,1);
|
//ldir = vec3(0,0,1);
|
||||||
halfV = normalize(ldir + v);
|
halfV = normalize(ldir + v);
|
||||||
NdotL = max(dot(n, ldir), 1E-6);
|
NdotL = max(dot(n, ldir), 1E-8);
|
||||||
NdotH = max(dot(n, halfV), 1E-6);
|
NdotH = max(dot(n, halfV), 1E-8);
|
||||||
spot = step(1.001E-6, NdotL) * qgl_light_parameter[index].intensity;
|
spot = step(1.001E-8, NdotL) * qgl_light_parameter[index].decay_intensity.w;
|
||||||
#ifdef SPOT
|
#ifdef SPOT
|
||||||
float scos = max(dot(-ldir, qgl_light_position[index].direction.xyz), 0.);
|
float scos = max(dot(-ldir, qgl_light_position[index].direction.xyz), 0.);
|
||||||
spot *= scos * step(qgl_light_parameter[index].endAngleCos, scos);
|
spot *= scos * step(qgl_light_parameter[index].angles.w, scos);
|
||||||
spot *= smoothstep(qgl_light_parameter[index].endAngleCos, qgl_light_parameter[index].startAngleCos, scos);
|
spot *= smoothstep(qgl_light_parameter[index].angles.w, qgl_light_parameter[index].angles.y, scos);
|
||||||
/*//lwdir = mat3(mat_viewi) * qgl_Light[index].direction.xyz;
|
/*//lwdir = mat3(mat_viewi) * qgl_Light[index].direction.xyz;
|
||||||
//bn = normalize(cross(lwdir, vec3(1, 0, 0)));
|
//bn = normalize(cross(lwdir, vec3(1, 0, 0)));
|
||||||
//bn2 = normalize(cross(lwdir, bn));
|
//bn2 = normalize(cross(lwdir, bn));
|
||||||
@@ -75,9 +75,8 @@ void calcLight(in int index, in vec3 n, in vec3 v) {
|
|||||||
//shadow += shadow += getShadow(index, pos.xyz, vds+vds2)*10;
|
//shadow += shadow += getShadow(index, pos.xyz, vds+vds2)*10;
|
||||||
spot *= mix(1., shadow / 11., shadow_on);*/
|
spot *= mix(1., shadow / 11., shadow_on);*/
|
||||||
#endif
|
#endif
|
||||||
spot /= (qgl_light_parameter[index].constantAttenuation +
|
vec3 dist_decay = vec3(1, ldist, ldist*ldist);
|
||||||
ldist * (qgl_light_parameter[index].linearAttenuation +
|
spot /= dot(qgl_light_parameter[index].decay_intensity.xyz, dist_decay);
|
||||||
ldist * qgl_light_parameter[index].quadraticAttenuation));
|
|
||||||
float NdotLs = NdotL*NdotL;
|
float NdotLs = NdotL*NdotL;
|
||||||
float NdotHs = NdotH*NdotH;
|
float NdotHs = NdotH*NdotH;
|
||||||
|
|
||||||
@@ -99,29 +98,28 @@ void main(void) {
|
|||||||
qgl_FragColor = vec4(fog_color.rgb, 0);
|
qgl_FragColor = vec4(fog_color.rgb, 0);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
pos.w = 1;
|
||||||
|
pos.xyz = view_dir * z;
|
||||||
|
vec3 v = normalize(-pos.xyz);
|
||||||
|
|
||||||
vec4 v0 = texelFetch(tex_0, tc, 0),
|
vec4 v0 = texelFetch(tex_0, tc, 0),
|
||||||
v2 = texelFetch(tex_2, tc, 0),
|
v2 = texelFetch(tex_2, tc, 0),
|
||||||
v3 = texelFetch(tex_3, tc, 0),
|
v3 = texelFetch(tex_3, tc, 0),
|
||||||
v4 = texelFetch(tex_4, tc, 0);
|
v4 = texelFetch(tex_4, tc, 0);
|
||||||
|
|
||||||
pos.w = 1;
|
|
||||||
pos.xyz = view_dir * z;
|
|
||||||
vec3 v = normalize(-pos.xyz);
|
|
||||||
|
|
||||||
vec3 diffuse = v0.rgb;
|
vec3 diffuse = v0.rgb;
|
||||||
vec3 normal = v1.xyz;
|
vec3 normal = v1.xyz;
|
||||||
vec3 specular = v2.rgb;
|
vec3 specular = v2.rgb;
|
||||||
vec3 emission = v3.rgb;
|
vec3 emission = v3.rgb;
|
||||||
float reflectivity = v2.w;
|
|
||||||
//float height = v2.w;
|
|
||||||
float roughness = v3.w;
|
|
||||||
float alpha = v0.a;
|
float alpha = v0.a;
|
||||||
|
float reflectivity = v2.w;
|
||||||
|
float roughness = v3.w;
|
||||||
//bn = normalize(vec3(v3.w, v4.zw));
|
//bn = normalize(vec3(v3.w, v4.zw));
|
||||||
//bn2 = normalize(cross(n, bn));
|
//bn2 = normalize(cross(n, bn));
|
||||||
|
roughness = max(roughness, _min_rough);
|
||||||
|
|
||||||
shm_diff = max(roughness, 0.00001);
|
shm_diff = roughness;
|
||||||
roughness = roughness*roughness*roughness;
|
shm_spec = max(roughness*roughness*roughness, _min_rough);
|
||||||
shm_spec = max(roughness, 0.00001);
|
|
||||||
//sh_pow = 1. / max(roughness, 0.00001);
|
//sh_pow = 1. / max(roughness, 0.00001);
|
||||||
li = vec3(0.);//qgl_AmbientLight.color.rgb * qgl_AmbientLight.intensity;
|
li = vec3(0.);//qgl_AmbientLight.color.rgb * qgl_AmbientLight.intensity;
|
||||||
si = vec3(0.);
|
si = vec3(0.);
|
||||||
@@ -135,5 +133,5 @@ void main(void) {
|
|||||||
res_col = mix(res_col, fog_color.rgb, fog);
|
res_col = mix(res_col, fog_color.rgb, fog);
|
||||||
|
|
||||||
qgl_FragColor = vec4(res_col, alpha);
|
qgl_FragColor = vec4(res_col, alpha);
|
||||||
//qgl_FragColor.rgb = vec3(fog);
|
//qgl_FragColor.rgb = vec3(normal);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user