|
@@ -4,26 +4,6 @@
|
|
|
#define LOG2 1.442695
|
|
|
#define EPSILON 1e-6
|
|
|
|
|
|
-float square( in float a ) { return a * a; }
|
|
|
-vec2 square( in vec2 a ) { return vec2( a.x * a.x, a.y * a.y ); }
|
|
|
-vec3 square( in vec3 a ) { return vec3( a.x * a.x, a.y * a.y, a.z * a.z ); }
|
|
|
-vec4 square( in vec4 a ) { return vec4( a.x * a.x, a.y * a.y, a.z * a.z, a.w * a.w ); }
|
|
|
-
|
|
|
-float saturate( in float a ) { return clamp( a, 0.0, 1.0 ); }
|
|
|
-vec2 saturate( in vec2 a ) { return clamp( a, 0.0, 1.0 ); }
|
|
|
-vec3 saturate( in vec3 a ) { return clamp( a, 0.0, 1.0 ); }
|
|
|
-vec4 saturate( in vec4 a ) { return clamp( a, 0.0, 1.0 ); }
|
|
|
-
|
|
|
-float average( in float a ) { return a; }
|
|
|
-float average( in vec2 a ) { return ( a.x + a.y ) * 0.5; }
|
|
|
-float average( in vec3 a ) { return ( a.x + a.y + a.z ) / 3.0; }
|
|
|
-float average( in vec4 a ) { return ( a.x + a.y + a.z + a.w ) * 0.25; }
|
|
|
-
|
|
|
-float whiteCompliment( in float a ) { return saturate( 1.0 - a ); }
|
|
|
-vec2 whiteCompliment( in vec2 a ) { return saturate( vec2( 1.0 ) - a ); }
|
|
|
-vec3 whiteCompliment( in vec3 a ) { return saturate( vec3( 1.0 ) - a ); }
|
|
|
-vec4 whiteCompliment( in vec4 a ) { return saturate( vec4( 1.0 ) - a ); }
|
|
|
-
|
|
|
vec3 transformDirection( in vec3 normal, in mat4 matrix ) {
|
|
|
|
|
|
return normalize( ( matrix * vec4( normal, 0.0 ) ).xyz );
|
|
@@ -39,9 +19,9 @@ vec3 inverseTransformDirection( in vec3 normal, in mat4 matrix ) {
|
|
|
|
|
|
vec3 projectOnPlane(in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {
|
|
|
|
|
|
- float distance = dot( planeNormal, point-pointOnPlane );
|
|
|
+ float distance = dot( planeNormal, point - pointOnPlane );
|
|
|
|
|
|
- return point - distance * planeNormal;
|
|
|
+ return - distance * planeNormal + point;
|
|
|
|
|
|
}
|
|
|
|
|
@@ -53,7 +33,7 @@ float sideOfPlane( in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {
|
|
|
|
|
|
vec3 linePlaneIntersect( in vec3 pointOnLine, in vec3 lineDirection, in vec3 pointOnPlane, in vec3 planeNormal ) {
|
|
|
|
|
|
- return pointOnLine + lineDirection * ( dot( planeNormal, pointOnPlane - pointOnLine ) / dot( planeNormal, lineDirection ) );
|
|
|
+ return lineDirection * ( dot( planeNormal, pointOnPlane - pointOnLine ) / dot( planeNormal, lineDirection ) ) + pointOnLine;
|
|
|
|
|
|
}
|
|
|
|
|
@@ -61,7 +41,7 @@ float calcLightAttenuation( float lightDistance, float cutoffDistance, float dec
|
|
|
|
|
|
if ( decayExponent > 0.0 ) {
|
|
|
|
|
|
- return pow( saturate( 1.0 - lightDistance / cutoffDistance ), decayExponent );
|
|
|
+ return pow( clamp( -lightDistance / cutoffDistance + 1.0, 0.0, 1.0 ), decayExponent );
|
|
|
|
|
|
}
|
|
|
|
|
@@ -71,7 +51,7 @@ float calcLightAttenuation( float lightDistance, float cutoffDistance, float dec
|
|
|
|
|
|
vec3 F_Schlick( in vec3 specularColor, in float dotLH ) {
|
|
|
|
|
|
- return specularColor + ( 1.0 - specularColor ) * pow( 1.0 - dotLH, 5.0 );
|
|
|
+ return ( 1.0 - specularColor ) * pow( 1.0 - dotLH, 5.0 ) + specularColor;
|
|
|
|
|
|
}
|
|
|
|