NORSPEC-246 fix issues with normal encoding on precision-deprived hardware and remove haxors
parent
75c4b50f88
commit
33a2608da5
|
|
@ -67,20 +67,16 @@ vec4 getPosition(vec2 pos_screen)
|
|||
#ifdef SINGLE_FP_ONLY
|
||||
vec2 encode_normal(vec3 n)
|
||||
{
|
||||
float f = sqrt(2 * n.z + 2);
|
||||
return (n.xy / vec2(f)) + vec2(0.5f);
|
||||
vec2 sn;
|
||||
sn.xy = (n.xy * vec2(0.5f,0.5f)) + vec2(0.5f,0.5f);
|
||||
}
|
||||
|
||||
vec3 decode_normal (vec2 enc)
|
||||
{
|
||||
vec2 fenc = enc - 0.5f;
|
||||
float f = dot(fenc,fenc);
|
||||
f = clamp(f,0.0f,1.0f);
|
||||
float g = sqrt(1-f);
|
||||
vec3 n;
|
||||
n.xy = fenc*g;
|
||||
n.z = 1.0f - (f * 0.5f);
|
||||
return normalize(n);
|
||||
vec3 n;
|
||||
n.xy = (enc.xy * vec2(2.0f,2.0f)) - vec2(1.0f,1.0f);
|
||||
n.z = sqrt(1.0f - dot(n.xy,n.xy));
|
||||
return n;
|
||||
}
|
||||
#else
|
||||
vec2 encode_normal(vec3 n)
|
||||
|
|
|
|||
|
|
@ -429,20 +429,16 @@ VARYING vec2 vary_texcoord0;
|
|||
#ifdef SINGLE_FP_ONLY
|
||||
vec2 encode_normal(vec3 n)
|
||||
{
|
||||
float f = sqrt(2 * n.z + 2);
|
||||
return (n.xy / vec2(f)) + vec2(0.5f);
|
||||
vec2 sn;
|
||||
sn.xy = (n.xy * vec2(0.5f,0.5f)) + vec2(0.5f,0.5f);
|
||||
}
|
||||
|
||||
vec3 decode_normal (vec2 enc)
|
||||
{
|
||||
vec2 fenc = enc - 0.5f;
|
||||
float f = dot(fenc,fenc);
|
||||
f = clamp(f,0.0f,1.0f);
|
||||
float g = sqrt(1-f);
|
||||
vec3 n;
|
||||
n.xy = fenc*g;
|
||||
n.z = 1.0f - (f * 0.5f);
|
||||
return normalize(n);
|
||||
vec3 n;
|
||||
n.xy = (enc.xy * vec2(2.0f,2.0f)) - vec2(1.0f,1.0f);
|
||||
n.z = sqrt(1.0f - dot(n.xy,n.xy));
|
||||
return n;
|
||||
}
|
||||
#else
|
||||
vec2 encode_normal(vec3 n)
|
||||
|
|
@ -692,13 +688,6 @@ void main()
|
|||
|
||||
#else
|
||||
frag_data[0] = final_color;
|
||||
|
||||
#ifdef SINGLE_FP_ONLY
|
||||
// "Not so HD" range on older cards; make it fit!
|
||||
//
|
||||
final_specular = final_specular * vec4(0.25f);
|
||||
#endif
|
||||
|
||||
frag_data[1] = final_specular; // XYZ = Specular color. W = Specular exponent.
|
||||
frag_data[2] = final_normal; // XY = Normal. Z = Env. intensity.
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -59,20 +59,16 @@ uniform mat4 inv_proj;
|
|||
#ifdef SINGLE_FP_ONLY
|
||||
vec2 encode_normal(vec3 n)
|
||||
{
|
||||
float f = sqrt(2 * n.z + 2);
|
||||
return (n.xy / vec2(f)) + vec2(0.5f);
|
||||
vec2 sn;
|
||||
sn.xy = (n.xy * vec2(0.5f,0.5f)) + vec2(0.5f,0.5f);
|
||||
}
|
||||
|
||||
vec3 decode_normal (vec2 enc)
|
||||
{
|
||||
vec2 fenc = enc - 0.5f;
|
||||
float f = dot(fenc,fenc);
|
||||
f = clamp(f,0.0f,1.0f);
|
||||
float g = sqrt(1-f);
|
||||
vec3 n;
|
||||
n.xy = fenc*g;
|
||||
n.z = 1.0f - (f * 0.5f);
|
||||
return normalize(n);
|
||||
vec3 n;
|
||||
n.xy = (enc.xy * vec2(2.0f,2.0f)) - vec2(1.0f,1.0f);
|
||||
n.z = sqrt(1.0f - dot(n.xy,n.xy));
|
||||
return n;
|
||||
}
|
||||
#else
|
||||
vec2 encode_normal(vec3 n)
|
||||
|
|
|
|||
|
|
@ -70,20 +70,16 @@ uniform mat4 inv_proj;
|
|||
#ifdef SINGLE_FP_ONLY
|
||||
vec2 encode_normal(vec3 n)
|
||||
{
|
||||
float f = sqrt(2 * n.z + 2);
|
||||
return (n.xy / vec2(f)) + vec2(0.5f);
|
||||
vec2 sn;
|
||||
sn.xy = (n.xy * vec2(0.5f,0.5f)) + vec2(0.5f,0.5f);
|
||||
}
|
||||
|
||||
vec3 decode_normal (vec2 enc)
|
||||
{
|
||||
vec2 fenc = enc - 0.5f;
|
||||
float f = dot(fenc,fenc);
|
||||
f = clamp(f,0.0f,1.0f);
|
||||
float g = sqrt(1-f);
|
||||
vec3 n;
|
||||
n.xy = fenc*g;
|
||||
n.z = 1.0f - (f * 0.5f);
|
||||
return normalize(n);
|
||||
vec3 n;
|
||||
n.xy = (enc.xy * vec2(2.0f,2.0f)) - vec2(1.0f,1.0f);
|
||||
n.z = sqrt(1.0f - dot(n.xy,n.xy));
|
||||
return n;
|
||||
}
|
||||
#else
|
||||
vec2 encode_normal(vec3 n)
|
||||
|
|
|
|||
|
|
@ -57,20 +57,16 @@ uniform vec4 viewport;
|
|||
#ifdef SINGLE_FP_ONLY
|
||||
vec2 encode_normal(vec3 n)
|
||||
{
|
||||
float f = sqrt(2 * n.z + 2);
|
||||
return (n.xy / vec2(f)) + vec2(0.5f);
|
||||
vec2 sn;
|
||||
sn.xy = (n.xy * vec2(0.5f,0.5f)) + vec2(0.5f,0.5f);
|
||||
}
|
||||
|
||||
vec3 decode_normal (vec2 enc)
|
||||
{
|
||||
vec2 fenc = enc - 0.5f;
|
||||
float f = dot(fenc,fenc);
|
||||
f = clamp(f,0.0f,1.0f);
|
||||
float g = sqrt(1-f);
|
||||
vec3 n;
|
||||
n.xy = fenc*g;
|
||||
n.z = 1.0f - (f * 0.5f);
|
||||
return normalize(n);
|
||||
vec3 n;
|
||||
n.xy = (enc.xy * vec2(2.0f,2.0f)) - vec2(1.0f,1.0f);
|
||||
n.z = sqrt(1.0f - dot(n.xy,n.xy));
|
||||
return n;
|
||||
}
|
||||
#else
|
||||
vec2 encode_normal(vec3 n)
|
||||
|
|
|
|||
|
|
@ -79,16 +79,18 @@ uniform mat4 inv_proj;
|
|||
uniform vec2 screen_res;
|
||||
|
||||
#ifdef SINGLE_FP_ONLY
|
||||
vec2 encode_normal(vec3 n)
|
||||
{
|
||||
vec2 sn;
|
||||
sn.xy = (n.xy * vec2(0.5f,0.5f)) + vec2(0.5f,0.5f);
|
||||
}
|
||||
|
||||
vec3 decode_normal (vec2 enc)
|
||||
{
|
||||
vec2 fenc = enc - 0.5f;
|
||||
float f = dot(fenc,fenc);
|
||||
f = clamp(f,0.0f,1.0f);
|
||||
float g = sqrt(1-f);
|
||||
vec3 n;
|
||||
n.xy = fenc*g;
|
||||
n.z = 1-f/2;
|
||||
return normalize(n);
|
||||
vec3 n;
|
||||
n.xy = (enc.xy * vec2(2.0f,2.0f)) - vec2(1.0f,1.0f);
|
||||
n.z = sqrt(1.0f - dot(n.xy,n.xy));
|
||||
return n;
|
||||
}
|
||||
#else
|
||||
vec3 decode_normal (vec2 enc)
|
||||
|
|
|
|||
|
|
@ -68,20 +68,16 @@ uniform mat4 inv_proj;
|
|||
#ifdef SINGLE_FP_ONLY
|
||||
vec2 encode_normal(vec3 n)
|
||||
{
|
||||
float f = sqrt(2 * n.z + 2);
|
||||
return (n.xy / vec2(f)) + vec2(0.5f);
|
||||
vec2 sn;
|
||||
sn.xy = (n.xy * vec2(0.5f,0.5f)) + vec2(0.5f,0.5f);
|
||||
}
|
||||
|
||||
vec3 decode_normal (vec2 enc)
|
||||
{
|
||||
vec2 fenc = enc - 0.5f;
|
||||
float f = dot(fenc,fenc);
|
||||
f = clamp(f,0.0f,1.0f);
|
||||
float g = sqrt(1-f);
|
||||
vec3 n;
|
||||
n.xy = fenc*g;
|
||||
n.z = 1.0f - (f * 0.5f);
|
||||
return normalize(n);
|
||||
vec3 n;
|
||||
n.xy = (enc.xy * vec2(2.0f,2.0f)) - vec2(1.0f,1.0f);
|
||||
n.z = sqrt(1.0f - dot(n.xy,n.xy));
|
||||
return n;
|
||||
}
|
||||
#else
|
||||
vec2 encode_normal(vec3 n)
|
||||
|
|
|
|||
|
|
@ -52,20 +52,16 @@ uniform vec2 screen_res;
|
|||
#ifdef SINGLE_FP_ONLY
|
||||
vec2 encode_normal(vec3 n)
|
||||
{
|
||||
float f = sqrt(2 * n.z + 2);
|
||||
return (n.xy / vec2(f)) + vec2(0.5f);
|
||||
vec2 sn;
|
||||
sn.xy = (n.xy * vec2(0.5f,0.5f)) + vec2(0.5f,0.5f);
|
||||
}
|
||||
|
||||
vec3 decode_normal (vec2 enc)
|
||||
{
|
||||
vec2 fenc = enc - 0.5f;
|
||||
float f = dot(fenc,fenc);
|
||||
f = clamp(f,0.0f,1.0f);
|
||||
float g = sqrt(1-f);
|
||||
vec3 n;
|
||||
n.xy = fenc*g;
|
||||
n.z = 1.0f - (f * 0.5f);
|
||||
return normalize(n);
|
||||
vec3 n;
|
||||
n.xy = (enc.xy * vec2(2.0f,2.0f)) - vec2(1.0f,1.0f);
|
||||
n.z = sqrt(1.0f - dot(n.xy,n.xy));
|
||||
return n;
|
||||
}
|
||||
#else
|
||||
vec2 encode_normal(vec3 n)
|
||||
|
|
|
|||
|
|
@ -71,20 +71,16 @@ uniform mat4 inv_proj;
|
|||
#ifdef SINGLE_FP_ONLY
|
||||
vec2 encode_normal(vec3 n)
|
||||
{
|
||||
float f = sqrt(2 * n.z + 2);
|
||||
return (n.xy / vec2(f)) + vec2(0.5f);
|
||||
vec2 sn;
|
||||
sn.xy = (n.xy * vec2(0.5f,0.5f)) + vec2(0.5f,0.5f);
|
||||
}
|
||||
|
||||
vec3 decode_normal (vec2 enc)
|
||||
{
|
||||
vec2 fenc = enc - 0.5f;
|
||||
float f = dot(fenc,fenc);
|
||||
f = clamp(f,0.0f,1.0f);
|
||||
float g = sqrt(1-f);
|
||||
vec3 n;
|
||||
n.xy = fenc*g;
|
||||
n.z = 1.0f - (f * 0.5f);
|
||||
return normalize(n);
|
||||
vec3 n;
|
||||
n.xy = (enc.xy * vec2(2.0f,2.0f)) - vec2(1.0f,1.0f);
|
||||
n.z = sqrt(1.0f - dot(n.xy,n.xy));
|
||||
return n;
|
||||
}
|
||||
#else
|
||||
vec2 encode_normal(vec3 n)
|
||||
|
|
|
|||
|
|
@ -81,20 +81,16 @@ uniform vec2 screen_res;
|
|||
#ifdef SINGLE_FP_ONLY
|
||||
vec2 encode_normal(vec3 n)
|
||||
{
|
||||
float f = sqrt(2 * n.z + 2);
|
||||
return (n.xy / vec2(f)) + vec2(0.5f);
|
||||
vec2 sn;
|
||||
sn.xy = (n.xy * vec2(0.5f,0.5f)) + vec2(0.5f,0.5f);
|
||||
}
|
||||
|
||||
vec3 decode_normal (vec2 enc)
|
||||
{
|
||||
vec2 fenc = enc - 0.5f;
|
||||
float f = dot(fenc,fenc);
|
||||
f = clamp(f,0.0f,1.0f);
|
||||
float g = sqrt(1-f);
|
||||
vec3 n;
|
||||
n.xy = fenc*g;
|
||||
n.z = 1.0f - (f * 0.5f);
|
||||
return normalize(n);
|
||||
vec3 n;
|
||||
n.xy = (enc.xy * vec2(2.0f,2.0f)) - vec2(1.0f,1.0f);
|
||||
n.z = sqrt(1.0f - dot(n.xy,n.xy));
|
||||
return n;
|
||||
}
|
||||
#else
|
||||
vec2 encode_normal(vec3 n)
|
||||
|
|
|
|||
|
|
@ -71,20 +71,16 @@ uniform mat4 inv_proj;
|
|||
#ifdef SINGLE_FP_ONLY
|
||||
vec2 encode_normal(vec3 n)
|
||||
{
|
||||
float f = sqrt(2 * n.z + 2);
|
||||
return (n.xy / vec2(f)) + vec2(0.5f);
|
||||
vec2 sn;
|
||||
sn.xy = (n.xy * vec2(0.5f,0.5f)) + vec2(0.5f,0.5f);
|
||||
}
|
||||
|
||||
vec3 decode_normal (vec2 enc)
|
||||
{
|
||||
vec2 fenc = enc - 0.5f;
|
||||
float f = dot(fenc,fenc);
|
||||
f = clamp(f,0.0f,1.0f);
|
||||
float g = sqrt(1-f);
|
||||
vec3 n;
|
||||
n.xy = fenc*g;
|
||||
n.z = 1.0f - (f * 0.5f);
|
||||
return normalize(n);
|
||||
vec3 n;
|
||||
n.xy = (enc.xy * vec2(2.0f,2.0f)) - vec2(1.0f,1.0f);
|
||||
n.z = sqrt(1.0f - dot(n.xy,n.xy));
|
||||
return n;
|
||||
}
|
||||
#else
|
||||
vec2 encode_normal(vec3 n)
|
||||
|
|
|
|||
|
|
@ -68,20 +68,16 @@ uniform float spot_shadow_offset;
|
|||
#ifdef SINGLE_FP_ONLY
|
||||
vec2 encode_normal(vec3 n)
|
||||
{
|
||||
float f = sqrt(2 * n.z + 2);
|
||||
return (n.xy / vec2(f)) + vec2(0.5f);
|
||||
vec2 sn;
|
||||
sn.xy = (n.xy * vec2(0.5f,0.5f)) + vec2(0.5f,0.5f);
|
||||
}
|
||||
|
||||
vec3 decode_normal (vec2 enc)
|
||||
{
|
||||
vec2 fenc = enc - 0.5f;
|
||||
float f = dot(fenc,fenc);
|
||||
f = clamp(f,0.0f,1.0f);
|
||||
float g = sqrt(1-f);
|
||||
vec3 n;
|
||||
n.xy = fenc*g;
|
||||
n.z = 1.0f - (f * 0.5f);
|
||||
return normalize(n);
|
||||
vec3 n;
|
||||
n.xy = (enc.xy * vec2(2.0f,2.0f)) - vec2(1.0f,1.0f);
|
||||
n.z = sqrt(1.0f - dot(n.xy,n.xy));
|
||||
return n;
|
||||
}
|
||||
#else
|
||||
vec2 encode_normal(vec3 n)
|
||||
|
|
|
|||
|
|
@ -69,20 +69,16 @@ uniform float spot_shadow_offset;
|
|||
#ifdef SINGLE_FP_ONLY
|
||||
vec2 encode_normal(vec3 n)
|
||||
{
|
||||
float f = sqrt(2 * n.z + 2);
|
||||
return (n.xy / vec2(f)) + vec2(0.5f);
|
||||
vec2 sn;
|
||||
sn.xy = (n.xy * vec2(0.5f,0.5f)) + vec2(0.5f,0.5f);
|
||||
}
|
||||
|
||||
vec3 decode_normal (vec2 enc)
|
||||
{
|
||||
vec2 fenc = enc - 0.5f;
|
||||
float f = dot(fenc,fenc);
|
||||
f = clamp(f,0.0f,1.0f);
|
||||
float g = sqrt(1-f);
|
||||
vec3 n;
|
||||
n.xy = fenc*g;
|
||||
n.z = 1.0f - (f * 0.5f);
|
||||
return normalize(n);
|
||||
vec3 n;
|
||||
n.xy = (enc.xy * vec2(2.0f,2.0f)) - vec2(1.0f,1.0f);
|
||||
n.z = sqrt(1.0f - dot(n.xy,n.xy));
|
||||
return n;
|
||||
}
|
||||
#else
|
||||
vec2 encode_normal(vec3 n)
|
||||
|
|
|
|||
Loading…
Reference in New Issue