
// Vk3DVision (http://3dsurroundgaming.com/) - Original Shader
#version 450
#extension GL_EXT_nonuniform_qualifier : require
#extension GL_ARB_shader_draw_parameters : require
#extension GL_ARB_shader_ballot : require

out float gl_ClipDistance[1];

invariant gl_Position;

struct S_MATRICES
{
    mat4 _mModelViewProj;
    mat4 _mModelViewProjPrevious;
    mat4 _mModelView;
    mat4 _mInvModelView;
};

struct unaligned_float3
{
    float x;
    float y;
    float z;
};

struct S_TBN
{
    int _iNormal;
    int _iTangent;
};

struct S_INDICES
{
    uint _uiObjectIndex;
    uint _uiMaterialIndex;
    uint _uiMaterialInstanceIndex;
    uint _uiLastFrameMaterialIndex;
    uint _uiLastFrameMaterialInstanceIndex;
    uint _uiPositionsBufferIndex;
    uint _uiPrevPositionsBufferIndex;
    uint _uiNormalsBufferIndex;
    uint _uiPositionOffset;
    uint _uiPrevPositionOffset;
    uint _uiNormalOffset;
    uint _uiMatricesIndex;
};

struct S_MAIN_DEFAULT
{
    S_INDICES _Indices;
};

struct S_MAIN_DEFAULT_ARRAY
{
    S_MAIN_DEFAULT _aMain[32];
};

struct S_SPEEDTREE_MESH_OBJECT
{
    mat4 _mModel;
    mat4 _mModelLast;
    mat4 _mInvModel;
    mat4 _mInvModelLast;
    vec4 _vDiversityOffset;
    uint _uiSceneZoneIndex;
    uint _uiNeighborSceneZoneIndex;
    uint _uiDisplayFlags;
    uint _uiPackedLocalExposureCompensation;
    vec4 _vPortalDirAndDistance;
    int _iPickingID[2];
    uint _uiPadding[2];
    vec4 _vTreeRotation;
    vec4 _vWindGlobal;
    vec4 _vWindVector;
    vec4 _vWindBranchAdherences;
    vec4 _vWindBranch;
    vec4 _vWindBranchTwitch;
    vec4 _vWindBranchWhipTurbulences;
    vec4 _vWindFrondRipple;
    vec4 _vWindLeaf1Ripple;
    vec4 _vWindLeaf1Tumble;
    vec4 _vWindLeaf1Twitch;
    vec4 _vWindLeaf2Ripple;
    vec4 _vWindLeaf2Tumble;
    vec4 _vWindLeaf2Twitch;
    vec4 _vAnchorAllTime;
    vec4 _vRollingBranch;
    vec4 _vRollingLeafOffset;
    vec4 _vRollingNoise;
    uint _uiLOD;
    uint _uiSmooth;
    float _fLocalExposureCompensation;
    float _fLocalExposureCompensationEV100;
    vec4 _vWindGlobalLast;
    vec4 _vWindBranchLast;
    vec4 _vWindFrondRippleLast;
    vec4 _vWindLeaf1RippleLast;
    vec4 _vWindLeaf1TumbleLast;
    vec4 _vWindLeaf1TwitchLast;
    vec4 _vWindLeaf2RippleLast;
    vec4 _vWindLeaf2TumbleLast;
    vec4 _vAnchorAllTimeLast;
};

struct S_PASS_MATRICES
{
    mat4 _mViewJitteredProj;
    mat4 _mViewProj;
    mat4 _mView;
    mat4 _mInvView;
    mat4 _mJitteredProj;
};

struct S_EYE_DATA
{
    S_PASS_MATRICES _mCurrentFrameMatrices[2];
    S_PASS_MATRICES _mPreviousFrameMatrices[2];
    mat4 _mJitteredProjection[2];
    mat4 _mNoJitterProjection[2];
    mat4 _mInvViewJitteredProj[2];
    vec4 _vWorldSpaceCameraVector[2];
    vec4 _vWorldSpaceCameraPosition[2];
    vec4 _vFrameBufferScale;
    vec4 _vFrameBufferViewportSize;
    vec4 _vFrameBufferOneOnViewportSize;
    vec4 _vViewportSize;
    vec4 _vFogSubCrop;
    uint _uiAlignment0;
    uint _uiAlignment1;
    float _vCameraJitterDeltaX;
    float _vCameraJitterDeltaY;
    vec4 _vfRcpFVolumetricFogDepthTileSize;
};

struct S_CASCADED_SHADOW
{
    mat4 _mCascadeMatrix[2][8];
    mat4 _mViewSpaceToStaticShadowMapSpace[2];
    vec4 _vfCascadeShadowAttenuation;
    vec4 _vfShadowCascadeTextureTexelSize;
    vec4 _vfStaticShadowBlurRadius;
    vec4 _vfCascadeLinearZProjFactors[8];
    vec4 _vfCascadeParams[8];
};

struct S_CLUSTER_LIGHT_SETUP
{
    S_CASCADED_SHADOW _CascadedShadow;
    vec4 _vfSkinUVParamsAndNormalBias;
    vec4 _vfShadowTextureTexelSize;
    vec4 _vfDummy_SkinFresnelF0AndF90;
    uint _uiCascadedUsed;
    float _fSSSWidth;
    float _fOffsetBias;
    float _fDummy;
};

struct S_CLUSTER_INFO
{
    mat4 _mViewToClusterView[2];
    mat4 _mClusterProjMatrix;
    mat4 _mClusterInvProjMatrix;
    vec4 _vfLeftEyeToCombinedEyeVsDeltaXZ;
    uint _uiFinestMipWidth;
    uint _uiFinestMipHeight;
    uint _uiFinestMipDepth;
    uint _uiFinestMipWidthHeight;
    float _fZSliceGeomFactor;
    float _fRcpLogZSliceGeomFactor;
    float _fDummy0;
    float _fDummy1;
    float _fNearP;
    float _fInvNearP;
    float _fFarP;
    float _fClusterCoincidentWithCamera;
};

struct S_PASS
{
    S_EYE_DATA _EyeData;
    vec4 _avFrustumCorners[4];
    vec4 _vTime;
    vec4 _cFogColor;
    vec4 _vFogSetup;
    vec4 _cSunColor;
    vec4 _vSunDir;
    vec4 _vProjectionSetup;
    vec4 _vProjectionCoeff;
    vec4 _vOutputColor;
    vec4 _vfVsClippingPlane[2];
    S_CLUSTER_LIGHT_SETUP _LightSetup;
    S_CLUSTER_INFO _ClusterInfo;
    float _fIBLIntensity;
    float _fGIIntensity;
    float _fAmbiantOcclusionDirectIntensity;
    float _fAmbiantOcclusionIndirectIntensity;
    float _fNormalSign;
    int _iFogType;
    float _fSelfOcclusionDebugRatio;
    float _fEmissive;
    int _iEnableSkinSSSSS;
    int _iUseHairOpaquePrepass;
    float _fLocalSceneExposure;
    uint _uiDebugMode;
    uint _sFlags;
    float _fTAADropsSharpness;
    uint _uNeoScaleX;
    uint _uNeoScaleY;
    uint _uiDirectOverdrawFilter;
    float _fCoderTest0;
    float _fCoderTest1;
    float _fCoderTest2;
    uint _uiBakeOutput;
    float _fDefaultAmbientIntensity;
    float _fDefaultLightingIntensity;
    uint _uiOutputColor;
    float _fAARotation;
    float _fClampDirectSpecular;
    float _fNearPlane;
    float _fFarPlane;
    float _fNDFFilteringScreenSpaceVariance;
    float _fNDFFilteringThreshold;
    float _fNDFFilteringScreenSpaceVariance_EyeShader;
    float _fNDFFilteringThreshold_EyeShader;
    float _fSurfaceGradientTextureFiltering;
    float _fZero;
    uint _uDepthClamp;
    uint _uiLightDebugMode;
    vec4 _vfFragCoordToDepthTexFactor;
    vec4 _vfFragCoordToDepthTexFactor_HalfRes;
    uint _uHdr;
    uint _uiDrawMayaSwatch;
    float _fEyeRoughnessBias;
    float _fDummy1;
};

layout(set = 1, binding = 24, std430) readonly buffer stc_g_rbMatrices_Layout
{
    S_MATRICES g_rbMatrices[];
} _426;

layout(set = 1, binding = 39, std430) readonly buffer g_rbVertices_Layout
{
    unaligned_float3 g_rbVertices[];
} g_rbVertices_Buffer[];

layout(set = 1, binding = 40, std430) readonly buffer g_rbTBNs_Layout
{
    S_TBN g_rbTBNs[];
} g_rbTBNs_Buffer[];

layout(set = 0, binding = 52, std140) uniform dyn_CONSTANT_BUFFER_BLOCK_CB_S_MAIN_ARRAY_BINDING
{
    S_MAIN_DEFAULT_ARRAY g_cbMainArray;
} _3253;

layout(set = 1, binding = 33, std430) readonly buffer g_rbObjects_Layout
{
    S_SPEEDTREE_MESH_OBJECT g_rbObjects[];
} g_rbObjects_Buffer[];

layout(set = 2, binding = 53, std140) uniform dyn_CONSTANT_BUFFER_BLOCK_CB_S_PASS_BINDING
{
    S_PASS g_cbPass;
} _3500;

layout(location = 8) in vec2 in_uv0;
layout(location = 10) in vec4 in_lodPosition;
layout(location = 11) in vec4 in_windBranchData;
layout(location = 12) in vec4 in_windExtraDataFlag;
layout(location = 13) in vec4 in_LeafAnchorHint;
layout(location = 8) out vec2 interp_uv0;
layout(location = 21) out vec3 interp_vfVsPosition;
layout(location = 14) out vec3 interp_vfVsTangent;
layout(location = 15) out vec3 interp_vfVsBinormal;
layout(location = 13) out vec3 interp_vfVsNormal;
layout(location = 23) out float interp_instanceID;

void main()
{
    int _3243 = gl_InstanceIndex + gl_DrawIDARB;
    int _3244 = readFirstInvocationARB(_3243);
    uint _5138 = uint(gl_VertexIndex);
    uint _5141 = _5138 + _3253.g_cbMainArray._aMain[_3244]._Indices._uiPositionOffset;
    vec4 _5154 = vec4(g_rbVertices_Buffer[_3253.g_cbMainArray._aMain[_3244]._Indices._uiPositionsBufferIndex].g_rbVertices[_5141].x, g_rbVertices_Buffer[_3253.g_cbMainArray._aMain[_3244]._Indices._uiPositionsBufferIndex].g_rbVertices[_5141].y, g_rbVertices_Buffer[_3253.g_cbMainArray._aMain[_3244]._Indices._uiPositionsBufferIndex].g_rbVertices[_5141].z, 1.0);
    uint _5161 = _5138 + _3253.g_cbMainArray._aMain[_3244]._Indices._uiNormalOffset;
    int _5190 = g_rbTBNs_Buffer[_3253.g_cbMainArray._aMain[_3244]._Indices._uiNormalsBufferIndex].g_rbTBNs[_5161]._iNormal & 1023;
    int _5193 = (g_rbTBNs_Buffer[_3253.g_cbMainArray._aMain[_3244]._Indices._uiNormalsBufferIndex].g_rbTBNs[_5161]._iNormal >> 10) & 1023;
    int _5196 = (g_rbTBNs_Buffer[_3253.g_cbMainArray._aMain[_3244]._Indices._uiNormalsBufferIndex].g_rbTBNs[_5161]._iNormal >> 20) & 1023;
    int _10537;
    if (_5190 > 512)
    {
        _10537 = _5190 | (-1024);
    }
    else
    {
        _10537 = _5190;
    }
    int _10539;
    if (_5193 > 512)
    {
        _10539 = _5193 | (-1024);
    }
    else
    {
        _10539 = _5193;
    }
    int _10541;
    if (_5196 > 512)
    {
        _10541 = _5196 | (-1024);
    }
    else
    {
        _10541 = _5196;
    }
    vec3 _5249 = vec3(float(_10537), float(_10539), float(_10541)) * vec3(0.001956947147846221923828125);
    int _5258 = g_rbTBNs_Buffer[_3253.g_cbMainArray._aMain[_3244]._Indices._uiNormalsBufferIndex].g_rbTBNs[_5161]._iTangent & 1023;
    int _5261 = (g_rbTBNs_Buffer[_3253.g_cbMainArray._aMain[_3244]._Indices._uiNormalsBufferIndex].g_rbTBNs[_5161]._iTangent >> 10) & 1023;
    int _5264 = (g_rbTBNs_Buffer[_3253.g_cbMainArray._aMain[_3244]._Indices._uiNormalsBufferIndex].g_rbTBNs[_5161]._iTangent >> 20) & 1023;
    int _10543;
    if (_5258 > 512)
    {
        _10543 = _5258 | (-1024);
    }
    else
    {
        _10543 = _5258;
    }
    int _10545;
    if (_5261 > 512)
    {
        _10545 = _5261 | (-1024);
    }
    else
    {
        _10545 = _5261;
    }
    int _10547;
    if (_5264 > 512)
    {
        _10547 = _5264 | (-1024);
    }
    else
    {
        _10547 = _5264;
    }
    float _5322 = float((g_rbTBNs_Buffer[_3253.g_cbMainArray._aMain[_3244]._Indices._uiNormalsBufferIndex].g_rbTBNs[_5161]._iTangent >> 30) != 0);
    vec3 _5339 = _5154.xyz;
    vec3 _5453 = vec4(vec3(float(_10543), float(_10545), float(_10547)) * vec3(0.001956947147846221923828125), _5322).xyz;
    vec3 _5670 = vec3(g_rbObjects_Buffer[_3253.g_cbMainArray._aMain[_3244]._Indices._uiObjectIndex].g_rbObjects[0]._vTreeRotation.z);
    vec3 _5671 = mix(in_lodPosition.xyz, _5339, _5670);
    vec2 _5856 = _5671.xy;
    vec2 _5857 = _5856 * g_rbObjects_Buffer[_3253.g_cbMainArray._aMain[_3244]._Indices._uiObjectIndex].g_rbObjects[0]._vRollingBranch.x;
    vec2 _6000 = vec2(g_rbObjects_Buffer[_3253.g_cbMainArray._aMain[_3244]._Indices._uiObjectIndex].g_rbObjects[0]._vRollingLeafOffset.zw);
    vec2 _6001 = _5857 - _6000;
    vec2 _6002 = _6001 * g_rbObjects_Buffer[_3253.g_cbMainArray._aMain[_3244]._Indices._uiObjectIndex].g_rbObjects[0]._vRollingNoise.y;
    float _6024 = 5.0 * g_rbObjects_Buffer[_3253.g_cbMainArray._aMain[_3244]._Indices._uiObjectIndex].g_rbObjects[0]._vRollingNoise.x;
    vec2 _6050 = cos(_6002);
    float _6052 = _6050.x;
    float _6054 = _6050.y;
    float _6055 = _6052 + _6054;
    float _6031 = _6002.x;
    float _6032 = 3.1415927410125732421875 * _6031;
    float _6034 = _6032 * _6024;
    float _6036 = _6002.y;
    float _6038 = _6036 * _6024;
    float _6039 = _6034 + _6038;
    float _6042 = g_rbObjects_Buffer[_3253.g_cbMainArray._aMain[_3244]._Indices._uiObjectIndex].g_rbObjects[0]._vRollingNoise.w * _6055;
    float _6043 = _6039 + _6042;
    float _6044 = sin(_6043);
    float _6045 = abs(_6044);
    float _6012 = _6045 * _6045;
    float _6015 = _6012 * _6012;
    float _5865 = mix(g_rbObjects_Buffer[_3253.g_cbMainArray._aMain[_3244]._Indices._uiObjectIndex].g_rbObjects[0]._vRollingBranch.y, 1.0, _6015);
    float _5869 = _5865 * g_rbObjects_Buffer[_3253.g_cbMainArray._aMain[_3244]._Indices._uiObjectIndex].g_rbObjects[0]._vTreeRotation.z;
    float _6068 = length(_5671);
    float _6079 = max(_5671.y - (0.25 / g_rbObjects_Buffer[_3253.g_cbMainArray._aMain[_3244]._Indices._uiObjectIndex].g_rbObjects[0]._vWindGlobal.z), 0.0) * g_rbObjects_Buffer[_3253.g_cbMainArray._aMain[_3244]._Indices._uiObjectIndex].g_rbObjects[0]._vWindGlobal.z;
    float _10556;
    if (_6079 != 0.0)
    {
        _10556 = pow(abs(_6079), g_rbObjects_Buffer[_3253.g_cbMainArray._aMain[_3244]._Indices._uiObjectIndex].g_rbObjects[0]._vWindGlobal.w);
    }
    else
    {
        _10556 = _6079;
    }
    float _6093 = g_rbObjects_Buffer[_3253.g_cbMainArray._aMain[_3244]._Indices._uiObjectIndex].g_rbObjects[0]._vWindGlobal.x * 0.800000011920928955078125;
    vec4 _6094 = vec4(g_rbObjects_Buffer[_3253.g_cbMainArray._aMain[_3244]._Indices._uiObjectIndex].g_rbObjects[0]._vWindGlobal.x, _6093, 0.0, 0.0);
    vec4 _6150 = _6094 + vec4(0.5);
    vec4 _6151 = fract(_6150);
    vec4 _6152 = _6151 * 2.0;
    vec4 _6154 = _6152 - vec4(1.0);
    vec4 _6155 = abs(_6154);
    vec4 _6159 = _6155 * _6155;
    vec4 _6161 = _6155 * 2.0;
    vec4 _6163 = vec4(3.0) - _6161;
    vec4 _6164 = _6159 * _6163;
    vec4 _6145 = _6164 - vec4(0.5);
    vec4 _6146 = _6145 * 2.0;
    float _6097 = _6146.x;
    float _6099 = _6146.y;
    float _6102 = _6099 * _6099;
    float _6103 = _6097 + _6102;
    float _6107 = g_rbObjects_Buffer[_3253.g_cbMainArray._aMain[_3244]._Indices._uiObjectIndex].g_rbObjects[0]._vWindGlobal.y * _6103;
    float _6112 = g_rbObjects_Buffer[_3253.g_cbMainArray._aMain[_3244]._Indices._uiObjectIndex].g_rbObjects[0]._vWindBranchAdherences.x / g_rbObjects_Buffer[_3253.g_cbMainArray._aMain[_3244]._Indices._uiObjectIndex].g_rbObjects[0]._vWindGlobal.z;
    float _6115 = _6112 * _5869;
    float _6117 = _6107 + _6115;
    float _6120 = _6117 * _10556;
    vec2 _6124 = g_rbObjects_Buffer[_3253.g_cbMainArray._aMain[_3244]._Indices._uiObjectIndex].g_rbObjects[0]._vWindVector.xz * _6120;
    vec2 _6126 = _5671.xz;
    vec2 _6127 = _6126 + _6124;
    vec3 _6129 = vec3(_6127.x, _5671.y, _6127.y);
    vec3 _6134 = normalize(_6129);
    vec3 _6136 = _6134 * _6068;
    vec3 _5884 = _6136 - _5671;
    vec3 _6338 = vec3(in_windBranchData.y);
    vec3 _6339 = _6338 * vec3(0.0625, -1.0, 16.0);
    vec3 _6340 = fract(_6339);
    vec3 _6342 = _6340.xzy;
    vec3 _6343 = _6342 * 2.0;
    vec3 _6344 = _6343 - vec3(1.0);
    vec3 _6314 = _6344 * in_windBranchData.x;
    float _6413 = g_rbObjects_Buffer[_3253.g_cbMainArray._aMain[_3244]._Indices._uiObjectIndex].g_rbObjects[0]._vWindBranch.x + in_windBranchData.y;
    float _6416 = g_rbObjects_Buffer[_3253.g_cbMainArray._aMain[_3244]._Indices._uiObjectIndex].g_rbObjects[0]._vWindBranch.x * g_rbObjects_Buffer[_3253.g_cbMainArray._aMain[_3244]._Indices._uiObjectIndex].g_rbObjects[0]._vWindBranchTwitch.y;
    float _6418 = _6416 + in_windBranchData.y;
    float _6420 = g_rbObjects_Buffer[_3253.g_cbMainArray._aMain[_3244]._Indices._uiObjectIndex].g_rbObjects[0]._vWindBranchTwitch.y * 0.5;
    float _6424 = _6420 * _6413;
    vec4 _6425 = vec4(_6413, _6418, _6424, 0.0);
    vec4 _6564 = _6425 + vec4(0.5);
    vec4 _6565 = fract(_6564);
    vec4 _6566 = _6565 * 2.0;
    vec4 _6568 = _6566 - vec4(1.0);
    vec4 _6569 = abs(_6568);
    vec4 _6573 = _6569 * _6569;
    vec4 _6575 = _6569 * 2.0;
    vec4 _6577 = vec4(3.0) - _6575;
    vec4 _6578 = _6573 * _6577;
    vec4 _6559 = _6578 - vec4(0.5);
    vec4 _6560 = _6559 * 2.0;
    float _6450 = _6560.x;
    float _6452 = _6560.y;
    float _6454 = _6560.z;
    float _6455 = _6452 * _6454;
    bool _6458 = _6455 < 0.0;
    float _10570;
    if (_6458)
    {
        _10570 = -_6455;
    }
    else
    {
        _10570 = _6455;
    }
    float _10624 = _6458 ? (-1.0) : 1.0;
    float _6468 = mix(_6455, _10624, _10570);
    float _6472 = mix(_6468, _10624, _10570);
    float _6475 = _6472 * g_rbObjects_Buffer[_3253.g_cbMainArray._aMain[_3244]._Indices._uiObjectIndex].g_rbObjects[0]._vWindBranchTwitch.x;
    float _6478 = 1.0 - g_rbObjects_Buffer[_3253.g_cbMainArray._aMain[_3244]._Indices._uiObjectIndex].g_rbObjects[0]._vWindVector.w;
    float _6479 = _6475 * _6478;
    float _6482 = 1.0 - g_rbObjects_Buffer[_3253.g_cbMainArray._aMain[_3244]._Indices._uiObjectIndex].g_rbObjects[0]._vWindBranchTwitch.x;
    float _6483 = _6450 * _6482;
    float _6484 = _6479 + _6483;
    vec3 _6329 = _6314 * _6484;
    vec3 _6331 = _6329 * g_rbObjects_Buffer[_3253.g_cbMainArray._aMain[_3244]._Indices._uiObjectIndex].g_rbObjects[0]._vWindBranch.y;
    vec3 _6333 = _5671 + _6331;
    vec3 _6649 = vec3(in_windBranchData.w);
    vec3 _6650 = _6649 * vec3(0.0625, -1.0, 16.0);
    vec3 _6651 = fract(_6650);
    vec3 _6653 = _6651.xzy;
    vec3 _6654 = _6653 * 2.0;
    vec3 _6655 = _6654 - vec3(1.0);
    vec3 _6625 = _6655 * in_windBranchData.z;
    float _6724 = g_rbObjects_Buffer[_3253.g_cbMainArray._aMain[_3244]._Indices._uiObjectIndex].g_rbObjects[0]._vWindBranch.z + in_windBranchData.w;
    float _6727 = g_rbObjects_Buffer[_3253.g_cbMainArray._aMain[_3244]._Indices._uiObjectIndex].g_rbObjects[0]._vWindBranch.z * g_rbObjects_Buffer[_3253.g_cbMainArray._aMain[_3244]._Indices._uiObjectIndex].g_rbObjects[0]._vWindBranchTwitch.w;
    float _6729 = _6727 + in_windBranchData.w;
    float _6731 = g_rbObjects_Buffer[_3253.g_cbMainArray._aMain[_3244]._Indices._uiObjectIndex].g_rbObjects[0]._vWindBranchTwitch.w * 0.5;
    float _6735 = _6731 * _6724;
    vec4 _6736 = vec4(_6724, _6729, _6735, 0.0);
    vec4 _6875 = _6736 + vec4(0.5);
    vec4 _6876 = fract(_6875);
    vec4 _6877 = _6876 * 2.0;
    vec4 _6879 = _6877 - vec4(1.0);
    vec4 _6880 = abs(_6879);
    vec4 _6884 = _6880 * _6880;
    vec4 _6886 = _6880 * 2.0;
    vec4 _6888 = vec4(3.0) - _6886;
    vec4 _6889 = _6884 * _6888;
    vec4 _6870 = _6889 - vec4(0.5);
    vec4 _6871 = _6870 * 2.0;
    float _6761 = _6871.x;
    float _6763 = _6871.y;
    float _6765 = _6871.z;
    float _6766 = _6763 * _6765;
    bool _6769 = _6766 < 0.0;
    float _10583;
    if (_6769)
    {
        _10583 = -_6766;
    }
    else
    {
        _10583 = _6766;
    }
    float _10625 = _6769 ? (-1.0) : 1.0;
    float _6779 = mix(_6766, _10625, _10583);
    float _6783 = mix(_6779, _10625, _10583);
    float _6786 = _6783 * g_rbObjects_Buffer[_3253.g_cbMainArray._aMain[_3244]._Indices._uiObjectIndex].g_rbObjects[0]._vWindBranchTwitch.z;
    float _6790 = _6786 * _6478;
    float _6793 = 1.0 - g_rbObjects_Buffer[_3253.g_cbMainArray._aMain[_3244]._Indices._uiObjectIndex].g_rbObjects[0]._vWindBranchTwitch.z;
    float _6794 = _6761 * _6793;
    float _6795 = _6790 + _6794;
    vec3 _6640 = _6625 * _6795;
    vec3 _6642 = _6640 * g_rbObjects_Buffer[_3253.g_cbMainArray._aMain[_3244]._Indices._uiObjectIndex].g_rbObjects[0]._vWindBranch.w;
    vec3 _6644 = _6333 + _6642;
    vec3 _5905 = _6644 - _5671;
    float _6927 = g_rbObjects_Buffer[_3253.g_cbMainArray._aMain[_3244]._Indices._uiObjectIndex].g_rbObjects[0]._vWindFrondRipple.x * in_windExtraDataFlag.z;
    float _6930 = _6927 * g_rbObjects_Buffer[_3253.g_cbMainArray._aMain[_3244]._Indices._uiObjectIndex].g_rbObjects[0]._vWindFrondRipple.z;
    vec4 _6931 = vec4(_6930, 0.0, 0.0, 0.0);
    vec4 _6961 = _6931 + vec4(0.5);
    vec4 _6962 = fract(_6961);
    vec4 _6963 = _6962 * 2.0;
    vec4 _6965 = _6963 - vec4(1.0);
    vec4 _6966 = abs(_6965);
    vec4 _6970 = _6966 * _6966;
    vec4 _6972 = _6966 * 2.0;
    vec4 _6974 = vec4(3.0) - _6972;
    vec4 _6975 = _6970 * _6974;
    vec4 _6956 = _6975 - vec4(0.5);
    vec4 _6957 = _6956 * 2.0;
    vec3 _6979 = vec3(in_windExtraDataFlag.x);
    vec3 _6980 = _6979 * vec3(0.0625, -1.0, 16.0);
    vec3 _6981 = fract(_6980);
    vec3 _6983 = _6981.xzy;
    vec3 _6984 = _6983 * 2.0;
    vec3 _6985 = _6984 - vec3(1.0);
    float _6937 = _6957.x;
    float _6938 = in_windExtraDataFlag.y * _6937;
    float _6941 = _6938 * g_rbObjects_Buffer[_3253.g_cbMainArray._aMain[_3244]._Indices._uiObjectIndex].g_rbObjects[0]._vWindFrondRipple.y;
    vec3 _6944 = _6985 * _6941;
    vec3 _6947 = _5671 + _6944;
    vec3 _5934 = _6947 - _5671;
    vec3 _5957 = _5884 + _5905;
    vec3 _5962 = _5934 * g_rbObjects_Buffer[_3253.g_cbMainArray._aMain[_3244]._Indices._uiObjectIndex].g_rbObjects[0]._vTreeRotation.z;
    vec3 _5963 = _5957 + _5962;
    vec3 _5965 = _5671 + _5963;
    float _7084 = _5965.x;
    float _7085 = _5965.y;
    float _7086 = _5965.z;
    vec4 _7087 = vec4(_7084, _7085, _7086, 1.0);
    vec4 _7088 = _426.g_rbMatrices[_3253.g_cbMainArray._aMain[_3244]._Indices._uiMatricesIndex]._mModelView * _7087;
    vec4 _7107 = _426.g_rbMatrices[_3253.g_cbMainArray._aMain[_3244]._Indices._uiMatricesIndex]._mModelViewProj * _7087;
    vec4 _10617;
    if (_3500.g_cbPass._uDepthClamp == 4294967295u)
    {
        float _7141 = _7107.w;
        vec4 _10618;
        if ((_7107.z / _7141) > 1.0)
        {
            vec4 _10619;
            if (_7088.z > _3500.g_cbPass._fNearPlane)
            {
                vec4 _10528 = _7107;
                _10528.z = _7141;
                _10619 = _10528;
            }
            else
            {
                _10619 = _7107;
            }
            _10618 = _10619;
        }
        else
        {
            _10618 = _7107;
        }
        _10617 = _10618;
    }
    else
    {
        _10617 = _7107;
    }
    interp_instanceID = float(_3243) + 0.5;
    float _5021 = _7088.x;
    float _5022 = _7088.y;
    float _5023 = _7088.z;
    vec4 _5024 = vec4(_5021, _5022, _5023, 1.0);
    float _5025 = dot(_3500.g_cbPass._vfVsClippingPlane[0], _5024);
    float _5026 = -_5025;
    gl_ClipDistance[0] = _5026;
    interp_uv0 = in_uv0;
    interp_vfVsPosition = _7088.xyz;
    interp_vfVsTangent = mat3(_426.g_rbMatrices[_3253.g_cbMainArray._aMain[_3244]._Indices._uiMatricesIndex]._mModelView[0].xyz, _426.g_rbMatrices[_3253.g_cbMainArray._aMain[_3244]._Indices._uiMatricesIndex]._mModelView[1].xyz, _426.g_rbMatrices[_3253.g_cbMainArray._aMain[_3244]._Indices._uiMatricesIndex]._mModelView[2].xyz) * _5453;
    interp_vfVsBinormal = mat3(_426.g_rbMatrices[_3253.g_cbMainArray._aMain[_3244]._Indices._uiMatricesIndex]._mModelView[0].xyz, _426.g_rbMatrices[_3253.g_cbMainArray._aMain[_3244]._Indices._uiMatricesIndex]._mModelView[1].xyz, _426.g_rbMatrices[_3253.g_cbMainArray._aMain[_3244]._Indices._uiMatricesIndex]._mModelView[2].xyz) * (cross(_5249, _5453) * ((_5322 != 0.0) ? (-1.0) : 1.0));
    interp_vfVsNormal = mat3(_426.g_rbMatrices[_3253.g_cbMainArray._aMain[_3244]._Indices._uiMatricesIndex]._mModelView[0].xyz, _426.g_rbMatrices[_3253.g_cbMainArray._aMain[_3244]._Indices._uiMatricesIndex]._mModelView[1].xyz, _426.g_rbMatrices[_3253.g_cbMainArray._aMain[_3244]._Indices._uiMatricesIndex]._mModelView[2].xyz) * _5249;
    gl_Position = _10617;
}

