mirror of
https://github.com/scratchfoundation/bgfx.git
synced 2024-12-01 11:56:58 -05:00
895 lines
21 KiB
Text
895 lines
21 KiB
Text
|
#extension GL_ARB_shader_texture_lod : enable
|
||
|
struct VertexOutput {
|
||
|
vec4 pos;
|
||
|
vec4 tex;
|
||
|
vec4 posWorld;
|
||
|
vec3 normalWorld;
|
||
|
vec4 tangentWorld;
|
||
|
vec3 extra;
|
||
|
vec4 _ShadowCoord;
|
||
|
vec3 lightDir;
|
||
|
};
|
||
|
uniform vec3 _WorldSpaceCameraPos;
|
||
|
uniform vec4 _ProjectionParams;
|
||
|
uniform vec4 _ScreenParams;
|
||
|
uniform vec4 _ZBufferParams;
|
||
|
uniform vec4 _WorldSpaceLightPos0;
|
||
|
uniform vec4 unity_SHAr;
|
||
|
uniform vec4 unity_SHAg;
|
||
|
uniform vec4 unity_SHAb;
|
||
|
uniform vec4 unity_SHBr;
|
||
|
uniform vec4 unity_SHBg;
|
||
|
uniform vec4 unity_SHBb;
|
||
|
uniform vec4 unity_SHC;
|
||
|
uniform vec4 _LightShadowData;
|
||
|
uniform mat4 _Object2World;
|
||
|
uniform mat4 _World2Object;
|
||
|
uniform vec4 unity_Scale;
|
||
|
uniform mat4 glstate_matrix_transpose_modelview0;
|
||
|
uniform mat4 unity_MatrixV;
|
||
|
uniform mat4 unity_MatrixVP;
|
||
|
uniform samplerCube _Cube;
|
||
|
uniform sampler2D _MainTex;
|
||
|
uniform vec4 _MainTex_ST;
|
||
|
uniform sampler2D _DetailAlbedoMap;
|
||
|
uniform vec4 _DetailAlbedoMap_ST;
|
||
|
uniform sampler2D _AlphaMap;
|
||
|
uniform sampler2D _Occlusion;
|
||
|
uniform sampler2D _DetailNormalMap;
|
||
|
uniform vec4 _DetailNormalMap_ST;
|
||
|
uniform float _DetailNormalMapScale;
|
||
|
uniform sampler2D _BumpMap;
|
||
|
uniform float _BumpScale;
|
||
|
uniform float _Exposure;
|
||
|
uniform float _DetailBumpScale;
|
||
|
uniform float _AlphaTestRef;
|
||
|
uniform float _DetailBumpTiling;
|
||
|
uniform vec4 _Color;
|
||
|
uniform vec4 _SpecularColor;
|
||
|
uniform sampler2D _SpecGlossMap;
|
||
|
uniform float _Glossiness;
|
||
|
uniform vec4 unity_ColorSpaceGrey;
|
||
|
uniform sampler2D _ShadowMapTexture;
|
||
|
uniform vec4 _LightColor0;
|
||
|
uniform samplerCube _SpecCube;
|
||
|
uniform vec4 unity_LightmapST;
|
||
|
uniform sampler2D unity_Lightmap;
|
||
|
uniform sampler2D unity_LightmapInd;
|
||
|
uniform float _SelfIllumScale;
|
||
|
uniform sampler2D _SelfIllum;
|
||
|
varying vec4 xlv_TEXCOORD0;
|
||
|
varying vec4 xlv_TEXCOORD1;
|
||
|
varying vec3 xlv_TEXCOORD2;
|
||
|
varying vec4 xlv_TEXCOORD3;
|
||
|
varying vec3 xlv_TEXCOORD4;
|
||
|
varying vec4 xlv_TEXCOORD5;
|
||
|
varying vec3 xlv_TEXCOORD7;
|
||
|
vec4 xll_texCUBElod (
|
||
|
in samplerCube s_1,
|
||
|
in vec4 coord_2
|
||
|
)
|
||
|
{
|
||
|
vec4 tmpvar_3;
|
||
|
tmpvar_3 = textureCubeLod (s_1, coord_2.xyz, coord_2.w);
|
||
|
return tmpvar_3;
|
||
|
}
|
||
|
|
||
|
mat3 xll_transpose_mf3x3 (
|
||
|
in mat3 m_4
|
||
|
)
|
||
|
{
|
||
|
mat3 tmpvar_5;
|
||
|
float tmpvar_6;
|
||
|
tmpvar_6 = m_4[0][0];
|
||
|
tmpvar_5[0].x = tmpvar_6;
|
||
|
float tmpvar_7;
|
||
|
tmpvar_7 = m_4[1][0];
|
||
|
tmpvar_5[0].y = tmpvar_7;
|
||
|
float tmpvar_8;
|
||
|
tmpvar_8 = m_4[2][0];
|
||
|
tmpvar_5[0].z = tmpvar_8;
|
||
|
float tmpvar_9;
|
||
|
tmpvar_9 = m_4[0][1];
|
||
|
tmpvar_5[1].x = tmpvar_9;
|
||
|
float tmpvar_10;
|
||
|
tmpvar_10 = m_4[1][1];
|
||
|
tmpvar_5[1].y = tmpvar_10;
|
||
|
float tmpvar_11;
|
||
|
tmpvar_11 = m_4[2][1];
|
||
|
tmpvar_5[1].z = tmpvar_11;
|
||
|
float tmpvar_12;
|
||
|
tmpvar_12 = m_4[0][2];
|
||
|
tmpvar_5[2].x = tmpvar_12;
|
||
|
float tmpvar_13;
|
||
|
tmpvar_13 = m_4[1][2];
|
||
|
tmpvar_5[2].y = tmpvar_13;
|
||
|
float tmpvar_14;
|
||
|
tmpvar_14 = m_4[2][2];
|
||
|
tmpvar_5[2].z = tmpvar_14;
|
||
|
return tmpvar_5;
|
||
|
}
|
||
|
|
||
|
float xll_saturate_f (
|
||
|
in float x_15
|
||
|
)
|
||
|
{
|
||
|
float tmpvar_16;
|
||
|
tmpvar_16 = clamp (x_15, 0.0, 1.0);
|
||
|
return tmpvar_16;
|
||
|
}
|
||
|
|
||
|
vec3 xll_saturate_vf3 (
|
||
|
in vec3 x_17
|
||
|
)
|
||
|
{
|
||
|
vec3 tmpvar_18;
|
||
|
tmpvar_18 = clamp (x_17, 0.0, 1.0);
|
||
|
return tmpvar_18;
|
||
|
}
|
||
|
|
||
|
vec3 xll_matrixindex_mf3x3_i (
|
||
|
in mat3 m_19,
|
||
|
in int i_20
|
||
|
)
|
||
|
{
|
||
|
vec3 v_21;
|
||
|
float tmpvar_22;
|
||
|
tmpvar_22 = m_19[0][i_20];
|
||
|
v_21.x = tmpvar_22;
|
||
|
float tmpvar_23;
|
||
|
tmpvar_23 = m_19[1][i_20];
|
||
|
v_21.y = vec2(tmpvar_23).y;
|
||
|
float tmpvar_24;
|
||
|
tmpvar_24 = m_19[2][i_20];
|
||
|
v_21.z = vec3(tmpvar_24).z;
|
||
|
return v_21;
|
||
|
}
|
||
|
|
||
|
vec3 Albedo (
|
||
|
in vec4 texcoords_25
|
||
|
)
|
||
|
{
|
||
|
vec3 albedo_26;
|
||
|
vec4 tmpvar_27;
|
||
|
tmpvar_27 = texture2D (_MainTex, texcoords_25.xy);
|
||
|
vec3 tmpvar_28;
|
||
|
tmpvar_28 = (_Color.xyz * tmpvar_27.xyz);
|
||
|
albedo_26 = tmpvar_28;
|
||
|
vec4 tmpvar_29;
|
||
|
tmpvar_29 = texture2D (_DetailAlbedoMap, texcoords_25.zw);
|
||
|
vec3 tmpvar_30;
|
||
|
tmpvar_30 = (albedo_26 * (2.0 * tmpvar_29.xyz));
|
||
|
albedo_26 = tmpvar_30;
|
||
|
return albedo_26;
|
||
|
}
|
||
|
|
||
|
float Alpha (
|
||
|
in vec2 uv_31
|
||
|
)
|
||
|
{
|
||
|
vec4 tmpvar_32;
|
||
|
tmpvar_32 = texture2D (_AlphaMap, uv_31);
|
||
|
return (tmpvar_32.w * _Color.w);
|
||
|
}
|
||
|
|
||
|
float BlinnPhongTerm (
|
||
|
in float roughness_33,
|
||
|
in float NdotH_34
|
||
|
)
|
||
|
{
|
||
|
float specTerm_35;
|
||
|
float normTerm_36;
|
||
|
float n_37;
|
||
|
float m_38;
|
||
|
float tmpvar_39;
|
||
|
tmpvar_39 = pow (roughness_33, 4.0);
|
||
|
float tmpvar_40;
|
||
|
tmpvar_40 = (tmpvar_39 + 1e-05);
|
||
|
m_38 = tmpvar_40;
|
||
|
float tmpvar_41;
|
||
|
tmpvar_41 = ((1.0 / m_38) - 2.0);
|
||
|
n_37 = tmpvar_41;
|
||
|
float tmpvar_42;
|
||
|
tmpvar_42 = ((n_37 + 1.0) / 6.28318);
|
||
|
normTerm_36 = tmpvar_42;
|
||
|
float tmpvar_43;
|
||
|
tmpvar_43 = pow (NdotH_34, n_37);
|
||
|
float tmpvar_44;
|
||
|
tmpvar_44 = tmpvar_43;
|
||
|
specTerm_35 = tmpvar_44;
|
||
|
return (specTerm_35 * normTerm_36);
|
||
|
}
|
||
|
|
||
|
float BlinnTerm (
|
||
|
in vec3 normal_45,
|
||
|
in vec3 halfDir_46
|
||
|
)
|
||
|
{
|
||
|
float tmpvar_47;
|
||
|
tmpvar_47 = dot (normal_45, halfDir_46);
|
||
|
float tmpvar_48;
|
||
|
tmpvar_48 = max (0.0, tmpvar_47);
|
||
|
return tmpvar_48;
|
||
|
}
|
||
|
|
||
|
float FresnelTerm (
|
||
|
in float F0_49,
|
||
|
in float cosA_50
|
||
|
)
|
||
|
{
|
||
|
float t_51;
|
||
|
float _Falloff_52;
|
||
|
float tmpvar_53;
|
||
|
tmpvar_53 = 5.0;
|
||
|
_Falloff_52 = tmpvar_53;
|
||
|
float tmpvar_54;
|
||
|
tmpvar_54 = abs ((1.0 - cosA_50));
|
||
|
float tmpvar_55;
|
||
|
tmpvar_55 = pow (tmpvar_54, _Falloff_52);
|
||
|
float tmpvar_56;
|
||
|
tmpvar_56 = tmpvar_55;
|
||
|
t_51 = tmpvar_56;
|
||
|
return (F0_49 + ((1.0 - F0_49) * t_51));
|
||
|
}
|
||
|
|
||
|
float CTGeometricTerm (
|
||
|
in float NdotL_57,
|
||
|
in float NdotH_58,
|
||
|
in float NdotV_59,
|
||
|
in float VdotH_60
|
||
|
)
|
||
|
{
|
||
|
float tmpvar_61;
|
||
|
tmpvar_61 = (VdotH_60 + 1e-05);
|
||
|
VdotH_60 = tmpvar_61;
|
||
|
float tmpvar_62;
|
||
|
tmpvar_62 = min ((((2.0 * NdotH_58) * NdotV_59) / VdotH_60), (((2.0 * NdotH_58) * NdotL_57) / VdotH_60));
|
||
|
float tmpvar_63;
|
||
|
tmpvar_63 = min (1.0, tmpvar_62);
|
||
|
return tmpvar_63;
|
||
|
}
|
||
|
|
||
|
float GeometricTerm (
|
||
|
in float NdotL_64,
|
||
|
in float NdotH_65,
|
||
|
in float NdotV_66,
|
||
|
in float VdotH_67,
|
||
|
in float LdotV_68
|
||
|
)
|
||
|
{
|
||
|
float tmpvar_69;
|
||
|
tmpvar_69 = CTGeometricTerm (NdotL_64, NdotH_65, NdotV_66, VdotH_67);
|
||
|
return tmpvar_69;
|
||
|
}
|
||
|
|
||
|
float LambertTerm (
|
||
|
in vec3 normal_70,
|
||
|
in vec3 lightDir_71
|
||
|
)
|
||
|
{
|
||
|
float tmpvar_72;
|
||
|
tmpvar_72 = dot (normal_70, lightDir_71);
|
||
|
float tmpvar_73;
|
||
|
tmpvar_73 = max (0.0, tmpvar_72);
|
||
|
return tmpvar_73;
|
||
|
}
|
||
|
|
||
|
float RGBToLuminance (
|
||
|
in vec3 color_74
|
||
|
)
|
||
|
{
|
||
|
float luminance_75;
|
||
|
vec3 lumSensitivity_76;
|
||
|
vec3 tmpvar_77;
|
||
|
tmpvar_77 = vec3(0.299, 0.587, 0.114);
|
||
|
lumSensitivity_76 = tmpvar_77;
|
||
|
float tmpvar_78;
|
||
|
tmpvar_78 = dot (color_74, lumSensitivity_76);
|
||
|
float tmpvar_79;
|
||
|
tmpvar_79 = tmpvar_78;
|
||
|
luminance_75 = tmpvar_79;
|
||
|
return luminance_75;
|
||
|
}
|
||
|
|
||
|
vec3 BRDF_Disney_PBS (
|
||
|
in vec3 baseColor_80,
|
||
|
in vec3 lightColor_81,
|
||
|
in vec3 specColor_82,
|
||
|
in float specular_83,
|
||
|
in float roughness_84,
|
||
|
in vec3 normal_85,
|
||
|
in vec3 lightDir_86,
|
||
|
in vec3 viewDir_87,
|
||
|
in vec3 ambient_88,
|
||
|
in vec3 env_89
|
||
|
)
|
||
|
{
|
||
|
vec3 color_90;
|
||
|
vec3 diffuseColor_91;
|
||
|
float diffuseTerm_92;
|
||
|
float specularTerm_93;
|
||
|
float disneyDiffuse_94;
|
||
|
float nvPow_95;
|
||
|
float nlPow_96;
|
||
|
float Fd90_97;
|
||
|
float R_98;
|
||
|
float G_99;
|
||
|
float F_100;
|
||
|
float lh_101;
|
||
|
float lv_102;
|
||
|
float vh_103;
|
||
|
float nv_104;
|
||
|
float nh_105;
|
||
|
float nl_106;
|
||
|
vec3 halfDir_107;
|
||
|
vec3 tmpvar_108;
|
||
|
tmpvar_108 = normalize ((lightDir_86 + viewDir_87));
|
||
|
vec3 tmpvar_109;
|
||
|
tmpvar_109 = tmpvar_108;
|
||
|
halfDir_107 = tmpvar_109;
|
||
|
float tmpvar_110;
|
||
|
tmpvar_110 = LambertTerm (normal_85, lightDir_86);
|
||
|
float tmpvar_111;
|
||
|
tmpvar_111 = tmpvar_110;
|
||
|
nl_106 = tmpvar_111;
|
||
|
float tmpvar_112;
|
||
|
tmpvar_112 = BlinnTerm (normal_85, halfDir_107);
|
||
|
float tmpvar_113;
|
||
|
tmpvar_113 = tmpvar_112;
|
||
|
nh_105 = tmpvar_113;
|
||
|
float tmpvar_114;
|
||
|
tmpvar_114 = dot (normal_85, viewDir_87);
|
||
|
float tmpvar_115;
|
||
|
tmpvar_115 = max (0.0, tmpvar_114);
|
||
|
float tmpvar_116;
|
||
|
tmpvar_116 = tmpvar_115;
|
||
|
nv_104 = tmpvar_116;
|
||
|
float tmpvar_117;
|
||
|
tmpvar_117 = dot (viewDir_87, halfDir_107);
|
||
|
float tmpvar_118;
|
||
|
tmpvar_118 = max (0.0, tmpvar_117);
|
||
|
float tmpvar_119;
|
||
|
tmpvar_119 = tmpvar_118;
|
||
|
vh_103 = tmpvar_119;
|
||
|
float tmpvar_120;
|
||
|
tmpvar_120 = dot (lightDir_86, viewDir_87);
|
||
|
float tmpvar_121;
|
||
|
tmpvar_121 = max (0.0, tmpvar_120);
|
||
|
float tmpvar_122;
|
||
|
tmpvar_122 = tmpvar_121;
|
||
|
lv_102 = tmpvar_122;
|
||
|
float tmpvar_123;
|
||
|
tmpvar_123 = dot (lightDir_86, halfDir_107);
|
||
|
float tmpvar_124;
|
||
|
tmpvar_124 = max (0.0, tmpvar_123);
|
||
|
float tmpvar_125;
|
||
|
tmpvar_125 = tmpvar_124;
|
||
|
lh_101 = tmpvar_125;
|
||
|
float tmpvar_126;
|
||
|
tmpvar_126 = FresnelTerm (specular_83, vh_103);
|
||
|
float tmpvar_127;
|
||
|
tmpvar_127 = tmpvar_126;
|
||
|
F_100 = tmpvar_127;
|
||
|
float tmpvar_128;
|
||
|
tmpvar_128 = GeometricTerm (nl_106, nh_105, nv_104, vh_103, lv_102);
|
||
|
float tmpvar_129;
|
||
|
tmpvar_129 = tmpvar_128;
|
||
|
G_99 = tmpvar_129;
|
||
|
float tmpvar_130;
|
||
|
tmpvar_130 = BlinnPhongTerm (roughness_84, nh_105);
|
||
|
float tmpvar_131;
|
||
|
tmpvar_131 = tmpvar_130;
|
||
|
R_98 = tmpvar_131;
|
||
|
float tmpvar_132;
|
||
|
tmpvar_132 = max (0.0, R_98);
|
||
|
float tmpvar_133;
|
||
|
tmpvar_133 = tmpvar_132;
|
||
|
R_98 = tmpvar_133;
|
||
|
float tmpvar_134;
|
||
|
tmpvar_134 = pow (lh_101, 2.0);
|
||
|
float tmpvar_135;
|
||
|
tmpvar_135 = (0.5 + ((2.0 * tmpvar_134) * roughness_84));
|
||
|
Fd90_97 = tmpvar_135;
|
||
|
float tmpvar_136;
|
||
|
tmpvar_136 = pow ((1.00001 - nl_106), 5.0);
|
||
|
float tmpvar_137;
|
||
|
tmpvar_137 = tmpvar_136;
|
||
|
nlPow_96 = tmpvar_137;
|
||
|
float tmpvar_138;
|
||
|
tmpvar_138 = pow ((1.00001 - nv_104), 5.0);
|
||
|
float tmpvar_139;
|
||
|
tmpvar_139 = tmpvar_138;
|
||
|
nvPow_95 = tmpvar_139;
|
||
|
float tmpvar_140;
|
||
|
tmpvar_140 = ((1.0 + (
|
||
|
(Fd90_97 - 1.0)
|
||
|
* nlPow_96)) * (1.0 + (
|
||
|
(Fd90_97 - 1.0)
|
||
|
* nvPow_95)));
|
||
|
disneyDiffuse_94 = tmpvar_140;
|
||
|
float tmpvar_141;
|
||
|
tmpvar_141 = max (0.0, (((F_100 * G_99) * R_98) / ((4.0 * nv_104) + 1e-05)));
|
||
|
float tmpvar_142;
|
||
|
tmpvar_142 = tmpvar_141;
|
||
|
specularTerm_93 = tmpvar_142;
|
||
|
float tmpvar_143;
|
||
|
tmpvar_143 = (disneyDiffuse_94 * nl_106);
|
||
|
diffuseTerm_92 = tmpvar_143;
|
||
|
vec3 tmpvar_144;
|
||
|
tmpvar_144 = baseColor_80;
|
||
|
diffuseColor_91 = tmpvar_144;
|
||
|
float tmpvar_145;
|
||
|
tmpvar_145 = RGBToLuminance (specColor_82);
|
||
|
float tmpvar_146;
|
||
|
tmpvar_146 = FresnelTerm (0.0, nv_104);
|
||
|
vec3 tmpvar_147;
|
||
|
tmpvar_147 = (((diffuseColor_91 *
|
||
|
(ambient_88 + (diffuseTerm_92 * lightColor_81))
|
||
|
) + (specColor_82 *
|
||
|
(env_89 + (lightColor_81 * specularTerm_93))
|
||
|
)) + ((
|
||
|
((1.0 - tmpvar_145) * (1.0 - roughness_84))
|
||
|
* tmpvar_146) * env_89));
|
||
|
color_90 = tmpvar_147;
|
||
|
return color_90;
|
||
|
}
|
||
|
|
||
|
vec3 DecodeLightmap (
|
||
|
in vec4 color_148
|
||
|
)
|
||
|
{
|
||
|
return ((8.0 * color_148.w) * color_148.xyz);
|
||
|
}
|
||
|
|
||
|
vec3 DirLightmapDiffuse (
|
||
|
in mat3 dirBasis_149,
|
||
|
in vec4 color_150,
|
||
|
in vec4 scale_151,
|
||
|
in vec3 normal_152,
|
||
|
in bool surfFuncWritesNormal_153,
|
||
|
out vec3 scalePerBasisVector_154
|
||
|
)
|
||
|
{
|
||
|
vec3 lm_155;
|
||
|
vec3 tmpvar_156;
|
||
|
tmpvar_156 = DecodeLightmap (color_150);
|
||
|
vec3 tmpvar_157;
|
||
|
tmpvar_157 = tmpvar_156;
|
||
|
lm_155 = tmpvar_157;
|
||
|
vec3 tmpvar_158;
|
||
|
tmpvar_158 = DecodeLightmap (scale_151);
|
||
|
vec3 tmpvar_159;
|
||
|
tmpvar_159 = tmpvar_158;
|
||
|
scalePerBasisVector_154 = tmpvar_159;
|
||
|
if (surfFuncWritesNormal_153) {
|
||
|
vec3 normalInRnmBasis_160;
|
||
|
vec3 tmpvar_161;
|
||
|
tmpvar_161 = xll_saturate_vf3 ((dirBasis_149 * normal_152));
|
||
|
vec3 tmpvar_162;
|
||
|
tmpvar_162 = tmpvar_161;
|
||
|
normalInRnmBasis_160 = tmpvar_162;
|
||
|
float tmpvar_163;
|
||
|
tmpvar_163 = dot (normalInRnmBasis_160, scalePerBasisVector_154);
|
||
|
vec3 tmpvar_164;
|
||
|
tmpvar_164 = (lm_155 * tmpvar_163);
|
||
|
lm_155 = tmpvar_164;
|
||
|
};
|
||
|
return lm_155;
|
||
|
}
|
||
|
|
||
|
void DecodeDirLightmap (
|
||
|
in vec3 normal_165,
|
||
|
in vec4 colorLM_166,
|
||
|
in vec4 scaleLM_167,
|
||
|
out vec3 lightColor_168,
|
||
|
out vec3 lightDir_169
|
||
|
)
|
||
|
{
|
||
|
vec3 scalePerBasisVector_170;
|
||
|
mat3 unity_DirBasis_171;
|
||
|
mat3 tmpvar_172;
|
||
|
tmpvar_172 = xll_transpose_mf3x3 (mat3(0.816497, 0.0, 0.57735, -0.408248, 0.707107, 0.57735, -0.408248, -0.707107, 0.57735));
|
||
|
mat3 tmpvar_173;
|
||
|
tmpvar_173 = tmpvar_172;
|
||
|
unity_DirBasis_171 = tmpvar_173;
|
||
|
vec3 tmpvar_174;
|
||
|
tmpvar_174 = DirLightmapDiffuse (unity_DirBasis_171, colorLM_166, scaleLM_167, normal_165, bool(1), scalePerBasisVector_170);
|
||
|
vec3 tmpvar_175;
|
||
|
tmpvar_175 = tmpvar_174;
|
||
|
lightColor_168 = tmpvar_175;
|
||
|
vec3 tmpvar_176;
|
||
|
tmpvar_176 = xll_matrixindex_mf3x3_i (unity_DirBasis_171, 0);
|
||
|
vec3 tmpvar_177;
|
||
|
tmpvar_177 = xll_matrixindex_mf3x3_i (unity_DirBasis_171, 1);
|
||
|
vec3 tmpvar_178;
|
||
|
tmpvar_178 = xll_matrixindex_mf3x3_i (unity_DirBasis_171, 2);
|
||
|
vec3 tmpvar_179;
|
||
|
tmpvar_179 = normalize ((((scalePerBasisVector_170.x * tmpvar_176) + (scalePerBasisVector_170.y * tmpvar_177)) + (scalePerBasisVector_170.z * tmpvar_178)));
|
||
|
vec3 tmpvar_180;
|
||
|
tmpvar_180 = tmpvar_179;
|
||
|
lightDir_169 = tmpvar_180;
|
||
|
}
|
||
|
|
||
|
vec3 EnergyCalculator (
|
||
|
in vec3 specColor_181,
|
||
|
in float specular_182,
|
||
|
in vec3 baseColor_183
|
||
|
)
|
||
|
{
|
||
|
vec3 tmpvar_184;
|
||
|
tmpvar_184 = min (baseColor_183, (vec3(1.0, 1.0, 1.0) - specular_182));
|
||
|
return tmpvar_184;
|
||
|
}
|
||
|
|
||
|
float toLinearFast1 (
|
||
|
in float c_185
|
||
|
)
|
||
|
{
|
||
|
float c2_186;
|
||
|
float tmpvar_187;
|
||
|
tmpvar_187 = (c_185 * c_185);
|
||
|
c2_186 = tmpvar_187;
|
||
|
vec2 tmpvar_188;
|
||
|
tmpvar_188.x = c2_186;
|
||
|
tmpvar_188.y = (c_185 * c2_186);
|
||
|
float tmpvar_189;
|
||
|
tmpvar_189 = dot (vec2(0.7532, 0.2468), tmpvar_188);
|
||
|
return tmpvar_189;
|
||
|
}
|
||
|
|
||
|
vec3 fromRGBM (
|
||
|
in vec4 c_190
|
||
|
)
|
||
|
{
|
||
|
float tmpvar_191;
|
||
|
tmpvar_191 = toLinearFast1 (c_190.w);
|
||
|
return ((c_190.xyz * tmpvar_191) * _Exposure);
|
||
|
}
|
||
|
|
||
|
vec3 EnvMap (
|
||
|
in vec4 worldNormal_192
|
||
|
)
|
||
|
{
|
||
|
vec4 envTexel_193;
|
||
|
vec4 tmpvar_194;
|
||
|
tmpvar_194.xyz = worldNormal_192.xyz.xyz;
|
||
|
tmpvar_194.w = worldNormal_192.w;
|
||
|
vec4 tmpvar_195;
|
||
|
tmpvar_195 = xll_texCUBElod (_SpecCube, tmpvar_194);
|
||
|
vec4 tmpvar_196;
|
||
|
tmpvar_196 = tmpvar_195;
|
||
|
envTexel_193 = tmpvar_196;
|
||
|
vec3 tmpvar_197;
|
||
|
tmpvar_197 = fromRGBM (envTexel_193);
|
||
|
return tmpvar_197;
|
||
|
}
|
||
|
|
||
|
float Occlusion (
|
||
|
in vec2 uv_198
|
||
|
)
|
||
|
{
|
||
|
vec4 tmpvar_199;
|
||
|
tmpvar_199 = texture2D (_Occlusion, uv_198);
|
||
|
return tmpvar_199.x;
|
||
|
}
|
||
|
|
||
|
vec4 SpecularGloss (
|
||
|
in vec2 uv_200
|
||
|
)
|
||
|
{
|
||
|
vec4 specGloss_201;
|
||
|
vec4 tmpvar_202;
|
||
|
tmpvar_202 = texture2D (_SpecGlossMap, uv_200);
|
||
|
vec4 tmpvar_203;
|
||
|
tmpvar_203 = tmpvar_202;
|
||
|
specGloss_201 = tmpvar_203;
|
||
|
vec4 tmpvar_204;
|
||
|
tmpvar_204.xyz = specGloss_201.xyz.xyz;
|
||
|
tmpvar_204.w = specGloss_201.w;
|
||
|
return tmpvar_204;
|
||
|
}
|
||
|
|
||
|
vec3 BlendNormals (
|
||
|
in vec3 n1_205,
|
||
|
in vec3 n2_206
|
||
|
)
|
||
|
{
|
||
|
vec3 tmpvar_207;
|
||
|
tmpvar_207.xy = (n1_205.xy + n2_206.xy).xy;
|
||
|
tmpvar_207.z = (n1_205.z * n2_206.z);
|
||
|
vec3 tmpvar_208;
|
||
|
tmpvar_208 = normalize (tmpvar_207);
|
||
|
return tmpvar_208;
|
||
|
}
|
||
|
|
||
|
vec3 UnpackScaleNormal (
|
||
|
in vec4 packednormal_209,
|
||
|
in float bumpScale_210
|
||
|
)
|
||
|
{
|
||
|
vec3 normal_211;
|
||
|
vec2 tmpvar_212;
|
||
|
tmpvar_212 = ((packednormal_209.wy * 2.0) - 1.0);
|
||
|
normal_211.xy = tmpvar_212.xy.xy;
|
||
|
vec2 tmpvar_213;
|
||
|
tmpvar_213 = (normal_211.xy * bumpScale_210);
|
||
|
normal_211.xy = tmpvar_213.xy.xy;
|
||
|
float tmpvar_214;
|
||
|
tmpvar_214 = dot (normal_211.xy, normal_211.xy);
|
||
|
float tmpvar_215;
|
||
|
tmpvar_215 = xll_saturate_f (tmpvar_214);
|
||
|
float tmpvar_216;
|
||
|
tmpvar_216 = sqrt ((1.0 - tmpvar_215));
|
||
|
float tmpvar_217;
|
||
|
tmpvar_217 = tmpvar_216;
|
||
|
normal_211.z = vec3(tmpvar_217).z;
|
||
|
return normal_211;
|
||
|
}
|
||
|
|
||
|
vec3 TangentNormal (
|
||
|
in vec4 texcoords_218
|
||
|
)
|
||
|
{
|
||
|
vec3 detailNormalTangent_219;
|
||
|
vec3 normalTangent_220;
|
||
|
vec4 tmpvar_221;
|
||
|
tmpvar_221 = texture2D (_BumpMap, texcoords_218.xy);
|
||
|
vec3 tmpvar_222;
|
||
|
tmpvar_222 = UnpackScaleNormal (tmpvar_221, _BumpScale);
|
||
|
vec3 tmpvar_223;
|
||
|
tmpvar_223 = tmpvar_222;
|
||
|
normalTangent_220 = tmpvar_223;
|
||
|
vec4 tmpvar_224;
|
||
|
tmpvar_224 = texture2D (_DetailNormalMap, texcoords_218.zw);
|
||
|
vec3 tmpvar_225;
|
||
|
tmpvar_225 = UnpackScaleNormal (tmpvar_224, _DetailNormalMapScale);
|
||
|
vec3 tmpvar_226;
|
||
|
tmpvar_226 = tmpvar_225;
|
||
|
detailNormalTangent_219 = tmpvar_226;
|
||
|
vec3 tmpvar_227;
|
||
|
tmpvar_227 = BlendNormals (normalTangent_220, detailNormalTangent_219);
|
||
|
vec3 tmpvar_228;
|
||
|
tmpvar_228 = tmpvar_227;
|
||
|
normalTangent_220 = tmpvar_228;
|
||
|
return normalTangent_220;
|
||
|
}
|
||
|
|
||
|
mat3 TangentToWorld (
|
||
|
in vec3 normal_229,
|
||
|
in vec3 tangent_230,
|
||
|
in vec3 flip_231
|
||
|
)
|
||
|
{
|
||
|
vec3 binormal_232;
|
||
|
vec3 tmpvar_233;
|
||
|
tmpvar_233 = cross (normal_229, tangent_230);
|
||
|
vec3 tmpvar_234;
|
||
|
tmpvar_234 = (tmpvar_233 * flip_231);
|
||
|
binormal_232 = tmpvar_234;
|
||
|
mat3 tmpvar_235;
|
||
|
vec3 tmpvar_236;
|
||
|
tmpvar_236 = tangent_230;
|
||
|
tmpvar_235[0] = tmpvar_236;
|
||
|
vec3 tmpvar_237;
|
||
|
tmpvar_237 = binormal_232;
|
||
|
tmpvar_235[1] = tmpvar_237;
|
||
|
vec3 tmpvar_238;
|
||
|
tmpvar_238 = normal_229;
|
||
|
tmpvar_235[2] = tmpvar_238;
|
||
|
mat3 tmpvar_239;
|
||
|
tmpvar_239 = xll_transpose_mf3x3 (tmpvar_235);
|
||
|
return tmpvar_239;
|
||
|
}
|
||
|
|
||
|
float unitySampleShadow (
|
||
|
in vec4 shadowCoord_240
|
||
|
)
|
||
|
{
|
||
|
float shadow_241;
|
||
|
vec4 tmpvar_242;
|
||
|
tmpvar_242 = texture2DProj (_ShadowMapTexture, shadowCoord_240);
|
||
|
float tmpvar_243;
|
||
|
tmpvar_243 = tmpvar_242.x;
|
||
|
shadow_241 = tmpvar_243;
|
||
|
return shadow_241;
|
||
|
}
|
||
|
|
||
|
vec4 frag (
|
||
|
in VertexOutput i_244
|
||
|
)
|
||
|
{
|
||
|
float alpha_245;
|
||
|
vec3 color_246;
|
||
|
vec3 baseColor_247;
|
||
|
vec3 lightDirTangent_248;
|
||
|
vec4 lmIndTex_249;
|
||
|
vec4 lmtex_250;
|
||
|
vec3 ambient_251;
|
||
|
float subsurface_252;
|
||
|
vec3 lightDir_253;
|
||
|
vec3 lightColor_254;
|
||
|
vec3 env_255;
|
||
|
float roughness_256;
|
||
|
float specular_257;
|
||
|
vec3 specColor_258;
|
||
|
vec4 specGloss_259;
|
||
|
vec3 eyeVec_260;
|
||
|
vec3 normalWorld_261;
|
||
|
vec3 normalTangent_262;
|
||
|
mat3 tanToWorld_263;
|
||
|
float atten_264;
|
||
|
float tmpvar_265;
|
||
|
tmpvar_265 = unitySampleShadow (i_244._ShadowCoord);
|
||
|
float tmpvar_266;
|
||
|
tmpvar_266 = tmpvar_265;
|
||
|
atten_264 = tmpvar_266;
|
||
|
vec3 tmpvar_267;
|
||
|
tmpvar_267 = vec3(i_244.tangentWorld.w);
|
||
|
mat3 tmpvar_268;
|
||
|
tmpvar_268 = TangentToWorld (i_244.normalWorld, i_244.tangentWorld.xyz, tmpvar_267);
|
||
|
mat3 tmpvar_269;
|
||
|
tmpvar_269 = tmpvar_268;
|
||
|
tanToWorld_263 = tmpvar_269;
|
||
|
vec3 tmpvar_270;
|
||
|
tmpvar_270 = normalize (i_244.normalWorld);
|
||
|
vec3 tmpvar_271;
|
||
|
tmpvar_271 = tmpvar_270;
|
||
|
i_244.normalWorld = tmpvar_271;
|
||
|
vec3 tmpvar_272;
|
||
|
tmpvar_272 = TangentNormal (i_244.tex);
|
||
|
vec3 tmpvar_273;
|
||
|
tmpvar_273 = tmpvar_272;
|
||
|
normalTangent_262 = tmpvar_273;
|
||
|
vec3 tmpvar_274;
|
||
|
tmpvar_274 = (normalTangent_262 * tanToWorld_263);
|
||
|
normalWorld_261 = tmpvar_274;
|
||
|
vec3 tmpvar_275;
|
||
|
tmpvar_275 = normalize ((i_244.posWorld.xyz - _WorldSpaceCameraPos));
|
||
|
vec3 tmpvar_276;
|
||
|
tmpvar_276 = tmpvar_275;
|
||
|
eyeVec_260 = tmpvar_276;
|
||
|
vec4 tmpvar_277;
|
||
|
tmpvar_277 = SpecularGloss (i_244.tex.xy);
|
||
|
vec4 tmpvar_278;
|
||
|
tmpvar_278 = tmpvar_277;
|
||
|
specGloss_259 = tmpvar_278;
|
||
|
vec3 tmpvar_279;
|
||
|
tmpvar_279 = specGloss_259.xyz;
|
||
|
specColor_258 = tmpvar_279;
|
||
|
float tmpvar_280;
|
||
|
tmpvar_280 = RGBToLuminance (specGloss_259.xyz);
|
||
|
float tmpvar_281;
|
||
|
tmpvar_281 = tmpvar_280;
|
||
|
specular_257 = tmpvar_281;
|
||
|
float tmpvar_282;
|
||
|
tmpvar_282 = (1.0 - specGloss_259.w);
|
||
|
roughness_256 = tmpvar_282;
|
||
|
vec3 tmpvar_283;
|
||
|
tmpvar_283 = vec3(0.0, 0.0, 0.0);
|
||
|
env_255 = tmpvar_283;
|
||
|
vec3 tmpvar_284;
|
||
|
tmpvar_284 = reflect (eyeVec_260, normalWorld_261);
|
||
|
vec4 tmpvar_285;
|
||
|
tmpvar_285.xyz = tmpvar_284.xyz;
|
||
|
tmpvar_285.w = (roughness_256 * 5.0);
|
||
|
vec3 tmpvar_286;
|
||
|
tmpvar_286 = EnvMap (tmpvar_285);
|
||
|
float tmpvar_287;
|
||
|
tmpvar_287 = Occlusion (i_244.tex.xy);
|
||
|
vec3 tmpvar_288;
|
||
|
tmpvar_288 = (tmpvar_286 * tmpvar_287);
|
||
|
env_255 = tmpvar_288;
|
||
|
vec3 tmpvar_289;
|
||
|
tmpvar_289 = (_LightColor0.xyz * 2.0);
|
||
|
lightColor_254 = tmpvar_289;
|
||
|
vec3 tmpvar_290;
|
||
|
tmpvar_290 = _WorldSpaceLightPos0.xyz;
|
||
|
lightDir_253 = tmpvar_290;
|
||
|
float tmpvar_291;
|
||
|
tmpvar_291 = 1.0;
|
||
|
subsurface_252 = tmpvar_291;
|
||
|
vec3 tmpvar_292;
|
||
|
tmpvar_292 = vec3(0.0, 0.0, 0.0);
|
||
|
ambient_251 = tmpvar_292;
|
||
|
vec4 tmpvar_293;
|
||
|
tmpvar_293 = texture2D (unity_Lightmap, i_244.extra.xy);
|
||
|
vec4 tmpvar_294;
|
||
|
tmpvar_294 = tmpvar_293;
|
||
|
lmtex_250 = tmpvar_294;
|
||
|
vec4 tmpvar_295;
|
||
|
tmpvar_295 = texture2D (unity_LightmapInd, i_244.extra.xy);
|
||
|
vec4 tmpvar_296;
|
||
|
tmpvar_296 = tmpvar_295;
|
||
|
lmIndTex_249 = tmpvar_296;
|
||
|
DecodeDirLightmap (normalTangent_262, lmtex_250, lmIndTex_249, lightColor_254, lightDirTangent_248);
|
||
|
vec3 tmpvar_297;
|
||
|
tmpvar_297 = (lightDirTangent_248 * tanToWorld_263);
|
||
|
lightDir_253 = tmpvar_297;
|
||
|
vec3 tmpvar_298;
|
||
|
tmpvar_298 = normalize (lightDir_253);
|
||
|
vec3 tmpvar_299;
|
||
|
tmpvar_299 = tmpvar_298;
|
||
|
lightDir_253 = tmpvar_299;
|
||
|
vec3 tmpvar_300;
|
||
|
tmpvar_300 = Albedo (i_244.tex);
|
||
|
vec3 tmpvar_301;
|
||
|
tmpvar_301 = EnergyCalculator (specColor_258, specular_257, tmpvar_300);
|
||
|
vec3 tmpvar_302;
|
||
|
tmpvar_302 = tmpvar_301;
|
||
|
baseColor_247 = tmpvar_302;
|
||
|
vec3 tmpvar_303;
|
||
|
tmpvar_303 = BRDF_Disney_PBS (baseColor_247, (atten_264 * lightColor_254), specColor_258, specular_257, roughness_256, normalWorld_261, lightDir_253, -(eyeVec_260), ambient_251, env_255);
|
||
|
vec3 tmpvar_304;
|
||
|
tmpvar_304 = tmpvar_303;
|
||
|
color_246 = tmpvar_304;
|
||
|
vec4 tmpvar_305;
|
||
|
tmpvar_305 = texture2D (_SelfIllum, i_244.tex.xy);
|
||
|
vec3 tmpvar_306;
|
||
|
tmpvar_306 = (color_246 + (tmpvar_305.xyz * _SelfIllumScale));
|
||
|
color_246 = tmpvar_306;
|
||
|
float tmpvar_307;
|
||
|
tmpvar_307 = Alpha (i_244.tex.xy);
|
||
|
float tmpvar_308;
|
||
|
tmpvar_308 = tmpvar_307;
|
||
|
alpha_245 = tmpvar_308;
|
||
|
vec4 tmpvar_309;
|
||
|
tmpvar_309.xyz = color_246.xyz;
|
||
|
tmpvar_309.w = alpha_245;
|
||
|
return tmpvar_309;
|
||
|
}
|
||
|
|
||
|
void main ()
|
||
|
{
|
||
|
VertexOutput xlt_i_310;
|
||
|
vec4 xl_retval_311;
|
||
|
vec4 tmpvar_312;
|
||
|
tmpvar_312 = vec4(0.0, 0.0, 0.0, 0.0);
|
||
|
xlt_i_310.pos = tmpvar_312;
|
||
|
vec4 tmpvar_313;
|
||
|
tmpvar_313 = xlv_TEXCOORD0.xyzw;
|
||
|
vec4 tmpvar_314;
|
||
|
tmpvar_314 = tmpvar_313;
|
||
|
xlt_i_310.tex = tmpvar_314;
|
||
|
vec4 tmpvar_315;
|
||
|
tmpvar_315 = xlv_TEXCOORD1.xyzw;
|
||
|
vec4 tmpvar_316;
|
||
|
tmpvar_316 = tmpvar_315;
|
||
|
xlt_i_310.posWorld = tmpvar_316;
|
||
|
vec3 tmpvar_317;
|
||
|
tmpvar_317 = xlv_TEXCOORD2.xyz;
|
||
|
vec3 tmpvar_318;
|
||
|
tmpvar_318 = tmpvar_317;
|
||
|
xlt_i_310.normalWorld = tmpvar_318;
|
||
|
vec4 tmpvar_319;
|
||
|
tmpvar_319 = xlv_TEXCOORD3.xyzw;
|
||
|
vec4 tmpvar_320;
|
||
|
tmpvar_320 = tmpvar_319;
|
||
|
xlt_i_310.tangentWorld = tmpvar_320;
|
||
|
vec3 tmpvar_321;
|
||
|
tmpvar_321 = xlv_TEXCOORD4.xyz;
|
||
|
vec3 tmpvar_322;
|
||
|
tmpvar_322 = tmpvar_321;
|
||
|
xlt_i_310.extra = tmpvar_322;
|
||
|
vec4 tmpvar_323;
|
||
|
tmpvar_323 = xlv_TEXCOORD5.xyzw;
|
||
|
vec4 tmpvar_324;
|
||
|
tmpvar_324 = tmpvar_323;
|
||
|
xlt_i_310._ShadowCoord = tmpvar_324;
|
||
|
vec3 tmpvar_325;
|
||
|
tmpvar_325 = xlv_TEXCOORD7.xyz;
|
||
|
vec3 tmpvar_326;
|
||
|
tmpvar_326 = tmpvar_325;
|
||
|
xlt_i_310.lightDir = tmpvar_326;
|
||
|
vec4 tmpvar_327;
|
||
|
tmpvar_327 = frag (xlt_i_310);
|
||
|
vec4 tmpvar_328;
|
||
|
tmpvar_328 = tmpvar_327;
|
||
|
xl_retval_311 = tmpvar_328;
|
||
|
vec4 tmpvar_329;
|
||
|
tmpvar_329 = xl_retval_311.xyzw;
|
||
|
vec4 tmpvar_330;
|
||
|
tmpvar_330 = tmpvar_329;
|
||
|
gl_FragData[0] = tmpvar_330;
|
||
|
}
|
||
|
|