Files
Kepler/shaders/ambientOcclusion.shader
2025-11-17 17:18:43 +01:00

225 lines
8.9 KiB
GLSL
Executable File

/**
* Kepler - Core
* STUDIOS
* All rights reserved.
* Obfuscated by Shader closure (A product of kaj dijkstra)
*/
/**
* Author: Kaj Dijksta
*/
attribute vec2 uv;
attribute vec3 position;
uniform mat4 viewProjection;
varying vec2 v_uv;
void main ( void ) {
v_uv = uv;
gl_Position = viewProjection *vec4 ( position , 1.0 );
}
// #keplerEngine - Split
#ifndef AMBIANT_ONLY
#define AMBIANT_ONLY 0
#endif
precision highp float;
varying vec2 v_uv;
uniform sampler2D infoSampler;
uniform sampler2D randomSampler;
uniform float screenWidth;
uniform float screenHeight;
uniform vec3 cameraPosition;
uniform float far;
uniform vec3 scale[ 32 ];
uniform vec4 kernelRad[ 8 ];
struct fragmentPass { highp vec2 uv; mediump vec4 diffuse; mediump vec3 normal; mediump vec3 positionWorld; mediump float ambiantOcclusion; highp float far; highp float depth; highp float depthNorm; };
float function_0 ( vec3 var_0 , vec3 var_1 , vec3 var_2 , float var_3 )
{
mediump vec3 var_4 = reflect ( -var_2 , var_0 );
return pow ( clamp ( dot ( var_1 , var_4 ) , 0.0 , 1.0 ) , var_3 );
}
float function_1 ( vec2 var_0 ) {
mediump vec4 var_1 = vec4 (.6 , 0.075 , 1.0 , 1.0 );
const mediump float var_2 = 1.0 -1.0 /8.0;
const mediump float var_3 = 0.025;
mediump float var_4 = 0.0;
mediump vec3 var_5[8];
var_5[0] = normalize ( vec3 ( 1.0 , 1.0 , 1.0 ) ) *var_3 *( var_4 += var_2 );
var_5[1] = normalize ( vec3 ( -1.0 , -1.0 , -1.0 ) ) *var_3 *( var_4 += var_2 );
var_5[2] = normalize ( vec3 ( -1.0 , -1.0 , 1.0 ) ) *var_3 *( var_4 += var_2 );
var_5[3] = normalize ( vec3 ( -1.0 , 1.0 , -1.0 ) ) *var_3 *( var_4 += var_2 );
var_5[4] = normalize ( vec3 ( -1.0 , 1.0 , 1.0 ) ) *var_3 *( var_4 += var_2 );
var_5[5] = normalize ( vec3 ( 1.0 , -1.0 , -1.0 ) ) *var_3 *( var_4 += var_2 );
var_5[6] = normalize ( vec3 ( 1.0 , -1.0 , 1.0 ) ) *var_3 *( var_4 += var_2 );
var_5[7] = normalize ( vec3 ( 1.0 , 1.0 , -1.0 ) ) *var_3 *( var_4 += var_2 );
mediump vec3 var_6 = texture2D ( randomSampler , vec2 ( screenWidth , screenHeight ) *var_0 /4.0 ).xyz *2.0 -1.0;
mediump float var_7 = texture2D ( infoSampler , var_0 ).w;
mediump float var_8 = var_7 *far;
mediump vec3 var_9 = var_1.zzw *clamp ( var_8 /5.3 , 0.0 , 1.0 ) *( 1.0 +var_8 /8.0 );
mediump float var_10 = far /var_9.z *0.75;
var_9.xy *= 1.0 /var_8;
var_9.z *= 2.0 /far;
float var_11 = 64.0 /var_9.z;
mediump vec4 var_12[2];
mediump vec4 var_13 = vec4 ( 0.0 );
mediump vec3 var_14;
mediump vec4 var_15;
highp vec4 var_16 = vec4 ( 0.0 );
const float var_17 = 0.2;
vec4 var_18;
var_14 = reflect ( var_5[0] , var_6 ) *var_9;
var_12[0].x = texture2D ( infoSampler , var_0.xy +var_14.xy ).w +var_14.z;
var_14.xyz *= var_17;
var_12[1].x = texture2D ( infoSampler , var_0.xy +var_14.xy ).w +var_14.z;
var_14 = reflect ( var_5[1] , var_6 ) *var_9;
var_12[0].y = texture2D ( infoSampler , var_0.xy +var_14.xy ).w +var_14.z;
var_14.xyz *= var_17;
var_12[1].y = texture2D ( infoSampler , var_0.xy +var_14.xy ).w +var_14.z;
var_14 = reflect ( var_5[2] , var_6 ) *var_9;
var_12[0].z = texture2D ( infoSampler , var_0.xy +var_14.xy ).w +var_14.z;
var_14.xyz *= var_17;
var_12[1].z = texture2D ( infoSampler , var_0.xy +var_14.xy ).w +var_14.z;
var_14 = reflect ( var_5[3] , var_6 ) *var_9;
var_12[0].w = texture2D ( infoSampler , var_0.xy +var_14.xy ).w +var_14.z;
var_14.xyz *= var_17;
var_12[1].w = texture2D ( infoSampler , var_0.xy +var_14.xy ).w +var_14.z;
const float var_19 = 0.001;
var_15 = var_7 -var_12[0];
var_18 = var_15 *var_10;
var_16 = ( clamp ( abs ( var_18 ) , 0.0 , 1.0 ) +clamp ( var_18 , 0.0 , 1.0 ) ) /2.0;
var_13 += mix ( clamp ( ( -var_15 ) *var_11 , 0.0 , 1.0 ) , vec4 ( var_19 ) , var_16 );
var_15 = var_7 -var_12[1];
var_18 = var_15 *var_10;
var_16 = ( clamp ( abs ( var_18 ) , 0.0 , 1.0 ) +clamp ( var_18 , 0.0 , 1.0 ) ) /2.0;
var_13 += mix ( clamp ( ( -var_15 ) *var_11 , 0.0 , 1.0 ) , vec4 ( var_19 ) , var_16 );
float var_20 = dot ( var_13 , vec4 ( ( 1.0 /16.0 ) *2.0 ) ) -var_1.y;
var_20 = clamp ( mix ( 0.9 , var_20 , var_1.x ) , 0.0 , 1.0 );
return var_20;
}
float function_2 ( vec2 var_0 , float var_1 , vec3 var_2 )
{
const mediump float var_3 = 0.4;
const mediump int var_4 = 16;
const mediump float var_5 = 0.05;
const mediump float var_6 = var_3 /( float ( var_4 ) /2.0 );
const mediump float var_7 = 1000.0;
mediump float var_8 = 2.8 *( 1.0 +sqrt ( var_5 ) ) /var_7;
const mediump float var_9 = 1.0 -2.8;
mediump vec3 var_10 = texture2D ( randomSampler , vec2 ( screenWidth , screenHeight ) *var_0 /4.0 ).xyz *2.0 -1.0;
mediump vec4 var_11 = vec4 ( var_7 /var_1 );
mediump vec4 var_12 = vec4 ( 0.0 );
for ( int var_13 = 0; var_13 < var_4 /4; var_13 ++)
{
mediump vec4 var_14 = vec4 ( 0.0 );
mediump vec4 var_15 = vec4 ( 0.0 );
mediump vec4 var_16 = vec4 ( 0.0 );
for ( int var_17 = 0; var_17 < 4; ++var_17 )
{
mediump vec3 var_18 = reflect ( scale[4 *var_13 +var_17] , var_10 );
var_16[var_17] = dot ( var_18 , var_2 );
var_18 = ( var_16[var_17] >= 0.0 ) ? var_18 : -var_18;
var_14[var_17] = texture2D ( infoSampler , var_0.xy +var_18.xy ).w;
var_15[var_17] = var_18.z;
}
var_14 = var_14 *var_11;
mediump vec4 var_19 = clamp ( var_7 +var_15 *( 2.0 *var_7 ) -var_14 , 0.0 , 1.0 );
var_19 *= clamp ( var_8 *var_14 +var_9 , 0.0 , 1.0 );
var_19 *= ( abs ( var_16 ) *kernelRad[var_13] );
var_12 += var_19;
}
var_12 *= var_6;
lowp float var_20 = 1.0 -dot ( vec4 ( 1.0 ) , var_12 );
return var_20;
}
float function_3 ( vec2 var_0 , float var_1 , vec3 var_2 )
{
const mediump vec4 var_3 = vec4 ( 1. , 0.075 , 1.0 , 2.0 );
const int var_4 = 8;
const mediump float var_5 = 0.6;
const mediump float var_6 = 1.0 /var_5;
const mediump float var_7 = 2.5;
const mediump float var_8 = var_3.x;
vec3 var_9[16];
var_9[0] = vec3 ( -0.055664 , -0.00371090 , -0.0654297 );
var_9[1] = vec3 ( 0.0173828 , 0.0111328 , 0.0064453 );
var_9[2] = vec3 ( 0.0001953 , 0.008203100000000001 , -0.0060547 );
var_9[3] = vec3 ( 0.0220703 , -0.035937500000000004 , -0.00625 );
var_9[4] = vec3 ( 0.0242188 , 0.012695300000000001 , -0.025 );
var_9[5] = vec3 ( 0.0070313 , -0.0025391000000000003 , 0.014843799999999999 );
var_9[6] = vec3 ( -0.007812 , 0.0013672 , -0.0314453 );
var_9[7] = vec3 ( 0.0117188 , -0.0140625 , -0.019921900000000003 );
var_9[8] = vec3 ( -0.025195 , -0.055859400000000003 , 0.008203100000000001 );
var_9[9] = vec3 ( 0.0308594 , 0.019335900000000003 , 0.0324219 );
var_9[10] = vec3 ( 0.0173828 , -0.0140625 , 0.003125 );
var_9[11] = vec3 ( 0.0179688 , -0.0044922 , 0.004687500000000001 );
var_9[12] = vec3 ( -0.014648 , -0.020117200000000002 , -0.0029297000000000004 );
var_9[13] = vec3 ( -0.030078 , 0.0234375 , 0.0539063 );
var_9[14] = vec3 ( 0.0228516 , 0.0154297 , -0.0119141 );
var_9[15] = vec3 ( -0.011914 , -0.00039060000000000006 , -0.006640600000000001 );
mediump vec3 var_10 = texture2D ( randomSampler , vec2 ( screenWidth , screenHeight ) *var_0 /4.0 ).xyz *2.0 -1.0;
mediump vec4 var_11 = vec4 ( 1.0 /var_1 );
mediump vec4 var_12 = vec4 ( 0.0 );
for ( int var_13 = 0; var_13 < var_4; var_13 += 4 )
{
mediump vec4 var_14 = vec4 ( 0.0 );
mediump vec4 var_15 = vec4 ( 0.0 );
mediump vec4 var_16;
mediump vec4 var_17;
for ( int var_18 = 0; var_18 < 4; ++var_18 )
{
mediump vec3 var_19 = reflect ( var_9[var_13 +var_18] , var_10 );
float var_20 = dot ( var_19 , var_2 );
var_19 = ( var_20 >= 0.0 ) ? var_19 : -var_19;
var_14[var_18] = texture2D ( infoSampler , ( var_0 +var_19.xy ) ).w;
var_15[var_18] = var_19.z;
}
var_14 = var_14 *var_11;
mediump vec4 var_21 = ( 1.0 +var_15 *2. -var_14 ) *var_6;
var_16 = clamp ( var_7 *var_21 , 0.0 , 1.0 );
var_17 = clamp ( 1.0 /var_21 , 0.0 , 1.0 );
var_12 += var_16 *var_17;
}
var_12 *= var_8 /float ( var_4 );
mediump float var_22 = dot ( vec4 ( 1.0 ) , var_12 );
return 1.0 -var_22;
}
mediump vec3 function_4 ( mediump vec2 var_0 ) {
mediump vec2 var_1 = var_0 *4.0 -2.0;
mediump float var_2 = dot ( var_1 , var_1 );
mediump float var_3 = sqrt ( 1.0 -var_2 /4.0 );
mediump vec3 var_4;
var_4.xy = var_1 *var_3;
var_4.z = 1.0 -var_2 /2.0;
return var_4;
}
void main ( void ) {
vec4 var_0 = texture2D ( infoSampler , v_uv );
float var_1 = var_0.w ;
//vec3 var_3 = function_4 ( var_0.yz );
vec3 var_3 = var_0.xyz;
float var_4;
// var_4 = function_1 ( v_uv );
var_4 = function_3 ( v_uv , var_1 , var_3 );
gl_FragColor = vec4 ( var_4 , var_4 , var_4 , 1.0 );
//gl_FragColor = vec4(v_uv, 0.0, 1.0);
//gl_FragColor = vec4(vec3(texture2D ( infoSampler , v_uv).w/10.),1.0);//werkt
// gl_FragColor = vec4(vec3(texture2D ( infoSampler , v_uv).xyz),1.0);//werkt
//gl_FragColor = vec4(texture2D ( randomSampler, v_uv).xyz , 1.0);//werkt
}