thomasfn

Shader

Dec 16th, 2011
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.04 KB | None | 0 0
  1. SHADER_IMPL(TerrainPass1Fragment, FRAGMENT,
  2. "#version 140\n"
  3. "\n"
  4. "uniform sampler2DArray texMaterialArray;\n"
  5. "\n"
  6. "in vec3 vecPosition;\n"
  7. "in vec3 vecNormal;\n"
  8. "in vec3 vecMaterials;\n"
  9. "in vec3 vecMaterialAlphas;\n"
  10. "\n"
  11. "out vec4 outDiffuse;\n"
  12. "out vec3 outPosition;\n"
  13. "out vec3 outNormal;\n"
  14. "\n"
  15. "struct FragmentData\n"
  16. "{\n"
  17. " vec4 Colour;\n"
  18. //" vec3 Normal;\n"
  19. "};\n"
  20.  
  21. "\n"
  22. "FragmentData Sample(in vec3 pos, float mat)\n"
  23. "{\n"
  24. " vec3 blend_weights = abs( vecNormal );\n"
  25. " blend_weights = (blend_weights - 0.2) * 0.7;\n"
  26. " blend_weights = max( blend_weights, 0.0 );\n"
  27. " blend_weights /= (blend_weights.x + blend_weights.y + blend_weights.z);\n"
  28. " \n"
  29. " vec3 coord1 = vec3( pos.z * 0.5, pos.y * 0.5, mat );\n"
  30. " vec3 coord2 = vec3( pos.z * 0.5, pos.x * 0.5, mat );\n"
  31. " vec3 coord3 = vec3( pos.x * 0.5, pos.y * 0.5, mat );\n"
  32. " \n"
  33. " vec4 col1 = texture( texMaterialArray, coord1 );\n"
  34. " vec4 col2 = texture( texMaterialArray, coord2 );\n"
  35. " vec4 col3 = texture( texMaterialArray, coord3 );\n"
  36. " \n"
  37. " vec4 blended_colour = (col1 * blend_weights.x) + (col2 * blend_weights.y) + (col3 * blend_weights.z);\n"
  38. " FragmentData data;\n"
  39. " data.Colour = blended_colour;\n"
  40. " return data;"
  41. "}\n"
  42. "\n"
  43. "FragmentData Lerp( FragmentData a, FragmentData b, float mu )\n"
  44. "{\n"
  45. " FragmentData data;\n"
  46. " data.Colour = (b.Colour - a.Colour) * mu + a.Colour;\n"
  47. " return data;\n"
  48. "}\n"
  49. "\n"
  50. "FragmentData CalcFrag()\n"
  51. "{\n"
  52. " FragmentData A = Sample( vecPosition, vecMaterials.x );\n"
  53. " FragmentData B = Sample( vecPosition, vecMaterials.y );\n"
  54. " FragmentData C = Sample( vecPosition, vecMaterials.z );\n"
  55. " FragmentData result;\n"
  56. " result.Colour = (A.Colour * vecMaterialAlphas.x) + (B.Colour * vecMaterialAlphas.y) + (C.Colour * vecMaterialAlphas.z);\n"
  57. " return result;\n"
  58. "}\n"
  59. "\n"
  60. "void main()\n"
  61. "{\n"
  62. " outNormal = vecNormal;\n"
  63. " outPosition = vec3( 1.0, 1.0, 1.0 );\n"
  64. " FragmentData data = CalcFrag();\n"
  65. " outDiffuse = data.Colour;\n"
  66. "}\n")
Advertisement
Add Comment
Please, Sign In to add comment