|
@@ -61,15 +61,6 @@ THREE.SSAOShader = {
|
|
|
"#define DL 2.399963229728653", // PI * ( 3.0 - sqrt( 5.0 ) )
|
|
|
"#define EULER 2.718281828459045",
|
|
|
|
|
|
- // helpers
|
|
|
-
|
|
|
- "float width = size.x;", // texture width
|
|
|
- "float height = size.y;", // texture height
|
|
|
-
|
|
|
- "float cameraFarPlusNear = cameraFar + cameraNear;",
|
|
|
- "float cameraFarMinusNear = cameraFar - cameraNear;",
|
|
|
- "float cameraCoef = 2.0 * cameraNear;",
|
|
|
-
|
|
|
// user variables
|
|
|
|
|
|
"const int samples = 8;", // ao sample count
|
|
@@ -107,8 +98,8 @@ THREE.SSAOShader = {
|
|
|
|
|
|
"} else {",
|
|
|
|
|
|
- "float ff = fract( 1.0 - coord.s * ( width / 2.0 ) );",
|
|
|
- "float gg = fract( coord.t * ( height / 2.0 ) );",
|
|
|
+ "float ff = fract( 1.0 - coord.s * ( size.x / 2.0 ) );",
|
|
|
+ "float gg = fract( coord.t * ( size.y / 2.0 ) );",
|
|
|
|
|
|
"noise = vec2( 0.25, 0.75 ) * vec2( ff ) + vec2( 0.75, 0.25 ) * gg;",
|
|
|
|
|
@@ -120,6 +111,10 @@ THREE.SSAOShader = {
|
|
|
|
|
|
"float readDepth( const in vec2 coord ) {",
|
|
|
|
|
|
+ "float cameraFarPlusNear = cameraFar + cameraNear;",
|
|
|
+ "float cameraFarMinusNear = cameraFar - cameraNear;",
|
|
|
+ "float cameraCoef = 2.0 * cameraNear;",
|
|
|
+
|
|
|
// "return ( 2.0 * cameraNear ) / ( cameraFar + cameraNear - unpackDepth( texture2D( tDepth, coord ) ) * ( cameraFar - cameraNear ) );",
|
|
|
"return cameraCoef / ( cameraFarPlusNear - unpackDepth( texture2D( tDepth, coord ) ) * cameraFarMinusNear );",
|
|
|
|
|
@@ -183,8 +178,8 @@ THREE.SSAOShader = {
|
|
|
|
|
|
"float tt = clamp( depth, aoClamp, 1.0 );",
|
|
|
|
|
|
- "float w = ( 1.0 / width ) / tt + ( noise.x * ( 1.0 - noise.x ) );",
|
|
|
- "float h = ( 1.0 / height ) / tt + ( noise.y * ( 1.0 - noise.y ) );",
|
|
|
+ "float w = ( 1.0 / size.x ) / tt + ( noise.x * ( 1.0 - noise.x ) );",
|
|
|
+ "float h = ( 1.0 / size.y ) / tt + ( noise.y * ( 1.0 - noise.y ) );",
|
|
|
|
|
|
"float ao = 0.0;",
|
|
|
|