#version 150 in vec3 src_normal, normal, binormal;//, et; in vec4 pos, ppos; in float fogCoord; in mat3 TBN; uniform bool acc_fog; uniform vec2 dt; uniform float z_far, z_near; const vec3 luma = vec3(0.299, 0.587, 0.114); void main(void) { float z = pos.w;//((z_near / (z_near-z_far)) * z_far) / (pos.w - (z_far / (z_far-z_near))); vec4 dc = qgl_FragColor; vec2 tc = qgl_FragTexture.xy; float hei = dot(texture(qgl_Material.map_relief.map, tc).rgb, luma) * qgl_Material.map_relief.amount + qgl_Material.map_relief.offset; //if (acc_fog) dc.xyz = mix(dc.rgb, gl_Fog.color.rgb, fogCoord); vec3 n, dn, bn; dn = (texture(qgl_Material.map_normal.map, tc).rgb - vec3(0.5, 0.5, 1.)) * qgl_Material.map_normal.amount + qgl_Material.map_normal.offset; //float tx = dn.x; dn.y = -dn.y; //dn.y = tx; dn = TBN * dn; //dn = dn * mat3(qgl_ModelViewMatrix)*10;//*(mat3(qgl_NormalMatrix)); n = normalize(qgl_NormalMatrix * (normal + dn));//normalize(qgl_NormalMatrix * (normal - dn)); bn = normalize(qgl_NormalMatrix * binormal);//normalize(qgl_NormalMatrix * (normal - dn)); //n = dn; /*vec2 dpm = normalize(gl_FragCoord.xy * dt * 2. - vec2(1., 1.)), ntc; ntc = gl_FragCoord.xy * dt * 2. - vec2(1., 1.) + dpm * hei; dpm = gl_ModelViewProjectionMatrixInverse dpm = dpm * gl_ModelViewProjectionMatrixInverse; dpm += */ //tc += 1+et.xy * hei/10;// / et.z; dc *= texture(qgl_Material.map_diffuse.map, tc) * qgl_Material.map_diffuse.amount + qgl_Material.map_diffuse.offset; vec4 spec = texture(qgl_Material.map_specular.map, tc) * qgl_Material.map_specular.amount + qgl_Material.map_specular.offset; spec *= qgl_Material.color_specular; vec4 specularity = texture(qgl_Material.map_specularity.map, tc) * qgl_Material.map_specularity.amount + qgl_Material.map_specularity.offset; vec4 self = texture(qgl_Material.map_self_illumination.map, tc) * qgl_Material.map_self_illumination.amount + qgl_Material.map_self_illumination.offset; self *= qgl_Material.color_self_illumination; vec3 speed = pos.xyz/pos.w - ppos.xyz/ppos.w; //speed /= abs(pos.z); qgl_FragData[0] = vec4(dc.rgb, pos.w); qgl_FragData[1] = vec4(n.xyz / 2. + vec3(0.5), specularity); qgl_FragData[2] = vec4(spec.rgb, hei); qgl_FragData[3] = vec4(self.rgb, bn.x); qgl_FragData[4] = vec4(speed.xy, bn.yz); //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); /*vec4 dp = pos; dp.x = floor(dp.w / 255.) / 255.; dp.w -= dp.x * 65025; dp.y = floor(dp.w) / 255.; dp.w -= dp.y * 255.; dp.z = fract(dp.w);*/ //dp.x = dp.w; //dp.w = (gl_FrontMaterial.specular.r + gl_FrontMaterial.specular.g + gl_FrontMaterial.specular.b) / 3. / 25.5; //gl_FragData[2] = dp; //gl_FragData[3] = vec4(light_model / 255., 0, 0, 0); }