mirror of
https://github.com/scratchfoundation/bgfx.git
synced 2024-11-29 11:05:36 -05:00
399 lines
9.8 KiB
Text
399 lines
9.8 KiB
Text
|
struct appdata_full {
|
||
|
vec4 vertex;
|
||
|
vec4 tangent;
|
||
|
vec3 normal;
|
||
|
vec4 texcoord;
|
||
|
vec4 texcoord1;
|
||
|
vec4 color;
|
||
|
};
|
||
|
struct v2f_surf {
|
||
|
vec4 pos;
|
||
|
vec3 _ShadowCoord0;
|
||
|
vec3 _ShadowCoord1;
|
||
|
vec3 _ShadowCoord2;
|
||
|
vec3 _ShadowCoord3;
|
||
|
vec2 _ShadowZFade;
|
||
|
vec2 hip_pack0;
|
||
|
vec4 lop_color;
|
||
|
};
|
||
|
attribute vec4 TANGENT;
|
||
|
uniform mat4 _World2Shadow3;
|
||
|
uniform mat4 _World2Shadow2;
|
||
|
uniform mat4 _World2Shadow1;
|
||
|
uniform mat4 _World2Shadow;
|
||
|
uniform vec4 _Wind;
|
||
|
uniform float _TimeX;
|
||
|
uniform vec4 _SquashPlaneNormal;
|
||
|
uniform float _SquashAmount;
|
||
|
uniform vec4 _Scale;
|
||
|
uniform mat4 _Object2World;
|
||
|
uniform vec4 _MainTex_ST;
|
||
|
uniform vec4 _LightShadowData;
|
||
|
uniform vec4 _Color;
|
||
|
vec4 Squash (
|
||
|
in vec4 pos_1
|
||
|
)
|
||
|
{
|
||
|
vec3 planeNormal_2;
|
||
|
vec3 planePoint_3;
|
||
|
vec3 projectedVertex_4;
|
||
|
vec3 tmpvar_5;
|
||
|
tmpvar_5 = pos_1.xyz;
|
||
|
projectedVertex_4 = tmpvar_5;
|
||
|
vec3 tmpvar_6;
|
||
|
tmpvar_6.xz = vec2(0.0, 0.0);
|
||
|
tmpvar_6.y = _SquashPlaneNormal.w;
|
||
|
vec3 tmpvar_7;
|
||
|
tmpvar_7 = tmpvar_6;
|
||
|
planePoint_3 = tmpvar_7;
|
||
|
vec3 tmpvar_8;
|
||
|
tmpvar_8 = _SquashPlaneNormal.xyz;
|
||
|
planeNormal_2 = tmpvar_8;
|
||
|
vec3 tmpvar_9;
|
||
|
tmpvar_9 = pos_1.xyz;
|
||
|
float tmpvar_10;
|
||
|
tmpvar_10 = dot (planeNormal_2, (planePoint_3 - tmpvar_9));
|
||
|
vec3 tmpvar_11;
|
||
|
tmpvar_11 = (projectedVertex_4 + (tmpvar_10 * planeNormal_2));
|
||
|
projectedVertex_4 = tmpvar_11;
|
||
|
vec3 tmpvar_12;
|
||
|
tmpvar_12 = vec3(_SquashAmount);
|
||
|
vec3 tmpvar_13;
|
||
|
tmpvar_13 = mix (projectedVertex_4, pos_1.xyz, tmpvar_12);
|
||
|
vec4 tmpvar_14;
|
||
|
tmpvar_14.w = 1.0;
|
||
|
tmpvar_14.xyz = tmpvar_13.xyz;
|
||
|
vec4 tmpvar_15;
|
||
|
tmpvar_15 = tmpvar_14;
|
||
|
pos_1 = tmpvar_15;
|
||
|
return pos_1;
|
||
|
}
|
||
|
|
||
|
void ExpandBillboard (
|
||
|
in mat4 mat_16,
|
||
|
inout vec4 pos_17,
|
||
|
inout vec3 normal_18,
|
||
|
inout vec4 tangent_19
|
||
|
)
|
||
|
{
|
||
|
vec3 tanb_20;
|
||
|
vec3 norb_21;
|
||
|
float isBillboard_22;
|
||
|
float tmpvar_23;
|
||
|
tmpvar_23 = abs (tangent_19.w);
|
||
|
float tmpvar_24;
|
||
|
tmpvar_24 = (1.0 - tmpvar_23);
|
||
|
isBillboard_22 = tmpvar_24;
|
||
|
vec4 tmpvar_25;
|
||
|
tmpvar_25.w = 0.0;
|
||
|
tmpvar_25.xyz = normal_18.xyz;
|
||
|
vec4 tmpvar_26;
|
||
|
tmpvar_26 = normalize ((tmpvar_25 * mat_16));
|
||
|
vec3 tmpvar_27;
|
||
|
tmpvar_27 = tmpvar_26.xyz;
|
||
|
vec3 tmpvar_28;
|
||
|
tmpvar_28 = tmpvar_27;
|
||
|
norb_21 = tmpvar_28;
|
||
|
vec4 tmpvar_29;
|
||
|
tmpvar_29.yw = vec2(0.0, 0.0);
|
||
|
tmpvar_29.x = normal_18.z;
|
||
|
tmpvar_29.z = -(normal_18.x);
|
||
|
vec4 tmpvar_30;
|
||
|
tmpvar_30 = normalize ((tmpvar_29 * mat_16));
|
||
|
vec3 tmpvar_31;
|
||
|
tmpvar_31 = tmpvar_30.xyz;
|
||
|
vec3 tmpvar_32;
|
||
|
tmpvar_32 = tmpvar_31;
|
||
|
tanb_20 = tmpvar_32;
|
||
|
vec4 tmpvar_33;
|
||
|
tmpvar_33 = (pos_17 + ((tangent_19 * mat_16) * isBillboard_22));
|
||
|
pos_17 = tmpvar_33;
|
||
|
vec3 tmpvar_34;
|
||
|
tmpvar_34 = vec3(isBillboard_22);
|
||
|
vec3 tmpvar_35;
|
||
|
tmpvar_35 = mix (normal_18, norb_21, tmpvar_34);
|
||
|
vec3 tmpvar_36;
|
||
|
tmpvar_36 = tmpvar_35;
|
||
|
normal_18 = tmpvar_36;
|
||
|
vec4 tmpvar_37;
|
||
|
tmpvar_37.w = -1.0;
|
||
|
tmpvar_37.xyz = tanb_20.xyz;
|
||
|
vec4 tmpvar_38;
|
||
|
tmpvar_38 = vec4(isBillboard_22);
|
||
|
vec4 tmpvar_39;
|
||
|
tmpvar_39 = mix (tangent_19, tmpvar_37, tmpvar_38);
|
||
|
vec4 tmpvar_40;
|
||
|
tmpvar_40 = tmpvar_39;
|
||
|
tangent_19 = tmpvar_40;
|
||
|
}
|
||
|
|
||
|
vec4 TriangleWave (
|
||
|
in vec4 x_41
|
||
|
)
|
||
|
{
|
||
|
vec4 tmpvar_42;
|
||
|
tmpvar_42 = fract ((x_41 + 0.5));
|
||
|
vec4 tmpvar_43;
|
||
|
tmpvar_43 = abs (((tmpvar_42 * 2.0) - 1.0));
|
||
|
return tmpvar_43;
|
||
|
}
|
||
|
|
||
|
vec4 SmoothCurve (
|
||
|
in vec4 x_44
|
||
|
)
|
||
|
{
|
||
|
return ((x_44 * x_44) * (3.0 - (2.0 * x_44)));
|
||
|
}
|
||
|
|
||
|
vec4 SmoothTriangleWave (
|
||
|
in vec4 x_45
|
||
|
)
|
||
|
{
|
||
|
vec4 tmpvar_46;
|
||
|
tmpvar_46 = TriangleWave (x_45);
|
||
|
vec4 tmpvar_47;
|
||
|
tmpvar_47 = SmoothCurve (tmpvar_46);
|
||
|
return tmpvar_47;
|
||
|
}
|
||
|
|
||
|
vec4 AnimateVertex (
|
||
|
in vec4 pos_48,
|
||
|
in vec3 normal_49,
|
||
|
in vec4 animParams_50
|
||
|
)
|
||
|
{
|
||
|
vec3 bend_51;
|
||
|
vec2 vWavesSum_52;
|
||
|
vec4 vWaves_53;
|
||
|
vec2 vWavesIn_54;
|
||
|
float fVtxPhase_55;
|
||
|
float fBranchPhase_56;
|
||
|
float fObjPhase_57;
|
||
|
float fBranchAmp_58;
|
||
|
float fDetailAmp_59;
|
||
|
float tmpvar_60;
|
||
|
tmpvar_60 = 0.1;
|
||
|
fDetailAmp_59 = tmpvar_60;
|
||
|
float tmpvar_61;
|
||
|
tmpvar_61 = 0.3;
|
||
|
fBranchAmp_58 = tmpvar_61;
|
||
|
float tmpvar_62;
|
||
|
tmpvar_62 = dot (_Object2World[3].xyz, vec3(1.0, 1.0, 1.0));
|
||
|
float tmpvar_63;
|
||
|
tmpvar_63 = tmpvar_62;
|
||
|
fObjPhase_57 = tmpvar_63;
|
||
|
float tmpvar_64;
|
||
|
tmpvar_64 = (fObjPhase_57 + animParams_50.x);
|
||
|
fBranchPhase_56 = tmpvar_64;
|
||
|
vec3 tmpvar_65;
|
||
|
tmpvar_65 = vec3((animParams_50.y + fBranchPhase_56));
|
||
|
float tmpvar_66;
|
||
|
tmpvar_66 = dot (pos_48.xyz, tmpvar_65);
|
||
|
float tmpvar_67;
|
||
|
tmpvar_67 = tmpvar_66;
|
||
|
fVtxPhase_55 = tmpvar_67;
|
||
|
vec2 tmpvar_68;
|
||
|
tmpvar_68.x = fVtxPhase_55;
|
||
|
tmpvar_68.y = fBranchPhase_56;
|
||
|
vec2 tmpvar_69;
|
||
|
tmpvar_69 = (_TimeX + tmpvar_68);
|
||
|
vWavesIn_54 = tmpvar_69;
|
||
|
vec4 tmpvar_70;
|
||
|
tmpvar_70 = fract ((vWavesIn_54.xxyy * vec4(1.975, 0.793, 0.375, 0.193)));
|
||
|
vec4 tmpvar_71;
|
||
|
tmpvar_71 = ((tmpvar_70 * 2.0) - 1.0);
|
||
|
vWaves_53 = tmpvar_71;
|
||
|
vec4 tmpvar_72;
|
||
|
tmpvar_72 = SmoothTriangleWave (vWaves_53);
|
||
|
vec4 tmpvar_73;
|
||
|
tmpvar_73 = tmpvar_72;
|
||
|
vWaves_53 = tmpvar_73;
|
||
|
vec2 tmpvar_74;
|
||
|
tmpvar_74 = (vWaves_53.xz + vWaves_53.yw);
|
||
|
vWavesSum_52 = tmpvar_74;
|
||
|
vec3 tmpvar_75;
|
||
|
tmpvar_75 = ((animParams_50.y * fDetailAmp_59) * normal_49.xyz);
|
||
|
bend_51 = tmpvar_75;
|
||
|
float tmpvar_76;
|
||
|
tmpvar_76 = (animParams_50.w * fBranchAmp_58);
|
||
|
bend_51.y = vec2(tmpvar_76).y;
|
||
|
vec3 tmpvar_77;
|
||
|
tmpvar_77 = (pos_48.xyz + (((vWavesSum_52.xyx * bend_51) + ((_Wind.xyz * vWavesSum_52.y) * animParams_50.w)) * _Wind.w));
|
||
|
pos_48.xyz = tmpvar_77.xyz.xyz;
|
||
|
vec3 tmpvar_78;
|
||
|
tmpvar_78 = (pos_48.xyz + (animParams_50.z * _Wind.xyz));
|
||
|
pos_48.xyz = tmpvar_78.xyz.xyz;
|
||
|
return pos_48;
|
||
|
}
|
||
|
|
||
|
void TreeVertLeaf (
|
||
|
inout appdata_full v_79
|
||
|
)
|
||
|
{
|
||
|
ExpandBillboard (gl_ModelViewMatrixInverseTranspose, v_79.vertex, v_79.normal, v_79.tangent);
|
||
|
vec3 tmpvar_80;
|
||
|
tmpvar_80 = (v_79.vertex.xyz * _Scale.xyz);
|
||
|
v_79.vertex.xyz = tmpvar_80.xyz.xyz;
|
||
|
vec4 tmpvar_81;
|
||
|
tmpvar_81.xy = v_79.color.xy.xy;
|
||
|
tmpvar_81.zw = v_79.texcoord1.xy.xy;
|
||
|
vec4 tmpvar_82;
|
||
|
tmpvar_82 = AnimateVertex (v_79.vertex, v_79.normal, tmpvar_81);
|
||
|
vec4 tmpvar_83;
|
||
|
tmpvar_83 = tmpvar_82;
|
||
|
v_79.vertex = tmpvar_83;
|
||
|
vec4 tmpvar_84;
|
||
|
tmpvar_84 = Squash (v_79.vertex);
|
||
|
vec4 tmpvar_85;
|
||
|
tmpvar_85 = tmpvar_84;
|
||
|
v_79.vertex = tmpvar_85;
|
||
|
vec4 tmpvar_86;
|
||
|
tmpvar_86.xyz = (v_79.color.w * _Color.xyz).xyz;
|
||
|
tmpvar_86.w = _Color.w;
|
||
|
vec4 tmpvar_87;
|
||
|
tmpvar_87 = tmpvar_86;
|
||
|
v_79.color = tmpvar_87;
|
||
|
vec3 tmpvar_88;
|
||
|
tmpvar_88 = normalize (v_79.normal);
|
||
|
vec3 tmpvar_89;
|
||
|
tmpvar_89 = tmpvar_88;
|
||
|
v_79.normal = tmpvar_89;
|
||
|
vec3 tmpvar_90;
|
||
|
tmpvar_90 = normalize (v_79.tangent.xyz);
|
||
|
vec3 tmpvar_91;
|
||
|
tmpvar_91 = tmpvar_90;
|
||
|
v_79.tangent.xyz = tmpvar_91.xyz.xyz;
|
||
|
}
|
||
|
|
||
|
v2f_surf vert_surf (
|
||
|
in appdata_full v_92
|
||
|
)
|
||
|
{
|
||
|
vec4 wpos_93;
|
||
|
float z_94;
|
||
|
v2f_surf o_95;
|
||
|
TreeVertLeaf (v_92);
|
||
|
vec2 tmpvar_96;
|
||
|
tmpvar_96 = ((v_92.texcoord.xy * _MainTex_ST.xy) + _MainTex_ST.zw);
|
||
|
o_95.hip_pack0 = tmpvar_96.xy.xy;
|
||
|
vec4 tmpvar_97;
|
||
|
tmpvar_97 = v_92.color;
|
||
|
o_95.lop_color = tmpvar_97;
|
||
|
vec4 tmpvar_98;
|
||
|
tmpvar_98 = (gl_ModelViewProjectionMatrix * v_92.vertex);
|
||
|
o_95.pos = tmpvar_98;
|
||
|
float tmpvar_99;
|
||
|
tmpvar_99 = -((gl_ModelViewMatrix * v_92.vertex).z);
|
||
|
z_94 = tmpvar_99;
|
||
|
float tmpvar_100;
|
||
|
tmpvar_100 = z_94;
|
||
|
o_95._ShadowZFade.x = tmpvar_100;
|
||
|
float tmpvar_101;
|
||
|
tmpvar_101 = ((z_94 * _LightShadowData.z) + _LightShadowData.w);
|
||
|
o_95._ShadowZFade.y = vec2(tmpvar_101).y;
|
||
|
vec4 tmpvar_102;
|
||
|
tmpvar_102 = (_Object2World * v_92.vertex);
|
||
|
wpos_93 = tmpvar_102;
|
||
|
vec3 tmpvar_103;
|
||
|
tmpvar_103 = (_World2Shadow * wpos_93).xyz;
|
||
|
o_95._ShadowCoord0 = tmpvar_103;
|
||
|
vec3 tmpvar_104;
|
||
|
tmpvar_104 = (_World2Shadow1 * wpos_93).xyz;
|
||
|
o_95._ShadowCoord1 = tmpvar_104;
|
||
|
vec3 tmpvar_105;
|
||
|
tmpvar_105 = (_World2Shadow2 * wpos_93).xyz;
|
||
|
o_95._ShadowCoord2 = tmpvar_105;
|
||
|
vec3 tmpvar_106;
|
||
|
tmpvar_106 = (_World2Shadow3 * wpos_93).xyz;
|
||
|
o_95._ShadowCoord3 = tmpvar_106;
|
||
|
return o_95;
|
||
|
}
|
||
|
|
||
|
void main ()
|
||
|
{
|
||
|
appdata_full xlt_v_107;
|
||
|
v2f_surf xl_retval_108;
|
||
|
vec4 tmpvar_109;
|
||
|
tmpvar_109 = gl_Vertex.xyzw;
|
||
|
vec4 tmpvar_110;
|
||
|
tmpvar_110 = tmpvar_109;
|
||
|
xlt_v_107.vertex = tmpvar_110;
|
||
|
vec4 tmpvar_111;
|
||
|
tmpvar_111 = TANGENT.xyzw;
|
||
|
vec4 tmpvar_112;
|
||
|
tmpvar_112 = tmpvar_111;
|
||
|
xlt_v_107.tangent = tmpvar_112;
|
||
|
vec3 tmpvar_113;
|
||
|
tmpvar_113 = gl_Normal.xyz;
|
||
|
vec3 tmpvar_114;
|
||
|
tmpvar_114 = tmpvar_113;
|
||
|
xlt_v_107.normal = tmpvar_114;
|
||
|
vec4 tmpvar_115;
|
||
|
tmpvar_115 = gl_MultiTexCoord0.xyzw;
|
||
|
vec4 tmpvar_116;
|
||
|
tmpvar_116 = tmpvar_115;
|
||
|
xlt_v_107.texcoord = tmpvar_116;
|
||
|
vec4 tmpvar_117;
|
||
|
tmpvar_117 = gl_MultiTexCoord1.xyzw;
|
||
|
vec4 tmpvar_118;
|
||
|
tmpvar_118 = tmpvar_117;
|
||
|
xlt_v_107.texcoord1 = tmpvar_118;
|
||
|
vec4 tmpvar_119;
|
||
|
tmpvar_119 = gl_Color.xyzw;
|
||
|
vec4 tmpvar_120;
|
||
|
tmpvar_120 = tmpvar_119;
|
||
|
xlt_v_107.color = tmpvar_120;
|
||
|
v2f_surf tmpvar_121;
|
||
|
tmpvar_121 = vert_surf (xlt_v_107);
|
||
|
v2f_surf tmpvar_122;
|
||
|
tmpvar_122 = tmpvar_121;
|
||
|
xl_retval_108 = tmpvar_122;
|
||
|
vec4 tmpvar_123;
|
||
|
tmpvar_123 = xl_retval_108.pos.xyzw;
|
||
|
vec4 tmpvar_124;
|
||
|
tmpvar_124 = tmpvar_123;
|
||
|
gl_Position = tmpvar_124;
|
||
|
vec4 tmpvar_125;
|
||
|
tmpvar_125.w = 0.0;
|
||
|
tmpvar_125.xyz = xl_retval_108._ShadowCoord0.xyz;
|
||
|
vec4 tmpvar_126;
|
||
|
tmpvar_126 = tmpvar_125;
|
||
|
gl_TexCoord[0] = tmpvar_126;
|
||
|
vec4 tmpvar_127;
|
||
|
tmpvar_127.w = 0.0;
|
||
|
tmpvar_127.xyz = xl_retval_108._ShadowCoord1.xyz;
|
||
|
vec4 tmpvar_128;
|
||
|
tmpvar_128 = tmpvar_127;
|
||
|
gl_TexCoord[1] = tmpvar_128;
|
||
|
vec4 tmpvar_129;
|
||
|
tmpvar_129.w = 0.0;
|
||
|
tmpvar_129.xyz = xl_retval_108._ShadowCoord2.xyz;
|
||
|
vec4 tmpvar_130;
|
||
|
tmpvar_130 = tmpvar_129;
|
||
|
gl_TexCoord[2] = tmpvar_130;
|
||
|
vec4 tmpvar_131;
|
||
|
tmpvar_131.w = 0.0;
|
||
|
tmpvar_131.xyz = xl_retval_108._ShadowCoord3.xyz;
|
||
|
vec4 tmpvar_132;
|
||
|
tmpvar_132 = tmpvar_131;
|
||
|
gl_TexCoord[3] = tmpvar_132;
|
||
|
vec4 tmpvar_133;
|
||
|
tmpvar_133.zw = vec2(0.0, 0.0);
|
||
|
tmpvar_133.xy = xl_retval_108._ShadowZFade.xy;
|
||
|
vec4 tmpvar_134;
|
||
|
tmpvar_134 = tmpvar_133;
|
||
|
gl_TexCoord[4] = tmpvar_134;
|
||
|
vec4 tmpvar_135;
|
||
|
tmpvar_135.zw = vec2(0.0, 0.0);
|
||
|
tmpvar_135.xy = xl_retval_108.hip_pack0.xy;
|
||
|
vec4 tmpvar_136;
|
||
|
tmpvar_136 = tmpvar_135;
|
||
|
gl_TexCoord[5] = tmpvar_136;
|
||
|
vec4 tmpvar_137;
|
||
|
tmpvar_137 = xl_retval_108.lop_color.xyzw;
|
||
|
vec4 tmpvar_138;
|
||
|
tmpvar_138 = tmpvar_137;
|
||
|
gl_FrontColor = tmpvar_138;
|
||
|
}
|
||
|
|