mirror of
https://github.com/scratchfoundation/bgfx.git
synced 2024-11-25 17:18:12 -05:00
355 lines
8.8 KiB
Text
355 lines
8.8 KiB
Text
struct v2f_ao {
|
|
highp vec4 pos;
|
|
highp vec2 uv;
|
|
highp vec2 uvr;
|
|
};
|
|
uniform sampler2D _CameraDepthNormalsTexture;
|
|
uniform sampler2D _RandomTexture;
|
|
uniform highp vec4 _Params;
|
|
uniform highp vec4 _ProjectionParams;
|
|
varying highp vec2 xlv_TEXCOORD0;
|
|
varying highp vec2 xlv_TEXCOORD1;
|
|
mediump float xll_saturate_f (
|
|
in mediump float x_1
|
|
)
|
|
{
|
|
mediump float tmpvar_2;
|
|
tmpvar_2 = clamp (x_1, 0.0, 1.0);
|
|
return tmpvar_2;
|
|
}
|
|
|
|
mediump vec2 xll_saturate_vf2 (
|
|
in mediump vec2 x_3
|
|
)
|
|
{
|
|
mediump vec2 tmpvar_4;
|
|
tmpvar_4 = clamp (x_3, 0.0, 1.0);
|
|
return tmpvar_4;
|
|
}
|
|
|
|
mediump vec3 xll_saturate_vf3 (
|
|
in mediump vec3 x_5
|
|
)
|
|
{
|
|
mediump vec3 tmpvar_6;
|
|
tmpvar_6 = clamp (x_5, 0.0, 1.0);
|
|
return tmpvar_6;
|
|
}
|
|
|
|
mediump vec4 xll_saturate_vf4 (
|
|
in mediump vec4 x_7
|
|
)
|
|
{
|
|
mediump vec4 tmpvar_8;
|
|
tmpvar_8 = clamp (x_7, 0.0, 1.0);
|
|
return tmpvar_8;
|
|
}
|
|
|
|
mediump mat2 xll_saturate_mf2x2 (
|
|
in mediump mat2 m_9
|
|
)
|
|
{
|
|
mediump vec2 tmpvar_10;
|
|
tmpvar_10 = clamp (m_9[0], 0.0, 1.0);
|
|
mediump vec2 tmpvar_11;
|
|
tmpvar_11 = clamp (m_9[1], 0.0, 1.0);
|
|
mediump mat2 tmpvar_12;
|
|
mediump vec2 tmpvar_13;
|
|
tmpvar_13 = tmpvar_10;
|
|
tmpvar_12[0] = tmpvar_13;
|
|
mediump vec2 tmpvar_14;
|
|
tmpvar_14 = tmpvar_11;
|
|
tmpvar_12[1] = tmpvar_14;
|
|
return tmpvar_12;
|
|
}
|
|
|
|
mediump mat3 xll_saturate_mf3x3 (
|
|
in mediump mat3 m_15
|
|
)
|
|
{
|
|
mediump vec3 tmpvar_16;
|
|
tmpvar_16 = clamp (m_15[0], 0.0, 1.0);
|
|
mediump vec3 tmpvar_17;
|
|
tmpvar_17 = clamp (m_15[1], 0.0, 1.0);
|
|
mediump vec3 tmpvar_18;
|
|
tmpvar_18 = clamp (m_15[2], 0.0, 1.0);
|
|
mediump mat3 tmpvar_19;
|
|
mediump vec3 tmpvar_20;
|
|
tmpvar_20 = tmpvar_16;
|
|
tmpvar_19[0] = tmpvar_20;
|
|
mediump vec3 tmpvar_21;
|
|
tmpvar_21 = tmpvar_17;
|
|
tmpvar_19[1] = tmpvar_21;
|
|
mediump vec3 tmpvar_22;
|
|
tmpvar_22 = tmpvar_18;
|
|
tmpvar_19[2] = tmpvar_22;
|
|
return tmpvar_19;
|
|
}
|
|
|
|
mediump mat4 xll_saturate_mf4x4 (
|
|
in mediump mat4 m_23
|
|
)
|
|
{
|
|
mediump vec4 tmpvar_24;
|
|
tmpvar_24 = clamp (m_23[0], 0.0, 1.0);
|
|
mediump vec4 tmpvar_25;
|
|
tmpvar_25 = clamp (m_23[1], 0.0, 1.0);
|
|
mediump vec4 tmpvar_26;
|
|
tmpvar_26 = clamp (m_23[2], 0.0, 1.0);
|
|
mediump vec4 tmpvar_27;
|
|
tmpvar_27 = clamp (m_23[3], 0.0, 1.0);
|
|
mediump mat4 tmpvar_28;
|
|
mediump vec4 tmpvar_29;
|
|
tmpvar_29 = tmpvar_24;
|
|
tmpvar_28[0] = tmpvar_29;
|
|
mediump vec4 tmpvar_30;
|
|
tmpvar_30 = tmpvar_25;
|
|
tmpvar_28[1] = tmpvar_30;
|
|
mediump vec4 tmpvar_31;
|
|
tmpvar_31 = tmpvar_26;
|
|
tmpvar_28[2] = tmpvar_31;
|
|
mediump vec4 tmpvar_32;
|
|
tmpvar_32 = tmpvar_27;
|
|
tmpvar_28[3] = tmpvar_32;
|
|
return tmpvar_28;
|
|
}
|
|
|
|
float DecodeFloatRG (
|
|
in highp vec2 enc_33
|
|
)
|
|
{
|
|
highp vec2 kDecodeDot_34;
|
|
mediump vec2 tmpvar_35;
|
|
tmpvar_35 = vec2(1.0, 0.00392157);
|
|
kDecodeDot_34 = tmpvar_35;
|
|
highp float tmpvar_36;
|
|
tmpvar_36 = dot (enc_33, kDecodeDot_34);
|
|
return tmpvar_36;
|
|
}
|
|
|
|
vec3 DecodeViewNormalStereo (
|
|
in highp vec4 enc4_37
|
|
)
|
|
{
|
|
highp vec3 n_38;
|
|
highp float g_39;
|
|
highp vec3 nn_40;
|
|
highp float kScale_41;
|
|
mediump float tmpvar_42;
|
|
tmpvar_42 = 1.7777;
|
|
kScale_41 = tmpvar_42;
|
|
highp vec3 tmpvar_43;
|
|
tmpvar_43.z = 0.0;
|
|
tmpvar_43.x = (2.0 * kScale_41);
|
|
tmpvar_43.y = (2.0 * kScale_41);
|
|
highp vec3 tmpvar_44;
|
|
tmpvar_44.z = 1.0;
|
|
tmpvar_44.x = -(kScale_41);
|
|
tmpvar_44.y = -(kScale_41);
|
|
highp vec3 tmpvar_45;
|
|
tmpvar_45 = ((enc4_37.xyz * tmpvar_43) + tmpvar_44);
|
|
nn_40 = tmpvar_45;
|
|
highp float tmpvar_46;
|
|
tmpvar_46 = dot (nn_40.xyz, nn_40.xyz);
|
|
highp float tmpvar_47;
|
|
tmpvar_47 = (2.0 / tmpvar_46);
|
|
g_39 = tmpvar_47;
|
|
highp vec2 tmpvar_48;
|
|
tmpvar_48 = (g_39 * nn_40.xy);
|
|
n_38.xy = tmpvar_48.xy.xy;
|
|
highp float tmpvar_49;
|
|
tmpvar_49 = (g_39 - 1.0);
|
|
n_38.z = vec3(tmpvar_49).z;
|
|
return n_38;
|
|
}
|
|
|
|
void DecodeDepthNormal (
|
|
in highp vec4 enc_50,
|
|
out highp float depth_51,
|
|
out highp vec3 normal_52
|
|
)
|
|
{
|
|
highp float tmpvar_53;
|
|
tmpvar_53 = DecodeFloatRG (enc_50.zw);
|
|
highp float tmpvar_54;
|
|
tmpvar_54 = tmpvar_53;
|
|
depth_51 = tmpvar_54;
|
|
highp vec3 tmpvar_55;
|
|
tmpvar_55 = DecodeViewNormalStereo (enc_50);
|
|
highp vec3 tmpvar_56;
|
|
tmpvar_56 = tmpvar_55;
|
|
normal_52 = tmpvar_56;
|
|
}
|
|
|
|
mediump float frag_ao (
|
|
in v2f_ao i_57,
|
|
in int sampleCount_58,
|
|
in highp vec3 samples_59[8]
|
|
)
|
|
{
|
|
int s_60;
|
|
highp float occ_61;
|
|
highp float scale_62;
|
|
highp float depth_63;
|
|
highp vec3 viewNorm_64;
|
|
highp vec4 depthnormal_65;
|
|
mediump vec3 randN_66;
|
|
lowp vec4 tmpvar_67;
|
|
tmpvar_67 = texture2D (_RandomTexture, i_57.uvr);
|
|
lowp vec3 tmpvar_68;
|
|
tmpvar_68 = ((tmpvar_67.xyz * 2.0) - 1.0);
|
|
randN_66 = tmpvar_68;
|
|
lowp vec4 tmpvar_69;
|
|
tmpvar_69 = texture2D (_CameraDepthNormalsTexture, i_57.uv);
|
|
lowp vec4 tmpvar_70;
|
|
tmpvar_70 = tmpvar_69;
|
|
depthnormal_65 = tmpvar_70;
|
|
DecodeDepthNormal (depthnormal_65, depth_63, viewNorm_64);
|
|
highp float tmpvar_71;
|
|
tmpvar_71 = (depth_63 * _ProjectionParams.z);
|
|
depth_63 = tmpvar_71;
|
|
highp float tmpvar_72;
|
|
tmpvar_72 = (_Params.x / depth_63);
|
|
scale_62 = tmpvar_72;
|
|
mediump float tmpvar_73;
|
|
tmpvar_73 = 0.0;
|
|
occ_61 = tmpvar_73;
|
|
int tmpvar_74;
|
|
tmpvar_74 = 0;
|
|
s_60 = tmpvar_74;
|
|
while (true) {
|
|
highp float zd_75;
|
|
highp vec3 sampleN_76;
|
|
highp float sampleD_77;
|
|
highp vec4 sampleND_78;
|
|
highp float sD_79;
|
|
highp vec2 offset_80;
|
|
mediump float flip_81;
|
|
mediump vec3 randomDir_82;
|
|
if (!((s_60 < sampleCount_58))) {
|
|
break;
|
|
};
|
|
highp vec3 tmpvar_83;
|
|
tmpvar_83 = reflect (samples_59[s_60], randN_66);
|
|
highp vec3 tmpvar_84;
|
|
tmpvar_84 = tmpvar_83;
|
|
randomDir_82 = tmpvar_84;
|
|
highp float tmpvar_85;
|
|
tmpvar_85 = dot (viewNorm_64, randomDir_82);
|
|
mediump float tmpvar_86;
|
|
if ((tmpvar_85 < 0.0)) {
|
|
tmpvar_86 = 1.0;
|
|
} else {
|
|
tmpvar_86 = -(1.0);
|
|
};
|
|
mediump float tmpvar_87;
|
|
tmpvar_87 = tmpvar_86;
|
|
flip_81 = tmpvar_87;
|
|
mediump vec3 tmpvar_88;
|
|
tmpvar_88 = (randomDir_82 * -(flip_81));
|
|
randomDir_82 = tmpvar_88;
|
|
highp vec3 tmpvar_89;
|
|
tmpvar_89 = (randomDir_82 + (viewNorm_64 * 0.3));
|
|
randomDir_82 = tmpvar_89;
|
|
highp vec2 tmpvar_90;
|
|
tmpvar_90 = (randomDir_82.xy * scale_62);
|
|
offset_80 = tmpvar_90;
|
|
highp float tmpvar_91;
|
|
tmpvar_91 = (depth_63 - (randomDir_82.z * _Params.x));
|
|
sD_79 = tmpvar_91;
|
|
lowp vec4 tmpvar_92;
|
|
tmpvar_92 = texture2D (_CameraDepthNormalsTexture, (i_57.uv + offset_80));
|
|
lowp vec4 tmpvar_93;
|
|
tmpvar_93 = tmpvar_92;
|
|
sampleND_78 = tmpvar_93;
|
|
DecodeDepthNormal (sampleND_78, sampleD_77, sampleN_76);
|
|
highp float tmpvar_94;
|
|
tmpvar_94 = (sampleD_77 * _ProjectionParams.z);
|
|
sampleD_77 = tmpvar_94;
|
|
mediump float tmpvar_95;
|
|
tmpvar_95 = xll_saturate_f ((sD_79 - sampleD_77));
|
|
mediump float tmpvar_96;
|
|
tmpvar_96 = tmpvar_95;
|
|
zd_75 = tmpvar_96;
|
|
if ((zd_75 > _Params.y)) {
|
|
highp float tmpvar_97;
|
|
tmpvar_97 = pow ((1.0 - zd_75), _Params.z);
|
|
highp float tmpvar_98;
|
|
tmpvar_98 = (occ_61 + tmpvar_97);
|
|
occ_61 = tmpvar_98;
|
|
};
|
|
int tmpvar_99;
|
|
tmpvar_99 = (s_60 + 1);
|
|
s_60 = tmpvar_99;
|
|
};
|
|
highp float tmpvar_100;
|
|
tmpvar_100 = (occ_61 / float(sampleCount_58));
|
|
occ_61 = tmpvar_100;
|
|
return (1.0 - occ_61);
|
|
}
|
|
|
|
mediump vec4 xlat_main (
|
|
in v2f_ao i_101
|
|
)
|
|
{
|
|
highp vec3 RAND_SAMPLES_102[8];
|
|
mediump vec3 tmpvar_103;
|
|
tmpvar_103 = vec3(0.0130572, 0.587232, -0.119337);
|
|
RAND_SAMPLES_102[0] = tmpvar_103;
|
|
mediump vec3 tmpvar_104;
|
|
tmpvar_104 = vec3(0.323078, 0.0220727, -0.418873);
|
|
RAND_SAMPLES_102[1] = tmpvar_104;
|
|
mediump vec3 tmpvar_105;
|
|
tmpvar_105 = vec3(-0.310725, -0.191367, 0.0561369);
|
|
RAND_SAMPLES_102[2] = tmpvar_105;
|
|
mediump vec3 tmpvar_106;
|
|
tmpvar_106 = vec3(-0.479646, 0.0939877, -0.580265);
|
|
RAND_SAMPLES_102[3] = tmpvar_106;
|
|
mediump vec3 tmpvar_107;
|
|
tmpvar_107 = vec3(0.139999, -0.33577, 0.559679);
|
|
RAND_SAMPLES_102[4] = tmpvar_107;
|
|
mediump vec3 tmpvar_108;
|
|
tmpvar_108 = vec3(-0.248458, 0.255532, 0.348944);
|
|
RAND_SAMPLES_102[5] = tmpvar_108;
|
|
mediump vec3 tmpvar_109;
|
|
tmpvar_109 = vec3(0.18719, -0.702764, -0.231748);
|
|
RAND_SAMPLES_102[6] = tmpvar_109;
|
|
mediump vec3 tmpvar_110;
|
|
tmpvar_110 = vec3(0.884915, 0.284208, 0.368524);
|
|
RAND_SAMPLES_102[7] = tmpvar_110;
|
|
mediump float tmpvar_111;
|
|
tmpvar_111 = frag_ao (i_101, 8, RAND_SAMPLES_102);
|
|
mediump vec4 tmpvar_112;
|
|
tmpvar_112 = vec4(tmpvar_111);
|
|
return tmpvar_112;
|
|
}
|
|
|
|
void main ()
|
|
{
|
|
v2f_ao xlt_i_113;
|
|
mediump vec4 xl_retval_114;
|
|
mediump vec4 tmpvar_115;
|
|
tmpvar_115 = vec4(0.0, 0.0, 0.0, 0.0);
|
|
xlt_i_113.pos = tmpvar_115;
|
|
highp vec2 tmpvar_116;
|
|
tmpvar_116 = xlv_TEXCOORD0.xy;
|
|
highp vec2 tmpvar_117;
|
|
tmpvar_117 = tmpvar_116;
|
|
xlt_i_113.uv = tmpvar_117;
|
|
highp vec2 tmpvar_118;
|
|
tmpvar_118 = xlv_TEXCOORD1.xy;
|
|
highp vec2 tmpvar_119;
|
|
tmpvar_119 = tmpvar_118;
|
|
xlt_i_113.uvr = tmpvar_119;
|
|
mediump vec4 tmpvar_120;
|
|
tmpvar_120 = xlat_main (xlt_i_113);
|
|
mediump vec4 tmpvar_121;
|
|
tmpvar_121 = tmpvar_120;
|
|
xl_retval_114 = tmpvar_121;
|
|
mediump vec4 tmpvar_122;
|
|
tmpvar_122 = xl_retval_114.xyzw;
|
|
mediump vec4 tmpvar_123;
|
|
tmpvar_123 = tmpvar_122;
|
|
gl_FragData[0] = tmpvar_123;
|
|
}
|
|
|