ShaderLib.js 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. const ShaderLib = {
  2. meshBasic: {
  3. vertexShader: `#version 450
  4. layout(location = 0) in vec3 position;
  5. layout(location = 1) in vec2 uv;
  6. layout(location = 0) out vec2 vUv;
  7. layout(set = 0, binding = 0) uniform ModelUniforms {
  8. mat4 modelMatrix;
  9. mat4 modelViewMatrix;
  10. mat3 normalMatrix;
  11. } modelUniforms;
  12. layout(set = 0, binding = 1) uniform CameraUniforms {
  13. mat4 projectionMatrix;
  14. mat4 viewMatrix;
  15. } cameraUniforms;
  16. void main(){
  17. vUv = uv;
  18. gl_Position = cameraUniforms.projectionMatrix * modelUniforms.modelViewMatrix * vec4( position, 1.0 );
  19. }`,
  20. fragmentShader: `#version 450
  21. layout(set = 0, binding = 2) uniform OpacityUniforms {
  22. float opacity;
  23. } opacityUniforms;
  24. layout(set = 0, binding = 3) uniform sampler mySampler;
  25. layout(set = 0, binding = 4) uniform texture2D myTexture;
  26. #ifdef NODE_UNIFORMS
  27. layout(set = 0, binding = 5) uniform NodeUniforms {
  28. NODE_UNIFORMS
  29. } nodeUniforms;
  30. #endif
  31. layout(location = 0) in vec2 vUv;
  32. layout(location = 0) out vec4 outColor;
  33. void main() {
  34. outColor = texture( sampler2D( myTexture, mySampler ), vUv );
  35. #ifdef NODE_COLOR
  36. /* NODE_COLOR_CODE ignore (node code group) for now */
  37. outColor.rgb *= NODE_COLOR;
  38. #endif
  39. #ifdef NODE_OPACITY
  40. outColor.a *= NODE_OPACITY;
  41. #endif
  42. outColor.a *= opacityUniforms.opacity;
  43. }`
  44. },
  45. pointsBasic: {
  46. vertexShader: `#version 450
  47. layout(location = 0) in vec3 position;
  48. layout(set = 0, binding = 0) uniform ModelUniforms {
  49. mat4 modelMatrix;
  50. mat4 modelViewMatrix;
  51. } modelUniforms;
  52. layout(set = 0, binding = 1) uniform CameraUniforms {
  53. mat4 projectionMatrix;
  54. mat4 viewMatrix;
  55. } cameraUniforms;
  56. void main(){
  57. gl_Position = cameraUniforms.projectionMatrix * modelUniforms.modelViewMatrix * vec4( position, 1.0 );
  58. }`,
  59. fragmentShader: `#version 450
  60. layout(location = 0) out vec4 outColor;
  61. #ifdef NODE_UNIFORMS
  62. layout(set = 0, binding = 2) uniform NodeUniforms {
  63. NODE_UNIFORMS
  64. } nodeUniforms;
  65. #endif
  66. void main() {
  67. outColor = vec4( 1.0, 0.0, 0.0, 1.0 );
  68. #ifdef NODE_COLOR
  69. outColor.rgb = NODE_COLOR;
  70. #endif
  71. #ifdef NODE_OPACITY
  72. outColor.a *= NODE_OPACITY;
  73. #endif
  74. }`
  75. },
  76. lineBasic: {
  77. vertexShader: `#version 450
  78. layout(location = 0) in vec3 position;
  79. layout(set = 0, binding = 0) uniform ModelUniforms {
  80. mat4 modelMatrix;
  81. mat4 modelViewMatrix;
  82. } modelUniforms;
  83. layout(set = 0, binding = 1) uniform CameraUniforms {
  84. mat4 projectionMatrix;
  85. mat4 viewMatrix;
  86. } cameraUniforms;
  87. void main(){
  88. gl_Position = cameraUniforms.projectionMatrix * modelUniforms.modelViewMatrix * vec4( position, 1.0 );
  89. }`,
  90. fragmentShader: `#version 450
  91. layout(location = 0) out vec4 outColor;
  92. void main() {
  93. outColor = vec4( 1.0, 0.0, 0.0, 1.0 );
  94. }`
  95. }
  96. };
  97. export default ShaderLib;