Advertisement
Guest User

Untitled

a guest
May 6th, 2020
22
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 24.40 KB | None | 0 0
  1. // Library code
  2.  
  3. vec2 posToTexCoord(vec3 cameraPoint, vec3 normal){
  4. // vec3 normPos = -normalize(cameraPoint.xyz);
  5. // vec3 normPos = cameraPoint.xyz;
  6. // vec3 reflection = reflect(normPos, normal);
  7. // return (normalize(vec3(reflection.r, reflection.g, reflection.b + 1.0)).rg * 0.5) + vec2(0.5);
  8.  
  9. vec3 normPos_495 = normalize(cameraPoint.xyz);
  10. vec3 temp_500 = (normPos_495 - (normal * (2.0 * dot(normPos_495, normal))));
  11. vec3 temp_657 = vec3(temp_500.x, temp_500.y, (temp_500.z + 1.0));
  12.  
  13. return ((normalize(temp_657).xy * 0.5) + vec2(0.5));
  14. }
  15.  
  16. float edgeScan(vec3 position, vec3 normal){
  17. float dotProductClamped = clamp(dot(-normalize(position),normal), 0.000000, 1.000000);
  18. return clamp(2.700000 * dotProductClamped * dotProductClamped - 0.400000, 0.000000, 1.000000);
  19. }
  20.  
  21. mat3 blizzTranspose(mat4 value) {
  22. return mat3(
  23. value[0].xyz,
  24. value[1].xyz,
  25. value[2].xyz
  26. );
  27. }
  28.  
  29. // Shader code
  30. #ifdef COMPILING_VS
  31.  
  32. precision highp float;
  33.  
  34. /* vertex shader code */
  35. in vec3 aPosition;
  36. in vec3 aNormal;
  37. in vec2 aTexCoord;
  38. in vec2 aTexCoord2;
  39. in vec4 aBones;
  40. in vec4 aBoneWeights;
  41.  
  42.  
  43. // Whole model
  44. uniform mat4 uViewProjectionMatrix;
  45. uniform mat4 uPlacementMatrix;
  46. uniform mat4 uBoneMatrices[220];
  47.  
  48. //Individual meshes
  49. uniform vec4 color_Transparency;
  50. uniform mat4 uTextureTransformMatrix[2];
  51. uniform mat4 uTextMat[2];
  52.  
  53. //Shader output
  54. out vec3 vPosition;
  55. out vec3 vNormal;
  56. out vec2 vTexCoord;
  57. out vec2 vTexCoord2;
  58. out vec2 vTexCoord3;
  59. out vec4 vDiffuseColor;
  60.  
  61.  
  62. void main() {
  63.  
  64. // Handle bone transforms
  65. mat4 boneTransformMat = mat4(1.0); // static vertex
  66.  
  67. #if BONEINFLUENCES>0
  68. boneTransformMat = mat4(0.0);
  69. boneTransformMat += (aBoneWeights.x ) * uBoneMatrices[int(aBones.x)];
  70. #endif
  71. #if BONEINFLUENCES>1
  72. boneTransformMat += (aBoneWeights.y ) * uBoneMatrices[int(aBones.y)];
  73. #endif
  74. #if BONEINFLUENCES>2
  75. boneTransformMat += (aBoneWeights.z ) * uBoneMatrices[int(aBones.z)];
  76. #endif
  77. #if BONEINFLUENCES>3
  78. boneTransformMat += (aBoneWeights.w ) * uBoneMatrices[int(aBones.w)];
  79. #endif
  80.  
  81. vec4 aPositionVec4 = vec4(aPosition, 1.0f);
  82.  
  83. vec4 lDiffuseColor = color_Transparency;
  84. vec4 combinedColor = clamp(lDiffuseColor /*+ vc_matEmissive*/, 0.000000, 1.000000);
  85. vec4 combinedColorHalved = combinedColor * 0.5;
  86.  
  87. mat3 viewModelMatTransposed = mat3(uViewProjectionMatrix) * mat3(uPlacementMatrix) * mat3(boneTransformMat);
  88. mat4 cameraMatrix = uViewProjectionMatrix * uPlacementMatrix * boneTransformMat;
  89. vec4 cameraPoint = cameraMatrix * aPositionVec4;
  90.  
  91. // Handle normals
  92. vec3 normal = normalize(viewModelMatTransposed * aNormal);
  93. vec2 envCoord = posToTexCoord(cameraPoint.xyz, normal);
  94. float edgeScanVal = edgeScan(cameraPoint.xyz, normal);
  95.  
  96. // Handle colors and texture coordinates
  97. vTexCoord2 = vec2(0.0);
  98. vTexCoord3 = vec2(0.0);
  99.  
  100. //Diffuse_T1
  101. #if VERTEXSHADER == 0
  102. vDiffuseColor = vec4(combinedColorHalved.r, combinedColorHalved.g, combinedColorHalved.b, combinedColor.a);
  103. vTexCoord = (uTextMat[0] * vec4(aTexCoord, 0.000000, 1.000000)).xy;
  104. #endif
  105. //Diffuse_Env
  106. #if VERTEXSHADER == 1
  107. vDiffuseColor = vec4(combinedColorHalved.r, combinedColorHalved.g, combinedColorHalved.b, combinedColor.a);
  108. vTexCoord = envCoord;
  109. #endif
  110. //Diffuse_T1_T2
  111. #if VERTEXSHADER == 2
  112. vDiffuseColor = vec4(combinedColorHalved.r, combinedColorHalved.g, combinedColorHalved.b, combinedColor.a);
  113. vTexCoord = (uTextMat[0] * vec4(aTexCoord, 0.000000, 1.000000)).xy;
  114. vTexCoord2 = (uTextMat[1] * vec4(aTexCoord2, 0.000000, 1.000000)).xy;
  115. #endif
  116. #if VERTEXSHADER == 3 //Diffuse_T1_Env
  117. vDiffuseColor = vec4(combinedColorHalved.r, combinedColorHalved.g, combinedColorHalved.b, combinedColor.a);
  118. vTexCoord = (uTextMat[0] * vec4(aTexCoord, 0.000000, 1.000000)).xy;
  119. vTexCoord2 = envCoord;
  120. #endif
  121. #if VERTEXSHADER == 4 //Diffuse_Env_T1
  122. vDiffuseColor = vec4(combinedColorHalved.r, combinedColorHalved.g, combinedColorHalved.b, combinedColor.a);
  123. vTexCoord = envCoord;
  124. vTexCoord2 = (uTextMat[0] * vec4(aTexCoord, 0.000000, 1.000000)).xy;
  125. #endif
  126. #if VERTEXSHADER == 5 //Diffuse_Env_Env
  127. vDiffuseColor = vec4(combinedColorHalved.r, combinedColorHalved.g, combinedColorHalved.b, combinedColor.a);
  128. vTexCoord = envCoord;
  129. vTexCoord2 = envCoord;
  130. #endif
  131. #if VERTEXSHADER == 6 //Diffuse_T1_Env_T1
  132. vDiffuseColor = vec4(combinedColorHalved.r, combinedColorHalved.g, combinedColorHalved.b, combinedColor.a);
  133. vTexCoord = (uTextMat[0] * vec4(aTexCoord, 0.000000, 1.000000) ).xy;
  134. vTexCoord2 = envCoord;
  135. vTexCoord3 = (uTextMat[0] * vec4(aTexCoord, 0.000000, 1.000000)).xy;
  136. #endif
  137. #if VERTEXSHADER == 7 //Diffuse_T1_T1
  138. vDiffuseColor = vec4(combinedColorHalved.r, combinedColorHalved.g, combinedColorHalved.b, combinedColor.a);
  139. vTexCoord = (uTextMat[0] * vec4(aTexCoord, 0.000000, 1.000000)).xy;
  140. vTexCoord2 = (uTextMat[0] * vec4(aTexCoord, 0.000000, 1.000000)).xy;
  141. #endif
  142. #if VERTEXSHADER == 8 //Diffuse_T1_T1_T1
  143. vDiffuseColor = vec4(combinedColorHalved.r, combinedColorHalved.g, combinedColorHalved.b, combinedColor.a);
  144. vTexCoord = (uTextMat[0] * vec4(aTexCoord, 0.000000, 1.000000)).xy;
  145. vTexCoord2 = (uTextMat[0] * vec4(aTexCoord, 0.000000, 1.000000)).xy;
  146. vTexCoord3 = (uTextMat[0] * vec4(aTexCoord, 0.000000, 1.000000)).xy;
  147. #endif
  148. #if VERTEXSHADER == 9 //Diffuse_EdgeFade_T1
  149. vDiffuseColor = vec4(combinedColorHalved.r, combinedColorHalved.g, combinedColorHalved.b, combinedColor.a * edgeScanVal);
  150. vTexCoord = ((uTextMat[0] * vec4(aTexCoord, 0.000000, 1.000000)).xy).xy;
  151. #endif
  152. #if VERTEXSHADER == 10 //Diffuse_T2
  153.  
  154. vDiffuseColor = vec4(combinedColorHalved.r, combinedColorHalved.g, combinedColorHalved.b, combinedColor.a);
  155. vTexCoord = (uTextMat[1] * vec4(aTexCoord2, 0.000000, 1.000000)).xy;
  156. #endif
  157. #if VERTEXSHADER == 11 //Diffuse_T1_Env_T2
  158. vDiffuseColor = vec4(combinedColorHalved.r, combinedColorHalved.g, combinedColorHalved.b, combinedColor.a);
  159. vTexCoord = (uTextMat[0] * vec4(aTexCoord, 0.000000, 1.000000)).xy;
  160. vTexCoord2 = envCoord;
  161. vTexCoord3 = (uTextMat[1] * vec4(aTexCoord2, 0.000000, 1.000000)).xy;
  162. #endif
  163. #if VERTEXSHADER == 12 //Diffuse_EdgeFade_T1_T2
  164. vDiffuseColor = vec4(combinedColorHalved.r, combinedColorHalved.g, combinedColorHalved.b, combinedColor.a * edgeScanVal);
  165. vTexCoord = (uTextMat[0] * vec4(aTexCoord, 0.000000, 1.000000)).xy;
  166. vTexCoord2 = (uTextMat[1] * vec4(aTexCoord2, 0.000000, 1.000000)).xy;
  167. #endif
  168. #if VERTEXSHADER == 13 //Diffuse_EdgeFade_Env
  169. vDiffuseColor = vec4(combinedColorHalved.r, combinedColorHalved.g, combinedColorHalved.b, combinedColor.a * edgeScanVal);
  170. vTexCoord = envCoord;
  171. #endif
  172. #if VERTEXSHADER == 14 //Diffuse_T1_T2_T1
  173. vDiffuseColor = vec4(combinedColorHalved.r, combinedColorHalved.g, combinedColorHalved.b, combinedColor.a);
  174. vTexCoord = (uTextMat[0] * vec4(aTexCoord, 0.000000, 1.000000)).xy;
  175. vTexCoord2 = (uTextMat[1] * vec4(aTexCoord2, 0.000000, 1.000000)).xy;
  176. vTexCoord3 = (uTextMat[0] * vec4(aTexCoord, 0.000000, 1.000000)).xy;
  177. #endif
  178. #if VERTEXSHADER == 15 //Diffuse_T1_T2_T3
  179. vDiffuseColor = vec4(combinedColorHalved.r, combinedColorHalved.g, combinedColorHalved.b, combinedColor.a);
  180. vTexCoord = (uTextMat[0] * vec4(aTexCoord, 0.000000, 1.000000)).xy;
  181. vTexCoord2 = (uTextMat[1] * vec4(aTexCoord2, 0.000000, 1.000000)).xy;
  182. vTexCoord3 = vTexCoord3;
  183. #endif
  184. #if VERTEXSHADER == 16 //Color_T1_T2_T3
  185. vec4 in_col0 = vec4(1.0, 1.0, 1.0, 1.0);
  186. vDiffuseColor = vec4((in_col0.rgb * 0.500000).r, (in_col0.rgb * 0.500000).g, (in_col0.rgb * 0.500000).b, in_col0.a);
  187. vTexCoord = (uTextMat[1] * vec4(aTexCoord2, 0.000000, 1.000000)).xy;
  188. vTexCoord2 = vec2(0.000000, 0.000000);
  189. vTexCoord3 = vTexCoord3;
  190. #endif
  191. #if VERTEXSHADER == 17 //BW_Diffuse_T1
  192. vDiffuseColor = vec4(combinedColor.rgb * 0.500000, combinedColor.a);
  193. vTexCoord = (uTextMat[0] * vec4(aTexCoord, 0.000000, 1.000000)).xy;
  194. #endif
  195. #if VERTEXSHADER == 18 //BW_Diffuse_T1_T2
  196. vDiffuseColor = vec4(combinedColor.rgb * 0.500000, combinedColor.a);
  197. vTexCoord = (uTextMat[0] * vec4(aTexCoord, 0.000000, 1.000000)).xy;
  198. #endif
  199.  
  200. vNormal = normal;
  201. vPosition = cameraPoint.xyz;
  202.  
  203. gl_Position = cameraPoint;
  204.  
  205. }
  206.  
  207. #endif //COMPILING_VS
  208.  
  209.  
  210. #ifdef COMPILING_FS
  211.  
  212. precision highp float;
  213.  
  214. struct LocalLight
  215. {
  216. vec4 color;
  217. vec4 position;
  218. vec4 attenuation;
  219. };
  220.  
  221.  
  222. in vec3 vNormal;
  223. in vec2 vTexCoord;
  224. in vec2 vTexCoord2;
  225. in vec2 vTexCoord3;
  226. in vec3 vPosition;
  227. in vec4 vDiffuseColor;
  228.  
  229. uniform sampler2D uTexture;
  230. uniform sampler2D uTexture2;
  231. uniform sampler2D uTexture3;
  232. uniform sampler2D uTexture4;
  233.  
  234. out vec4 outputColor;
  235.  
  236. //Whole model
  237. uniform mat4 uViewProjectionMatrix;
  238.  
  239. uniform vec4 uSunDirAndFogStart;
  240. uniform vec4 uSunColorAndFogEnd;
  241. uniform vec4 uAmbientLight;
  242.  
  243.  
  244. //Individual meshes
  245. uniform ivec3 UnFogged_IsAffectedByLight_LightCount;
  246. uniform vec4 uFogColorAndAlphaTest;
  247. uniform LocalLight pc_lights[4];
  248.  
  249.  
  250. vec3 makeDiffTerm(vec3 matDiffuse, vec3 accumLight) {
  251. vec3 currColor;
  252. float mult = 1.0;
  253. vec3 lDiffuse = vec3(0.0, 0.0, 0.0);
  254. vec4 viewUp = uViewProjectionMatrix * vec4(0, 0, 1, 0);
  255.  
  256. if (UnFogged_IsAffectedByLight_LightCount.y == 1) {
  257. vec3 normalizedN = normalize(vNormal);
  258. float nDotL = clamp(dot(normalizedN, -(uSunDirAndFogStart.xyz)), 0.0, 1.0);
  259. float nDotUp = dot(normalizedN, viewUp.xyz);
  260.  
  261. vec4 AmbientLight = uAmbientLight;
  262.  
  263. vec3 adjAmbient = (AmbientLight.rgb );
  264. vec3 adjHorizAmbient = (AmbientLight.rgb );
  265. vec3 adjGroundAmbient = (AmbientLight.rgb );
  266.  
  267. if ((nDotUp >= 0.0))
  268. {
  269. currColor = mix(adjHorizAmbient, adjAmbient, vec3(nDotUp));
  270. }
  271. else
  272. {
  273. currColor= mix(adjHorizAmbient, adjGroundAmbient, vec3(-(nDotUp)));
  274. }
  275.  
  276. vec3 skyColor = (currColor * 1.10000002);
  277. vec3 groundColor = (currColor* 0.699999988);
  278.  
  279.  
  280. lDiffuse = (uSunColorAndFogEnd.xyz * nDotL);
  281. currColor = mix(groundColor, skyColor, vec3((0.5 + (0.5 * nDotL))));
  282.  
  283. } else {
  284. currColor = vec3 (1.0, 1.0, 1.0) ;
  285. accumLight = vec3(0,0,0);
  286. mult = 1.0;
  287. }
  288.  
  289.  
  290. vec3 gammaDiffTerm = matDiffuse * (currColor + lDiffuse);
  291. vec3 linearDiffTerm = (matDiffuse * matDiffuse) * accumLight;
  292.  
  293. return sqrt(gammaDiffTerm*gammaDiffTerm + linearDiffTerm) ;
  294. }
  295.  
  296.  
  297. void main() {
  298.  
  299. /* Animation support */
  300. vec2 texCoord = vTexCoord.xy;
  301. vec2 texCoord2 = vTexCoord2.xy;
  302. vec2 texCoord3 = vTexCoord3.xy;
  303.  
  304. vec4 gamma = vec4(0.454);
  305.  
  306. /* Get color from texture */
  307. vec4 tex = pow(texture(uTexture, texCoord).rgba, gamma);
  308.  
  309. vec4 tex2 = pow(texture(uTexture2, texCoord2).rgba, gamma);
  310. vec4 tex3 = pow(texture(uTexture3, texCoord3).rgba, gamma);
  311.  
  312. vec4 tex2WithTextCoord1 = texture(uTexture2,texCoord);
  313. vec4 tex3WithTextCoord1 = texture(uTexture3,texCoord);
  314. vec4 tex4WithTextCoord2 = texture(uTexture4,texCoord2);
  315.  
  316. vec4 finalColor = vec4(0);
  317. vec4 meshResColor = vDiffuseColor;
  318.  
  319. vec3 accumLight;
  320. if ((UnFogged_IsAffectedByLight_LightCount.y == 1)) {
  321. vec3 vPos3 = vPosition.xyz;
  322. vec3 vNormal3 = normalize(vNormal.xyz);
  323. vec3 lightColor = vec3(0.0);
  324. int count = int(pc_lights[0].attenuation.w);
  325. int index = 0;
  326. for (;;)
  327. {
  328. if ( index >= UnFogged_IsAffectedByLight_LightCount.z) break;
  329. LocalLight lightRecord = pc_lights[index];
  330. vec3 vectorToLight = ((lightRecord.position).xyz - vPos3);
  331. float distanceToLightSqr = dot(vectorToLight, vectorToLight);
  332. float distanceToLightInv = inversesqrt(distanceToLightSqr);
  333. float distanceToLight = (distanceToLightSqr * distanceToLightInv);
  334. float diffuseTerm1 = max((dot(vectorToLight, vNormal3) * distanceToLightInv), 0.0);
  335. vec4 attenuationRec = lightRecord.attenuation;
  336.  
  337. float attenuation = (1.0 - clamp((distanceToLight - attenuationRec.x) * (1.0 / (attenuationRec.z - attenuationRec.x)), 0.0, 1.0));
  338.  
  339. vec3 attenuatedColor = attenuation * lightRecord.color.xyz * attenuationRec.y;
  340. lightColor = (lightColor + vec3(attenuatedColor * attenuatedColor * diffuseTerm1 ));
  341. index++;
  342. }
  343. meshResColor.rgb = clamp(lightColor , 0.0, 1.0);
  344. accumLight = meshResColor.rgb;
  345. //finalColor.rgb = finalColor.rgb * lightColor;
  346. }
  347.  
  348. float opacity;
  349. float finalOpacity = 0.0;
  350. vec3 matDiffuse;
  351. vec3 specular = vec3(0.0, 0.0, 0.0);
  352. vec3 visParams = vec3(1.0, 1.0, 1.0);
  353. vec4 genericParams[3];
  354. genericParams[0] = vec4( 1.0, 1.0, 1.0, 1.0 );
  355. genericParams[1] = vec4( 1.0, 1.0, 1.0, 1.0 );
  356. genericParams[2] = vec4( 1.0, 1.0, 1.0, 1.0 );
  357.  
  358. #if(FRAGMENTSHADER==0) //Combiners_Opaque
  359. matDiffuse = vDiffuseColor.rgb * 2.000000 * tex.rgb;
  360. opacity = vDiffuseColor.a;
  361. finalOpacity = opacity * visParams.r;
  362. #endif
  363. #if(FRAGMENTSHADER==1) //Combiners_Mod
  364. matDiffuse = vDiffuseColor.rgb * 2.000000 * tex.rgb;
  365. opacity = tex.a * vDiffuseColor.a;
  366. finalOpacity = opacity * visParams.r;
  367. #endif
  368. #if(FRAGMENTSHADER==2) //Combiners_Opaque_Mod
  369. matDiffuse = vDiffuseColor.rgb * 2.000000 * tex.rgb * tex2.rgb;
  370. opacity = tex2.a * vDiffuseColor.a;
  371. finalOpacity = opacity * visParams.r;
  372. #endif
  373. #if(FRAGMENTSHADER==3) //Combiners_Opaque_Mod2x
  374. matDiffuse = vDiffuseColor.rgb * 2.000000 * tex.rgb * tex2.rgb * 2.000000;
  375. opacity = tex2.a * 2.000000 * vDiffuseColor.a;
  376. finalOpacity = opacity * visParams.r;
  377. #endif
  378. #if(FRAGMENTSHADER==4) //Combiners_Opaque_Mod2xNA
  379. matDiffuse = vDiffuseColor.rgb * 2.000000 * tex.rgb * tex2.rgb * 2.000000;
  380. opacity = vDiffuseColor.a;
  381. finalOpacity = opacity * visParams.r;
  382. #endif
  383. #if(FRAGMENTSHADER==5) //Combiners_Opaque_Opaque
  384. matDiffuse = vDiffuseColor.rgb * 2.000000 * tex.rgb * tex2.rgb;
  385. opacity = vDiffuseColor.a;
  386. finalOpacity = opacity * visParams.r;
  387. #endif
  388. #if(FRAGMENTSHADER==6) //Combiners_Mod_Mod
  389. matDiffuse = vDiffuseColor.rgb * 2.000000 * tex.rgb * tex2.rgb;
  390. opacity = tex.a * tex2.a * vDiffuseColor.a;
  391. finalOpacity = opacity * visParams.r;
  392. #endif
  393. #if(FRAGMENTSHADER==7) //Combiners_Mod_Mod2x
  394. matDiffuse = vDiffuseColor.rgb * 2.000000 * tex.rgb * tex2.rgb * 2.000000;
  395. opacity = tex.a * tex2.a * 2.000000 * vDiffuseColor.a;
  396. finalOpacity = opacity * visParams.r;
  397. #endif
  398. #if(FRAGMENTSHADER==8) //Combiners_Mod_Add
  399. matDiffuse = vDiffuseColor.rgb * 2.000000 * tex.rgb;
  400. opacity = (tex.a + tex2.a) * vDiffuseColor.a;
  401. specular = tex2.rgb;
  402. finalOpacity = opacity * visParams.r;
  403. #endif
  404. #if(FRAGMENTSHADER==9) //Combiners_Mod_Mod2xNA
  405. matDiffuse = vDiffuseColor.rgb * 2.000000 * tex.rgb * tex2.rgb * 2.000000;
  406. opacity = tex.a * vDiffuseColor.a;
  407. finalOpacity = opacity * visParams.r;
  408. #endif
  409. #if(FRAGMENTSHADER==10) //Combiners_Mod_AddNA
  410. matDiffuse = vDiffuseColor.rgb * 2.000000 * tex.rgb;
  411. opacity = tex.a * vDiffuseColor.a;
  412. specular = tex2.rgb;
  413. finalOpacity = opacity * visParams.r;
  414. #endif
  415. #if(FRAGMENTSHADER==11) //Combiners_Mod_Opaque
  416. matDiffuse = vDiffuseColor.rgb * 2.000000 * tex.rgb * tex2.rgb;
  417. opacity = tex.a * vDiffuseColor.a;
  418. finalOpacity = opacity * visParams.r;
  419. #endif
  420. #if(FRAGMENTSHADER==12) //Combiners_Opaque_Mod2xNA_Alpha
  421. matDiffuse = vDiffuseColor.rgb * 2.000000 * mix(tex.rgb * tex2.rgb * 2.000000, tex.rgb, vec3(tex.a));
  422. opacity = vDiffuseColor.a;
  423. finalOpacity = opacity * visParams.r;
  424. #endif
  425. #if(FRAGMENTSHADER==13) //Combiners_Opaque_AddAlpha
  426. matDiffuse = vDiffuseColor.rgb * 2.000000 * tex.rgb;
  427. specular = tex2.rgb * tex2.a;
  428. opacity = vDiffuseColor.a;
  429. finalOpacity = opacity * visParams.r;
  430. #endif
  431. #if(FRAGMENTSHADER==14) //Combiners_Opaque_AddAlpha_Alpha
  432. matDiffuse = vDiffuseColor.rgb * 2.000000 * tex.rgb;
  433. specular = tex2.rgb * tex2.a * (1.000000 - tex.a);
  434. opacity = vDiffuseColor.a;
  435. finalOpacity = opacity * visParams.r;
  436. #endif
  437. #if(FRAGMENTSHADER==15) //Combiners_Opaque_Mod2xNA_Alpha_Add
  438. matDiffuse = vDiffuseColor.rgb * 2.000000 * mix(tex.rgb * tex2.rgb * 2.000000, tex.rgb, vec3(tex.a));
  439. specular = tex3.rgb * tex3.a * genericParams[0].b;
  440. opacity = vDiffuseColor.a;
  441. finalOpacity = opacity * visParams.r;
  442. #endif
  443. #if(FRAGMENTSHADER==16) //Combiners_Mod_AddAlpha
  444. matDiffuse = vDiffuseColor.rgb * 2.000000 * tex.rgb;
  445. opacity = tex.a * vDiffuseColor.a;
  446. specular = tex2.rgb * tex2.a;
  447. finalOpacity = opacity * visParams.r;
  448. #endif
  449. #if(FRAGMENTSHADER==17) //Combiners_Mod_AddAlpha_Alpha
  450. matDiffuse = vDiffuseColor.rgb * 2.000000 * tex.rgb;
  451. opacity = (tex.a + tex2.a * (0.300000 * tex2.r + 0.590000 * tex2.g + 0.110000 * tex2.b)) * vDiffuseColor.a;
  452. specular = tex2.rgb * tex2.a * (1.000000 - tex.a);
  453. finalOpacity = opacity * visParams.r;
  454. #endif
  455. #if(FRAGMENTSHADER==18) //Combiners_Opaque_Alpha_Alpha
  456. matDiffuse = vDiffuseColor.rgb * 2.000000 * mix(mix(tex.rgb, tex2.rgb, vec3(tex2.a)), tex.rgb, vec3(tex.a));
  457. opacity = vDiffuseColor.a;
  458. finalOpacity = opacity * visParams.r;
  459. #endif
  460. #if(FRAGMENTSHADER==19) //Combiners_Opaque_Mod2xNA_Alpha_3s
  461. matDiffuse = vDiffuseColor.rgb * 2.000000 * mix(tex.rgb * tex2.rgb * 2.000000, tex3.rgb, vec3(tex3.a));
  462. opacity = vDiffuseColor.a;
  463. finalOpacity = opacity * visParams.r;
  464. #endif
  465. #if(FRAGMENTSHADER==20) //Combiners_Opaque_AddAlpha_Wgt
  466. matDiffuse = vDiffuseColor.rgb * 2.000000 * tex.rgb;
  467. specular = tex2.rgb * tex2.a * genericParams[0].g;
  468. opacity = vDiffuseColor.a;
  469. finalOpacity = opacity * visParams.r;
  470. #endif
  471. #if(FRAGMENTSHADER==21) //Combiners_Mod_Add_Alpha
  472. matDiffuse = vDiffuseColor.rgb * 2.000000 * tex.rgb;
  473. opacity = (tex.a + tex2.a) * vDiffuseColor.a;
  474. specular = tex2.rgb * (1.000000 - tex.a);
  475. finalOpacity = opacity * visParams.r;
  476. #endif
  477. #if(FRAGMENTSHADER==22) //Combiners_Opaque_ModNA_Alpha
  478. matDiffuse = vDiffuseColor.rgb * 2.000000 * mix(tex.rgb * tex2.rgb, tex.rgb, vec3(tex.a));
  479. opacity = vDiffuseColor.a;
  480. finalOpacity = opacity * visParams.r;
  481. #endif
  482. #if(FRAGMENTSHADER==23) //Combiners_Mod_AddAlpha_Wgt
  483. matDiffuse = vDiffuseColor.rgb * 2.000000 * tex.rgb;
  484. opacity = tex.a * vDiffuseColor.a;
  485. specular = tex2.rgb * tex2.a * genericParams[0].g;
  486. finalOpacity = opacity * visParams.r;
  487. #endif
  488. #if(FRAGMENTSHADER==24) //Combiners_Opaque_Mod_Add_Wgt
  489. matDiffuse = vDiffuseColor.rgb * 2.000000 * mix(tex.rgb, tex2.rgb, vec3(tex2.a));
  490. specular = tex.rgb * tex.a * genericParams[0].r;
  491. opacity = vDiffuseColor.a;
  492. finalOpacity = opacity * visParams.r;
  493. #endif
  494. #if(FRAGMENTSHADER==25) //Combiners_Opaque_Mod2xNA_Alpha_UnshAlpha
  495. float glowOpacity = clamp((tex3.a * genericParams[0].z), 0.0, 1.0);
  496. matDiffuse = vDiffuseColor.rgb * 2.000000 * mix(tex.rgb * tex2.rgb * 2.000000, tex.rgb, vec3(tex.a)) * (1.000000 - glowOpacity);
  497. specular = tex3.rgb * glowOpacity;
  498. opacity = vDiffuseColor.a;
  499. finalOpacity = opacity * visParams.r;
  500. #endif
  501. #if(FRAGMENTSHADER==26) //Combiners_Mod_Dual_Crossfade
  502. matDiffuse = vDiffuseColor.rgb * 2.000000 * mix(mix(tex, tex2WithTextCoord1, vec4(clamp(genericParams[0].g, 0.000000, 1.000000))), tex3WithTextCoord1, vec4(clamp(genericParams[0].b, 0.000000, 1.000000))).rgb;
  503. opacity = mix(mix(tex, tex2WithTextCoord1, vec4(clamp(genericParams[0].g, 0.000000, 1.000000))), tex3WithTextCoord1, vec4(clamp(genericParams[0].b, 0.000000, 1.000000))).a * vDiffuseColor.a;
  504. finalOpacity = opacity * visParams.r;
  505. #endif
  506. #if(FRAGMENTSHADER==27) //Combiners_Opaque_Mod2xNA_Alpha_Alpha
  507. matDiffuse = vDiffuseColor.rgb * 2.000000 * mix(mix(tex.rgb * tex2.rgb * 2.000000, tex3.rgb, vec3(tex3.a)), tex.rgb, vec3(tex.a));
  508. opacity = vDiffuseColor.a;
  509. finalOpacity = opacity * visParams.r;
  510. #endif
  511. #if(FRAGMENTSHADER==28) //Combiners_Mod_Masked_Dual_Crossfade
  512. matDiffuse = vDiffuseColor.rgb * 2.000000 * mix(mix(tex, tex2WithTextCoord1, vec4(clamp(genericParams[0].g, 0.000000, 1.000000))), tex3WithTextCoord1, vec4(clamp(genericParams[0].b, 0.000000, 1.000000))).rgb;
  513. opacity = mix(mix(tex, tex2WithTextCoord1, vec4(clamp(genericParams[0].g, 0.000000, 1.000000))), tex3WithTextCoord1, vec4(clamp(genericParams[0].b, 0.000000, 1.000000))).a * tex4WithTextCoord2.a * vDiffuseColor.a;
  514. finalOpacity = opacity * visParams.r;
  515. #endif
  516. #if(FRAGMENTSHADER==29) //Combiners_Opaque_Alpha
  517. matDiffuse = vDiffuseColor.rgb * 2.000000 * mix(tex.rgb, tex2.rgb, vec3(tex2.a));
  518. opacity = vDiffuseColor.a;
  519. finalOpacity = opacity * visParams.r;
  520. #endif
  521. #if(FRAGMENTSHADER==30) //Guild
  522. matDiffuse = vDiffuseColor.rgb * 2.000000 * mix(tex.rgb * mix(genericParams[0].rgb, tex2.rgb * genericParams[1].rgb, vec3(tex2.a)), tex3.rgb * genericParams[2].rgb, vec3(tex3.a));
  523. opacity = tex.a * vDiffuseColor.a;
  524. finalOpacity = opacity * visParams.r;
  525. #endif
  526. #if(FRAGMENTSHADER==31) //Guild_NoBorder
  527. matDiffuse = vDiffuseColor.rgb * 2.000000 * tex.rgb * mix(genericParams[0].rgb, tex2.rgb * genericParams[1].rgb, vec3(tex2.a));
  528. opacity = tex.a * vDiffuseColor.a;
  529. finalOpacity = opacity * visParams.r;
  530. #endif
  531. #if(FRAGMENTSHADER==32) //Guild_Opaque
  532. matDiffuse = vDiffuseColor.rgb * 2.000000 * mix(tex.rgb * mix(genericParams[0].rgb, tex2.rgb * genericParams[1].rgb, vec3(tex2.a)), tex3.rgb * genericParams[2].rgb, vec3(tex3.a));
  533. opacity = vDiffuseColor.a;
  534. finalOpacity = opacity * visParams.r;
  535. #endif
  536. #if(FRAGMENTSHADER==33) //Combiners_Mod_Depth
  537. matDiffuse = vDiffuseColor.rgb * 2.000000 * tex.rgb;
  538. opacity = tex.a * vDiffuseColor.a * visParams.r;
  539. finalOpacity = opacity * visParams.r;
  540. #endif
  541. #if(FRAGMENTSHADER==34) //Illum
  542. finalColor = vec4(1.0,1.0,1.0, 1.0);
  543.  
  544. //Unusued
  545. #endif
  546. #if(FRAGMENTSHADER==35) //Combiners_Mod_Mod_Mod_Const
  547. matDiffuse = vDiffuseColor.rgb * 2.000000 * (tex * tex2 * tex3 * genericParams[0]).rgb;
  548. opacity = (tex * tex2 * tex3 * genericParams[0]).a * vDiffuseColor.a;
  549. finalOpacity = opacity * visParams.r;
  550. #endif
  551.  
  552. finalColor = vec4(makeDiffTerm(matDiffuse, accumLight) + specular, finalOpacity);
  553.  
  554. if(finalColor.a < uFogColorAndAlphaTest.w)
  555. discard;
  556.  
  557. int uUnFogged = UnFogged_IsAffectedByLight_LightCount.x;
  558. float uFogEnd = uSunColorAndFogEnd.w;
  559. if (uUnFogged == 0) {
  560.  
  561. vec3 fogColor = uFogColorAndAlphaTest.xyz;
  562.  
  563. float fog_rate = 1.5;
  564. float fog_bias = 0.01;
  565.  
  566. //vec4 fogHeightPlane = pc_fog.heightPlane;
  567. //float heightRate = pc_fog.color_and_heightRate.w;
  568.  
  569. float distanceToCamera = length(vPosition.xyz);
  570. float z_depth = (distanceToCamera - fog_bias);
  571. float expFog = 1.0 / (exp((max(0.0, (z_depth - uSunDirAndFogStart.w)) * fog_rate)));
  572. //float height = (dot(fogHeightPlane.xyz, vPosition.xyz) + fogHeightPlane.w);
  573. //float heightFog = clamp((height * heightRate), 0, 1);
  574. float heightFog = 1.0;
  575. expFog = (expFog + heightFog);
  576. float endFadeFog = clamp(((uFogEnd - distanceToCamera) / (0.699999988 * uFogEnd)), 0.0, 1.0);
  577. float fog_out = min(expFog, endFadeFog);
  578. finalColor.rgba = vec4(mix(fogColor.rgb, finalColor.rgb, vec3(fog_out)), finalColor.a);
  579. }
  580.  
  581.  
  582. outputColor = finalColor;
  583.  
  584. }
  585.  
  586. #endif //COMPILING_FS
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement