ShaderLib.js 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215
  1. const ShaderLib = {
  2. common: {
  3. vertexShader:
  4. `#version 450
  5. void main(){
  6. NODE_CODE
  7. NODE_CODE_MVP
  8. gl_Position = NODE_MVP;
  9. }`,
  10. fragmentShader:
  11. `#version 450
  12. layout(location = 0) out vec4 outColor;
  13. void main() {
  14. NODE_CODE
  15. MaterialDiffuseColor = vec4( 1.0 );
  16. #ifdef NODE_COLOR
  17. NODE_CODE_COLOR
  18. MaterialDiffuseColor = NODE_COLOR;
  19. #endif
  20. #ifdef NODE_OPACITY
  21. NODE_CODE_OPACITY
  22. MaterialDiffuseColor.a *= NODE_OPACITY;
  23. #endif
  24. #ifdef NODE_ALPHA_TEST
  25. NODE_CODE_ALPHA_TEST
  26. if ( MaterialDiffuseColor.a < NODE_ALPHA_TEST ) discard;
  27. #endif
  28. #ifdef NODE_LIGHT
  29. NODE_CODE_LIGHT
  30. outColor.rgb = NODE_LIGHT;
  31. outColor.a = MaterialDiffuseColor.a;
  32. #else
  33. outColor = MaterialDiffuseColor;
  34. #endif
  35. }`
  36. },
  37. phong: {
  38. vertexShader:
  39. `#version 450
  40. void main(){
  41. NODE_CODE
  42. NODE_CODE_MVP
  43. gl_Position = NODE_MVP;
  44. }`,
  45. fragmentShader:
  46. `#version 450
  47. layout(location = 0) out vec4 outColor;
  48. void main() {
  49. NODE_CODE
  50. MaterialDiffuseColor = vec4( 1.0 );
  51. MaterialSpecularColor = vec3( 1.0 );
  52. MaterialSpecularShininess = 30.0;
  53. NODE_CODE_COLOR
  54. MaterialDiffuseColor = NODE_COLOR;
  55. NODE_CODE_OPACITY
  56. MaterialDiffuseColor.a *= NODE_OPACITY;
  57. #ifdef NODE_ALPHA_TEST
  58. NODE_CODE_ALPHA_TEST
  59. if ( MaterialDiffuseColor.a < NODE_ALPHA_TEST ) discard;
  60. #endif
  61. NODE_CODE_SPECULAR
  62. MaterialSpecularColor = NODE_SPECULAR;
  63. NODE_CODE_SHININESS
  64. MaterialSpecularShininess = NODE_SHININESS;
  65. #ifdef NODE_LIGHT
  66. NODE_CODE_LIGHT
  67. outColor.rgb = NODE_LIGHT;
  68. outColor.a = MaterialDiffuseColor.a;
  69. #else
  70. outColor = MaterialDiffuseColor;
  71. #endif
  72. }`
  73. },
  74. standard: {
  75. vertexShader:
  76. `#version 450
  77. void main(){
  78. NODE_CODE
  79. NODE_CODE_MVP
  80. gl_Position = NODE_MVP;
  81. }`,
  82. fragmentShader:
  83. `#version 450
  84. layout(location = 0) out vec4 outColor;
  85. void main() {
  86. NODE_CODE
  87. MaterialDiffuseColor = vec4( 1.0 );
  88. MaterialMetalness = 1.0;
  89. MaterialRoughness = 1.0;
  90. #ifdef NODE_COLOR
  91. NODE_CODE_COLOR
  92. MaterialDiffuseColor = NODE_COLOR;
  93. #endif
  94. #ifdef NODE_OPACITY
  95. NODE_CODE_OPACITY
  96. MaterialDiffuseColor.a *= NODE_OPACITY;
  97. #endif
  98. #ifdef NODE_ALPHA_TEST
  99. NODE_CODE_ALPHA_TEST
  100. if ( MaterialDiffuseColor.a < NODE_ALPHA_TEST ) discard;
  101. #endif
  102. NODE_CODE_METALNESS
  103. MaterialMetalness = NODE_METALNESS;
  104. NODE_CODE_ROUGHNESS
  105. MaterialRoughness = NODE_ROUGHNESS;
  106. #ifdef NODE_NORMAL
  107. NODE_CODE_NORMAL
  108. TransformedNormalView = NODE_NORMAL;
  109. #endif
  110. MaterialDiffuseColor.rgb = MaterialDiffuseColor.rgb * ( 1.0 - MaterialMetalness );
  111. #ifdef NODE_LIGHT
  112. NODE_CODE_LIGHT
  113. outColor.rgb = NODE_LIGHT;
  114. outColor.a = MaterialDiffuseColor.a;
  115. #else
  116. outColor = MaterialDiffuseColor;
  117. #endif
  118. }`
  119. },
  120. };
  121. export default ShaderLib;